[
  {
    "path": ".appledoc.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>--include</key>\n\t<array>\n\t\t<string>Documentation</string>\n\t</array>\n\t<key>--ignore</key>\n\t<array>\n\t\t<string>CurlHandle</string>\n\t\t<string>DAVKit</string>\n\t\t<string>AuthTester</string>\n\t\t<string>Example</string>\n\t\t<string>ProfilingTester</string>\n\t\t<string>UKQueue</string>\n\t\t<string>.git</string>\n\t\t<string>.gitmodules</string>\n\t\t<string>.gitignore</string>\n\t</array>\n\t<key>--index-desc</key>\n\t<array>\n\t\t<string>README.md</string>\n\t</array>\n\t<key>--logformat</key>\n\t<string>xcode</string>\n\t<key>--exit-threshold</key>\n\t<integer>2</integer>\n\t<key>--explicit-crossref</key>\n\t<true/>\n\t<key>--project-company</key>\n\t<string>Karelia Systems</string>\n\t<key>--company-id</key>\n\t<string>com.karelia</string>\n\t<key>--keep-undocumented-members</key>\n\t<false/>\n\t<key>--keep-undocumented-objects</key>\n\t<false/>\n\t<key>--merge-categories</key>\n\t<true/>\n\t<key>--keep-merged-sections</key>\n\t<true/>\n\t<key>--prefix-merged-sections</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": ".gitignore",
    "content": "# Mac OS X\n*.DS_Store\n\n# Xcode\nbuild\nprofile\n*.pbxuser\n*.mode1v3\n*.mode2v3\n*.perspectivev3\n*.xcuserstate\nxcuserdata/\n"
  },
  {
    "path": ".gitmodules",
    "content": "[submodule \"DAVKit\"]\n\tpath = DAVKit\n\turl = https://github.com/karelia/DAVKit.git\n[submodule \"CurlHandle\"]\n\tpath = CurlHandle\n\turl = https://github.com/karelia/CurlHandle.git\n"
  },
  {
    "path": "AuthTester/AppDelegate.h",
    "content": "//\n//  AppDelegate.h\n//  AuthTester\n//\n//  Created by Mike on 01/02/2013.\n//\n//\n\n#import <Cocoa/Cocoa.h>\n\n@interface AppDelegate : NSObject <NSApplicationDelegate, NSURLConnectionDelegate>\n\n@property (assign) IBOutlet NSWindow *window;\n\n@end\n"
  },
  {
    "path": "AuthTester/AppDelegate.m",
    "content": "//\n//  AppDelegate.m\n//  AuthTester\n//\n//  Created by Mike on 01/02/2013.\n//\n//\n\n#import \"AppDelegate.h\"\n\n@implementation AppDelegate\n\n- (void)dealloc\n{\n    [super dealloc];\n}\n\n- (void)applicationDidFinishLaunching:(NSNotification *)aNotification\n{\n    [NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@\"https://tv.eurosport.com/\"]]\n                                  delegate:self];\n}\n\n- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge;\n{\n    NSLog(@\"challenge error: %@\", challenge.error);\n    [[challenge sender] performDefaultHandlingForAuthenticationChallenge:challenge];\n}\n\n- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error;\n{\n    [NSApp presentError:error modalForWindow:self.window delegate:nil didPresentSelector:NULL contextInfo:NULL];\n}\n\n@end\n"
  },
  {
    "path": "AuthTester/AuthTester-Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>${EXECUTABLE_NAME}</string>\n\t<key>CFBundleIconFile</key>\n\t<string></string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>${PRODUCT_NAME}</string>\n\t<key>CFBundlePackageType</key>\n\t<string>APPL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n\t<key>LSMinimumSystemVersion</key>\n\t<string>${MACOSX_DEPLOYMENT_TARGET}</string>\n\t<key>NSMainNibFile</key>\n\t<string>MainMenu</string>\n\t<key>NSPrincipalClass</key>\n\t<string>NSApplication</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "AuthTester/AuthTester-Prefix.pch",
    "content": "//\n// Prefix header for all source files of the 'AuthTester' target in the 'AuthTester' project\n//\n\n#ifdef __OBJC__\n    #import <Cocoa/Cocoa.h>\n#endif\n"
  },
  {
    "path": "AuthTester/en.lproj/Credits.rtf",
    "content": "{\\rtf0\\ansi{\\fonttbl\\f0\\fswiss Helvetica;}\n{\\colortbl;\\red255\\green255\\blue255;}\n\\paperw9840\\paperh8400\n\\pard\\tx560\\tx1120\\tx1680\\tx2240\\tx2800\\tx3360\\tx3920\\tx4480\\tx5040\\tx5600\\tx6160\\tx6720\\ql\\qnatural\n\n\\f0\\b\\fs24 \\cf0 Engineering:\n\\b0 \\\n\tSome people\\\n\\\n\n\\b Human Interface Design:\n\\b0 \\\n\tSome other people\\\n\\\n\n\\b Testing:\n\\b0 \\\n\tHopefully not nobody\\\n\\\n\n\\b Documentation:\n\\b0 \\\n\tWhoever\\\n\\\n\n\\b With special thanks to:\n\\b0 \\\n\tMom\\\n}\n"
  },
  {
    "path": "AuthTester/en.lproj/InfoPlist.strings",
    "content": "/* Localized versions of Info.plist keys */\n\n"
  },
  {
    "path": "AuthTester/en.lproj/MainMenu.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<archive type=\"com.apple.InterfaceBuilder3.Cocoa.XIB\" version=\"8.00\">\n\t<data>\n\t\t<int key=\"IBDocument.SystemTarget\">1080</int>\n\t\t<string key=\"IBDocument.SystemVersion\">11D50</string>\n\t\t<string key=\"IBDocument.InterfaceBuilderVersion\">2457</string>\n\t\t<string key=\"IBDocument.AppKitVersion\">1138.32</string>\n\t\t<string key=\"IBDocument.HIToolboxVersion\">568.00</string>\n\t\t<object class=\"NSMutableDictionary\" key=\"IBDocument.PluginVersions\">\n\t\t\t<string key=\"NS.key.0\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t<string key=\"NS.object.0\">2457</string>\n\t\t</object>\n\t\t<array key=\"IBDocument.IntegratedClassDependencies\">\n\t\t\t<string>NSWindowTemplate</string>\n\t\t\t<string>NSView</string>\n\t\t\t<string>NSMenu</string>\n\t\t\t<string>NSMenuItem</string>\n\t\t\t<string>NSCustomObject</string>\n\t\t</array>\n\t\t<array key=\"IBDocument.PluginDependencies\">\n\t\t\t<string>com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t</array>\n\t\t<object class=\"NSMutableDictionary\" key=\"IBDocument.Metadata\">\n\t\t\t<string key=\"NS.key.0\">PluginDependencyRecalculationVersion</string>\n\t\t\t<integer value=\"1\" key=\"NS.object.0\"/>\n\t\t</object>\n\t\t<array class=\"NSMutableArray\" key=\"IBDocument.RootObjects\" id=\"1048\">\n\t\t\t<object class=\"NSCustomObject\" id=\"1021\">\n\t\t\t\t<string key=\"NSClassName\">NSApplication</string>\n\t\t\t</object>\n\t\t\t<object class=\"NSCustomObject\" id=\"1014\">\n\t\t\t\t<string key=\"NSClassName\">FirstResponder</string>\n\t\t\t</object>\n\t\t\t<object class=\"NSCustomObject\" id=\"1050\">\n\t\t\t\t<string key=\"NSClassName\">NSApplication</string>\n\t\t\t</object>\n\t\t\t<object class=\"NSMenu\" id=\"649796088\">\n\t\t\t\t<string key=\"NSTitle\">AMainMenu</string>\n\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t<object class=\"NSMenuItem\" id=\"694149608\">\n\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"649796088\"/>\n\t\t\t\t\t\t<string key=\"NSTitle\">AuthTester</string>\n\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t<object class=\"NSCustomResource\" key=\"NSOnImage\" id=\"35465992\">\n\t\t\t\t\t\t\t<string key=\"NSClassName\">NSImage</string>\n\t\t\t\t\t\t\t<string key=\"NSResourceName\">NSMenuCheckmark</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"NSCustomResource\" key=\"NSMixedImage\" id=\"502551668\">\n\t\t\t\t\t\t\t<string key=\"NSClassName\">NSImage</string>\n\t\t\t\t\t\t\t<string key=\"NSResourceName\">NSMenuMixedState</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"110575045\">\n\t\t\t\t\t\t\t<string key=\"NSTitle\">AuthTester</string>\n\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"238522557\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"110575045\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">About AuthTester</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"304266470\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"110575045\"/>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSIsSeparator\">YES</bool>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"609285721\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"110575045\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Preferences…</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">,</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"481834944\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"110575045\"/>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSIsSeparator\">YES</bool>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"1046388886\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"110575045\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Services</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"752062318\">\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Services</string>\n\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\"/>\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSName\">_NSServicesMenu</string>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"646227648\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"110575045\"/>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSIsSeparator\">YES</bool>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"755159360\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"110575045\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Hide AuthTester</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">h</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"342932134\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"110575045\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Hide Others</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">h</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1572864</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"908899353\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"110575045\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Show All</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"1056857174\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"110575045\"/>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSIsSeparator\">YES</bool>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"632727374\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"110575045\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Quit AuthTester</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">q</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t<string key=\"NSName\">_NSAppleMenu</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSMenuItem\" id=\"379814623\">\n\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"649796088\"/>\n\t\t\t\t\t\t<string key=\"NSTitle\">File</string>\n\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"720053764\">\n\t\t\t\t\t\t\t<string key=\"NSTitle\">File</string>\n\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"705341025\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"720053764\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">New</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">n</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"722745758\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"720053764\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Open…</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">o</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"1025936716\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"720053764\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Open Recent</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"1065607017\">\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Open Recent</string>\n\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"759406840\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"1065607017\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Clear Menu</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSName\">_NSRecentDocumentsMenu</string>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"425164168\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"720053764\"/>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSIsSeparator\">YES</bool>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"776162233\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"720053764\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Close</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">w</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"1023925487\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"720053764\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Save…</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">s</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"579971712\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"720053764\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Revert to Saved</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"1010469920\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"720053764\"/>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSIsSeparator\">YES</bool>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"294629803\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"720053764\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Page Setup...</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">P</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1179648</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSToolTip\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"49223823\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"720053764\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Print…</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">p</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSMenuItem\" id=\"952259628\">\n\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"649796088\"/>\n\t\t\t\t\t\t<string key=\"NSTitle\">Edit</string>\n\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"789758025\">\n\t\t\t\t\t\t\t<string key=\"NSTitle\">Edit</string>\n\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"1058277027\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"789758025\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Undo</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">z</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"790794224\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"789758025\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Redo</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">Z</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1179648</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"1040322652\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"789758025\"/>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSIsSeparator\">YES</bool>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"296257095\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"789758025\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Cut</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">x</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"860595796\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"789758025\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Copy</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">c</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"29853731\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"789758025\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Paste</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">v</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"82994268\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"789758025\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Paste and Match Style</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">V</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1572864</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"437104165\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"789758025\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Delete</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"583158037\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"789758025\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Select All</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">a</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"212016141\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"789758025\"/>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSIsSeparator\">YES</bool>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"892235320\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"789758025\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Find</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"963351320\">\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Find</string>\n\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"447796847\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"963351320\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Find…</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">f</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSTag\">1</int>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"738670835\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"963351320\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Find and Replace…</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">f</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1572864</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSTag\">12</int>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"326711663\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"963351320\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Find Next</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">g</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSTag\">2</int>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"270902937\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"963351320\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Find Previous</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">G</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1179648</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSTag\">3</int>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"159080638\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"963351320\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Use Selection for Find</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">e</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSTag\">7</int>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"88285865\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"963351320\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Jump to Selection</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">j</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"972420730\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"789758025\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Spelling and Grammar</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"769623530\">\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Spelling and Grammar</string>\n\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"679648819\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"769623530\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Show Spelling and Grammar</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">:</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"96193923\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"769623530\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Check Document Now</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">;</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"859480356\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"769623530\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsSeparator\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"948374510\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"769623530\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Check Spelling While Typing</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"967646866\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"769623530\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Check Grammar With Spelling</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"795346622\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"769623530\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Correct Spelling Automatically</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"507821607\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"789758025\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Substitutions</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"698887838\">\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Substitutions</string>\n\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"65139061\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"698887838\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Show Substitutions</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"19036812\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"698887838\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsSeparator\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"605118523\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"698887838\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Smart Copy/Paste</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">f</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSTag\">1</int>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"197661976\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"698887838\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Smart Quotes</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">g</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSTag\">2</int>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"672708820\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"698887838\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Smart Dashes</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"708854459\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"698887838\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Smart Links</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">G</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1179648</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSTag\">3</int>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"537092702\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"698887838\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Text Replacement</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"288088188\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"789758025\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Transformations</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"579392910\">\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Transformations</string>\n\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"1060694897\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"579392910\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Make Upper Case</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"879586729\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"579392910\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Make Lower Case</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"56570060\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"579392910\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Capitalize</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"676164635\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"789758025\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Speech</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"785027613\">\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Speech</string>\n\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"731782645\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"785027613\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Start Speaking</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"680220178\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"785027613\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Stop Speaking</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSMenuItem\" id=\"302598603\">\n\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"649796088\"/>\n\t\t\t\t\t\t<string key=\"NSTitle\">Format</string>\n\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"941447902\">\n\t\t\t\t\t\t\t<string key=\"NSTitle\">Format</string>\n\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"792887677\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"941447902\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Font</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"786677654\">\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Font</string>\n\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"159677712\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"786677654\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Show Fonts</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">t</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"305399458\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"786677654\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Bold</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">b</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSTag\">2</int>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"814362025\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"786677654\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Italic</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">i</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSTag\">1</int>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"330926929\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"786677654\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Underline</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">u</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"533507878\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"786677654\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsSeparator\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"158063935\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"786677654\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Bigger</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">+</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSTag\">3</int>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"885547335\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"786677654\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Smaller</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">-</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSTag\">4</int>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"901062459\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"786677654\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsSeparator\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"767671776\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"786677654\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Kern</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"175441468\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Kern</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"252969304\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"175441468\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Use Default</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"766922938\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"175441468\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Use None</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"677519740\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"175441468\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Tighten</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"238351151\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"175441468\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Loosen</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"691570813\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"786677654\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Ligatures</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"1058217995\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Ligatures</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"706297211\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"1058217995\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Use Default</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"568384683\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"1058217995\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Use None</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"663508465\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"1058217995\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Use All</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"769124883\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"786677654\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Baseline</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"18263474\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Baseline</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"257962622\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"18263474\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Use Default</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"644725453\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"18263474\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Superscript</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"1037576581\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"18263474\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Subscript</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"941806246\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"18263474\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Raise</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"1045724900\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"18263474\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Lower</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"739652853\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"786677654\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsSeparator\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"1012600125\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"786677654\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Show Colors</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">C</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"214559597\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"786677654\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsSeparator\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"596732606\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"786677654\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Copy Style</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">c</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1572864</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"393423671\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"786677654\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Paste Style</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">v</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1572864</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSName\">_NSFontMenu</string>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"215659978\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"941447902\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Text</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"446991534\">\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Text</string>\n\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"875092757\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"446991534\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Align Left</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">{</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"630155264\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"446991534\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Center</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">|</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"945678886\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"446991534\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Justify</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"512868991\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"446991534\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Align Right</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">}</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"163117631\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"446991534\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsSeparator\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"31516759\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"446991534\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Writing Direction</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"956096989\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Writing Direction</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"257099033\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"956096989\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Paragraph</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"551969625\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"956096989\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string type=\"base64-UTF8\" key=\"NSTitle\">CURlZmF1bHQ</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"249532473\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"956096989\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string type=\"base64-UTF8\" key=\"NSTitle\">CUxlZnQgdG8gUmlnaHQ</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"607364498\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"956096989\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string type=\"base64-UTF8\" key=\"NSTitle\">CVJpZ2h0IHRvIExlZnQ</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"508151438\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"956096989\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsSeparator\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"981751889\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"956096989\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Selection</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"380031999\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"956096989\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string type=\"base64-UTF8\" key=\"NSTitle\">CURlZmF1bHQ</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"825984362\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"956096989\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string type=\"base64-UTF8\" key=\"NSTitle\">CUxlZnQgdG8gUmlnaHQ</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"560145579\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"956096989\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string type=\"base64-UTF8\" key=\"NSTitle\">CVJpZ2h0IHRvIExlZnQ</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"908105787\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"446991534\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsSeparator\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"644046920\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"446991534\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Show Ruler</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"231811626\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"446991534\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Copy Ruler</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">c</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1310720</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"883618387\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"446991534\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Paste Ruler</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">v</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1310720</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSMenuItem\" id=\"586577488\">\n\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"649796088\"/>\n\t\t\t\t\t\t<string key=\"NSTitle\">View</string>\n\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"466310130\">\n\t\t\t\t\t\t\t<string key=\"NSTitle\">View</string>\n\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"102151532\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"466310130\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Show Toolbar</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">t</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1572864</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"237841660\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"466310130\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Customize Toolbar…</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSMenuItem\" id=\"713487014\">\n\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"649796088\"/>\n\t\t\t\t\t\t<string key=\"NSTitle\">Window</string>\n\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"835318025\">\n\t\t\t\t\t\t\t<string key=\"NSTitle\">Window</string>\n\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"1011231497\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"835318025\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Minimize</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">m</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"575023229\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"835318025\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Zoom</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"299356726\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"835318025\"/>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSIsSeparator\">YES</bool>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"625202149\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"835318025\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Bring All to Front</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t<string key=\"NSName\">_NSWindowsMenu</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSMenuItem\" id=\"448692316\">\n\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"649796088\"/>\n\t\t\t\t\t\t<string key=\"NSTitle\">Help</string>\n\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"992780483\">\n\t\t\t\t\t\t\t<string key=\"NSTitle\">Help</string>\n\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"105068016\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"992780483\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">AuthTester Help</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">?</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t<string key=\"NSName\">_NSHelpMenu</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t</array>\n\t\t\t\t<string key=\"NSName\">_NSMainMenu</string>\n\t\t\t</object>\n\t\t\t<object class=\"NSWindowTemplate\" id=\"972006081\">\n\t\t\t\t<int key=\"NSWindowStyleMask\">15</int>\n\t\t\t\t<int key=\"NSWindowBacking\">2</int>\n\t\t\t\t<string key=\"NSWindowRect\">{{335, 390}, {480, 360}}</string>\n\t\t\t\t<int key=\"NSWTFlags\">1954021376</int>\n\t\t\t\t<string key=\"NSWindowTitle\">AuthTester</string>\n\t\t\t\t<string key=\"NSWindowClass\">NSWindow</string>\n\t\t\t\t<nil key=\"NSViewClass\"/>\n\t\t\t\t<nil key=\"NSUserInterfaceItemIdentifier\"/>\n\t\t\t\t<object class=\"NSView\" key=\"NSWindowView\" id=\"439893737\">\n\t\t\t\t\t<nil key=\"NSNextResponder\"/>\n\t\t\t\t\t<int key=\"NSvFlags\">256</int>\n\t\t\t\t\t<string key=\"NSFrameSize\">{480, 360}</string>\n\t\t\t\t</object>\n\t\t\t\t<string key=\"NSScreenRect\">{{0, 0}, {2560, 1418}}</string>\n\t\t\t\t<string key=\"NSMaxSize\">{10000000000000, 10000000000000}</string>\n\t\t\t\t<bool key=\"NSWindowIsRestorable\">YES</bool>\n\t\t\t</object>\n\t\t\t<object class=\"NSCustomObject\" id=\"976324537\">\n\t\t\t\t<string key=\"NSClassName\">AppDelegate</string>\n\t\t\t</object>\n\t\t\t<object class=\"NSCustomObject\" id=\"755631768\">\n\t\t\t\t<string key=\"NSClassName\">NSFontManager</string>\n\t\t\t</object>\n\t\t</array>\n\t\t<object class=\"IBObjectContainer\" key=\"IBDocument.Objects\">\n\t\t\t<array class=\"NSMutableArray\" key=\"connectionRecords\">\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">terminate:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1050\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"632727374\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">449</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">orderFrontStandardAboutPanel:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1021\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"238522557\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">142</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">delegate</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1021\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"976324537\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">495</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">performMiniaturize:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"1011231497\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">37</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">arrangeInFront:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"625202149\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">39</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">print:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"49223823\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">86</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">runPageLayout:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"294629803\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">87</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">clearRecentDocuments:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"759406840\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">127</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">performClose:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"776162233\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">193</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">toggleContinuousSpellChecking:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"948374510\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">222</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">undo:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"1058277027\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">223</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">copy:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"860595796\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">224</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">checkSpelling:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"96193923\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">225</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">paste:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"29853731\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">226</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">stopSpeaking:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"680220178\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">227</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">cut:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"296257095\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">228</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">showGuessPanel:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"679648819\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">230</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">redo:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"790794224\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">231</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">selectAll:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"583158037\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">232</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">startSpeaking:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"731782645\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">233</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">delete:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"437104165\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">235</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">performZoom:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"575023229\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">240</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">performFindPanelAction:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"447796847\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">241</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">centerSelectionInVisibleArea:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"88285865\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">245</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">toggleGrammarChecking:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"967646866\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">347</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">toggleSmartInsertDelete:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"605118523\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">355</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">toggleAutomaticQuoteSubstitution:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"197661976\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">356</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">toggleAutomaticLinkDetection:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"708854459\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">357</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">saveDocument:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"1023925487\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">362</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">revertDocumentToSaved:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"579971712\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">364</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">runToolbarCustomizationPalette:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"237841660\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">365</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">toggleToolbarShown:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"102151532\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">366</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">hide:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"755159360\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">367</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">hideOtherApplications:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"342932134\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">368</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">unhideAllApplications:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"908899353\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">370</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">newDocument:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"705341025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">373</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">openDocument:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"722745758\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">374</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">raiseBaseline:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"941806246\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">426</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">lowerBaseline:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"1045724900\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">427</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">copyFont:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"596732606\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">428</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">subscript:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"1037576581\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">429</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">superscript:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"644725453\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">430</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">tightenKerning:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"677519740\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">431</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">underline:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"330926929\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">432</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">orderFrontColorPanel:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"1012600125\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">433</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">useAllLigatures:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"663508465\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">434</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">loosenKerning:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"238351151\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">435</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">pasteFont:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"393423671\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">436</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">unscript:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"257962622\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">437</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">useStandardKerning:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"252969304\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">438</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">useStandardLigatures:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"706297211\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">439</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">turnOffLigatures:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"568384683\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">440</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">turnOffKerning:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"766922938\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">441</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">toggleAutomaticSpellingCorrection:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"795346622\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">456</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">orderFrontSubstitutionsPanel:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"65139061\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">458</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">toggleAutomaticDashSubstitution:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"672708820\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">461</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">toggleAutomaticTextReplacement:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"537092702\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">463</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">uppercaseWord:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"1060694897\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">464</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">capitalizeWord:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"56570060\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">467</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">lowercaseWord:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"879586729\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">468</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">pasteAsPlainText:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"82994268\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">486</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">performFindPanelAction:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"326711663\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">487</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">performFindPanelAction:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"270902937\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">488</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">performFindPanelAction:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"159080638\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">489</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">showHelp:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"105068016\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">493</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">alignCenter:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"630155264\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">518</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">pasteRuler:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"883618387\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">519</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">toggleRuler:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"644046920\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">520</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">alignRight:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"512868991\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">521</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">copyRuler:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"231811626\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">522</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">alignJustified:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"945678886\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">523</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">alignLeft:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"875092757\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">524</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">makeBaseWritingDirectionNatural:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"551969625\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">525</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">makeBaseWritingDirectionLeftToRight:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"249532473\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">526</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">makeBaseWritingDirectionRightToLeft:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"607364498\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">527</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">makeTextWritingDirectionNatural:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"380031999\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">528</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">makeTextWritingDirectionLeftToRight:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"825984362\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">529</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">makeTextWritingDirectionRightToLeft:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"560145579\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">530</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">performFindPanelAction:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"738670835\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">535</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">addFontTrait:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"755631768\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"305399458\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">421</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">addFontTrait:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"755631768\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"814362025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">422</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">modifyFont:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"755631768\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"885547335\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">423</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">orderFrontFontPanel:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"755631768\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"159677712\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">424</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">modifyFont:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"755631768\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"158063935\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">425</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">window</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"976324537\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"972006081\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">532</int>\n\t\t\t\t</object>\n\t\t\t</array>\n\t\t\t<object class=\"IBMutableOrderedSet\" key=\"objectRecords\">\n\t\t\t\t<array key=\"orderedObjects\">\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">0</int>\n\t\t\t\t\t\t<array key=\"object\" id=\"0\"/>\n\t\t\t\t\t\t<reference key=\"children\" ref=\"1048\"/>\n\t\t\t\t\t\t<nil key=\"parent\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">-2</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1021\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t\t<string key=\"objectName\">File's Owner</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">-1</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t\t<string key=\"objectName\">First Responder</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">-3</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1050\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t\t<string key=\"objectName\">Application</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">29</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"649796088\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"713487014\"/>\n\t\t\t\t\t\t\t<reference ref=\"694149608\"/>\n\t\t\t\t\t\t\t<reference ref=\"952259628\"/>\n\t\t\t\t\t\t\t<reference ref=\"379814623\"/>\n\t\t\t\t\t\t\t<reference ref=\"586577488\"/>\n\t\t\t\t\t\t\t<reference ref=\"302598603\"/>\n\t\t\t\t\t\t\t<reference ref=\"448692316\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">19</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"713487014\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"835318025\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"649796088\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">56</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"694149608\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"110575045\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"649796088\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">217</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"952259628\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"789758025\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"649796088\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">83</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"379814623\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"720053764\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"649796088\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">81</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"720053764\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"1023925487\"/>\n\t\t\t\t\t\t\t<reference ref=\"49223823\"/>\n\t\t\t\t\t\t\t<reference ref=\"722745758\"/>\n\t\t\t\t\t\t\t<reference ref=\"705341025\"/>\n\t\t\t\t\t\t\t<reference ref=\"1025936716\"/>\n\t\t\t\t\t\t\t<reference ref=\"294629803\"/>\n\t\t\t\t\t\t\t<reference ref=\"776162233\"/>\n\t\t\t\t\t\t\t<reference ref=\"425164168\"/>\n\t\t\t\t\t\t\t<reference ref=\"579971712\"/>\n\t\t\t\t\t\t\t<reference ref=\"1010469920\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"379814623\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">75</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1023925487\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"720053764\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">78</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"49223823\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"720053764\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">72</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"722745758\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"720053764\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">82</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"705341025\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"720053764\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">124</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1025936716\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"1065607017\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"720053764\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">77</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"294629803\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"720053764\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">73</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"776162233\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"720053764\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">79</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"425164168\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"720053764\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">112</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"579971712\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"720053764\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">74</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1010469920\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"720053764\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">125</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1065607017\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"759406840\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1025936716\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">126</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"759406840\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1065607017\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">205</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"789758025\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"437104165\"/>\n\t\t\t\t\t\t\t<reference ref=\"583158037\"/>\n\t\t\t\t\t\t\t<reference ref=\"1058277027\"/>\n\t\t\t\t\t\t\t<reference ref=\"212016141\"/>\n\t\t\t\t\t\t\t<reference ref=\"296257095\"/>\n\t\t\t\t\t\t\t<reference ref=\"29853731\"/>\n\t\t\t\t\t\t\t<reference ref=\"860595796\"/>\n\t\t\t\t\t\t\t<reference ref=\"1040322652\"/>\n\t\t\t\t\t\t\t<reference ref=\"790794224\"/>\n\t\t\t\t\t\t\t<reference ref=\"892235320\"/>\n\t\t\t\t\t\t\t<reference ref=\"972420730\"/>\n\t\t\t\t\t\t\t<reference ref=\"676164635\"/>\n\t\t\t\t\t\t\t<reference ref=\"507821607\"/>\n\t\t\t\t\t\t\t<reference ref=\"288088188\"/>\n\t\t\t\t\t\t\t<reference ref=\"82994268\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"952259628\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">202</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"437104165\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"789758025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">198</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"583158037\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"789758025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">207</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1058277027\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"789758025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">214</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"212016141\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"789758025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">199</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"296257095\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"789758025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">203</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"29853731\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"789758025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">197</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"860595796\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"789758025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">206</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1040322652\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"789758025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">215</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"790794224\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"789758025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">218</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"892235320\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"963351320\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"789758025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">216</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"972420730\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"769623530\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"789758025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">200</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"769623530\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"948374510\"/>\n\t\t\t\t\t\t\t<reference ref=\"96193923\"/>\n\t\t\t\t\t\t\t<reference ref=\"679648819\"/>\n\t\t\t\t\t\t\t<reference ref=\"967646866\"/>\n\t\t\t\t\t\t\t<reference ref=\"859480356\"/>\n\t\t\t\t\t\t\t<reference ref=\"795346622\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"972420730\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">219</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"948374510\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"769623530\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">201</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"96193923\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"769623530\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">204</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"679648819\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"769623530\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">220</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"963351320\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"270902937\"/>\n\t\t\t\t\t\t\t<reference ref=\"88285865\"/>\n\t\t\t\t\t\t\t<reference ref=\"159080638\"/>\n\t\t\t\t\t\t\t<reference ref=\"326711663\"/>\n\t\t\t\t\t\t\t<reference ref=\"447796847\"/>\n\t\t\t\t\t\t\t<reference ref=\"738670835\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"892235320\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">213</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"270902937\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"963351320\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">210</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"88285865\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"963351320\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">221</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"159080638\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"963351320\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">208</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"326711663\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"963351320\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">209</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"447796847\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"963351320\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">57</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"110575045\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"238522557\"/>\n\t\t\t\t\t\t\t<reference ref=\"755159360\"/>\n\t\t\t\t\t\t\t<reference ref=\"908899353\"/>\n\t\t\t\t\t\t\t<reference ref=\"632727374\"/>\n\t\t\t\t\t\t\t<reference ref=\"646227648\"/>\n\t\t\t\t\t\t\t<reference ref=\"609285721\"/>\n\t\t\t\t\t\t\t<reference ref=\"481834944\"/>\n\t\t\t\t\t\t\t<reference ref=\"304266470\"/>\n\t\t\t\t\t\t\t<reference ref=\"1046388886\"/>\n\t\t\t\t\t\t\t<reference ref=\"1056857174\"/>\n\t\t\t\t\t\t\t<reference ref=\"342932134\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"694149608\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">58</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"238522557\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"110575045\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">134</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"755159360\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"110575045\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">150</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"908899353\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"110575045\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">136</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"632727374\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"110575045\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">144</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"646227648\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"110575045\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">129</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"609285721\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"110575045\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">143</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"481834944\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"110575045\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">236</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"304266470\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"110575045\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">131</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1046388886\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"752062318\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"110575045\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">149</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1056857174\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"110575045\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">145</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"342932134\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"110575045\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">130</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"752062318\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1046388886\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">24</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"835318025\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"299356726\"/>\n\t\t\t\t\t\t\t<reference ref=\"625202149\"/>\n\t\t\t\t\t\t\t<reference ref=\"575023229\"/>\n\t\t\t\t\t\t\t<reference ref=\"1011231497\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"713487014\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">92</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"299356726\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"835318025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">5</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"625202149\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"835318025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">239</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"575023229\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"835318025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">23</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1011231497\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"835318025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">295</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"586577488\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"466310130\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"649796088\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">296</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"466310130\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"102151532\"/>\n\t\t\t\t\t\t\t<reference ref=\"237841660\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"586577488\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">297</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"102151532\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"466310130\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">298</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"237841660\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"466310130\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">211</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"676164635\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"785027613\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"789758025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">212</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"785027613\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"680220178\"/>\n\t\t\t\t\t\t\t<reference ref=\"731782645\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"676164635\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">195</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"680220178\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"785027613\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">196</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"731782645\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"785027613\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">346</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"967646866\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"769623530\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">348</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"507821607\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"698887838\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"789758025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">349</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"698887838\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"605118523\"/>\n\t\t\t\t\t\t\t<reference ref=\"197661976\"/>\n\t\t\t\t\t\t\t<reference ref=\"708854459\"/>\n\t\t\t\t\t\t\t<reference ref=\"65139061\"/>\n\t\t\t\t\t\t\t<reference ref=\"19036812\"/>\n\t\t\t\t\t\t\t<reference ref=\"672708820\"/>\n\t\t\t\t\t\t\t<reference ref=\"537092702\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"507821607\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">350</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"605118523\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"698887838\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">351</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"197661976\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"698887838\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">354</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"708854459\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"698887838\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">371</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"972006081\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"439893737\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">372</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"439893737\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"972006081\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">375</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"302598603\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"941447902\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"649796088\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">376</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"941447902\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"792887677\"/>\n\t\t\t\t\t\t\t<reference ref=\"215659978\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"302598603\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">377</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"792887677\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"786677654\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"941447902\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">388</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"786677654\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"159677712\"/>\n\t\t\t\t\t\t\t<reference ref=\"305399458\"/>\n\t\t\t\t\t\t\t<reference ref=\"814362025\"/>\n\t\t\t\t\t\t\t<reference ref=\"330926929\"/>\n\t\t\t\t\t\t\t<reference ref=\"533507878\"/>\n\t\t\t\t\t\t\t<reference ref=\"158063935\"/>\n\t\t\t\t\t\t\t<reference ref=\"885547335\"/>\n\t\t\t\t\t\t\t<reference ref=\"901062459\"/>\n\t\t\t\t\t\t\t<reference ref=\"767671776\"/>\n\t\t\t\t\t\t\t<reference ref=\"691570813\"/>\n\t\t\t\t\t\t\t<reference ref=\"769124883\"/>\n\t\t\t\t\t\t\t<reference ref=\"739652853\"/>\n\t\t\t\t\t\t\t<reference ref=\"1012600125\"/>\n\t\t\t\t\t\t\t<reference ref=\"214559597\"/>\n\t\t\t\t\t\t\t<reference ref=\"596732606\"/>\n\t\t\t\t\t\t\t<reference ref=\"393423671\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"792887677\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">389</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"159677712\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"786677654\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">390</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"305399458\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"786677654\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">391</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"814362025\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"786677654\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">392</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"330926929\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"786677654\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">393</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"533507878\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"786677654\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">394</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"158063935\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"786677654\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">395</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"885547335\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"786677654\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">396</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"901062459\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"786677654\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">397</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"767671776\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"175441468\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"786677654\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">398</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"691570813\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"1058217995\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"786677654\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">399</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"769124883\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"18263474\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"786677654\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">400</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"739652853\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"786677654\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">401</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1012600125\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"786677654\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">402</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"214559597\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"786677654\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">403</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"596732606\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"786677654\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">404</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"393423671\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"786677654\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">405</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"18263474\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"257962622\"/>\n\t\t\t\t\t\t\t<reference ref=\"644725453\"/>\n\t\t\t\t\t\t\t<reference ref=\"1037576581\"/>\n\t\t\t\t\t\t\t<reference ref=\"941806246\"/>\n\t\t\t\t\t\t\t<reference ref=\"1045724900\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"769124883\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">406</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"257962622\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"18263474\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">407</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"644725453\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"18263474\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">408</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1037576581\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"18263474\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">409</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"941806246\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"18263474\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">410</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1045724900\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"18263474\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">411</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1058217995\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"706297211\"/>\n\t\t\t\t\t\t\t<reference ref=\"568384683\"/>\n\t\t\t\t\t\t\t<reference ref=\"663508465\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"691570813\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">412</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"706297211\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1058217995\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">413</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"568384683\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1058217995\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">414</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"663508465\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1058217995\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">415</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"175441468\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"252969304\"/>\n\t\t\t\t\t\t\t<reference ref=\"766922938\"/>\n\t\t\t\t\t\t\t<reference ref=\"677519740\"/>\n\t\t\t\t\t\t\t<reference ref=\"238351151\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"767671776\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">416</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"252969304\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"175441468\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">417</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"766922938\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"175441468\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">418</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"677519740\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"175441468\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">419</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"238351151\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"175441468\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">420</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"755631768\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">450</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"288088188\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"579392910\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"789758025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">451</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"579392910\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"1060694897\"/>\n\t\t\t\t\t\t\t<reference ref=\"879586729\"/>\n\t\t\t\t\t\t\t<reference ref=\"56570060\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"288088188\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">452</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1060694897\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"579392910\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">453</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"859480356\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"769623530\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">454</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"795346622\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"769623530\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">457</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"65139061\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"698887838\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">459</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"19036812\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"698887838\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">460</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"672708820\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"698887838\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">462</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"537092702\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"698887838\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">465</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"879586729\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"579392910\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">466</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"56570060\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"579392910\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">485</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"82994268\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"789758025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">490</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"448692316\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"992780483\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"649796088\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">491</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"992780483\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"105068016\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"448692316\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">492</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"105068016\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"992780483\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">494</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"976324537\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">496</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"215659978\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"446991534\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"941447902\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">497</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"446991534\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"875092757\"/>\n\t\t\t\t\t\t\t<reference ref=\"630155264\"/>\n\t\t\t\t\t\t\t<reference ref=\"945678886\"/>\n\t\t\t\t\t\t\t<reference ref=\"512868991\"/>\n\t\t\t\t\t\t\t<reference ref=\"163117631\"/>\n\t\t\t\t\t\t\t<reference ref=\"31516759\"/>\n\t\t\t\t\t\t\t<reference ref=\"908105787\"/>\n\t\t\t\t\t\t\t<reference ref=\"644046920\"/>\n\t\t\t\t\t\t\t<reference ref=\"231811626\"/>\n\t\t\t\t\t\t\t<reference ref=\"883618387\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"215659978\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">498</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"875092757\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"446991534\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">499</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"630155264\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"446991534\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">500</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"945678886\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"446991534\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">501</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"512868991\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"446991534\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">502</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"163117631\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"446991534\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">503</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"31516759\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"956096989\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"446991534\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">504</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"908105787\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"446991534\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">505</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"644046920\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"446991534\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">506</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"231811626\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"446991534\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">507</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"883618387\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"446991534\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">508</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"956096989\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"257099033\"/>\n\t\t\t\t\t\t\t<reference ref=\"551969625\"/>\n\t\t\t\t\t\t\t<reference ref=\"249532473\"/>\n\t\t\t\t\t\t\t<reference ref=\"607364498\"/>\n\t\t\t\t\t\t\t<reference ref=\"508151438\"/>\n\t\t\t\t\t\t\t<reference ref=\"981751889\"/>\n\t\t\t\t\t\t\t<reference ref=\"380031999\"/>\n\t\t\t\t\t\t\t<reference ref=\"825984362\"/>\n\t\t\t\t\t\t\t<reference ref=\"560145579\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"31516759\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">509</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"257099033\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"956096989\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">510</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"551969625\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"956096989\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">511</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"249532473\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"956096989\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">512</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"607364498\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"956096989\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">513</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"508151438\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"956096989\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">514</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"981751889\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"956096989\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">515</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"380031999\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"956096989\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">516</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"825984362\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"956096989\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">517</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"560145579\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"956096989\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">534</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"738670835\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"963351320\"/>\n\t\t\t\t\t</object>\n\t\t\t\t</array>\n\t\t\t</object>\n\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"flattenedProperties\">\n\t\t\t\t<string key=\"-1.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"-2.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"-3.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"112.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"124.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"125.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"126.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"129.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"130.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"131.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"134.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"136.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"143.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"144.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"145.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"149.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"150.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"19.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"195.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"196.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"197.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"198.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"199.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"200.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"201.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"202.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"203.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"204.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"205.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"206.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"207.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"208.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"209.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"210.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"211.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"212.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"213.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"214.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"215.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"216.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"217.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"218.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"219.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"220.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"221.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"23.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"236.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"239.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"24.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"29.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"295.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"296.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"297.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"298.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"346.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"348.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"349.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"350.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"351.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"354.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"371.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"371.IBWindowTemplateEditedContentRect\">{{380, 496}, {480, 360}}</string>\n\t\t\t\t<integer value=\"1\" key=\"371.NSWindowTemplate.visibleAtLaunch\"/>\n\t\t\t\t<string key=\"372.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"375.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"376.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"377.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"388.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"389.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"390.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"391.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"392.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"393.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"394.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"395.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"396.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"397.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"398.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"399.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"400.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"401.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"402.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"403.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"404.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"405.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"406.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"407.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"408.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"409.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"410.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"411.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"412.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"413.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"414.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"415.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"416.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"417.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"418.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"419.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"420.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"450.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"451.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"452.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"453.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"454.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"457.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"459.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"460.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"462.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"465.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"466.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"485.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"490.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"491.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"492.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"494.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"496.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"497.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"498.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"499.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"5.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"500.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"501.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"502.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"503.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"504.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"505.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"506.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"507.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"508.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"509.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"510.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"511.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"512.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"513.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"514.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"515.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"516.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"517.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"534.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"56.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"57.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"58.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"72.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"73.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"74.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"75.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"77.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"78.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"79.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"81.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"82.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"83.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"92.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t</dictionary>\n\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"unlocalizedProperties\"/>\n\t\t\t<nil key=\"activeLocalization\"/>\n\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"localizations\"/>\n\t\t\t<nil key=\"sourceID\"/>\n\t\t\t<int key=\"maxID\">535</int>\n\t\t</object>\n\t\t<object class=\"IBClassDescriber\" key=\"IBDocument.Classes\">\n\t\t\t<array class=\"NSMutableArray\" key=\"referencedPartialClassDescriptions\">\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">ABCardController</string>\n\t\t\t\t\t<string key=\"superclassName\">NSObject</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"addCardViewField:\">id</string>\n\t\t\t\t\t\t<string key=\"copy:\">id</string>\n\t\t\t\t\t\t<string key=\"cut:\">id</string>\n\t\t\t\t\t\t<string key=\"doDelete:\">id</string>\n\t\t\t\t\t\t<string key=\"find:\">id</string>\n\t\t\t\t\t\t<string key=\"paste:\">id</string>\n\t\t\t\t\t\t<string key=\"saveChanges:\">id</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"addCardViewField:\">\n\t\t\t\t\t\t\t<string key=\"name\">addCardViewField:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"copy:\">\n\t\t\t\t\t\t\t<string key=\"name\">copy:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"cut:\">\n\t\t\t\t\t\t\t<string key=\"name\">cut:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"doDelete:\">\n\t\t\t\t\t\t\t<string key=\"name\">doDelete:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"find:\">\n\t\t\t\t\t\t\t<string key=\"name\">find:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"paste:\">\n\t\t\t\t\t\t\t<string key=\"name\">paste:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"saveChanges:\">\n\t\t\t\t\t\t\t<string key=\"name\">saveChanges:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"mCardView\">ABCardView</string>\n\t\t\t\t\t\t<string key=\"mEditButton\">NSButton</string>\n\t\t\t\t\t\t<string key=\"mManagedObjectContext\">NSManagedObjectContext</string>\n\t\t\t\t\t\t<string key=\"mSearchField\">NSSearchField</string>\n\t\t\t\t\t\t<string key=\"mStatusTextField\">NSTextField</string>\n\t\t\t\t\t\t<string key=\"mWindow\">NSWindow</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"mCardView\">\n\t\t\t\t\t\t\t<string key=\"name\">mCardView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">ABCardView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"mEditButton\">\n\t\t\t\t\t\t\t<string key=\"name\">mEditButton</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSButton</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"mManagedObjectContext\">\n\t\t\t\t\t\t\t<string key=\"name\">mManagedObjectContext</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSManagedObjectContext</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"mSearchField\">\n\t\t\t\t\t\t\t<string key=\"name\">mSearchField</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSSearchField</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"mStatusTextField\">\n\t\t\t\t\t\t\t<string key=\"name\">mStatusTextField</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSTextField</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"mWindow\">\n\t\t\t\t\t\t\t<string key=\"name\">mWindow</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSWindow</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/ABCardController.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">ABCardView</string>\n\t\t\t\t\t<string key=\"superclassName\">NSView</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"commitAndSave:\">id</string>\n\t\t\t\t\t\t<string key=\"statusImageClicked:\">id</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"commitAndSave:\">\n\t\t\t\t\t\t\t<string key=\"name\">commitAndSave:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"statusImageClicked:\">\n\t\t\t\t\t\t\t<string key=\"name\">statusImageClicked:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"mBindingsController\">NSObjectController</string>\n\t\t\t\t\t\t<string key=\"mBuddyStatusImage\">NSImageView</string>\n\t\t\t\t\t\t<string key=\"mHeaderView\">NSView</string>\n\t\t\t\t\t\t<string key=\"mNameView\">ABNameFrameView</string>\n\t\t\t\t\t\t<string key=\"mNextKeyView\">NSView</string>\n\t\t\t\t\t\t<string key=\"mUserImage\">NSImage</string>\n\t\t\t\t\t\t<string key=\"mUserImageView\">ABImageView</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"mBindingsController\">\n\t\t\t\t\t\t\t<string key=\"name\">mBindingsController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSObjectController</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"mBuddyStatusImage\">\n\t\t\t\t\t\t\t<string key=\"name\">mBuddyStatusImage</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSImageView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"mHeaderView\">\n\t\t\t\t\t\t\t<string key=\"name\">mHeaderView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"mNameView\">\n\t\t\t\t\t\t\t<string key=\"name\">mNameView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">ABNameFrameView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"mNextKeyView\">\n\t\t\t\t\t\t\t<string key=\"name\">mNextKeyView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"mUserImage\">\n\t\t\t\t\t\t\t<string key=\"name\">mUserImage</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSImage</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"mUserImageView\">\n\t\t\t\t\t\t\t<string key=\"name\">mUserImageView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">ABImageView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/ABCardView.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">ABImageView</string>\n\t\t\t\t\t<string key=\"superclassName\">NSImageView</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"copy:\">id</string>\n\t\t\t\t\t\t<string key=\"cut:\">id</string>\n\t\t\t\t\t\t<string key=\"delete:\">id</string>\n\t\t\t\t\t\t<string key=\"paste:\">id</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"copy:\">\n\t\t\t\t\t\t\t<string key=\"name\">copy:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"cut:\">\n\t\t\t\t\t\t\t<string key=\"name\">cut:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"delete:\">\n\t\t\t\t\t\t\t<string key=\"name\">delete:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"paste:\">\n\t\t\t\t\t\t\t<string key=\"name\">paste:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/ABImageView.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">DVTBorderedView</string>\n\t\t\t\t\t<string key=\"superclassName\">DVTLayoutView_ML</string>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">contentView</string>\n\t\t\t\t\t\t<string key=\"NS.object.0\">NSView</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">contentView</string>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"NS.object.0\">\n\t\t\t\t\t\t\t<string key=\"name\">contentView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/DVTBorderedView.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">DVTDelayedMenuButton</string>\n\t\t\t\t\t<string key=\"superclassName\">NSButton</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/DVTDelayedMenuButton.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">DVTGradientImageButton</string>\n\t\t\t\t\t<string key=\"superclassName\">NSButton</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/DVTGradientImageButton.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">DVTImageAndTextCell</string>\n\t\t\t\t\t<string key=\"superclassName\">NSTextFieldCell</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/DVTImageAndTextCell.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">DVTImageAndTextColumn</string>\n\t\t\t\t\t<string key=\"superclassName\">NSTableColumn</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/DVTImageAndTextColumn.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">DVTLayoutView_ML</string>\n\t\t\t\t\t<string key=\"superclassName\">NSView</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/DVTLayoutView_ML.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">DVTOutlineView</string>\n\t\t\t\t\t<string key=\"superclassName\">NSOutlineView</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/DVTOutlineView.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">DVTSplitView</string>\n\t\t\t\t\t<string key=\"superclassName\">NSSplitView</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/DVTSplitView.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">DVTStackView_ML</string>\n\t\t\t\t\t<string key=\"superclassName\">DVTLayoutView_ML</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/DVTStackView_ML.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">DVTTableView</string>\n\t\t\t\t\t<string key=\"superclassName\">NSTableView</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/DVTTableView.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">DVTViewController</string>\n\t\t\t\t\t<string key=\"superclassName\">NSViewController</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/DVTViewController.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">HFController</string>\n\t\t\t\t\t<string key=\"superclassName\">NSObject</string>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">selectAll:</string>\n\t\t\t\t\t\t<string key=\"NS.object.0\">id</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">selectAll:</string>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"NS.object.0\">\n\t\t\t\t\t\t\t<string key=\"name\">selectAll:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/HFController.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">HFRepresenterTextView</string>\n\t\t\t\t\t<string key=\"superclassName\">NSView</string>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">selectAll:</string>\n\t\t\t\t\t\t<string key=\"NS.object.0\">id</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">selectAll:</string>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"NS.object.0\">\n\t\t\t\t\t\t\t<string key=\"name\">selectAll:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/HFRepresenterTextView.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IBEditor</string>\n\t\t\t\t\t<string key=\"superclassName\">NSObject</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"changeFont:\">id</string>\n\t\t\t\t\t\t<string key=\"performCopy:\">id</string>\n\t\t\t\t\t\t<string key=\"performCut:\">id</string>\n\t\t\t\t\t\t<string key=\"selectAll:\">id</string>\n\t\t\t\t\t\t<string key=\"sizeSelectionToFit:\">id</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"changeFont:\">\n\t\t\t\t\t\t\t<string key=\"name\">changeFont:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"performCopy:\">\n\t\t\t\t\t\t\t<string key=\"name\">performCopy:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"performCut:\">\n\t\t\t\t\t\t\t<string key=\"name\">performCut:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"selectAll:\">\n\t\t\t\t\t\t\t<string key=\"name\">selectAll:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"sizeSelectionToFit:\">\n\t\t\t\t\t\t\t<string key=\"name\">sizeSelectionToFit:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IBEditor.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDECapsuleListView</string>\n\t\t\t\t\t<string key=\"superclassName\">DVTStackView_ML</string>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">dataSource</string>\n\t\t\t\t\t\t<string key=\"NS.object.0\">id</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">dataSource</string>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"NS.object.0\">\n\t\t\t\t\t\t\t<string key=\"name\">dataSource</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDECapsuleListView.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEDMArrayController</string>\n\t\t\t\t\t<string key=\"superclassName\">NSArrayController</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEDMArrayController.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEDMEditor</string>\n\t\t\t\t\t<string key=\"superclassName\">IDEEditor</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"bottomToolbarBorderView\">DVTBorderedView</string>\n\t\t\t\t\t\t<string key=\"sourceListSplitViewPane\">NSView</string>\n\t\t\t\t\t\t<string key=\"sourceListViewController\">IDEDMEditorSourceListController</string>\n\t\t\t\t\t\t<string key=\"splitView\">DVTSplitView</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"bottomToolbarBorderView\">\n\t\t\t\t\t\t\t<string key=\"name\">bottomToolbarBorderView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">DVTBorderedView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"sourceListSplitViewPane\">\n\t\t\t\t\t\t\t<string key=\"name\">sourceListSplitViewPane</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"sourceListViewController\">\n\t\t\t\t\t\t\t<string key=\"name\">sourceListViewController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDMEditorSourceListController</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"splitView\">\n\t\t\t\t\t\t\t<string key=\"name\">splitView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">DVTSplitView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEDMEditor.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEDMEditorController</string>\n\t\t\t\t\t<string key=\"superclassName\">IDEViewController</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEDMEditorController.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEDMEditorSourceListController</string>\n\t\t\t\t\t<string key=\"superclassName\">IDEDMEditorController</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"borderedView\">DVTBorderedView</string>\n\t\t\t\t\t\t<string key=\"parentEditor\">IDEDMEditor</string>\n\t\t\t\t\t\t<string key=\"primaryColumn\">DVTImageAndTextColumn</string>\n\t\t\t\t\t\t<string key=\"sourceListOutlineView\">DVTOutlineView</string>\n\t\t\t\t\t\t<string key=\"sourceListTreeController\">NSTreeController</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"borderedView\">\n\t\t\t\t\t\t\t<string key=\"name\">borderedView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">DVTBorderedView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"parentEditor\">\n\t\t\t\t\t\t\t<string key=\"name\">parentEditor</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDMEditor</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"primaryColumn\">\n\t\t\t\t\t\t\t<string key=\"name\">primaryColumn</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">DVTImageAndTextColumn</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"sourceListOutlineView\">\n\t\t\t\t\t\t\t<string key=\"name\">sourceListOutlineView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">DVTOutlineView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"sourceListTreeController\">\n\t\t\t\t\t\t\t<string key=\"name\">sourceListTreeController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSTreeController</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEDMEditorSourceListController.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEDMHighlightImageAndTextCell</string>\n\t\t\t\t\t<string key=\"superclassName\">DVTImageAndTextCell</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEDMHighlightImageAndTextCell.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEDataModelBrowserEditor</string>\n\t\t\t\t\t<string key=\"superclassName\">IDEDMEditorController</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"attributesTableViewController\">IDEDataModelPropertiesTableController</string>\n\t\t\t\t\t\t<string key=\"capsuleView\">IDECapsuleListView</string>\n\t\t\t\t\t\t<string key=\"entityArrayController\">NSArrayController</string>\n\t\t\t\t\t\t<string key=\"fetchedPropertiesTableViewController\">IDEDataModelPropertiesTableController</string>\n\t\t\t\t\t\t<string key=\"parentEditor\">IDEDataModelEntityContentsEditor</string>\n\t\t\t\t\t\t<string key=\"relationshipsTableViewController\">IDEDataModelPropertiesTableController</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"attributesTableViewController\">\n\t\t\t\t\t\t\t<string key=\"name\">attributesTableViewController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDataModelPropertiesTableController</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"capsuleView\">\n\t\t\t\t\t\t\t<string key=\"name\">capsuleView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDECapsuleListView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"entityArrayController\">\n\t\t\t\t\t\t\t<string key=\"name\">entityArrayController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSArrayController</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"fetchedPropertiesTableViewController\">\n\t\t\t\t\t\t\t<string key=\"name\">fetchedPropertiesTableViewController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDataModelPropertiesTableController</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"parentEditor\">\n\t\t\t\t\t\t\t<string key=\"name\">parentEditor</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDataModelEntityContentsEditor</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"relationshipsTableViewController\">\n\t\t\t\t\t\t\t<string key=\"name\">relationshipsTableViewController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDataModelPropertiesTableController</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEDataModelBrowserEditor.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEDataModelConfigurationEditor</string>\n\t\t\t\t\t<string key=\"superclassName\">IDEDMEditorController</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"capsuleListView\">IDECapsuleListView</string>\n\t\t\t\t\t\t<string key=\"parentEditor\">IDEDataModelEditor</string>\n\t\t\t\t\t\t<string key=\"tableController\">IDEDataModelConfigurationTableController</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"capsuleListView\">\n\t\t\t\t\t\t\t<string key=\"name\">capsuleListView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDECapsuleListView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"parentEditor\">\n\t\t\t\t\t\t\t<string key=\"name\">parentEditor</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDataModelEditor</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"tableController\">\n\t\t\t\t\t\t\t<string key=\"name\">tableController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDataModelConfigurationTableController</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEDataModelConfigurationEditor.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEDataModelConfigurationTableController</string>\n\t\t\t\t\t<string key=\"superclassName\">IDEDMEditorController</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"configurationsArrayController\">NSArrayController</string>\n\t\t\t\t\t\t<string key=\"entitiesArrayController\">NSArrayController</string>\n\t\t\t\t\t\t<string key=\"parentEditor\">IDEDataModelConfigurationEditor</string>\n\t\t\t\t\t\t<string key=\"tableView\">XDTableView</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"configurationsArrayController\">\n\t\t\t\t\t\t\t<string key=\"name\">configurationsArrayController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSArrayController</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"entitiesArrayController\">\n\t\t\t\t\t\t\t<string key=\"name\">entitiesArrayController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSArrayController</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"parentEditor\">\n\t\t\t\t\t\t\t<string key=\"name\">parentEditor</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDataModelConfigurationEditor</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"tableView\">\n\t\t\t\t\t\t\t<string key=\"name\">tableView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">XDTableView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEDataModelConfigurationTableController.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEDataModelDiagramEditor</string>\n\t\t\t\t\t<string key=\"superclassName\">IDEDMEditorController</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"diagramView\">XDDiagramView</string>\n\t\t\t\t\t\t<string key=\"parentEditor\">IDEDataModelEntityContentsEditor</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"diagramView\">\n\t\t\t\t\t\t\t<string key=\"name\">diagramView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">XDDiagramView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"parentEditor\">\n\t\t\t\t\t\t\t<string key=\"name\">parentEditor</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDataModelEntityContentsEditor</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEDataModelDiagramEditor.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEDataModelEditor</string>\n\t\t\t\t\t<string key=\"superclassName\">IDEDMEditor</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"addEntityButton\">DVTDelayedMenuButton</string>\n\t\t\t\t\t\t<string key=\"addPropertyButton\">DVTDelayedMenuButton</string>\n\t\t\t\t\t\t<string key=\"browserDiagramSegmentControl\">NSSegmentedControl</string>\n\t\t\t\t\t\t<string key=\"configurationViewController\">IDEDataModelConfigurationEditor</string>\n\t\t\t\t\t\t<string key=\"entityContentsViewController\">IDEDataModelEntityContentsEditor</string>\n\t\t\t\t\t\t<string key=\"fetchRequestViewController\">IDEDataModelFetchRequestEditor</string>\n\t\t\t\t\t\t<string key=\"hierarchySegmentControl\">NSSegmentedControl</string>\n\t\t\t\t\t\t<string key=\"tabView\">NSTabView</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"addEntityButton\">\n\t\t\t\t\t\t\t<string key=\"name\">addEntityButton</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">DVTDelayedMenuButton</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"addPropertyButton\">\n\t\t\t\t\t\t\t<string key=\"name\">addPropertyButton</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">DVTDelayedMenuButton</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"browserDiagramSegmentControl\">\n\t\t\t\t\t\t\t<string key=\"name\">browserDiagramSegmentControl</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSSegmentedControl</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"configurationViewController\">\n\t\t\t\t\t\t\t<string key=\"name\">configurationViewController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDataModelConfigurationEditor</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"entityContentsViewController\">\n\t\t\t\t\t\t\t<string key=\"name\">entityContentsViewController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDataModelEntityContentsEditor</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"fetchRequestViewController\">\n\t\t\t\t\t\t\t<string key=\"name\">fetchRequestViewController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDataModelFetchRequestEditor</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"hierarchySegmentControl\">\n\t\t\t\t\t\t\t<string key=\"name\">hierarchySegmentControl</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSSegmentedControl</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"tabView\">\n\t\t\t\t\t\t\t<string key=\"name\">tabView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSTabView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEDataModelEditor.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEDataModelEntityContentsEditor</string>\n\t\t\t\t\t<string key=\"superclassName\">IDEDMEditorController</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"browserViewController\">IDEDataModelBrowserEditor</string>\n\t\t\t\t\t\t<string key=\"diagramViewController\">IDEDataModelDiagramEditor</string>\n\t\t\t\t\t\t<string key=\"parentEditor\">IDEDataModelEditor</string>\n\t\t\t\t\t\t<string key=\"tabView\">NSTabView</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"browserViewController\">\n\t\t\t\t\t\t\t<string key=\"name\">browserViewController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDataModelBrowserEditor</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"diagramViewController\">\n\t\t\t\t\t\t\t<string key=\"name\">diagramViewController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDataModelDiagramEditor</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"parentEditor\">\n\t\t\t\t\t\t\t<string key=\"name\">parentEditor</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDataModelEditor</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"tabView\">\n\t\t\t\t\t\t\t<string key=\"name\">tabView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSTabView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEDataModelEntityContentsEditor.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEDataModelFetchRequestEditor</string>\n\t\t\t\t\t<string key=\"superclassName\">IDEDMEditorController</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"entityController\">NSArrayController</string>\n\t\t\t\t\t\t<string key=\"parentEditor\">IDEDataModelEditor</string>\n\t\t\t\t\t\t<string key=\"tableView\">IDECapsuleListView</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"entityController\">\n\t\t\t\t\t\t\t<string key=\"name\">entityController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSArrayController</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"parentEditor\">\n\t\t\t\t\t\t\t<string key=\"name\">parentEditor</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDataModelEditor</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"tableView\">\n\t\t\t\t\t\t\t<string key=\"name\">tableView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDECapsuleListView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEDataModelFetchRequestEditor.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEDataModelPropertiesTableController</string>\n\t\t\t\t\t<string key=\"superclassName\">IDEDMEditorController</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"arrayController\">IDEDMArrayController</string>\n\t\t\t\t\t\t<string key=\"entitiesColumn\">NSTableColumn</string>\n\t\t\t\t\t\t<string key=\"entityArrayController\">NSArrayController</string>\n\t\t\t\t\t\t<string key=\"parentEditor\">IDEDataModelBrowserEditor</string>\n\t\t\t\t\t\t<string key=\"propertyNameAndImageCell\">IDEDMHighlightImageAndTextCell</string>\n\t\t\t\t\t\t<string key=\"tableView\">XDTableView</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"arrayController\">\n\t\t\t\t\t\t\t<string key=\"name\">arrayController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDMArrayController</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"entitiesColumn\">\n\t\t\t\t\t\t\t<string key=\"name\">entitiesColumn</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSTableColumn</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"entityArrayController\">\n\t\t\t\t\t\t\t<string key=\"name\">entityArrayController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSArrayController</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"parentEditor\">\n\t\t\t\t\t\t\t<string key=\"name\">parentEditor</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDataModelBrowserEditor</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"propertyNameAndImageCell\">\n\t\t\t\t\t\t\t<string key=\"name\">propertyNameAndImageCell</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDMHighlightImageAndTextCell</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"tableView\">\n\t\t\t\t\t\t\t<string key=\"name\">tableView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">XDTableView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEDataModelPropertiesTableController.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEDocDownloadsTableViewController</string>\n\t\t\t\t\t<string key=\"superclassName\">NSObject</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"_downloadButtonCell\">NSButtonCell</string>\n\t\t\t\t\t\t<string key=\"_tableView\">DVTTableView</string>\n\t\t\t\t\t\t<string key=\"prefPaneController\">IDEDocViewingPrefPaneController</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_downloadButtonCell\">\n\t\t\t\t\t\t\t<string key=\"name\">_downloadButtonCell</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSButtonCell</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_tableView\">\n\t\t\t\t\t\t\t<string key=\"name\">_tableView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">DVTTableView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"prefPaneController\">\n\t\t\t\t\t\t\t<string key=\"name\">prefPaneController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDocViewingPrefPaneController</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEDocDownloadsTableViewController.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEDocSetOutlineView</string>\n\t\t\t\t\t<string key=\"superclassName\">NSOutlineView</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEDocSetOutlineView.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEDocSetOutlineViewController</string>\n\t\t\t\t\t<string key=\"superclassName\">NSObject</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"getDocSetAction:\">id</string>\n\t\t\t\t\t\t<string key=\"showProblemInfoForUpdate:\">id</string>\n\t\t\t\t\t\t<string key=\"subscribeToPublisherAction:\">id</string>\n\t\t\t\t\t\t<string key=\"unsubscribeFromPublisher:\">id</string>\n\t\t\t\t\t\t<string key=\"updateDocSetAction:\">id</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"getDocSetAction:\">\n\t\t\t\t\t\t\t<string key=\"name\">getDocSetAction:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"showProblemInfoForUpdate:\">\n\t\t\t\t\t\t\t<string key=\"name\">showProblemInfoForUpdate:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"subscribeToPublisherAction:\">\n\t\t\t\t\t\t\t<string key=\"name\">subscribeToPublisherAction:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"unsubscribeFromPublisher:\">\n\t\t\t\t\t\t\t<string key=\"name\">unsubscribeFromPublisher:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"updateDocSetAction:\">\n\t\t\t\t\t\t\t<string key=\"name\">updateDocSetAction:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">docSetOutlineView</string>\n\t\t\t\t\t\t<string key=\"NS.object.0\">IDEDocSetOutlineView</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">docSetOutlineView</string>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"NS.object.0\">\n\t\t\t\t\t\t\t<string key=\"name\">docSetOutlineView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDocSetOutlineView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEDocSetOutlineViewController.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEDocViewingPrefPaneController</string>\n\t\t\t\t\t<string key=\"superclassName\">IDEViewController</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"addSubscription:\">id</string>\n\t\t\t\t\t\t<string key=\"checkForAndInstallUpdatesNow:\">id</string>\n\t\t\t\t\t\t<string key=\"deleteDocSet:\">id</string>\n\t\t\t\t\t\t<string key=\"downloadAction:\">id</string>\n\t\t\t\t\t\t<string key=\"minimumFontSizeComboBoxAction:\">id</string>\n\t\t\t\t\t\t<string key=\"minimumFontSizeEnabledAction:\">id</string>\n\t\t\t\t\t\t<string key=\"showHelp:\">id</string>\n\t\t\t\t\t\t<string key=\"showSubscriptionSheet:\">id</string>\n\t\t\t\t\t\t<string key=\"subscriptionCancelAction:\">id</string>\n\t\t\t\t\t\t<string key=\"toggleAutoCheckForAndInstallUpdates:\">id</string>\n\t\t\t\t\t\t<string key=\"toggleDocSetInfo:\">id</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"addSubscription:\">\n\t\t\t\t\t\t\t<string key=\"name\">addSubscription:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"checkForAndInstallUpdatesNow:\">\n\t\t\t\t\t\t\t<string key=\"name\">checkForAndInstallUpdatesNow:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"deleteDocSet:\">\n\t\t\t\t\t\t\t<string key=\"name\">deleteDocSet:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"downloadAction:\">\n\t\t\t\t\t\t\t<string key=\"name\">downloadAction:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"minimumFontSizeComboBoxAction:\">\n\t\t\t\t\t\t\t<string key=\"name\">minimumFontSizeComboBoxAction:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"minimumFontSizeEnabledAction:\">\n\t\t\t\t\t\t\t<string key=\"name\">minimumFontSizeEnabledAction:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"showHelp:\">\n\t\t\t\t\t\t\t<string key=\"name\">showHelp:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"showSubscriptionSheet:\">\n\t\t\t\t\t\t\t<string key=\"name\">showSubscriptionSheet:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"subscriptionCancelAction:\">\n\t\t\t\t\t\t\t<string key=\"name\">subscriptionCancelAction:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"toggleAutoCheckForAndInstallUpdates:\">\n\t\t\t\t\t\t\t<string key=\"name\">toggleAutoCheckForAndInstallUpdates:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"toggleDocSetInfo:\">\n\t\t\t\t\t\t\t<string key=\"name\">toggleDocSetInfo:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"_addButton\">DVTGradientImageButton</string>\n\t\t\t\t\t\t<string key=\"_deleteButton\">DVTGradientImageButton</string>\n\t\t\t\t\t\t<string key=\"_showInfoAreaButton\">DVTGradientImageButton</string>\n\t\t\t\t\t\t<string key=\"_splitView\">NSSplitView</string>\n\t\t\t\t\t\t<string key=\"_splitViewDocSetInfoSubview\">NSView</string>\n\t\t\t\t\t\t<string key=\"_splitViewDocSetsListSubview\">NSView</string>\n\t\t\t\t\t\t<string key=\"borderedViewAroundSplitView\">DVTBorderedView</string>\n\t\t\t\t\t\t<string key=\"borderedViewBelowTable\">DVTBorderedView</string>\n\t\t\t\t\t\t<string key=\"checkAndInstallNowButton\">NSButton</string>\n\t\t\t\t\t\t<string key=\"docSetInfoTextView\">NSTextView</string>\n\t\t\t\t\t\t<string key=\"docSetOutlineViewController\">IDEDocSetOutlineViewController</string>\n\t\t\t\t\t\t<string key=\"downloadsTableViewController\">IDEDocDownloadsTableViewController</string>\n\t\t\t\t\t\t<string key=\"minimumFontSizeControl\">NSComboBox</string>\n\t\t\t\t\t\t<string key=\"noUpdatesAvailableMessage\">NSTextField</string>\n\t\t\t\t\t\t<string key=\"showInfoButton\">NSButton</string>\n\t\t\t\t\t\t<string key=\"subscriptionTextField\">NSTextField</string>\n\t\t\t\t\t\t<string key=\"subscriptionWindow\">NSWindow</string>\n\t\t\t\t\t\t<string key=\"validateAddSubscriptionButton\">NSButton</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_addButton\">\n\t\t\t\t\t\t\t<string key=\"name\">_addButton</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">DVTGradientImageButton</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_deleteButton\">\n\t\t\t\t\t\t\t<string key=\"name\">_deleteButton</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">DVTGradientImageButton</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_showInfoAreaButton\">\n\t\t\t\t\t\t\t<string key=\"name\">_showInfoAreaButton</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">DVTGradientImageButton</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_splitView\">\n\t\t\t\t\t\t\t<string key=\"name\">_splitView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSSplitView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_splitViewDocSetInfoSubview\">\n\t\t\t\t\t\t\t<string key=\"name\">_splitViewDocSetInfoSubview</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_splitViewDocSetsListSubview\">\n\t\t\t\t\t\t\t<string key=\"name\">_splitViewDocSetsListSubview</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"borderedViewAroundSplitView\">\n\t\t\t\t\t\t\t<string key=\"name\">borderedViewAroundSplitView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">DVTBorderedView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"borderedViewBelowTable\">\n\t\t\t\t\t\t\t<string key=\"name\">borderedViewBelowTable</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">DVTBorderedView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"checkAndInstallNowButton\">\n\t\t\t\t\t\t\t<string key=\"name\">checkAndInstallNowButton</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSButton</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"docSetInfoTextView\">\n\t\t\t\t\t\t\t<string key=\"name\">docSetInfoTextView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSTextView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"docSetOutlineViewController\">\n\t\t\t\t\t\t\t<string key=\"name\">docSetOutlineViewController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDocSetOutlineViewController</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"downloadsTableViewController\">\n\t\t\t\t\t\t\t<string key=\"name\">downloadsTableViewController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDocDownloadsTableViewController</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"minimumFontSizeControl\">\n\t\t\t\t\t\t\t<string key=\"name\">minimumFontSizeControl</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSComboBox</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"noUpdatesAvailableMessage\">\n\t\t\t\t\t\t\t<string key=\"name\">noUpdatesAvailableMessage</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSTextField</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"showInfoButton\">\n\t\t\t\t\t\t\t<string key=\"name\">showInfoButton</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSButton</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"subscriptionTextField\">\n\t\t\t\t\t\t\t<string key=\"name\">subscriptionTextField</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSTextField</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"subscriptionWindow\">\n\t\t\t\t\t\t\t<string key=\"name\">subscriptionWindow</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSWindow</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"validateAddSubscriptionButton\">\n\t\t\t\t\t\t\t<string key=\"name\">validateAddSubscriptionButton</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSButton</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEDocViewingPrefPaneController.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEEditor</string>\n\t\t\t\t\t<string key=\"superclassName\">IDEViewController</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEEditor.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEViewController</string>\n\t\t\t\t\t<string key=\"superclassName\">DVTViewController</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEViewController.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IKImageView</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"copy:\">id</string>\n\t\t\t\t\t\t<string key=\"crop:\">id</string>\n\t\t\t\t\t\t<string key=\"cut:\">id</string>\n\t\t\t\t\t\t<string key=\"paste:\">id</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"copy:\">\n\t\t\t\t\t\t\t<string key=\"name\">copy:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"crop:\">\n\t\t\t\t\t\t\t<string key=\"name\">crop:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"cut:\">\n\t\t\t\t\t\t\t<string key=\"name\">cut:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"paste:\">\n\t\t\t\t\t\t\t<string key=\"name\">paste:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IKImageView.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">NSDocument</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"printDocument:\">id</string>\n\t\t\t\t\t\t<string key=\"revertDocumentToSaved:\">id</string>\n\t\t\t\t\t\t<string key=\"runPageLayout:\">id</string>\n\t\t\t\t\t\t<string key=\"saveDocument:\">id</string>\n\t\t\t\t\t\t<string key=\"saveDocumentAs:\">id</string>\n\t\t\t\t\t\t<string key=\"saveDocumentTo:\">id</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"printDocument:\">\n\t\t\t\t\t\t\t<string key=\"name\">printDocument:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"revertDocumentToSaved:\">\n\t\t\t\t\t\t\t<string key=\"name\">revertDocumentToSaved:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"runPageLayout:\">\n\t\t\t\t\t\t\t<string key=\"name\">runPageLayout:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"saveDocument:\">\n\t\t\t\t\t\t\t<string key=\"name\">saveDocument:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"saveDocumentAs:\">\n\t\t\t\t\t\t\t<string key=\"name\">saveDocumentAs:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"saveDocumentTo:\">\n\t\t\t\t\t\t\t<string key=\"name\">saveDocumentTo:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/NSDocument.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">NSResponder</string>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">_insertFindPattern:</string>\n\t\t\t\t\t\t<string key=\"NS.object.0\">id</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">_insertFindPattern:</string>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"NS.object.0\">\n\t\t\t\t\t\t\t<string key=\"name\">_insertFindPattern:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/NSResponder.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">QLPreviewBubble</string>\n\t\t\t\t\t<string key=\"superclassName\">NSObject</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"hide:\">id</string>\n\t\t\t\t\t\t<string key=\"show:\">id</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"hide:\">\n\t\t\t\t\t\t\t<string key=\"name\">hide:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"show:\">\n\t\t\t\t\t\t\t<string key=\"name\">show:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">parentWindow</string>\n\t\t\t\t\t\t<string key=\"NS.object.0\">NSWindow</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">parentWindow</string>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"NS.object.0\">\n\t\t\t\t\t\t\t<string key=\"name\">parentWindow</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSWindow</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/QLPreviewBubble.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">QTMovieView</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"showAll:\">id</string>\n\t\t\t\t\t\t<string key=\"showCustomButton:\">id</string>\n\t\t\t\t\t\t<string key=\"toggleLoops:\">id</string>\n\t\t\t\t\t\t<string key=\"zoomIn:\">id</string>\n\t\t\t\t\t\t<string key=\"zoomOut:\">id</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"showAll:\">\n\t\t\t\t\t\t\t<string key=\"name\">showAll:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"showCustomButton:\">\n\t\t\t\t\t\t\t<string key=\"name\">showCustomButton:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"toggleLoops:\">\n\t\t\t\t\t\t\t<string key=\"name\">toggleLoops:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"zoomIn:\">\n\t\t\t\t\t\t\t<string key=\"name\">zoomIn:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"zoomOut:\">\n\t\t\t\t\t\t\t<string key=\"name\">zoomOut:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/QTMovieView.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">WebView</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"reloadFromOrigin:\">id</string>\n\t\t\t\t\t\t<string key=\"resetPageZoom:\">id</string>\n\t\t\t\t\t\t<string key=\"zoomPageIn:\">id</string>\n\t\t\t\t\t\t<string key=\"zoomPageOut:\">id</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"reloadFromOrigin:\">\n\t\t\t\t\t\t\t<string key=\"name\">reloadFromOrigin:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"resetPageZoom:\">\n\t\t\t\t\t\t\t<string key=\"name\">resetPageZoom:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"zoomPageIn:\">\n\t\t\t\t\t\t\t<string key=\"name\">zoomPageIn:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"zoomPageOut:\">\n\t\t\t\t\t\t\t<string key=\"name\">zoomPageOut:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/WebView.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">XDDiagramView</string>\n\t\t\t\t\t<string key=\"superclassName\">NSView</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"_graphLayouterMenuItemAction:\">id</string>\n\t\t\t\t\t\t<string key=\"_zoomPopUpButtonAction:\">id</string>\n\t\t\t\t\t\t<string key=\"alignBottomEdges:\">id</string>\n\t\t\t\t\t\t<string key=\"alignCentersHorizontallyInContainer:\">id</string>\n\t\t\t\t\t\t<string key=\"alignCentersVerticallyInContainer:\">id</string>\n\t\t\t\t\t\t<string key=\"alignHorizontalCenters:\">id</string>\n\t\t\t\t\t\t<string key=\"alignLeftEdges:\">id</string>\n\t\t\t\t\t\t<string key=\"alignRightEdges:\">id</string>\n\t\t\t\t\t\t<string key=\"alignTopEdges:\">id</string>\n\t\t\t\t\t\t<string key=\"alignVerticalCenters:\">id</string>\n\t\t\t\t\t\t<string key=\"bringToFront:\">id</string>\n\t\t\t\t\t\t<string key=\"collapseAllCompartments:\">id</string>\n\t\t\t\t\t\t<string key=\"copy:\">id</string>\n\t\t\t\t\t\t<string key=\"cut:\">id</string>\n\t\t\t\t\t\t<string key=\"delete:\">id</string>\n\t\t\t\t\t\t<string key=\"deleteBackward:\">id</string>\n\t\t\t\t\t\t<string key=\"deleteForward:\">id</string>\n\t\t\t\t\t\t<string key=\"deselectAll:\">id</string>\n\t\t\t\t\t\t<string key=\"diagramZoomIn:\">id</string>\n\t\t\t\t\t\t<string key=\"diagramZoomOut:\">id</string>\n\t\t\t\t\t\t<string key=\"expandAllCompartments:\">id</string>\n\t\t\t\t\t\t<string key=\"flipHorizontally:\">id</string>\n\t\t\t\t\t\t<string key=\"flipVertically:\">id</string>\n\t\t\t\t\t\t<string key=\"layoutGraphicsConcentrically:\">id</string>\n\t\t\t\t\t\t<string key=\"layoutGraphicsHierarchically:\">id</string>\n\t\t\t\t\t\t<string key=\"lock:\">id</string>\n\t\t\t\t\t\t<string key=\"makeSameHeight:\">id</string>\n\t\t\t\t\t\t<string key=\"makeSameWidth:\">id</string>\n\t\t\t\t\t\t<string key=\"moveDown:\">id</string>\n\t\t\t\t\t\t<string key=\"moveDownAndModifySelection:\">id</string>\n\t\t\t\t\t\t<string key=\"moveLeft:\">id</string>\n\t\t\t\t\t\t<string key=\"moveLeftAndModifySelection:\">id</string>\n\t\t\t\t\t\t<string key=\"moveRight:\">id</string>\n\t\t\t\t\t\t<string key=\"moveRightAndModifySelection:\">id</string>\n\t\t\t\t\t\t<string key=\"moveUp:\">id</string>\n\t\t\t\t\t\t<string key=\"moveUpAndModifySelection:\">id</string>\n\t\t\t\t\t\t<string key=\"paste:\">id</string>\n\t\t\t\t\t\t<string key=\"rollDownAllCompartments:\">id</string>\n\t\t\t\t\t\t<string key=\"rollUpAllCompartments:\">id</string>\n\t\t\t\t\t\t<string key=\"selectAll:\">id</string>\n\t\t\t\t\t\t<string key=\"sendToBack:\">id</string>\n\t\t\t\t\t\t<string key=\"sizeToFit:\">id</string>\n\t\t\t\t\t\t<string key=\"toggleGridShown:\">id</string>\n\t\t\t\t\t\t<string key=\"toggleHiddenGraphicsShown:\">id</string>\n\t\t\t\t\t\t<string key=\"togglePageBreaksShown:\">id</string>\n\t\t\t\t\t\t<string key=\"toggleRuler:\">id</string>\n\t\t\t\t\t\t<string key=\"toggleSnapsToGrid:\">id</string>\n\t\t\t\t\t\t<string key=\"unlock:\">id</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"_graphLayouterMenuItemAction:\">\n\t\t\t\t\t\t\t<string key=\"name\">_graphLayouterMenuItemAction:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"_zoomPopUpButtonAction:\">\n\t\t\t\t\t\t\t<string key=\"name\">_zoomPopUpButtonAction:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"alignBottomEdges:\">\n\t\t\t\t\t\t\t<string key=\"name\">alignBottomEdges:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"alignCentersHorizontallyInContainer:\">\n\t\t\t\t\t\t\t<string key=\"name\">alignCentersHorizontallyInContainer:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"alignCentersVerticallyInContainer:\">\n\t\t\t\t\t\t\t<string key=\"name\">alignCentersVerticallyInContainer:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"alignHorizontalCenters:\">\n\t\t\t\t\t\t\t<string key=\"name\">alignHorizontalCenters:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"alignLeftEdges:\">\n\t\t\t\t\t\t\t<string key=\"name\">alignLeftEdges:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"alignRightEdges:\">\n\t\t\t\t\t\t\t<string key=\"name\">alignRightEdges:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"alignTopEdges:\">\n\t\t\t\t\t\t\t<string key=\"name\">alignTopEdges:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"alignVerticalCenters:\">\n\t\t\t\t\t\t\t<string key=\"name\">alignVerticalCenters:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"bringToFront:\">\n\t\t\t\t\t\t\t<string key=\"name\">bringToFront:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"collapseAllCompartments:\">\n\t\t\t\t\t\t\t<string key=\"name\">collapseAllCompartments:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"copy:\">\n\t\t\t\t\t\t\t<string key=\"name\">copy:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"cut:\">\n\t\t\t\t\t\t\t<string key=\"name\">cut:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"delete:\">\n\t\t\t\t\t\t\t<string key=\"name\">delete:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"deleteBackward:\">\n\t\t\t\t\t\t\t<string key=\"name\">deleteBackward:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"deleteForward:\">\n\t\t\t\t\t\t\t<string key=\"name\">deleteForward:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"deselectAll:\">\n\t\t\t\t\t\t\t<string key=\"name\">deselectAll:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"diagramZoomIn:\">\n\t\t\t\t\t\t\t<string key=\"name\">diagramZoomIn:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"diagramZoomOut:\">\n\t\t\t\t\t\t\t<string key=\"name\">diagramZoomOut:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"expandAllCompartments:\">\n\t\t\t\t\t\t\t<string key=\"name\">expandAllCompartments:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"flipHorizontally:\">\n\t\t\t\t\t\t\t<string key=\"name\">flipHorizontally:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"flipVertically:\">\n\t\t\t\t\t\t\t<string key=\"name\">flipVertically:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"layoutGraphicsConcentrically:\">\n\t\t\t\t\t\t\t<string key=\"name\">layoutGraphicsConcentrically:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"layoutGraphicsHierarchically:\">\n\t\t\t\t\t\t\t<string key=\"name\">layoutGraphicsHierarchically:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"lock:\">\n\t\t\t\t\t\t\t<string key=\"name\">lock:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"makeSameHeight:\">\n\t\t\t\t\t\t\t<string key=\"name\">makeSameHeight:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"makeSameWidth:\">\n\t\t\t\t\t\t\t<string key=\"name\">makeSameWidth:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"moveDown:\">\n\t\t\t\t\t\t\t<string key=\"name\">moveDown:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"moveDownAndModifySelection:\">\n\t\t\t\t\t\t\t<string key=\"name\">moveDownAndModifySelection:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"moveLeft:\">\n\t\t\t\t\t\t\t<string key=\"name\">moveLeft:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"moveLeftAndModifySelection:\">\n\t\t\t\t\t\t\t<string key=\"name\">moveLeftAndModifySelection:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"moveRight:\">\n\t\t\t\t\t\t\t<string key=\"name\">moveRight:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"moveRightAndModifySelection:\">\n\t\t\t\t\t\t\t<string key=\"name\">moveRightAndModifySelection:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"moveUp:\">\n\t\t\t\t\t\t\t<string key=\"name\">moveUp:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"moveUpAndModifySelection:\">\n\t\t\t\t\t\t\t<string key=\"name\">moveUpAndModifySelection:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"paste:\">\n\t\t\t\t\t\t\t<string key=\"name\">paste:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"rollDownAllCompartments:\">\n\t\t\t\t\t\t\t<string key=\"name\">rollDownAllCompartments:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"rollUpAllCompartments:\">\n\t\t\t\t\t\t\t<string key=\"name\">rollUpAllCompartments:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"selectAll:\">\n\t\t\t\t\t\t\t<string key=\"name\">selectAll:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"sendToBack:\">\n\t\t\t\t\t\t\t<string key=\"name\">sendToBack:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"sizeToFit:\">\n\t\t\t\t\t\t\t<string key=\"name\">sizeToFit:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"toggleGridShown:\">\n\t\t\t\t\t\t\t<string key=\"name\">toggleGridShown:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"toggleHiddenGraphicsShown:\">\n\t\t\t\t\t\t\t<string key=\"name\">toggleHiddenGraphicsShown:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"togglePageBreaksShown:\">\n\t\t\t\t\t\t\t<string key=\"name\">togglePageBreaksShown:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"toggleRuler:\">\n\t\t\t\t\t\t\t<string key=\"name\">toggleRuler:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"toggleSnapsToGrid:\">\n\t\t\t\t\t\t\t<string key=\"name\">toggleSnapsToGrid:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"unlock:\">\n\t\t\t\t\t\t\t<string key=\"name\">unlock:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">_diagramController</string>\n\t\t\t\t\t\t<string key=\"NS.object.0\">IDEDataModelDiagramEditor</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">_diagramController</string>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"NS.object.0\">\n\t\t\t\t\t\t\t<string key=\"name\">_diagramController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDataModelDiagramEditor</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/XDDiagramView.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">XDTableView</string>\n\t\t\t\t\t<string key=\"superclassName\">NSTableView</string>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">showAllTableColumns:</string>\n\t\t\t\t\t\t<string key=\"NS.object.0\">id</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">showAllTableColumns:</string>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"NS.object.0\">\n\t\t\t\t\t\t\t<string key=\"name\">showAllTableColumns:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/XDTableView.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">AppDelegate</string>\n\t\t\t\t\t<string key=\"superclassName\">NSObject</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"applicationShouldTerminate:\">id</string>\n\t\t\t\t\t\t<string key=\"applicationWillFinishLaunching:\">id</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"applicationShouldTerminate:\">\n\t\t\t\t\t\t\t<string key=\"name\">applicationShouldTerminate:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"applicationWillFinishLaunching:\">\n\t\t\t\t\t\t\t<string key=\"name\">applicationWillFinishLaunching:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/AppDelegate.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t</array>\n\t\t</object>\n\t\t<int key=\"IBDocument.localizationMode\">0</int>\n\t\t<string key=\"IBDocument.TargetRuntimeIdentifier\">IBCocoaFramework</string>\n\t\t<bool key=\"IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion\">YES</bool>\n\t\t<int key=\"IBDocument.defaultPropertyAccessControl\">3</int>\n\t\t<dictionary class=\"NSMutableDictionary\" key=\"IBDocument.LastKnownImageSizes\">\n\t\t\t<string key=\"NSMenuCheckmark\">{11, 11}</string>\n\t\t\t<string key=\"NSMenuMixedState\">{10, 3}</string>\n\t\t</dictionary>\n\t\t<bool key=\"IBDocument.UseAutolayout\">YES</bool>\n\t</data>\n</archive>\n"
  },
  {
    "path": "AuthTester/main.m",
    "content": "//\n//  main.m\n//  AuthTester\n//\n//  Created by Mike on 01/02/2013.\n//\n//\n\n#import <Cocoa/Cocoa.h>\n\nint main(int argc, char *argv[])\n{\n    return NSApplicationMain(argc, (const char **)argv);\n}\n"
  },
  {
    "path": "Connection-Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>${EXECUTABLE_NAME}</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>com.yourcompany.Connection</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundlePackageType</key>\n\t<string>FMWK</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1.0</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Connection.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t220526BA165E8C9D00A2BBC9 /* FTPAuthenticationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 220526B9165E8C9D00A2BBC9 /* FTPAuthenticationTests.m */; };\n\t\t220526F8165E9DE400A2BBC9 /* DAVKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 27448C371458100D00EB086F /* DAVKit.framework */; };\n\t\t22052702165EA23800A2BBC9 /* CURLHandle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 220526E8165E96AA00A2BBC9 /* CURLHandle.framework */; };\n\t\t22052706165EA62500A2BBC9 /* DAVKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 27448C371458100D00EB086F /* DAVKit.framework */; };\n\t\t220C11961715C5E20086F199 /* ErrorTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 220C11951715C5E10086F199 /* ErrorTests.m */; };\n\t\t22407D54166F9A6100E1EAD4 /* BaseCKProtocolTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 22F6D0E7165A8A2200443CC9 /* BaseCKProtocolTests.m */; };\n\t\t2246AF6516B99987001D39D9 /* KMSSendStringCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 2246AF5916B99986001D39D9 /* KMSSendStringCommand.m */; };\n\t\t2246AF6616B99987001D39D9 /* KMSSendDataCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 2246AF5A16B99986001D39D9 /* KMSSendDataCommand.m */; };\n\t\t2246AF6716B99987001D39D9 /* KMSSendServerDataCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 2246AF5C16B99986001D39D9 /* KMSSendServerDataCommand.m */; };\n\t\t2246AF6816B99987001D39D9 /* KMSPauseCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 2246AF5E16B99986001D39D9 /* KMSPauseCommand.m */; };\n\t\t2246AF6916B99987001D39D9 /* KMSCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 2246AF5F16B99986001D39D9 /* KMSCommand.m */; };\n\t\t2246AF6A16B99987001D39D9 /* KMSCloseCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 2246AF6016B99986001D39D9 /* KMSCloseCommand.m */; };\n\t\t224AB37D166E500E0066B1C6 /* KMSConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 224AB372166E500E0066B1C6 /* KMSConnection.m */; };\n\t\t224AB37E166E500E0066B1C6 /* KMSListener.m in Sources */ = {isa = PBXBuildFile; fileRef = 224AB374166E500E0066B1C6 /* KMSListener.m */; };\n\t\t224AB37F166E500E0066B1C6 /* KMSRegExResponder.m in Sources */ = {isa = PBXBuildFile; fileRef = 224AB376166E500E0066B1C6 /* KMSRegExResponder.m */; };\n\t\t224AB380166E500E0066B1C6 /* KMSResponder.m in Sources */ = {isa = PBXBuildFile; fileRef = 224AB378166E500E0066B1C6 /* KMSResponder.m */; };\n\t\t224AB381166E500E0066B1C6 /* KMSResponseCollection.m in Sources */ = {isa = PBXBuildFile; fileRef = 224AB37A166E500E0066B1C6 /* KMSResponseCollection.m */; };\n\t\t224AB382166E500E0066B1C6 /* KMSServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 224AB37C166E500E0066B1C6 /* KMSServer.m */; };\n\t\t224AB387166E501C0066B1C6 /* KMSCollectionTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 224AB386166E501C0066B1C6 /* KMSCollectionTests.m */; };\n\t\t224AB38A166E52680066B1C6 /* KMSTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 224AB389166E52680066B1C6 /* KMSTestCase.m */; };\n\t\t224AB38C166E587F0066B1C6 /* KMSManualTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 224AB38B166E587F0066B1C6 /* KMSManualTests.m */; };\n\t\t225FCA3816B046F800A9F5AE /* CKUploaderTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 225FCA3716B046F800A9F5AE /* CKUploaderTests.m */; };\n\t\t22662EE4165D1EE4005FCC4A /* BaseCKTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 22662EE3165D1EE3005FCC4A /* BaseCKTests.m */; };\n\t\t22662EF3165D2EEC005FCC4A /* ftp.json in Resources */ = {isa = PBXBuildFile; fileRef = 22662EF1165D2EEC005FCC4A /* ftp.json */; };\n\t\t22662EF4165D2EEC005FCC4A /* webdav.json in Resources */ = {isa = PBXBuildFile; fileRef = 22662EF2165D2EEC005FCC4A /* webdav.json */; };\n\t\t2288CD76165A99FC00F34E24 /* CK2WebDAVProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = 2288CD74165A98E300F34E24 /* CK2WebDAVProtocol.m */; };\n\t\t228E180C1700AD5600ACDE94 /* CURLHandle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 220526E8165E96AA00A2BBC9 /* CURLHandle.framework */; };\n\t\t2298E4AB17442272005A4160 /* FileTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 2298E4AA17442272005A4160 /* FileTests.m */; };\n\t\t22AC1C141742980000AB09E1 /* FTPTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 22AC1C111742980000AB09E1 /* FTPTests.m */; };\n\t\t22AC1C151742980000AB09E1 /* SFTPTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 22AC1C121742980000AB09E1 /* SFTPTests.m */; };\n\t\t22AC1C161742980000AB09E1 /* WebDAVTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 22AC1C131742980000AB09E1 /* WebDAVTests.m */; };\n\t\t22AC1C1917429F8200AB09E1 /* URLAppendingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 22AC1C1817429F8100AB09E1 /* URLAppendingTests.m */; };\n\t\t22AC1C1B17429FAA00AB09E1 /* URLDirectoryTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 22AC1C1A17429FAA00AB09E1 /* URLDirectoryTests.m */; };\n\t\t22C9CF991703327A004610FE /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 27F3372A16BC1FB100E70511 /* Cocoa.framework */; };\n\t\t22C9CF9F1703327A004610FE /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 22C9CF9D1703327A004610FE /* InfoPlist.strings */; };\n\t\t22C9CFA11703327A004610FE /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 22C9CFA01703327A004610FE /* main.m */; };\n\t\t22C9CFA51703327A004610FE /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 22C9CFA31703327A004610FE /* Credits.rtf */; };\n\t\t22C9CFA81703327A004610FE /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 22C9CFA71703327A004610FE /* AppDelegate.m */; };\n\t\t22C9CFAB1703327A004610FE /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22C9CFA91703327A004610FE /* MainMenu.xib */; };\n\t\t22C9CFBA170333A2004610FE /* ConnectionKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79CFD12609F702BE00172CDD /* ConnectionKit.framework */; };\n\t\t22CC56F91509048E00F94154 /* PathTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 22CC56F81509048E00F94154 /* PathTests.m */; };\n\t\t22CC578B1509068600F94154 /* ConnectionKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79CFD12609F702BE00172CDD /* ConnectionKit.framework */; };\n\t\t22E67F1B171311C5001ECE34 /* ConnectionKit.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 79CFD12609F702BE00172CDD /* ConnectionKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };\n\t\t22F6D112165A8A2200443CC9 /* URLTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 22F6D102165A8A2200443CC9 /* URLTests.m */; };\n\t\t22FEB6691680818800BB778B /* KMSTranscriptEntry.m in Sources */ = {isa = PBXBuildFile; fileRef = 22FEB6671680818800BB778B /* KMSTranscriptEntry.m */; };\n\t\t271059521671334500E20511 /* DAVKit.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 27448C371458100D00EB086F /* DAVKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };\n\t\t27105953167143D800E20511 /* CURLHandle.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 220526E8165E96AA00A2BBC9 /* CURLHandle.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };\n\t\t27431CA01630381D00F6FB58 /* CK2FileProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 27431C9E1630381D00F6FB58 /* CK2FileProtocol.h */; };\n\t\t27431CA11630381D00F6FB58 /* CK2FileProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = 27431C9F1630381D00F6FB58 /* CK2FileProtocol.m */; };\n\t\t2743E8091622E47600019979 /* CK2FileManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 2743E8071622E47600019979 /* CK2FileManager.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t2743E80A1622E47600019979 /* CK2FileManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 2743E8081622E47600019979 /* CK2FileManager.m */; };\n\t\t278CFE1316BADE030018A14B /* URLCanonicalizationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 278CFE1216BADE030018A14B /* URLCanonicalizationTests.m */; };\n\t\t278D8B79167FF35D00622468 /* CK2Authentication.h in Headers */ = {isa = PBXBuildFile; fileRef = 278D8B77167FF35D00622468 /* CK2Authentication.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t278D8B7A167FF35D00622468 /* CK2Authentication.m in Sources */ = {isa = PBXBuildFile; fileRef = 278D8B78167FF35D00622468 /* CK2Authentication.m */; };\n\t\t2790A8291627636E000C9D9F /* CK2Protocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 2790A8271627636E000C9D9F /* CK2Protocol.h */; };\n\t\t2790A82A1627636E000C9D9F /* CK2Protocol.m in Sources */ = {isa = PBXBuildFile; fileRef = 2790A8281627636E000C9D9F /* CK2Protocol.m */; };\n\t\t2790A94816278F1D000C9D9F /* CK2FTPProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 2790A94616278F1D000C9D9F /* CK2FTPProtocol.h */; };\n\t\t2790A94916278F1D000C9D9F /* CK2FTPProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = 2790A94716278F1D000C9D9F /* CK2FTPProtocol.m */; };\n\t\t279117EC178B5C64006BF857 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 27F3372A16BC1FB100E70511 /* Cocoa.framework */; };\n\t\t279117F2178B5C64006BF857 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 279117F0178B5C64006BF857 /* InfoPlist.strings */; };\n\t\t279117FD178B5C64006BF857 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 279117FC178B5C64006BF857 /* XCTest.framework */; };\n\t\t279117FE178B5C64006BF857 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 27F3372A16BC1FB100E70511 /* Cocoa.framework */; };\n\t\t27911801178B5C64006BF857 /* ConnectionKitUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 279117EB178B5C64006BF857 /* ConnectionKitUI.framework */; };\n\t\t27911810178B5D33006BF857 /* CK2OpenPanel.h in Headers */ = {isa = PBXBuildFile; fileRef = 32B592A116A4960B0020FFE9 /* CK2OpenPanel.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t27911811178B5D3E006BF857 /* CK2OpenPanel.m in Sources */ = {isa = PBXBuildFile; fileRef = 32B592A216A4960B0020FFE9 /* CK2OpenPanel.m */; };\n\t\t27911812178B5D4B006BF857 /* CK2OpenPanelController.m in Sources */ = {isa = PBXBuildFile; fileRef = 32B592A416A4960B0020FFE9 /* CK2OpenPanelController.m */; };\n\t\t27911813178B5D4F006BF857 /* CK2OpenPanelController.h in Headers */ = {isa = PBXBuildFile; fileRef = 32B592A316A4960B0020FFE9 /* CK2OpenPanelController.h */; };\n\t\t27911814178B5D59006BF857 /* CK2OpenPanelViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 32B592B016A4960B0020FFE9 /* CK2OpenPanelViewController.h */; };\n\t\t27911815178B5D59006BF857 /* CK2OpenPanelViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 32B592B116A4960B0020FFE9 /* CK2OpenPanelViewController.m */; };\n\t\t27911816178B5D59006BF857 /* CK2OpenPanelIconViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 32B592B216A4960B0020FFE9 /* CK2OpenPanelIconViewController.h */; };\n\t\t27911817178B5D59006BF857 /* CK2OpenPanelIconViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 32B592B316A4960B0020FFE9 /* CK2OpenPanelIconViewController.m */; };\n\t\t27911818178B5D59006BF857 /* CK2OpenPanelListViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 32B592B416A4960B0020FFE9 /* CK2OpenPanelListViewController.h */; };\n\t\t27911819178B5D59006BF857 /* CK2OpenPanelListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 32B592B516A4960B0020FFE9 /* CK2OpenPanelListViewController.m */; };\n\t\t2791181A178B5D59006BF857 /* CK2OpenPanelColumnViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 32B592B616A4960B0020FFE9 /* CK2OpenPanelColumnViewController.h */; };\n\t\t2791181B178B5D59006BF857 /* CK2OpenPanelColumnViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 32B592B716A4960B0020FFE9 /* CK2OpenPanelColumnViewController.m */; };\n\t\t2791181C178B5D59006BF857 /* CK2NewFolderWindowController.h in Headers */ = {isa = PBXBuildFile; fileRef = 324D22D116AF490A001CFDE6 /* CK2NewFolderWindowController.h */; };\n\t\t2791181D178B5D59006BF857 /* CK2NewFolderWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 324D22D216AF490A001CFDE6 /* CK2NewFolderWindowController.m */; };\n\t\t2791181E178B5D59006BF857 /* CK2FileCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 32B592A516A4960B0020FFE9 /* CK2FileCell.h */; };\n\t\t2791181F178B5D59006BF857 /* CK2FileCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 32B592A616A4960B0020FFE9 /* CK2FileCell.m */; };\n\t\t27911820178B5D59006BF857 /* CK2PathControl.h in Headers */ = {isa = PBXBuildFile; fileRef = 32B592A916A4960B0020FFE9 /* CK2PathControl.h */; };\n\t\t27911821178B5D59006BF857 /* CK2PathControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 32B592AA16A4960B0020FFE9 /* CK2PathControl.m */; };\n\t\t27911822178B5D59006BF857 /* CK2PathFieldWindowController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3274F1CB170888430049DDE5 /* CK2PathFieldWindowController.h */; };\n\t\t27911823178B5D59006BF857 /* CK2PathFieldWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3274F1CC170888430049DDE5 /* CK2PathFieldWindowController.m */; };\n\t\t27911824178B5D59006BF857 /* CK2IconViewItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 32B592AB16A4960B0020FFE9 /* CK2IconViewItem.h */; };\n\t\t27911825178B5D59006BF857 /* CK2IconViewItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 32B592AC16A4960B0020FFE9 /* CK2IconViewItem.m */; };\n\t\t27911826178B5D59006BF857 /* CK2IconItemView.h in Headers */ = {isa = PBXBuildFile; fileRef = 32B592AD16A4960B0020FFE9 /* CK2IconItemView.h */; };\n\t\t27911827178B5D59006BF857 /* CK2IconItemView.m in Sources */ = {isa = PBXBuildFile; fileRef = 32B592AE16A4960B0020FFE9 /* CK2IconItemView.m */; };\n\t\t27911828178B5D59006BF857 /* CK2IconView.h in Headers */ = {isa = PBXBuildFile; fileRef = 324D22C716AE1762001CFDE6 /* CK2IconView.h */; };\n\t\t27911829178B5D59006BF857 /* CK2IconView.m in Sources */ = {isa = PBXBuildFile; fileRef = 324D22C816AE1762001CFDE6 /* CK2IconView.m */; };\n\t\t2791182A178B5D59006BF857 /* CK2BrowserPreviewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 324D22BB16AE173F001CFDE6 /* CK2BrowserPreviewController.h */; };\n\t\t2791182B178B5D59006BF857 /* CK2BrowserPreviewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 324D22BC16AE173F001CFDE6 /* CK2BrowserPreviewController.m */; };\n\t\t2791182C178B5D59006BF857 /* CK2BrowserPreviewView.h in Headers */ = {isa = PBXBuildFile; fileRef = 324D22BD16AE1740001CFDE6 /* CK2BrowserPreviewView.h */; };\n\t\t2791182D178B5D59006BF857 /* CK2BrowserPreviewView.m in Sources */ = {isa = PBXBuildFile; fileRef = 324D22BE16AE1740001CFDE6 /* CK2BrowserPreviewView.m */; };\n\t\t2791182E178B5D59006BF857 /* CK2FileSizeFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = 324D22C316AE1754001CFDE6 /* CK2FileSizeFormatter.h */; };\n\t\t2791182F178B5D59006BF857 /* CK2FileSizeFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 324D22C416AE1754001CFDE6 /* CK2FileSizeFormatter.m */; };\n\t\t27911832178B5D59006BF857 /* NSURL+CK2OpenPanel.h in Headers */ = {isa = PBXBuildFile; fileRef = 32B592A716A4960B0020FFE9 /* NSURL+CK2OpenPanel.h */; };\n\t\t27911833178B5D59006BF857 /* NSURL+CK2OpenPanel.m in Sources */ = {isa = PBXBuildFile; fileRef = 32B592A816A4960B0020FFE9 /* NSURL+CK2OpenPanel.m */; };\n\t\t27911834178B5D59006BF857 /* NSImage+CK2OpenPanel.h in Headers */ = {isa = PBXBuildFile; fileRef = 32B3EA7C16B58FFA003D4836 /* NSImage+CK2OpenPanel.h */; };\n\t\t27911835178B5D59006BF857 /* NSImage+CK2OpenPanel.m in Sources */ = {isa = PBXBuildFile; fileRef = 32B3EA7D16B58FFB003D4836 /* NSImage+CK2OpenPanel.m */; };\n\t\t27911836178B5D79006BF857 /* CK2OpenPanel.xib in Resources */ = {isa = PBXBuildFile; fileRef = 323B7349170E253900219F9A /* CK2OpenPanel.xib */; };\n\t\t27911837178B5D79006BF857 /* CK2FilePreview.xib in Resources */ = {isa = PBXBuildFile; fileRef = 323B7356170E254800219F9A /* CK2FilePreview.xib */; };\n\t\t27911838178B5D79006BF857 /* CK2NewFolderWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 323B7359170E255200219F9A /* CK2NewFolderWindow.xib */; };\n\t\t27911839178B5D79006BF857 /* CK2PathFieldWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 323B735C170E256000219F9A /* CK2PathFieldWindow.xib */; };\n\t\t2791183A178B5E12006BF857 /* ConnectionKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79CFD12609F702BE00172CDD /* ConnectionKit.framework */; };\n\t\t2791188D178B6782006BF857 /* ConnectionKitUI.h in Headers */ = {isa = PBXBuildFile; fileRef = 279117F4178B5C64006BF857 /* ConnectionKitUI.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t27993E8416FCB30D008DC1B0 /* CK2FileOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 27993E8216FCB30D008DC1B0 /* CK2FileOperation.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t27993E8516FCB30D008DC1B0 /* CK2FileOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 27993E8316FCB30D008DC1B0 /* CK2FileOperation.m */; };\n\t\t27999BAB170B4B9800A54BEE /* CK2FileOperationWithTestSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 22C9CFEE1703AD4D004610FE /* CK2FileOperationWithTestSupport.m */; };\n\t\t27999BB7170B4BA200A54BEE /* CK2FileManagerWithTestSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 228E180E1700AEA300ACDE94 /* CK2FileManagerWithTestSupport.m */; };\n\t\t27A2072B1671634800D8284D /* CK2CURLBasedProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 27A207291671634800D8284D /* CK2CURLBasedProtocol.h */; };\n\t\t27A2072C1671634800D8284D /* CK2CURLBasedProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = 27A2072A1671634800D8284D /* CK2CURLBasedProtocol.m */; };\n\t\t27ADC5771AC0CD7D0085C7F7 /* CK2CurlTransferStackManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 27ADC5751AC0CD7D0085C7F7 /* CK2CurlTransferStackManager.h */; };\n\t\t27ADC5781AC0CD7D0085C7F7 /* CK2CurlTransferStackManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 27ADC5761AC0CD7D0085C7F7 /* CK2CurlTransferStackManager.m */; };\n\t\t27CFEC7218E73526007158A4 /* URLs.testdata in Resources */ = {isa = PBXBuildFile; fileRef = 27CFEC7118E73526007158A4 /* URLs.testdata */; };\n\t\t27D03B421471787000FEA588 /* CKUploader.h in Headers */ = {isa = PBXBuildFile; fileRef = 27D03B401471787000FEA588 /* CKUploader.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t27D03B431471787000FEA588 /* CKUploader.m in Sources */ = {isa = PBXBuildFile; fileRef = 27D03B411471787000FEA588 /* CKUploader.m */; };\n\t\t27F3372B16BC1FB100E70511 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 27F3372A16BC1FB100E70511 /* Cocoa.framework */; };\n\t\t27F3373116BC1FB100E70511 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 27F3372F16BC1FB100E70511 /* InfoPlist.strings */; };\n\t\t27F3373316BC1FB100E70511 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 27F3373216BC1FB100E70511 /* main.m */; };\n\t\t27F3373716BC1FB100E70511 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 27F3373516BC1FB100E70511 /* Credits.rtf */; };\n\t\t27F3373A16BC1FB100E70511 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 27F3373916BC1FB100E70511 /* AppDelegate.m */; };\n\t\t27F3373D16BC1FB100E70511 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 27F3373B16BC1FB100E70511 /* MainMenu.xib */; };\n\t\t27F394F5162C162900944F43 /* CK2SFTPProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 27F394F3162C162900944F43 /* CK2SFTPProtocol.h */; };\n\t\t27F394F6162C162900944F43 /* CK2SFTPProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = 27F394F4162C162900944F43 /* CK2SFTPProtocol.m */; };\n\t\t791E83050B0EDAC90060E5FC /* error.png in Resources */ = {isa = PBXBuildFile; fileRef = 791E83030B0EDAC90060E5FC /* error.png */; };\n\t\t791E83060B0EDAC90060E5FC /* finished.png in Resources */ = {isa = PBXBuildFile; fileRef = 791E83040B0EDAC90060E5FC /* finished.png */; };\n\t\t796DB30109F8BB1D0065897B /* SecurityInterface.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 796DB2F609F8BB1D0065897B /* SecurityInterface.framework */; };\n\t\t7978FC150B117D7C0048168B /* bookmark.tif in Resources */ = {isa = PBXBuildFile; fileRef = 7978FC140B117D7C0048168B /* bookmark.tif */; };\n\t\t797CC8C709F861770063FF9B /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 797CC8C509F861770063FF9B /* Localizable.strings */; };\n\t\t798313C90B0D67E000F5078E /* CKTransferProgressCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 798313C70B0D67E000F5078E /* CKTransferProgressCell.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t798313CA0B0D67E000F5078E /* CKTransferProgressCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 798313C80B0D67E000F5078E /* CKTransferProgressCell.m */; };\n\t\t7983DF8E0B0C0FAC00F5078E /* CKTransferRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = 7983DF8C0B0C0FAC00F5078E /* CKTransferRecord.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t7983DF8F0B0C0FAC00F5078E /* CKTransferRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = 7983DF8D0B0C0FAC00F5078E /* CKTransferRecord.m */; };\n\t\t79CFD89509F704F400172CDD /* ConnectionKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 79CFD89409F704F400172CDD /* ConnectionKit.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t79CFD92F09F7080B00172CDD /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 79CFD92D09F7080B00172CDD /* libz.dylib */; };\n\t\t79CFD93709F7084000172CDD /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79CFD93609F7084000172CDD /* Security.framework */; };\n\t\t79F9533D09FDC3A80041E345 /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79F9532B09FDC3A80041E345 /* ApplicationServices.framework */; };\n\t\t79FB807209F74185006E7D11 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79FB807109F74185006E7D11 /* Carbon.framework */; };\n\t\tADEE5E18169C84DF006188C5 /* KMSState.h in Headers */ = {isa = PBXBuildFile; fileRef = ADEE5E17169C84DF006188C5 /* KMSState.h */; };\n\t\tCEB6FA0B13A696B200C8059F /* libsasl2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = CEB6FA0A13A696B200C8059F /* libsasl2.dylib */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXContainerItemProxy section */\n\t\t220526E7165E96AA00A2BBC9 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 27BFFEDA15027F4100EFA319 /* CURLHandle.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 8DC2EF5B0486A6940098B216;\n\t\t\tremoteInfo = CURLHandle;\n\t\t};\n\t\t220526F0165E97B400A2BBC9 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 27448C2414580F7500EB086F /* DAVKit.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 8DC2EF5B0486A6940098B216;\n\t\t\tremoteInfo = DAVKit;\n\t\t};\n\t\t220526F2165E97B400A2BBC9 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 27448C2414580F7500EB086F /* DAVKit.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = C9FF77EC121C6F51001250C7;\n\t\t\tremoteInfo = Tests;\n\t\t};\n\t\t220526FC165EA20600A2BBC9 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 27BFFEDA15027F4100EFA319 /* CURLHandle.xcodeproj */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 8DC2EF4F0486A6940098B216;\n\t\t\tremoteInfo = CURLHandle;\n\t\t};\n\t\t220AD7AD1509021A00748655 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 79CFD12509F702BE00172CDD;\n\t\t\tremoteInfo = Framework;\n\t\t};\n\t\t22182129170209D300584589 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 27BFFEDA15027F4100EFA319 /* CURLHandle.xcodeproj */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 223FD091160B523700BE1C80;\n\t\t\tremoteInfo = CURLHandleTests;\n\t\t};\n\t\t22AC1C0D174297C500AB09E1 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 27448C2414580F7500EB086F /* DAVKit.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 5FEEF26016CE830C002C1CBF;\n\t\t\tremoteInfo = \"DAVKit iOS\";\n\t\t};\n\t\t22AC1C0F174297C500AB09E1 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 27448C2414580F7500EB086F /* DAVKit.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 221F8BA817259BFF004E7B9D;\n\t\t\tremoteInfo = \"Tests iOS\";\n\t\t};\n\t\t22C9CFFA1703AD4D004610FE /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 27BFFEDA15027F4100EFA319 /* CURLHandle.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 22C9CFBF17035A0A004610FE;\n\t\t\tremoteInfo = crashtest;\n\t\t};\n\t\t279117E0178B5A86006BF857 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 27BFFEDA15027F4100EFA319 /* CURLHandle.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = 223FD092160B523700BE1C80;\n\t\t\tremoteInfo = CURLHandleTests;\n\t\t};\n\t\t279117FF178B5C64006BF857 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 279117EA178B5C64006BF857;\n\t\t\tremoteInfo = ConnectionKitUI;\n\t\t};\n/* End PBXContainerItemProxy section */\n\n/* Begin PBXCopyFilesBuildPhase section */\n\t\t22E67F1C171312B6001ECE34 /* CopyFiles */ = {\n\t\t\tisa = PBXCopyFilesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tdstPath = \"\";\n\t\t\tdstSubfolderSpec = 7;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t22FA97F715090855001728B8 /* CopyFiles */ = {\n\t\t\tisa = PBXCopyFilesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tdstPath = \"\";\n\t\t\tdstSubfolderSpec = 10;\n\t\t\tfiles = (\n\t\t\t\t22E67F1B171311C5001ECE34 /* ConnectionKit.framework in CopyFiles */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t27282EDA167131150057CCF7 /* CopyFiles */ = {\n\t\t\tisa = PBXCopyFilesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tdstPath = \"\";\n\t\t\tdstSubfolderSpec = 10;\n\t\t\tfiles = (\n\t\t\t\t271059521671334500E20511 /* DAVKit.framework in CopyFiles */,\n\t\t\t\t27105953167143D800E20511 /* CURLHandle.framework in CopyFiles */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXCopyFilesBuildPhase section */\n\n/* Begin PBXFileReference section */\n\t\t09D6601E09FD37990000BA00 /* UnitTest-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = \"UnitTest-Info.plist\"; sourceTree = \"<group>\"; };\n\t\t1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = \"<absolute>\"; };\n\t\t13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = \"<absolute>\"; };\n\t\t220526B9165E8C9D00A2BBC9 /* FTPAuthenticationTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FTPAuthenticationTests.m; sourceTree = \"<group>\"; };\n\t\t220526F4165E989700A2BBC9 /* Connection_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Connection_Prefix.pch; path = ConnectionKit/Connection_Prefix.pch; sourceTree = \"<group>\"; };\n\t\t220526F6165E98B400A2BBC9 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = ConnectionKit/main.m; sourceTree = \"<group>\"; };\n\t\t220AD7981509019B00748655 /* UnitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = UnitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t220C11951715C5E10086F199 /* ErrorTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ErrorTests.m; sourceTree = \"<group>\"; };\n\t\t22407D5A166FA12500E1EAD4 /* libssl.dylib */ = {isa = PBXFileReference; lastKnownFileType = \"compiled.mach-o.dylib\"; name = libssl.dylib; path = CurlHandle/SFTP/libssl.dylib; sourceTree = \"<group>\"; };\n\t\t22407D5D166FA17600E1EAD4 /* libcrypto.dylib */ = {isa = PBXFileReference; lastKnownFileType = \"compiled.mach-o.dylib\"; name = libcrypto.dylib; path = CurlHandle/SFTP/libcrypto.dylib; sourceTree = \"<group>\"; };\n\t\t2246AF5916B99986001D39D9 /* KMSSendStringCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMSSendStringCommand.m; sourceTree = \"<group>\"; };\n\t\t2246AF5A16B99986001D39D9 /* KMSSendDataCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMSSendDataCommand.m; sourceTree = \"<group>\"; };\n\t\t2246AF5B16B99986001D39D9 /* KMSSendStringCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KMSSendStringCommand.h; sourceTree = \"<group>\"; };\n\t\t2246AF5C16B99986001D39D9 /* KMSSendServerDataCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMSSendServerDataCommand.m; sourceTree = \"<group>\"; };\n\t\t2246AF5D16B99986001D39D9 /* KMSCloseCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KMSCloseCommand.h; sourceTree = \"<group>\"; };\n\t\t2246AF5E16B99986001D39D9 /* KMSPauseCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMSPauseCommand.m; sourceTree = \"<group>\"; };\n\t\t2246AF5F16B99986001D39D9 /* KMSCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMSCommand.m; sourceTree = \"<group>\"; };\n\t\t2246AF6016B99986001D39D9 /* KMSCloseCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMSCloseCommand.m; sourceTree = \"<group>\"; };\n\t\t2246AF6116B99986001D39D9 /* KMSCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KMSCommand.h; sourceTree = \"<group>\"; };\n\t\t2246AF6216B99986001D39D9 /* KMSPauseCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KMSPauseCommand.h; sourceTree = \"<group>\"; };\n\t\t2246AF6316B99986001D39D9 /* KMSSendDataCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KMSSendDataCommand.h; sourceTree = \"<group>\"; };\n\t\t2246AF6416B99986001D39D9 /* KMSSendServerDataCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KMSSendServerDataCommand.h; sourceTree = \"<group>\"; };\n\t\t2248933B165D48CF006C4C7F /* UnitTests_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UnitTests_Prefix.pch; sourceTree = \"<group>\"; };\n\t\t224AB371166E500E0066B1C6 /* KMSConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KMSConnection.h; sourceTree = \"<group>\"; };\n\t\t224AB372166E500E0066B1C6 /* KMSConnection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMSConnection.m; sourceTree = \"<group>\"; };\n\t\t224AB373166E500E0066B1C6 /* KMSListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KMSListener.h; sourceTree = \"<group>\"; };\n\t\t224AB374166E500E0066B1C6 /* KMSListener.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMSListener.m; sourceTree = \"<group>\"; };\n\t\t224AB375166E500E0066B1C6 /* KMSRegExResponder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KMSRegExResponder.h; sourceTree = \"<group>\"; };\n\t\t224AB376166E500E0066B1C6 /* KMSRegExResponder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMSRegExResponder.m; sourceTree = \"<group>\"; };\n\t\t224AB377166E500E0066B1C6 /* KMSResponder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KMSResponder.h; sourceTree = \"<group>\"; };\n\t\t224AB378166E500E0066B1C6 /* KMSResponder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMSResponder.m; sourceTree = \"<group>\"; };\n\t\t224AB379166E500E0066B1C6 /* KMSResponseCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KMSResponseCollection.h; sourceTree = \"<group>\"; };\n\t\t224AB37A166E500E0066B1C6 /* KMSResponseCollection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMSResponseCollection.m; sourceTree = \"<group>\"; };\n\t\t224AB37B166E500E0066B1C6 /* KMSServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KMSServer.h; sourceTree = \"<group>\"; };\n\t\t224AB37C166E500E0066B1C6 /* KMSServer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMSServer.m; sourceTree = \"<group>\"; };\n\t\t224AB386166E501C0066B1C6 /* KMSCollectionTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMSCollectionTests.m; sourceTree = \"<group>\"; };\n\t\t224AB388166E52680066B1C6 /* KMSTestCase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KMSTestCase.h; sourceTree = \"<group>\"; };\n\t\t224AB389166E52680066B1C6 /* KMSTestCase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMSTestCase.m; sourceTree = \"<group>\"; };\n\t\t224AB38B166E587F0066B1C6 /* KMSManualTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMSManualTests.m; sourceTree = \"<group>\"; };\n\t\t225FCA3716B046F800A9F5AE /* CKUploaderTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CKUploaderTests.m; sourceTree = \"<group>\"; };\n\t\t2264399116FCB702001FDC20 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = text; path = README.md; sourceTree = \"<group>\"; wrapsLines = 1; };\n\t\t22662EE2165D1EE3005FCC4A /* BaseCKTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseCKTests.h; sourceTree = \"<group>\"; };\n\t\t22662EE3165D1EE3005FCC4A /* BaseCKTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BaseCKTests.m; sourceTree = \"<group>\"; };\n\t\t22662EF1165D2EEC005FCC4A /* ftp.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = ftp.json; sourceTree = \"<group>\"; };\n\t\t22662EF2165D2EEC005FCC4A /* webdav.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = webdav.json; sourceTree = \"<group>\"; };\n\t\t227113BE168388FD00280005 /* http.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = http.json; sourceTree = \"<group>\"; };\n\t\t2280F4B1171826D100BBEF22 /* Documentation */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Documentation; sourceTree = \"<group>\"; };\n\t\t2280F4B41718276E00BBEF22 /* .appledoc.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = .appledoc.plist; sourceTree = \"<group>\"; };\n\t\t2288CD73165A98E300F34E24 /* CK2WebDAVProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2WebDAVProtocol.h; sourceTree = \"<group>\"; };\n\t\t2288CD74165A98E300F34E24 /* CK2WebDAVProtocol.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2WebDAVProtocol.m; sourceTree = \"<group>\"; };\n\t\t228E180D1700AEA200ACDE94 /* CK2FileManagerWithTestSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2FileManagerWithTestSupport.h; sourceTree = \"<group>\"; };\n\t\t228E180E1700AEA300ACDE94 /* CK2FileManagerWithTestSupport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2FileManagerWithTestSupport.m; sourceTree = \"<group>\"; };\n\t\t2298E4AA17442272005A4160 /* FileTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FileTests.m; sourceTree = \"<group>\"; };\n\t\t22AC1BFE174297C500AB09E1 /* BaseCKProtocolTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseCKProtocolTests.h; sourceTree = \"<group>\"; };\n\t\t22AC1C111742980000AB09E1 /* FTPTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FTPTests.m; sourceTree = \"<group>\"; };\n\t\t22AC1C121742980000AB09E1 /* SFTPTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SFTPTests.m; sourceTree = \"<group>\"; };\n\t\t22AC1C131742980000AB09E1 /* WebDAVTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebDAVTests.m; sourceTree = \"<group>\"; };\n\t\t22AC1C1817429F8100AB09E1 /* URLAppendingTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = URLAppendingTests.m; sourceTree = \"<group>\"; };\n\t\t22AC1C1A17429FAA00AB09E1 /* URLDirectoryTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = URLDirectoryTests.m; sourceTree = \"<group>\"; };\n\t\t22C7A9E316FCC8C300C88317 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = text; path = README.md; sourceTree = \"<group>\"; wrapsLines = 1; };\n\t\t22C9CF981703327A004610FE /* ProfilingTester.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ProfilingTester.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t22C9CF9C1703327A004610FE /* ProfilingTester-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = \"ProfilingTester-Info.plist\"; sourceTree = \"<group>\"; };\n\t\t22C9CF9E1703327A004610FE /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = \"<group>\"; };\n\t\t22C9CFA01703327A004610FE /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = \"<group>\"; };\n\t\t22C9CFA21703327A004610FE /* ProfilingTester-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = \"ProfilingTester-Prefix.pch\"; sourceTree = \"<group>\"; };\n\t\t22C9CFA41703327A004610FE /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = \"<group>\"; };\n\t\t22C9CFA61703327A004610FE /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = \"<group>\"; };\n\t\t22C9CFA71703327A004610FE /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = \"<group>\"; };\n\t\t22C9CFAA1703327A004610FE /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = \"<group>\"; };\n\t\t22C9CFED1703AD4C004610FE /* CK2FileOperationWithTestSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2FileOperationWithTestSupport.h; sourceTree = \"<group>\"; };\n\t\t22C9CFEE1703AD4D004610FE /* CK2FileOperationWithTestSupport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2FileOperationWithTestSupport.m; sourceTree = \"<group>\"; };\n\t\t22CC56F81509048E00F94154 /* PathTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PathTests.m; sourceTree = \"<group>\"; };\n\t\t22F6D0E7165A8A2200443CC9 /* BaseCKProtocolTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BaseCKProtocolTests.m; sourceTree = \"<group>\"; };\n\t\t22F6D102165A8A2200443CC9 /* URLTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = URLTests.m; sourceTree = \"<group>\"; };\n\t\t22FEB6671680818800BB778B /* KMSTranscriptEntry.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMSTranscriptEntry.m; sourceTree = \"<group>\"; };\n\t\t22FEB6681680818800BB778B /* KMSTranscriptEntry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KMSTranscriptEntry.h; sourceTree = \"<group>\"; };\n\t\t2702E4671459D0F50085BBC4 /* libssh2.dylib */ = {isa = PBXFileReference; lastKnownFileType = \"compiled.mach-o.dylib\"; name = libssh2.dylib; path = CurlHandle/SFTP/libssh2.dylib; sourceTree = \"<group>\"; };\n\t\t27431C9E1630381D00F6FB58 /* CK2FileProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2FileProtocol.h; sourceTree = \"<group>\"; };\n\t\t27431C9F1630381D00F6FB58 /* CK2FileProtocol.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2FileProtocol.m; sourceTree = \"<group>\"; };\n\t\t2743E8071622E47600019979 /* CK2FileManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2FileManager.h; sourceTree = \"<group>\"; };\n\t\t2743E8081622E47600019979 /* CK2FileManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2FileManager.m; sourceTree = \"<group>\"; };\n\t\t27448C2414580F7500EB086F /* DAVKit.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = \"wrapper.pb-project\"; name = DAVKit.xcodeproj; path = ../DAVKit/DAVKit.xcodeproj; sourceTree = \"<group>\"; };\n\t\t27448C371458100D00EB086F /* DAVKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = DAVKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t278CFE1216BADE030018A14B /* URLCanonicalizationTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = URLCanonicalizationTests.m; sourceTree = \"<group>\"; };\n\t\t278D8B77167FF35D00622468 /* CK2Authentication.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2Authentication.h; sourceTree = \"<group>\"; };\n\t\t278D8B78167FF35D00622468 /* CK2Authentication.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2Authentication.m; sourceTree = \"<group>\"; };\n\t\t2790A8271627636E000C9D9F /* CK2Protocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2Protocol.h; sourceTree = \"<group>\"; };\n\t\t2790A8281627636E000C9D9F /* CK2Protocol.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2Protocol.m; sourceTree = \"<group>\"; };\n\t\t2790A94616278F1D000C9D9F /* CK2FTPProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2FTPProtocol.h; sourceTree = \"<group>\"; };\n\t\t2790A94716278F1D000C9D9F /* CK2FTPProtocol.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2FTPProtocol.m; sourceTree = \"<group>\"; };\n\t\t279117EB178B5C64006BF857 /* ConnectionKitUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ConnectionKitUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t279117EF178B5C64006BF857 /* ConnectionKitUI-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = \"ConnectionKitUI-Info.plist\"; sourceTree = \"<group>\"; };\n\t\t279117F1178B5C64006BF857 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = \"<group>\"; };\n\t\t279117F3178B5C64006BF857 /* ConnectionKitUI-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = \"ConnectionKitUI-Prefix.pch\"; sourceTree = \"<group>\"; };\n\t\t279117F4178B5C64006BF857 /* ConnectionKitUI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ConnectionKitUI.h; path = ConnectionKitUI/ConnectionKitUI.h; sourceTree = SOURCE_ROOT; };\n\t\t279117FB178B5C64006BF857 /* ConnectionKitUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ConnectionKitUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t279117FC178B5C64006BF857 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };\n\t\t27993E8216FCB30D008DC1B0 /* CK2FileOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2FileOperation.h; sourceTree = \"<group>\"; };\n\t\t27993E8316FCB30D008DC1B0 /* CK2FileOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2FileOperation.m; sourceTree = \"<group>\"; };\n\t\t27A207291671634800D8284D /* CK2CURLBasedProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2CURLBasedProtocol.h; sourceTree = \"<group>\"; };\n\t\t27A2072A1671634800D8284D /* CK2CURLBasedProtocol.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2CURLBasedProtocol.m; sourceTree = \"<group>\"; };\n\t\t27ADC5751AC0CD7D0085C7F7 /* CK2CurlTransferStackManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2CurlTransferStackManager.h; sourceTree = \"<group>\"; };\n\t\t27ADC5761AC0CD7D0085C7F7 /* CK2CurlTransferStackManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2CurlTransferStackManager.m; sourceTree = \"<group>\"; };\n\t\t27BFFEDA15027F4100EFA319 /* CURLHandle.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = \"wrapper.pb-project\"; name = CURLHandle.xcodeproj; path = ../CurlHandle/CURLHandleSource/CURLHandle.xcodeproj; sourceTree = \"<group>\"; };\n\t\t27CFEC7118E73526007158A4 /* URLs.testdata */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = URLs.testdata; sourceTree = \"<group>\"; };\n\t\t27D03B401471787000FEA588 /* CKUploader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CKUploader.h; path = ConnectionKit/CKUploader.h; sourceTree = \"<group>\"; };\n\t\t27D03B411471787000FEA588 /* CKUploader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CKUploader.m; path = ConnectionKit/CKUploader.m; sourceTree = \"<group>\"; };\n\t\t27F3372816BC1FB100E70511 /* AuthTester.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AuthTester.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t27F3372A16BC1FB100E70511 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };\n\t\t27F3372E16BC1FB100E70511 /* AuthTester-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = \"AuthTester-Info.plist\"; sourceTree = \"<group>\"; };\n\t\t27F3373016BC1FB100E70511 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = \"<group>\"; };\n\t\t27F3373216BC1FB100E70511 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = \"<group>\"; };\n\t\t27F3373416BC1FB100E70511 /* AuthTester-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = \"AuthTester-Prefix.pch\"; sourceTree = \"<group>\"; };\n\t\t27F3373616BC1FB100E70511 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = \"<group>\"; };\n\t\t27F3373816BC1FB100E70511 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = \"<group>\"; };\n\t\t27F3373916BC1FB100E70511 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = \"<group>\"; };\n\t\t27F3373C16BC1FB100E70511 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = \"<group>\"; };\n\t\t27F394F3162C162900944F43 /* CK2SFTPProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2SFTPProtocol.h; sourceTree = \"<group>\"; };\n\t\t27F394F4162C162900944F43 /* CK2SFTPProtocol.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2SFTPProtocol.m; sourceTree = \"<group>\"; };\n\t\t29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = \"<absolute>\"; };\n\t\t29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = \"<absolute>\"; };\n\t\t323B7348170E253900219F9A /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/CK2OpenPanel.xib; sourceTree = \"<group>\"; };\n\t\t323B7355170E254800219F9A /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/CK2FilePreview.xib; sourceTree = \"<group>\"; };\n\t\t323B7358170E255200219F9A /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/CK2NewFolderWindow.xib; sourceTree = \"<group>\"; };\n\t\t323B735B170E256000219F9A /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/CK2PathFieldWindow.xib; sourceTree = \"<group>\"; };\n\t\t324D22BB16AE173F001CFDE6 /* CK2BrowserPreviewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2BrowserPreviewController.h; sourceTree = \"<group>\"; };\n\t\t324D22BC16AE173F001CFDE6 /* CK2BrowserPreviewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2BrowserPreviewController.m; sourceTree = \"<group>\"; };\n\t\t324D22BD16AE1740001CFDE6 /* CK2BrowserPreviewView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2BrowserPreviewView.h; sourceTree = \"<group>\"; };\n\t\t324D22BE16AE1740001CFDE6 /* CK2BrowserPreviewView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2BrowserPreviewView.m; sourceTree = \"<group>\"; };\n\t\t324D22C316AE1754001CFDE6 /* CK2FileSizeFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2FileSizeFormatter.h; sourceTree = \"<group>\"; };\n\t\t324D22C416AE1754001CFDE6 /* CK2FileSizeFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2FileSizeFormatter.m; sourceTree = \"<group>\"; };\n\t\t324D22C716AE1762001CFDE6 /* CK2IconView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2IconView.h; sourceTree = \"<group>\"; };\n\t\t324D22C816AE1762001CFDE6 /* CK2IconView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2IconView.m; sourceTree = \"<group>\"; };\n\t\t324D22D116AF490A001CFDE6 /* CK2NewFolderWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2NewFolderWindowController.h; sourceTree = \"<group>\"; };\n\t\t324D22D216AF490A001CFDE6 /* CK2NewFolderWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2NewFolderWindowController.m; sourceTree = \"<group>\"; };\n\t\t3274F1CB170888430049DDE5 /* CK2PathFieldWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2PathFieldWindowController.h; sourceTree = \"<group>\"; };\n\t\t3274F1CC170888430049DDE5 /* CK2PathFieldWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2PathFieldWindowController.m; sourceTree = \"<group>\"; };\n\t\t32B3EA7C16B58FFA003D4836 /* NSImage+CK2OpenPanel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSImage+CK2OpenPanel.h\"; sourceTree = \"<group>\"; };\n\t\t32B3EA7D16B58FFB003D4836 /* NSImage+CK2OpenPanel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSImage+CK2OpenPanel.m\"; sourceTree = \"<group>\"; };\n\t\t32B592A116A4960B0020FFE9 /* CK2OpenPanel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2OpenPanel.h; sourceTree = \"<group>\"; };\n\t\t32B592A216A4960B0020FFE9 /* CK2OpenPanel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2OpenPanel.m; sourceTree = \"<group>\"; };\n\t\t32B592A316A4960B0020FFE9 /* CK2OpenPanelController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2OpenPanelController.h; sourceTree = \"<group>\"; };\n\t\t32B592A416A4960B0020FFE9 /* CK2OpenPanelController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2OpenPanelController.m; sourceTree = \"<group>\"; };\n\t\t32B592A516A4960B0020FFE9 /* CK2FileCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2FileCell.h; sourceTree = \"<group>\"; };\n\t\t32B592A616A4960B0020FFE9 /* CK2FileCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2FileCell.m; sourceTree = \"<group>\"; };\n\t\t32B592A716A4960B0020FFE9 /* NSURL+CK2OpenPanel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSURL+CK2OpenPanel.h\"; sourceTree = \"<group>\"; };\n\t\t32B592A816A4960B0020FFE9 /* NSURL+CK2OpenPanel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSURL+CK2OpenPanel.m\"; sourceTree = \"<group>\"; };\n\t\t32B592A916A4960B0020FFE9 /* CK2PathControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2PathControl.h; sourceTree = \"<group>\"; };\n\t\t32B592AA16A4960B0020FFE9 /* CK2PathControl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2PathControl.m; sourceTree = \"<group>\"; };\n\t\t32B592AB16A4960B0020FFE9 /* CK2IconViewItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2IconViewItem.h; sourceTree = \"<group>\"; };\n\t\t32B592AC16A4960B0020FFE9 /* CK2IconViewItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2IconViewItem.m; sourceTree = \"<group>\"; };\n\t\t32B592AD16A4960B0020FFE9 /* CK2IconItemView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2IconItemView.h; sourceTree = \"<group>\"; };\n\t\t32B592AE16A4960B0020FFE9 /* CK2IconItemView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2IconItemView.m; sourceTree = \"<group>\"; };\n\t\t32B592B016A4960B0020FFE9 /* CK2OpenPanelViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2OpenPanelViewController.h; sourceTree = \"<group>\"; };\n\t\t32B592B116A4960B0020FFE9 /* CK2OpenPanelViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2OpenPanelViewController.m; sourceTree = \"<group>\"; };\n\t\t32B592B216A4960B0020FFE9 /* CK2OpenPanelIconViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2OpenPanelIconViewController.h; sourceTree = \"<group>\"; };\n\t\t32B592B316A4960B0020FFE9 /* CK2OpenPanelIconViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2OpenPanelIconViewController.m; sourceTree = \"<group>\"; };\n\t\t32B592B416A4960B0020FFE9 /* CK2OpenPanelListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2OpenPanelListViewController.h; sourceTree = \"<group>\"; };\n\t\t32B592B516A4960B0020FFE9 /* CK2OpenPanelListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2OpenPanelListViewController.m; sourceTree = \"<group>\"; };\n\t\t32B592B616A4960B0020FFE9 /* CK2OpenPanelColumnViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2OpenPanelColumnViewController.h; sourceTree = \"<group>\"; };\n\t\t32B592B716A4960B0020FFE9 /* CK2OpenPanelColumnViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2OpenPanelColumnViewController.m; sourceTree = \"<group>\"; };\n\t\t3C2D8EC10A63FF31008FE1B0 /* zh_TW */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; lineEnding = 0; name = zh_TW; path = zh_TW.lproj/Localizable.strings; sourceTree = \"<group>\"; };\n\t\t3C2D8EC20A63FF3B008FE1B0 /* fr */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; lineEnding = 0; name = fr; path = fr.lproj/Localizable.strings; sourceTree = \"<group>\"; };\n\t\t3C2D8EC30A63FF41008FE1B0 /* da */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; lineEnding = 0; name = da; path = da.lproj/Localizable.strings; sourceTree = \"<group>\"; };\n\t\t791E83030B0EDAC90060E5FC /* error.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = error.png; path = Resources/error.png; sourceTree = \"<group>\"; };\n\t\t791E83040B0EDAC90060E5FC /* finished.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = finished.png; path = Resources/finished.png; sourceTree = \"<group>\"; };\n\t\t7946B0FC0AC0F4A400CAE90F /* CKS3Connection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CKS3Connection.h; sourceTree = \"<group>\"; };\n\t\t7946B0FD0AC0F4A400CAE90F /* CKS3Connection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CKS3Connection.m; sourceTree = \"<group>\"; };\n\t\t796DB2F609F8BB1D0065897B /* SecurityInterface.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SecurityInterface.framework; path = /System/Library/Frameworks/SecurityInterface.framework; sourceTree = \"<absolute>\"; };\n\t\t7978FC140B117D7C0048168B /* bookmark.tif */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = bookmark.tif; sourceTree = \"<group>\"; };\n\t\t797CC8C609F861770063FF9B /* en */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; lineEnding = 0; name = en; path = en.lproj/Localizable.strings; sourceTree = \"<group>\"; };\n\t\t798313C70B0D67E000F5078E /* CKTransferProgressCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CKTransferProgressCell.h; path = ConnectionKit/CKTransferProgressCell.h; sourceTree = \"<group>\"; };\n\t\t798313C80B0D67E000F5078E /* CKTransferProgressCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CKTransferProgressCell.m; path = ConnectionKit/CKTransferProgressCell.m; sourceTree = \"<group>\"; };\n\t\t7983DF8C0B0C0FAC00F5078E /* CKTransferRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CKTransferRecord.h; path = ConnectionKit/CKTransferRecord.h; sourceTree = \"<group>\"; };\n\t\t7983DF8D0B0C0FAC00F5078E /* CKTransferRecord.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CKTransferRecord.m; path = ConnectionKit/CKTransferRecord.m; sourceTree = \"<group>\"; };\n\t\t79CFD12609F702BE00172CDD /* ConnectionKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ConnectionKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t79CFD89409F704F400172CDD /* ConnectionKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConnectionKit.h; sourceTree = \"<group>\"; };\n\t\t79CFD92C09F7080B00172CDD /* libcurl.dylib */ = {isa = PBXFileReference; lastKnownFileType = \"compiled.mach-o.dylib\"; name = libcurl.dylib; path = /usr/lib/libcurl.dylib; sourceTree = \"<absolute>\"; };\n\t\t79CFD92D09F7080B00172CDD /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = \"compiled.mach-o.dylib\"; name = libz.dylib; path = /usr/lib/libz.dylib; sourceTree = \"<absolute>\"; };\n\t\t79CFD93609F7084000172CDD /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = /System/Library/Frameworks/Security.framework; sourceTree = \"<absolute>\"; };\n\t\t79F9532B09FDC3A80041E345 /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = \"<absolute>\"; };\n\t\t79FB807109F74185006E7D11 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = \"<absolute>\"; };\n\t\tADEE5E17169C84DF006188C5 /* KMSState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KMSState.h; sourceTree = \"<group>\"; };\n\t\tCE1AD3DF0A7E845A0083C01E /* it */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; lineEnding = 0; name = it; path = it.lproj/Localizable.strings; sourceTree = \"<group>\"; };\n\t\tCE55A6620AD194740091C8AE /* zh_CN */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; lineEnding = 0; name = zh_CN; path = zh_CN.lproj/Localizable.strings; sourceTree = \"<group>\"; };\n\t\tCE94B9101463124A00F90408 /* es */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = \"<group>\"; };\n\t\tCE953A04102BACE70066C08F /* pt_BR */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = pt_BR; path = pt_BR.lproj/Localizable.strings; sourceTree = \"<group>\"; };\n\t\tCE9795FC0EC3CF9600FA9C5F /* Framework-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = \"Framework-Info.plist\"; sourceTree = \"<group>\"; };\n\t\tCEA9AFD30A64224100855897 /* ja */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; lineEnding = 0; name = ja; path = ja.lproj/Localizable.strings; sourceTree = \"<group>\"; };\n\t\tCEB563850A7AB7070081179A /* de */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; lineEnding = 0; name = de; path = de.lproj/Localizable.strings; sourceTree = \"<group>\"; };\n\t\tCEB6FA0A13A696B200C8059F /* libsasl2.dylib */ = {isa = PBXFileReference; lastKnownFileType = \"compiled.mach-o.dylib\"; name = libsasl2.dylib; path = /usr/lib/libsasl2.dylib; sourceTree = \"<absolute>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t220AD7941509019B00748655 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t228E180C1700AD5600ACDE94 /* CURLHandle.framework in Frameworks */,\n\t\t\t\t22CC578B1509068600F94154 /* ConnectionKit.framework in Frameworks */,\n\t\t\t\t22052706165EA62500A2BBC9 /* DAVKit.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t22C9CF951703327A004610FE /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t22C9CFBA170333A2004610FE /* ConnectionKit.framework in Frameworks */,\n\t\t\t\t22C9CF991703327A004610FE /* Cocoa.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t279117E7178B5C64006BF857 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t2791183A178B5E12006BF857 /* ConnectionKit.framework in Frameworks */,\n\t\t\t\t279117EC178B5C64006BF857 /* Cocoa.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t279117F8178B5C64006BF857 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t27911801178B5C64006BF857 /* ConnectionKitUI.framework in Frameworks */,\n\t\t\t\t279117FE178B5C64006BF857 /* Cocoa.framework in Frameworks */,\n\t\t\t\t279117FD178B5C64006BF857 /* XCTest.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t27F3372516BC1FB100E70511 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t27F3372B16BC1FB100E70511 /* Cocoa.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t79CFD12409F702BE00172CDD /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t22052702165EA23800A2BBC9 /* CURLHandle.framework in Frameworks */,\n\t\t\t\t79CFD92F09F7080B00172CDD /* libz.dylib in Frameworks */,\n\t\t\t\t79CFD93709F7084000172CDD /* Security.framework in Frameworks */,\n\t\t\t\t79FB807209F74185006E7D11 /* Carbon.framework in Frameworks */,\n\t\t\t\t796DB30109F8BB1D0065897B /* SecurityInterface.framework in Frameworks */,\n\t\t\t\t79F9533D09FDC3A80041E345 /* ApplicationServices.framework in Frameworks */,\n\t\t\t\tCEB6FA0B13A696B200C8059F /* libsasl2.dylib in Frameworks */,\n\t\t\t\t220526F8165E9DE400A2BBC9 /* DAVKit.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t080E96DDFE201D6D7F000001 /* Public */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t79CFD89409F704F400172CDD /* ConnectionKit.h */,\n\t\t\t\t2743E8071622E47600019979 /* CK2FileManager.h */,\n\t\t\t\t2743E8081622E47600019979 /* CK2FileManager.m */,\n\t\t\t\t278D8B77167FF35D00622468 /* CK2Authentication.h */,\n\t\t\t\t278D8B78167FF35D00622468 /* CK2Authentication.m */,\n\t\t\t\t27993E8216FCB30D008DC1B0 /* CK2FileOperation.h */,\n\t\t\t\t27993E8316FCB30D008DC1B0 /* CK2FileOperation.m */,\n\t\t\t);\n\t\t\tname = Public;\n\t\t\tpath = ConnectionKit;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t09D6602E09FD37B70000BA00 /* Unit Tests */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t2264399116FCB702001FDC20 /* README.md */,\n\t\t\t\t225FCA3716B046F800A9F5AE /* CKUploaderTests.m */,\n\t\t\t\t220C11951715C5E10086F199 /* ErrorTests.m */,\n\t\t\t\t2298E4AA17442272005A4160 /* FileTests.m */,\n\t\t\t\t220526B9165E8C9D00A2BBC9 /* FTPAuthenticationTests.m */,\n\t\t\t\t22AC1C111742980000AB09E1 /* FTPTests.m */,\n\t\t\t\t22CC56F81509048E00F94154 /* PathTests.m */,\n\t\t\t\t22AC1C121742980000AB09E1 /* SFTPTests.m */,\n\t\t\t\t22AC1C1817429F8100AB09E1 /* URLAppendingTests.m */,\n\t\t\t\t278CFE1216BADE030018A14B /* URLCanonicalizationTests.m */,\n\t\t\t\t22AC1C1A17429FAA00AB09E1 /* URLDirectoryTests.m */,\n\t\t\t\t22F6D102165A8A2200443CC9 /* URLTests.m */,\n\t\t\t\t27CFEC7118E73526007158A4 /* URLs.testdata */,\n\t\t\t\t22AC1C131742980000AB09E1 /* WebDAVTests.m */,\n\t\t\t\t22AC1C1717429F1500AB09E1 /* Test Support */,\n\t\t\t);\n\t\t\tname = \"Unit Tests\";\n\t\t\tpath = UnitTests;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t79F9532B09FDC3A80041E345 /* ApplicationServices.framework */,\n\t\t\t\t79FB807109F74185006E7D11 /* Carbon.framework */,\n\t\t\t\t1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,\n\t\t\t\t27448C371458100D00EB086F /* DAVKit.framework */,\n\t\t\t\t22407D5D166FA17600E1EAD4 /* libcrypto.dylib */,\n\t\t\t\t79CFD92C09F7080B00172CDD /* libcurl.dylib */,\n\t\t\t\tCEB6FA0A13A696B200C8059F /* libsasl2.dylib */,\n\t\t\t\t2702E4671459D0F50085BBC4 /* libssh2.dylib */,\n\t\t\t\t22407D5A166FA12500E1EAD4 /* libssl.dylib */,\n\t\t\t\t79CFD92D09F7080B00172CDD /* libz.dylib */,\n\t\t\t\t79CFD93609F7084000172CDD /* Security.framework */,\n\t\t\t\t796DB2F609F8BB1D0065897B /* SecurityInterface.framework */,\n\t\t\t);\n\t\t\tname = \"Linked Frameworks\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t29B97324FDCFA39411CA2CEA /* AppKit.framework */,\n\t\t\t\t13E42FB307B3F0F600E4EEF1 /* CoreData.framework */,\n\t\t\t\t29B97325FDCFA39411CA2CEA /* Foundation.framework */,\n\t\t\t);\n\t\t\tname = \"Other Frameworks\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t19C28FACFE9D520D11CA2CBB /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t79CFD12609F702BE00172CDD /* ConnectionKit.framework */,\n\t\t\t\t220AD7981509019B00748655 /* UnitTests.xctest */,\n\t\t\t\t27F3372816BC1FB100E70511 /* AuthTester.app */,\n\t\t\t\t22C9CF981703327A004610FE /* ProfilingTester.app */,\n\t\t\t\t279117EB178B5C64006BF857 /* ConnectionKitUI.framework */,\n\t\t\t\t279117FB178B5C64006BF857 /* ConnectionKitUITests.xctest */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t220526E3165E96AA00A2BBC9 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t220526E8165E96AA00A2BBC9 /* CURLHandle.framework */,\n\t\t\t\t279117E1178B5A86006BF857 /* CURLHandleTests.xctest */,\n\t\t\t\t22C9CFFB1703AD4D004610FE /* Standalone Test */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t220526EC165E97B400A2BBC9 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t220526F1165E97B400A2BBC9 /* DAVKit.framework */,\n\t\t\t\t220526F3165E97B400A2BBC9 /* Tests.octest */,\n\t\t\t\t22AC1C0E174297C500AB09E1 /* libDAVKit.a */,\n\t\t\t\t22AC1C10174297C500AB09E1 /* Tests iOS.octest */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t2280F4A4171826A500BBEF22 /* Documentation */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t2280F4B41718276E00BBEF22 /* .appledoc.plist */,\n\t\t\t\t2280F4B1171826D100BBEF22 /* Documentation */,\n\t\t\t);\n\t\t\tname = Documentation;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t2280F4B0171826B700BBEF22 /* Testing */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t09D6602E09FD37B70000BA00 /* Unit Tests */,\n\t\t\t\t27F3372C16BC1FB100E70511 /* AuthTester */,\n\t\t\t\t22C9CF9A1703327A004610FE /* ProfilingTester */,\n\t\t\t);\n\t\t\tname = Testing;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t22AC1C1717429F1500AB09E1 /* Test Support */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t09D6601E09FD37990000BA00 /* UnitTest-Info.plist */,\n\t\t\t\t2248933B165D48CF006C4C7F /* UnitTests_Prefix.pch */,\n\t\t\t\t27999BB8170B4BDD00A54BEE /* Framework Extensions */,\n\t\t\t\t22F6D0E8165A8A2200443CC9 /* MockServer */,\n\t\t\t\t22662EE2165D1EE3005FCC4A /* BaseCKTests.h */,\n\t\t\t\t22662EE3165D1EE3005FCC4A /* BaseCKTests.m */,\n\t\t\t\t22AC1BFE174297C500AB09E1 /* BaseCKProtocolTests.h */,\n\t\t\t\t22F6D0E7165A8A2200443CC9 /* BaseCKProtocolTests.m */,\n\t\t\t);\n\t\t\tname = \"Test Support\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t22C9CF9A1703327A004610FE /* ProfilingTester */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t22C9CFA61703327A004610FE /* AppDelegate.h */,\n\t\t\t\t22C9CFA71703327A004610FE /* AppDelegate.m */,\n\t\t\t\t22C9CFA91703327A004610FE /* MainMenu.xib */,\n\t\t\t\t22C9CF9B1703327A004610FE /* Supporting Files */,\n\t\t\t);\n\t\t\tpath = ProfilingTester;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t22C9CF9B1703327A004610FE /* Supporting Files */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t22C9CF9C1703327A004610FE /* ProfilingTester-Info.plist */,\n\t\t\t\t22C9CF9D1703327A004610FE /* InfoPlist.strings */,\n\t\t\t\t22C9CFA01703327A004610FE /* main.m */,\n\t\t\t\t22C9CFA21703327A004610FE /* ProfilingTester-Prefix.pch */,\n\t\t\t\t22C9CFA31703327A004610FE /* Credits.rtf */,\n\t\t\t);\n\t\t\tname = \"Supporting Files\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t22F6D0E8165A8A2200443CC9 /* MockServer */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t2246AF5D16B99986001D39D9 /* KMSCloseCommand.h */,\n\t\t\t\t2246AF6016B99986001D39D9 /* KMSCloseCommand.m */,\n\t\t\t\t2246AF6116B99986001D39D9 /* KMSCommand.h */,\n\t\t\t\t2246AF5F16B99986001D39D9 /* KMSCommand.m */,\n\t\t\t\t224AB371166E500E0066B1C6 /* KMSConnection.h */,\n\t\t\t\t224AB372166E500E0066B1C6 /* KMSConnection.m */,\n\t\t\t\t224AB373166E500E0066B1C6 /* KMSListener.h */,\n\t\t\t\t224AB374166E500E0066B1C6 /* KMSListener.m */,\n\t\t\t\t2246AF6216B99986001D39D9 /* KMSPauseCommand.h */,\n\t\t\t\t2246AF5E16B99986001D39D9 /* KMSPauseCommand.m */,\n\t\t\t\t224AB375166E500E0066B1C6 /* KMSRegExResponder.h */,\n\t\t\t\t224AB376166E500E0066B1C6 /* KMSRegExResponder.m */,\n\t\t\t\t224AB377166E500E0066B1C6 /* KMSResponder.h */,\n\t\t\t\t224AB378166E500E0066B1C6 /* KMSResponder.m */,\n\t\t\t\t224AB379166E500E0066B1C6 /* KMSResponseCollection.h */,\n\t\t\t\t224AB37A166E500E0066B1C6 /* KMSResponseCollection.m */,\n\t\t\t\t2246AF6316B99986001D39D9 /* KMSSendDataCommand.h */,\n\t\t\t\t2246AF5A16B99986001D39D9 /* KMSSendDataCommand.m */,\n\t\t\t\t2246AF6416B99986001D39D9 /* KMSSendServerDataCommand.h */,\n\t\t\t\t2246AF5C16B99986001D39D9 /* KMSSendServerDataCommand.m */,\n\t\t\t\t2246AF5B16B99986001D39D9 /* KMSSendStringCommand.h */,\n\t\t\t\t2246AF5916B99986001D39D9 /* KMSSendStringCommand.m */,\n\t\t\t\t224AB37B166E500E0066B1C6 /* KMSServer.h */,\n\t\t\t\t224AB37C166E500E0066B1C6 /* KMSServer.m */,\n\t\t\t\tADEE5E17169C84DF006188C5 /* KMSState.h */,\n\t\t\t\t224AB388166E52680066B1C6 /* KMSTestCase.h */,\n\t\t\t\t224AB389166E52680066B1C6 /* KMSTestCase.m */,\n\t\t\t\t22FEB6681680818800BB778B /* KMSTranscriptEntry.h */,\n\t\t\t\t22FEB6671680818800BB778B /* KMSTranscriptEntry.m */,\n\t\t\t\t22F6D0FF165A8A2200443CC9 /* UnitTests */,\n\t\t\t);\n\t\t\tname = MockServer;\n\t\t\tpath = ../CurlHandle/CURLHandleSource/Tests/MockServer;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t22F6D0FF165A8A2200443CC9 /* UnitTests */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t227113BE168388FD00280005 /* http.json */,\n\t\t\t\t22662EF1165D2EEC005FCC4A /* ftp.json */,\n\t\t\t\t22662EF2165D2EEC005FCC4A /* webdav.json */,\n\t\t\t\t224AB38B166E587F0066B1C6 /* KMSManualTests.m */,\n\t\t\t\t224AB386166E501C0066B1C6 /* KMSCollectionTests.m */,\n\t\t\t);\n\t\t\tpath = UnitTests;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t273F0E13164E8D3E00588885 /* Protocols */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t2790A8271627636E000C9D9F /* CK2Protocol.h */,\n\t\t\t\t2790A8281627636E000C9D9F /* CK2Protocol.m */,\n\t\t\t\t27A207291671634800D8284D /* CK2CURLBasedProtocol.h */,\n\t\t\t\t27A2072A1671634800D8284D /* CK2CURLBasedProtocol.m */,\n\t\t\t\t27ADC5751AC0CD7D0085C7F7 /* CK2CurlTransferStackManager.h */,\n\t\t\t\t27ADC5761AC0CD7D0085C7F7 /* CK2CurlTransferStackManager.m */,\n\t\t\t\t2790A94616278F1D000C9D9F /* CK2FTPProtocol.h */,\n\t\t\t\t2790A94716278F1D000C9D9F /* CK2FTPProtocol.m */,\n\t\t\t\t27F394F3162C162900944F43 /* CK2SFTPProtocol.h */,\n\t\t\t\t27F394F4162C162900944F43 /* CK2SFTPProtocol.m */,\n\t\t\t\t27431C9E1630381D00F6FB58 /* CK2FileProtocol.h */,\n\t\t\t\t27431C9F1630381D00F6FB58 /* CK2FileProtocol.m */,\n\t\t\t\t2288CD73165A98E300F34E24 /* CK2WebDAVProtocol.h */,\n\t\t\t\t2288CD74165A98E300F34E24 /* CK2WebDAVProtocol.m */,\n\t\t\t);\n\t\t\tname = Protocols;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t274DA43516ED52BE008041B6 /* Legacy */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t274DA43616ED52CC008041B6 /* Uploader */,\n\t\t\t);\n\t\t\tname = Legacy;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t274DA43616ED52CC008041B6 /* Uploader */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t27D03B401471787000FEA588 /* CKUploader.h */,\n\t\t\t\t27D03B411471787000FEA588 /* CKUploader.m */,\n\t\t\t\t7983DF8C0B0C0FAC00F5078E /* CKTransferRecord.h */,\n\t\t\t\t7983DF8D0B0C0FAC00F5078E /* CKTransferRecord.m */,\n\t\t\t\t798313C70B0D67E000F5078E /* CKTransferProgressCell.h */,\n\t\t\t\t798313C80B0D67E000F5078E /* CKTransferProgressCell.m */,\n\t\t\t\t791E83030B0EDAC90060E5FC /* error.png */,\n\t\t\t\t791E83040B0EDAC90060E5FC /* finished.png */,\n\t\t\t);\n\t\t\tname = Uploader;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t279117EE178B5C64006BF857 /* Supporting Files */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t279117EF178B5C64006BF857 /* ConnectionKitUI-Info.plist */,\n\t\t\t\t279117F0178B5C64006BF857 /* InfoPlist.strings */,\n\t\t\t\t279117F3178B5C64006BF857 /* ConnectionKitUI-Prefix.pch */,\n\t\t\t);\n\t\t\tname = \"Supporting Files\";\n\t\t\tpath = ConnectionKitUI;\n\t\t\tsourceTree = SOURCE_ROOT;\n\t\t};\n\t\t27999BB8170B4BDD00A54BEE /* Framework Extensions */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t22C9CFED1703AD4C004610FE /* CK2FileOperationWithTestSupport.h */,\n\t\t\t\t22C9CFEE1703AD4D004610FE /* CK2FileOperationWithTestSupport.m */,\n\t\t\t\t228E180D1700AEA200ACDE94 /* CK2FileManagerWithTestSupport.h */,\n\t\t\t\t228E180E1700AEA300ACDE94 /* CK2FileManagerWithTestSupport.m */,\n\t\t\t);\n\t\t\tname = \"Framework Extensions\";\n\t\t\tpath = ../ConnectionKit;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t27F3372C16BC1FB100E70511 /* AuthTester */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t27F3373816BC1FB100E70511 /* AppDelegate.h */,\n\t\t\t\t27F3373916BC1FB100E70511 /* AppDelegate.m */,\n\t\t\t\t27F3373B16BC1FB100E70511 /* MainMenu.xib */,\n\t\t\t\t27F3372D16BC1FB100E70511 /* Supporting Files */,\n\t\t\t);\n\t\t\tpath = AuthTester;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t27F3372D16BC1FB100E70511 /* Supporting Files */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t27F3372E16BC1FB100E70511 /* AuthTester-Info.plist */,\n\t\t\t\t27F3372F16BC1FB100E70511 /* InfoPlist.strings */,\n\t\t\t\t27F3373216BC1FB100E70511 /* main.m */,\n\t\t\t\t27F3373416BC1FB100E70511 /* AuthTester-Prefix.pch */,\n\t\t\t\t27F3373516BC1FB100E70511 /* Credits.rtf */,\n\t\t\t);\n\t\t\tname = \"Supporting Files\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t27FD90C20ED5BFA40068D634 /* Experimental */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t7946B0FC0AC0F4A400CAE90F /* CKS3Connection.h */,\n\t\t\t\t7946B0FD0AC0F4A400CAE90F /* CKS3Connection.m */,\n\t\t\t);\n\t\t\tname = Experimental;\n\t\t\tpath = ConnectionKit;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t27FD90C60ED5BFC00068D634 /* Dependencies */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t27BFFEDA15027F4100EFA319 /* CURLHandle.xcodeproj */,\n\t\t\t\t27448C2414580F7500EB086F /* DAVKit.xcodeproj */,\n\t\t\t);\n\t\t\tname = Dependencies;\n\t\t\tpath = ConnectionKit;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t29B97314FDCFA39411CA2CEA /* Connection */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t22C7A9E316FCC8C300C88317 /* README.md */,\n\t\t\t\t080E96DDFE201D6D7F000001 /* Public */,\n\t\t\t\t79CFD8A009F705B400172CDD /* Private */,\n\t\t\t\t79CFD8A509F705FF00172CDD /* UI */,\n\t\t\t\t274DA43516ED52BE008041B6 /* Legacy */,\n\t\t\t\t27FD90C20ED5BFA40068D634 /* Experimental */,\n\t\t\t\t2280F4B0171826B700BBEF22 /* Testing */,\n\t\t\t\t29B97315FDCFA39411CA2CEA /* Other Sources */,\n\t\t\t\t27FD90C60ED5BFC00068D634 /* Dependencies */,\n\t\t\t\t29B97317FDCFA39411CA2CEA /* Resources */,\n\t\t\t\t2280F4A4171826A500BBEF22 /* Documentation */,\n\t\t\t\t29B97323FDCFA39411CA2CEA /* Frameworks */,\n\t\t\t\t19C28FACFE9D520D11CA2CBB /* Products */,\n\t\t\t);\n\t\t\tname = Connection;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t29B97315FDCFA39411CA2CEA /* Other Sources */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t220526F4165E989700A2BBC9 /* Connection_Prefix.pch */,\n\t\t\t\t220526F6165E98B400A2BBC9 /* main.m */,\n\t\t\t);\n\t\t\tname = \"Other Sources\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t29B97317FDCFA39411CA2CEA /* Resources */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t797CC8C509F861770063FF9B /* Localizable.strings */,\n\t\t\t\t79CFD8E409F7071E00172CDD /* Images */,\n\t\t\t\tCE9795FC0EC3CF9600FA9C5F /* Framework-Info.plist */,\n\t\t\t);\n\t\t\tpath = Resources;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t29B97323FDCFA39411CA2CEA /* Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */,\n\t\t\t\t27F3372A16BC1FB100E70511 /* Cocoa.framework */,\n\t\t\t\t279117FC178B5C64006BF857 /* XCTest.framework */,\n\t\t\t\t1058C7A2FEA54F0111CA2CBB /* Other Frameworks */,\n\t\t\t);\n\t\t\tname = Frameworks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t32B592A016A1016A0020FFE9 /* CK2OpenPanel */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t32B592A116A4960B0020FFE9 /* CK2OpenPanel.h */,\n\t\t\t\t32B592A216A4960B0020FFE9 /* CK2OpenPanel.m */,\n\t\t\t\t32B592A316A4960B0020FFE9 /* CK2OpenPanelController.h */,\n\t\t\t\t32B592A416A4960B0020FFE9 /* CK2OpenPanelController.m */,\n\t\t\t\t32B592B016A4960B0020FFE9 /* CK2OpenPanelViewController.h */,\n\t\t\t\t32B592B116A4960B0020FFE9 /* CK2OpenPanelViewController.m */,\n\t\t\t\t32B592B216A4960B0020FFE9 /* CK2OpenPanelIconViewController.h */,\n\t\t\t\t32B592B316A4960B0020FFE9 /* CK2OpenPanelIconViewController.m */,\n\t\t\t\t32B592B416A4960B0020FFE9 /* CK2OpenPanelListViewController.h */,\n\t\t\t\t32B592B516A4960B0020FFE9 /* CK2OpenPanelListViewController.m */,\n\t\t\t\t32B592B616A4960B0020FFE9 /* CK2OpenPanelColumnViewController.h */,\n\t\t\t\t32B592B716A4960B0020FFE9 /* CK2OpenPanelColumnViewController.m */,\n\t\t\t\t324D22D116AF490A001CFDE6 /* CK2NewFolderWindowController.h */,\n\t\t\t\t324D22D216AF490A001CFDE6 /* CK2NewFolderWindowController.m */,\n\t\t\t\t32B592A516A4960B0020FFE9 /* CK2FileCell.h */,\n\t\t\t\t32B592A616A4960B0020FFE9 /* CK2FileCell.m */,\n\t\t\t\t32B592A916A4960B0020FFE9 /* CK2PathControl.h */,\n\t\t\t\t32B592AA16A4960B0020FFE9 /* CK2PathControl.m */,\n\t\t\t\t3274F1CB170888430049DDE5 /* CK2PathFieldWindowController.h */,\n\t\t\t\t3274F1CC170888430049DDE5 /* CK2PathFieldWindowController.m */,\n\t\t\t\t32B592AB16A4960B0020FFE9 /* CK2IconViewItem.h */,\n\t\t\t\t32B592AC16A4960B0020FFE9 /* CK2IconViewItem.m */,\n\t\t\t\t32B592AD16A4960B0020FFE9 /* CK2IconItemView.h */,\n\t\t\t\t32B592AE16A4960B0020FFE9 /* CK2IconItemView.m */,\n\t\t\t\t324D22C716AE1762001CFDE6 /* CK2IconView.h */,\n\t\t\t\t324D22C816AE1762001CFDE6 /* CK2IconView.m */,\n\t\t\t\t324D22BB16AE173F001CFDE6 /* CK2BrowserPreviewController.h */,\n\t\t\t\t324D22BC16AE173F001CFDE6 /* CK2BrowserPreviewController.m */,\n\t\t\t\t324D22BD16AE1740001CFDE6 /* CK2BrowserPreviewView.h */,\n\t\t\t\t324D22BE16AE1740001CFDE6 /* CK2BrowserPreviewView.m */,\n\t\t\t\t324D22C316AE1754001CFDE6 /* CK2FileSizeFormatter.h */,\n\t\t\t\t324D22C416AE1754001CFDE6 /* CK2FileSizeFormatter.m */,\n\t\t\t\t32B592A716A4960B0020FFE9 /* NSURL+CK2OpenPanel.h */,\n\t\t\t\t32B592A816A4960B0020FFE9 /* NSURL+CK2OpenPanel.m */,\n\t\t\t\t32B3EA7C16B58FFA003D4836 /* NSImage+CK2OpenPanel.h */,\n\t\t\t\t32B3EA7D16B58FFB003D4836 /* NSImage+CK2OpenPanel.m */,\n\t\t\t\t323B7349170E253900219F9A /* CK2OpenPanel.xib */,\n\t\t\t\t323B7356170E254800219F9A /* CK2FilePreview.xib */,\n\t\t\t\t323B7359170E255200219F9A /* CK2NewFolderWindow.xib */,\n\t\t\t\t323B735C170E256000219F9A /* CK2PathFieldWindow.xib */,\n\t\t\t);\n\t\t\tname = CK2OpenPanel;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t79CFD8A009F705B400172CDD /* Private */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t273F0E13164E8D3E00588885 /* Protocols */,\n\t\t\t);\n\t\t\tname = Private;\n\t\t\tpath = ConnectionKit;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t79CFD8A509F705FF00172CDD /* UI */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t279117F4178B5C64006BF857 /* ConnectionKitUI.h */,\n\t\t\t\t32B592A016A1016A0020FFE9 /* CK2OpenPanel */,\n\t\t\t\t279117EE178B5C64006BF857 /* Supporting Files */,\n\t\t\t);\n\t\t\tname = UI;\n\t\t\tpath = ConnectionKit;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t79CFD8E409F7071E00172CDD /* Images */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t7978FC140B117D7C0048168B /* bookmark.tif */,\n\t\t\t);\n\t\t\tname = Images;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXHeadersBuildPhase section */\n\t\t279117E8178B5C64006BF857 /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t27911834178B5D59006BF857 /* NSImage+CK2OpenPanel.h in Headers */,\n\t\t\t\t27911816178B5D59006BF857 /* CK2OpenPanelIconViewController.h in Headers */,\n\t\t\t\t2791182C178B5D59006BF857 /* CK2BrowserPreviewView.h in Headers */,\n\t\t\t\t27911813178B5D4F006BF857 /* CK2OpenPanelController.h in Headers */,\n\t\t\t\t27911814178B5D59006BF857 /* CK2OpenPanelViewController.h in Headers */,\n\t\t\t\t27911824178B5D59006BF857 /* CK2IconViewItem.h in Headers */,\n\t\t\t\t2791181E178B5D59006BF857 /* CK2FileCell.h in Headers */,\n\t\t\t\t2791182A178B5D59006BF857 /* CK2BrowserPreviewController.h in Headers */,\n\t\t\t\t2791181C178B5D59006BF857 /* CK2NewFolderWindowController.h in Headers */,\n\t\t\t\t2791188D178B6782006BF857 /* ConnectionKitUI.h in Headers */,\n\t\t\t\t27911826178B5D59006BF857 /* CK2IconItemView.h in Headers */,\n\t\t\t\t27911822178B5D59006BF857 /* CK2PathFieldWindowController.h in Headers */,\n\t\t\t\t27911820178B5D59006BF857 /* CK2PathControl.h in Headers */,\n\t\t\t\t2791182E178B5D59006BF857 /* CK2FileSizeFormatter.h in Headers */,\n\t\t\t\t2791181A178B5D59006BF857 /* CK2OpenPanelColumnViewController.h in Headers */,\n\t\t\t\t27911818178B5D59006BF857 /* CK2OpenPanelListViewController.h in Headers */,\n\t\t\t\t27911828178B5D59006BF857 /* CK2IconView.h in Headers */,\n\t\t\t\t27911810178B5D33006BF857 /* CK2OpenPanel.h in Headers */,\n\t\t\t\t27911832178B5D59006BF857 /* NSURL+CK2OpenPanel.h in Headers */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t79CFD12109F702BE00172CDD /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t79CFD89509F704F400172CDD /* ConnectionKit.h in Headers */,\n\t\t\t\t7983DF8E0B0C0FAC00F5078E /* CKTransferRecord.h in Headers */,\n\t\t\t\t798313C90B0D67E000F5078E /* CKTransferProgressCell.h in Headers */,\n\t\t\t\t27D03B421471787000FEA588 /* CKUploader.h in Headers */,\n\t\t\t\t2743E8091622E47600019979 /* CK2FileManager.h in Headers */,\n\t\t\t\t2790A8291627636E000C9D9F /* CK2Protocol.h in Headers */,\n\t\t\t\t2790A94816278F1D000C9D9F /* CK2FTPProtocol.h in Headers */,\n\t\t\t\t27ADC5771AC0CD7D0085C7F7 /* CK2CurlTransferStackManager.h in Headers */,\n\t\t\t\t27F394F5162C162900944F43 /* CK2SFTPProtocol.h in Headers */,\n\t\t\t\t27431CA01630381D00F6FB58 /* CK2FileProtocol.h in Headers */,\n\t\t\t\t27A2072B1671634800D8284D /* CK2CURLBasedProtocol.h in Headers */,\n\t\t\t\t278D8B79167FF35D00622468 /* CK2Authentication.h in Headers */,\n\t\t\t\tADEE5E18169C84DF006188C5 /* KMSState.h in Headers */,\n\t\t\t\t27993E8416FCB30D008DC1B0 /* CK2FileOperation.h in Headers */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXHeadersBuildPhase section */\n\n/* Begin PBXNativeTarget section */\n\t\t220AD7971509019B00748655 /* UnitTests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 220AD7A71509019B00748655 /* Build configuration list for PBXNativeTarget \"UnitTests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t220AD7931509019B00748655 /* Sources */,\n\t\t\t\t220AD7941509019B00748655 /* Frameworks */,\n\t\t\t\t220AD7951509019B00748655 /* Resources */,\n\t\t\t\t22FA97F715090855001728B8 /* CopyFiles */,\n\t\t\t\t220AD7961509019B00748655 /* ShellScript */,\n\t\t\t\t22E67F1C171312B6001ECE34 /* CopyFiles */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\t2218212A170209D300584589 /* PBXTargetDependency */,\n\t\t\t\t220AD7AE1509021A00748655 /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = UnitTests;\n\t\t\tproductName = Tests;\n\t\t\tproductReference = 220AD7981509019B00748655 /* UnitTests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n\t\t22C9CF971703327A004610FE /* ProfilingTester */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 22C9CFB91703327A004610FE /* Build configuration list for PBXNativeTarget \"ProfilingTester\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t22C9CF941703327A004610FE /* Sources */,\n\t\t\t\t22C9CF951703327A004610FE /* Frameworks */,\n\t\t\t\t22C9CF961703327A004610FE /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = ProfilingTester;\n\t\t\tproductName = ProfilingTester;\n\t\t\tproductReference = 22C9CF981703327A004610FE /* ProfilingTester.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n\t\t279117EA178B5C64006BF857 /* ConnectionKitUI */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 2791180A178B5C64006BF857 /* Build configuration list for PBXNativeTarget \"ConnectionKitUI\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t279117E6178B5C64006BF857 /* Sources */,\n\t\t\t\t279117E7178B5C64006BF857 /* Frameworks */,\n\t\t\t\t279117E8178B5C64006BF857 /* Headers */,\n\t\t\t\t279117E9178B5C64006BF857 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = ConnectionKitUI;\n\t\t\tproductName = ConnectionKitUI;\n\t\t\tproductReference = 279117EB178B5C64006BF857 /* ConnectionKitUI.framework */;\n\t\t\tproductType = \"com.apple.product-type.framework\";\n\t\t};\n\t\t279117FA178B5C64006BF857 /* ConnectionKitUITests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 2791180D178B5C64006BF857 /* Build configuration list for PBXNativeTarget \"ConnectionKitUITests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t279117F7178B5C64006BF857 /* Sources */,\n\t\t\t\t279117F8178B5C64006BF857 /* Frameworks */,\n\t\t\t\t279117F9178B5C64006BF857 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\t27911800178B5C64006BF857 /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = ConnectionKitUITests;\n\t\t\tproductName = ConnectionKitUITests;\n\t\t\tproductReference = 279117FB178B5C64006BF857 /* ConnectionKitUITests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n\t\t27F3372716BC1FB100E70511 /* AuthTester */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 27F3373E16BC1FB100E70511 /* Build configuration list for PBXNativeTarget \"AuthTester\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t27F3372416BC1FB100E70511 /* Sources */,\n\t\t\t\t27F3372516BC1FB100E70511 /* Frameworks */,\n\t\t\t\t27F3372616BC1FB100E70511 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = AuthTester;\n\t\t\tproductName = AuthTester;\n\t\t\tproductReference = 27F3372816BC1FB100E70511 /* AuthTester.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n\t\t79CFD12509F702BE00172CDD /* ConnectionKit */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 79CFD12809F702BF00172CDD /* Build configuration list for PBXNativeTarget \"ConnectionKit\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t797CBBEB09F854B60063FF9B /* Generate Localizable.strings */,\n\t\t\t\t79CFD12309F702BE00172CDD /* Sources */,\n\t\t\t\t79CFD12409F702BE00172CDD /* Frameworks */,\n\t\t\t\t79CFD12109F702BE00172CDD /* Headers */,\n\t\t\t\t79CFD12209F702BE00172CDD /* Resources */,\n\t\t\t\t27282EDA167131150057CCF7 /* CopyFiles */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\t220526FD165EA20600A2BBC9 /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = ConnectionKit;\n\t\t\tproductName = Framework;\n\t\t\tproductReference = 79CFD12609F702BE00172CDD /* ConnectionKit.framework */;\n\t\t\tproductType = \"com.apple.product-type.framework\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t29B97313FDCFA39411CA2CEA /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastTestingUpgradeCheck = 0600;\n\t\t\t\tLastUpgradeCheck = 0700;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t279117FA178B5C64006BF857 = {\n\t\t\t\t\t\tTestTargetID = 79CFD12509F702BE00172CDD;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject \"Connection\" */;\n\t\t\tcompatibilityVersion = \"Xcode 3.2\";\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 1;\n\t\t\tknownRegions = (\n\t\t\t\tEnglish,\n\t\t\t\ten,\n\t\t\t\tja,\n\t\t\t\tfr,\n\t\t\t\tde,\n\t\t\t\tzh_TW,\n\t\t\t\tda,\n\t\t\t\tit,\n\t\t\t\tes,\n\t\t\t\tzh_CN,\n\t\t\t\tpt_BR,\n\t\t\t);\n\t\t\tmainGroup = 29B97314FDCFA39411CA2CEA /* Connection */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectReferences = (\n\t\t\t\t{\n\t\t\t\t\tProductGroup = 220526E3165E96AA00A2BBC9 /* Products */;\n\t\t\t\t\tProjectRef = 27BFFEDA15027F4100EFA319 /* CURLHandle.xcodeproj */;\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tProductGroup = 220526EC165E97B400A2BBC9 /* Products */;\n\t\t\t\t\tProjectRef = 27448C2414580F7500EB086F /* DAVKit.xcodeproj */;\n\t\t\t\t},\n\t\t\t);\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t79CFD12509F702BE00172CDD /* ConnectionKit */,\n\t\t\t\t279117EA178B5C64006BF857 /* ConnectionKitUI */,\n\t\t\t\t220AD7971509019B00748655 /* UnitTests */,\n\t\t\t\t27F3372716BC1FB100E70511 /* AuthTester */,\n\t\t\t\t22C9CF971703327A004610FE /* ProfilingTester */,\n\t\t\t\t279117FA178B5C64006BF857 /* ConnectionKitUITests */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXReferenceProxy section */\n\t\t220526E8165E96AA00A2BBC9 /* CURLHandle.framework */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = wrapper.framework;\n\t\t\tpath = CURLHandle.framework;\n\t\t\tremoteRef = 220526E7165E96AA00A2BBC9 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t220526F1165E97B400A2BBC9 /* DAVKit.framework */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = wrapper.framework;\n\t\t\tpath = DAVKit.framework;\n\t\t\tremoteRef = 220526F0165E97B400A2BBC9 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t220526F3165E97B400A2BBC9 /* Tests.octest */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = wrapper.cfbundle;\n\t\t\tpath = Tests.octest;\n\t\t\tremoteRef = 220526F2165E97B400A2BBC9 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t22AC1C0E174297C500AB09E1 /* libDAVKit.a */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = archive.ar;\n\t\t\tpath = libDAVKit.a;\n\t\t\tremoteRef = 22AC1C0D174297C500AB09E1 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t22AC1C10174297C500AB09E1 /* Tests iOS.octest */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = wrapper.cfbundle;\n\t\t\tpath = \"Tests iOS.octest\";\n\t\t\tremoteRef = 22AC1C0F174297C500AB09E1 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t22C9CFFB1703AD4D004610FE /* Standalone Test */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = \"compiled.mach-o.executable\";\n\t\t\tpath = \"Standalone Test\";\n\t\t\tremoteRef = 22C9CFFA1703AD4D004610FE /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t279117E1178B5A86006BF857 /* CURLHandleTests.xctest */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = wrapper.cfbundle;\n\t\t\tpath = CURLHandleTests.xctest;\n\t\t\tremoteRef = 279117E0178B5A86006BF857 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n/* End PBXReferenceProxy section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t220AD7951509019B00748655 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t27CFEC7218E73526007158A4 /* URLs.testdata in Resources */,\n\t\t\t\t22662EF3165D2EEC005FCC4A /* ftp.json in Resources */,\n\t\t\t\t22662EF4165D2EEC005FCC4A /* webdav.json in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t22C9CF961703327A004610FE /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t22C9CF9F1703327A004610FE /* InfoPlist.strings in Resources */,\n\t\t\t\t22C9CFA51703327A004610FE /* Credits.rtf in Resources */,\n\t\t\t\t22C9CFAB1703327A004610FE /* MainMenu.xib in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t279117E9178B5C64006BF857 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t279117F2178B5C64006BF857 /* InfoPlist.strings in Resources */,\n\t\t\t\t27911838178B5D79006BF857 /* CK2NewFolderWindow.xib in Resources */,\n\t\t\t\t27911837178B5D79006BF857 /* CK2FilePreview.xib in Resources */,\n\t\t\t\t27911839178B5D79006BF857 /* CK2PathFieldWindow.xib in Resources */,\n\t\t\t\t27911836178B5D79006BF857 /* CK2OpenPanel.xib in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t279117F9178B5C64006BF857 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t27F3372616BC1FB100E70511 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t27F3373116BC1FB100E70511 /* InfoPlist.strings in Resources */,\n\t\t\t\t27F3373716BC1FB100E70511 /* Credits.rtf in Resources */,\n\t\t\t\t27F3373D16BC1FB100E70511 /* MainMenu.xib in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t79CFD12209F702BE00172CDD /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t797CC8C709F861770063FF9B /* Localizable.strings in Resources */,\n\t\t\t\t791E83050B0EDAC90060E5FC /* error.png in Resources */,\n\t\t\t\t791E83060B0EDAC90060E5FC /* finished.png in Resources */,\n\t\t\t\t7978FC150B117D7C0048168B /* bookmark.tif in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXShellScriptBuildPhase section */\n\t\t220AD7961509019B00748655 /* ShellScript */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"# Run the unit tests in this test bundle.\\n\\\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\\\"\\n\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n\t\t797CBBEB09F854B60063FF9B /* Generate Localizable.strings */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 8;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\tname = \"Generate Localizable.strings\";\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 1;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"# Skip localization for now\\nexit 0\\n\\necho \\\"Generating Localizable.strings ...\\\"\\n\\ncd \\\"${SRCROOT}\\\"\\ngenstrings -littleEndian -q -u -s LocalizedStringInConnectionKitBundle -o en.lproj *.m\\n\\n# Convert UTF-16 into UTF-8 with BOM\\necho -ne '\\\\xEF\\\\xBB\\\\xBF' > en.lproj/Localizable.strings.utf8\\niconv -f UTF-16 -t UTF-8 en.lproj/Localizable.strings >> en.lproj/Localizable.strings.utf8\\nmv en.lproj/Localizable.strings.utf8 en.lproj/Localizable.strings\\n\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n/* End PBXShellScriptBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t220AD7931509019B00748655 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t22CC56F91509048E00F94154 /* PathTests.m in Sources */,\n\t\t\t\t22F6D112165A8A2200443CC9 /* URLTests.m in Sources */,\n\t\t\t\t22662EE4165D1EE4005FCC4A /* BaseCKTests.m in Sources */,\n\t\t\t\t220526BA165E8C9D00A2BBC9 /* FTPAuthenticationTests.m in Sources */,\n\t\t\t\t224AB37D166E500E0066B1C6 /* KMSConnection.m in Sources */,\n\t\t\t\t224AB37E166E500E0066B1C6 /* KMSListener.m in Sources */,\n\t\t\t\t224AB37F166E500E0066B1C6 /* KMSRegExResponder.m in Sources */,\n\t\t\t\t224AB380166E500E0066B1C6 /* KMSResponder.m in Sources */,\n\t\t\t\t224AB381166E500E0066B1C6 /* KMSResponseCollection.m in Sources */,\n\t\t\t\t224AB382166E500E0066B1C6 /* KMSServer.m in Sources */,\n\t\t\t\t224AB387166E501C0066B1C6 /* KMSCollectionTests.m in Sources */,\n\t\t\t\t224AB38A166E52680066B1C6 /* KMSTestCase.m in Sources */,\n\t\t\t\t224AB38C166E587F0066B1C6 /* KMSManualTests.m in Sources */,\n\t\t\t\t22407D54166F9A6100E1EAD4 /* BaseCKProtocolTests.m in Sources */,\n\t\t\t\t22FEB6691680818800BB778B /* KMSTranscriptEntry.m in Sources */,\n\t\t\t\t225FCA3816B046F800A9F5AE /* CKUploaderTests.m in Sources */,\n\t\t\t\t2246AF6516B99987001D39D9 /* KMSSendStringCommand.m in Sources */,\n\t\t\t\t2246AF6616B99987001D39D9 /* KMSSendDataCommand.m in Sources */,\n\t\t\t\t2246AF6716B99987001D39D9 /* KMSSendServerDataCommand.m in Sources */,\n\t\t\t\t2246AF6816B99987001D39D9 /* KMSPauseCommand.m in Sources */,\n\t\t\t\t2246AF6916B99987001D39D9 /* KMSCommand.m in Sources */,\n\t\t\t\t2246AF6A16B99987001D39D9 /* KMSCloseCommand.m in Sources */,\n\t\t\t\t278CFE1316BADE030018A14B /* URLCanonicalizationTests.m in Sources */,\n\t\t\t\t27999BAB170B4B9800A54BEE /* CK2FileOperationWithTestSupport.m in Sources */,\n\t\t\t\t27999BB7170B4BA200A54BEE /* CK2FileManagerWithTestSupport.m in Sources */,\n\t\t\t\t220C11961715C5E20086F199 /* ErrorTests.m in Sources */,\n\t\t\t\t22AC1C141742980000AB09E1 /* FTPTests.m in Sources */,\n\t\t\t\t22AC1C151742980000AB09E1 /* SFTPTests.m in Sources */,\n\t\t\t\t22AC1C161742980000AB09E1 /* WebDAVTests.m in Sources */,\n\t\t\t\t22AC1C1917429F8200AB09E1 /* URLAppendingTests.m in Sources */,\n\t\t\t\t22AC1C1B17429FAA00AB09E1 /* URLDirectoryTests.m in Sources */,\n\t\t\t\t2298E4AB17442272005A4160 /* FileTests.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t22C9CF941703327A004610FE /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t22C9CFA11703327A004610FE /* main.m in Sources */,\n\t\t\t\t22C9CFA81703327A004610FE /* AppDelegate.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t279117E6178B5C64006BF857 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t2791182F178B5D59006BF857 /* CK2FileSizeFormatter.m in Sources */,\n\t\t\t\t27911829178B5D59006BF857 /* CK2IconView.m in Sources */,\n\t\t\t\t2791182D178B5D59006BF857 /* CK2BrowserPreviewView.m in Sources */,\n\t\t\t\t27911823178B5D59006BF857 /* CK2PathFieldWindowController.m in Sources */,\n\t\t\t\t2791182B178B5D59006BF857 /* CK2BrowserPreviewController.m in Sources */,\n\t\t\t\t27911821178B5D59006BF857 /* CK2PathControl.m in Sources */,\n\t\t\t\t27911833178B5D59006BF857 /* NSURL+CK2OpenPanel.m in Sources */,\n\t\t\t\t2791181F178B5D59006BF857 /* CK2FileCell.m in Sources */,\n\t\t\t\t27911827178B5D59006BF857 /* CK2IconItemView.m in Sources */,\n\t\t\t\t27911835178B5D59006BF857 /* NSImage+CK2OpenPanel.m in Sources */,\n\t\t\t\t27911811178B5D3E006BF857 /* CK2OpenPanel.m in Sources */,\n\t\t\t\t27911812178B5D4B006BF857 /* CK2OpenPanelController.m in Sources */,\n\t\t\t\t27911817178B5D59006BF857 /* CK2OpenPanelIconViewController.m in Sources */,\n\t\t\t\t27911819178B5D59006BF857 /* CK2OpenPanelListViewController.m in Sources */,\n\t\t\t\t2791181B178B5D59006BF857 /* CK2OpenPanelColumnViewController.m in Sources */,\n\t\t\t\t27911815178B5D59006BF857 /* CK2OpenPanelViewController.m in Sources */,\n\t\t\t\t2791181D178B5D59006BF857 /* CK2NewFolderWindowController.m in Sources */,\n\t\t\t\t27911825178B5D59006BF857 /* CK2IconViewItem.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t279117F7178B5C64006BF857 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t27F3372416BC1FB100E70511 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t27F3373316BC1FB100E70511 /* main.m in Sources */,\n\t\t\t\t27F3373A16BC1FB100E70511 /* AppDelegate.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t79CFD12309F702BE00172CDD /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t7983DF8F0B0C0FAC00F5078E /* CKTransferRecord.m in Sources */,\n\t\t\t\t798313CA0B0D67E000F5078E /* CKTransferProgressCell.m in Sources */,\n\t\t\t\t27D03B431471787000FEA588 /* CKUploader.m in Sources */,\n\t\t\t\t2743E80A1622E47600019979 /* CK2FileManager.m in Sources */,\n\t\t\t\t27ADC5781AC0CD7D0085C7F7 /* CK2CurlTransferStackManager.m in Sources */,\n\t\t\t\t2790A82A1627636E000C9D9F /* CK2Protocol.m in Sources */,\n\t\t\t\t2790A94916278F1D000C9D9F /* CK2FTPProtocol.m in Sources */,\n\t\t\t\t27F394F6162C162900944F43 /* CK2SFTPProtocol.m in Sources */,\n\t\t\t\t27431CA11630381D00F6FB58 /* CK2FileProtocol.m in Sources */,\n\t\t\t\t2288CD76165A99FC00F34E24 /* CK2WebDAVProtocol.m in Sources */,\n\t\t\t\t27A2072C1671634800D8284D /* CK2CURLBasedProtocol.m in Sources */,\n\t\t\t\t278D8B7A167FF35D00622468 /* CK2Authentication.m in Sources */,\n\t\t\t\t27993E8516FCB30D008DC1B0 /* CK2FileOperation.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXTargetDependency section */\n\t\t220526FD165EA20600A2BBC9 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\tname = CURLHandle;\n\t\t\ttargetProxy = 220526FC165EA20600A2BBC9 /* PBXContainerItemProxy */;\n\t\t};\n\t\t220AD7AE1509021A00748655 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = 79CFD12509F702BE00172CDD /* ConnectionKit */;\n\t\t\ttargetProxy = 220AD7AD1509021A00748655 /* PBXContainerItemProxy */;\n\t\t};\n\t\t2218212A170209D300584589 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\tname = CURLHandleTests;\n\t\t\ttargetProxy = 22182129170209D300584589 /* PBXContainerItemProxy */;\n\t\t};\n\t\t27911800178B5C64006BF857 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = 279117EA178B5C64006BF857 /* ConnectionKitUI */;\n\t\t\ttargetProxy = 279117FF178B5C64006BF857 /* PBXContainerItemProxy */;\n\t\t};\n/* End PBXTargetDependency section */\n\n/* Begin PBXVariantGroup section */\n\t\t22C9CF9D1703327A004610FE /* InfoPlist.strings */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t22C9CF9E1703327A004610FE /* en */,\n\t\t\t);\n\t\t\tname = InfoPlist.strings;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t22C9CFA31703327A004610FE /* Credits.rtf */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t22C9CFA41703327A004610FE /* en */,\n\t\t\t);\n\t\t\tname = Credits.rtf;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t22C9CFA91703327A004610FE /* MainMenu.xib */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t22C9CFAA1703327A004610FE /* en */,\n\t\t\t);\n\t\t\tname = MainMenu.xib;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t279117F0178B5C64006BF857 /* InfoPlist.strings */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t279117F1178B5C64006BF857 /* en */,\n\t\t\t);\n\t\t\tname = InfoPlist.strings;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t27F3372F16BC1FB100E70511 /* InfoPlist.strings */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t27F3373016BC1FB100E70511 /* en */,\n\t\t\t);\n\t\t\tname = InfoPlist.strings;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t27F3373516BC1FB100E70511 /* Credits.rtf */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t27F3373616BC1FB100E70511 /* en */,\n\t\t\t);\n\t\t\tname = Credits.rtf;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t27F3373B16BC1FB100E70511 /* MainMenu.xib */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t27F3373C16BC1FB100E70511 /* en */,\n\t\t\t);\n\t\t\tname = MainMenu.xib;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t323B7349170E253900219F9A /* CK2OpenPanel.xib */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t323B7348170E253900219F9A /* en */,\n\t\t\t);\n\t\t\tname = CK2OpenPanel.xib;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t323B7356170E254800219F9A /* CK2FilePreview.xib */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t323B7355170E254800219F9A /* en */,\n\t\t\t);\n\t\t\tname = CK2FilePreview.xib;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t323B7359170E255200219F9A /* CK2NewFolderWindow.xib */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t323B7358170E255200219F9A /* en */,\n\t\t\t);\n\t\t\tname = CK2NewFolderWindow.xib;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t323B735C170E256000219F9A /* CK2PathFieldWindow.xib */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t323B735B170E256000219F9A /* en */,\n\t\t\t);\n\t\t\tname = CK2PathFieldWindow.xib;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t797CC8C509F861770063FF9B /* Localizable.strings */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t797CC8C609F861770063FF9B /* en */,\n\t\t\t\t3C2D8EC10A63FF31008FE1B0 /* zh_TW */,\n\t\t\t\t3C2D8EC20A63FF3B008FE1B0 /* fr */,\n\t\t\t\t3C2D8EC30A63FF41008FE1B0 /* da */,\n\t\t\t\tCEA9AFD30A64224100855897 /* ja */,\n\t\t\t\tCEB563850A7AB7070081179A /* de */,\n\t\t\t\tCE1AD3DF0A7E845A0083C01E /* it */,\n\t\t\t\tCE55A6620AD194740091C8AE /* zh_CN */,\n\t\t\t\tCE953A04102BACE70066C08F /* pt_BR */,\n\t\t\t\tCE94B9101463124A00F90408 /* es */,\n\t\t\t);\n\t\t\tname = Localizable.strings;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXVariantGroup section */\n\n/* Begin XCBuildConfiguration section */\n\t\t220AD7A81509019B00748655 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = \"$(inherited)\";\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_ENABLE_OBJC_EXCEPTIONS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = UnitTests/UnitTests_Prefix.pch;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_SYMBOLS_PRIVATE_EXTERN = NO;\n\t\t\t\tGCC_VERSION = com.apple.compilers.llvm.clang.1_0;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES;\n\t\t\t\tINFOPLIST_FILE = \"UnitTests/UnitTest-Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"\\\"@loader_path/../Frameworks\\\" \\\"@loader_path/../Frameworks/ConnectionKit.framework/Versions/Current/Frameworks\\\"\";\n\t\t\t\tLIBRARY_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"\\\"$(SRCROOT)/CurlHandle/SFTP\\\"\",\n\t\t\t\t);\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.7;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.UnitTest;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t220AD7A91509019B00748655 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = \"$(inherited)\";\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_ENABLE_OBJC_EXCEPTIONS = YES;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = UnitTests/UnitTests_Prefix.pch;\n\t\t\t\tGCC_VERSION = com.apple.compilers.llvm.clang.1_0;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES;\n\t\t\t\tINFOPLIST_FILE = \"UnitTests/UnitTest-Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"\\\"@loader_path/../Frameworks\\\" \\\"@loader_path/../Frameworks/ConnectionKit.framework/Versions/Current/Frameworks\\\"\";\n\t\t\t\tLIBRARY_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"\\\"$(SRCROOT)/CurlHandle/SFTP\\\"\",\n\t\t\t\t);\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.7;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.UnitTest;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t22C9CFAC1703327A004610FE /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_ENABLE_OBJC_EXCEPTIONS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = \"ProfilingTester/ProfilingTester-Prefix.pch\";\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_SYMBOLS_PRIVATE_EXTERN = NO;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES;\n\t\t\t\tINFOPLIST_FILE = \"ProfilingTester/ProfilingTester-Info.plist\";\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.8;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.karelia.${PRODUCT_NAME:rfc1034identifier}\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tWRAPPER_EXTENSION = app;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t22C9CFAD1703327A004610FE /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_ENABLE_OBJC_EXCEPTIONS = YES;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = \"ProfilingTester/ProfilingTester-Prefix.pch\";\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES;\n\t\t\t\tINFOPLIST_FILE = \"ProfilingTester/ProfilingTester-Info.plist\";\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.8;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.karelia.${PRODUCT_NAME:rfc1034identifier}\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tWRAPPER_EXTENSION = app;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t2791180B178B5C64006BF857 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tFRAMEWORK_VERSION = A;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_ENABLE_OBJC_EXCEPTIONS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = \"ConnectionKitUI/ConnectionKitUI-Prefix.pch\";\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_SYMBOLS_PRIVATE_EXTERN = NO;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tINFOPLIST_FILE = \"ConnectionKitUI/ConnectionKitUI-Info.plist\";\n\t\t\t\tINSTALL_PATH = \"@rpath\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.karelia.${PRODUCT_NAME:rfc1034identifier}\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tWRAPPER_EXTENSION = framework;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t2791180C178B5C64006BF857 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tFRAMEWORK_VERSION = A;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_ENABLE_OBJC_EXCEPTIONS = YES;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = \"ConnectionKitUI/ConnectionKitUI-Prefix.pch\";\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tINFOPLIST_FILE = \"ConnectionKitUI/ConnectionKitUI-Info.plist\";\n\t\t\t\tINSTALL_PATH = \"@rpath\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.karelia.${PRODUCT_NAME:rfc1034identifier}\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tWRAPPER_EXTENSION = framework;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t2791180E178B5C64006BF857 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tBUNDLE_LOADER = \"$(BUILT_PRODUCTS_DIR)/ConnectionKit.framework/Versions/A/ConnectionKit\";\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(DEVELOPER_FRAMEWORKS_DIR)\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_ENABLE_OBJC_EXCEPTIONS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = \"ConnectionKitUI/ConnectionKitUI-Prefix.pch\";\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_SYMBOLS_PRIVATE_EXTERN = NO;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tINFOPLIST_FILE = \"ConnectionKitUITests/ConnectionKitUITests-Info.plist\";\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.8;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tTEST_HOST = \"$(BUNDLE_LOADER)\";\n\t\t\t\tWRAPPER_EXTENSION = xctest;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t2791180F178B5C64006BF857 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tBUNDLE_LOADER = \"$(BUILT_PRODUCTS_DIR)/ConnectionKit.framework/Versions/A/ConnectionKit\";\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(DEVELOPER_FRAMEWORKS_DIR)\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_ENABLE_OBJC_EXCEPTIONS = YES;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = \"ConnectionKitUI/ConnectionKitUI-Prefix.pch\";\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tINFOPLIST_FILE = \"ConnectionKitUITests/ConnectionKitUITests-Info.plist\";\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.8;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tTEST_HOST = \"$(BUNDLE_LOADER)\";\n\t\t\t\tWRAPPER_EXTENSION = xctest;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t27F3373F16BC1FB100E70511 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_ENABLE_OBJC_EXCEPTIONS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = \"AuthTester/AuthTester-Prefix.pch\";\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_SYMBOLS_PRIVATE_EXTERN = NO;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES;\n\t\t\t\tINFOPLIST_FILE = \"AuthTester/AuthTester-Info.plist\";\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.7;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.karelia.connection.${PRODUCT_NAME:rfc1034identifier}\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tWRAPPER_EXTENSION = app;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t27F3374016BC1FB100E70511 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_ENABLE_OBJC_EXCEPTIONS = YES;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = \"AuthTester/AuthTester-Prefix.pch\";\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES;\n\t\t\t\tINFOPLIST_FILE = \"AuthTester/AuthTester-Info.plist\";\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.7;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.karelia.connection.${PRODUCT_NAME:rfc1034identifier}\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tWRAPPER_EXTENSION = app;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t79CFD12909F702BF00172CDD /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tFRAMEWORK_VERSION = A;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_ENABLE_OBJC_EXCEPTIONS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PFE_FILE_C_DIALECTS = \"objective-c c++ objective-c++\";\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = ConnectionKit/Connection_Prefix.pch;\n\t\t\t\tHEADER_SEARCH_PATHS = \"\\\"$(SOURCE_ROOT)/CURLHandle/SFTP/libssh2/include\\\"\";\n\t\t\t\tINFOPLIST_FILE = \"Resources/Framework-Info.plist\";\n\t\t\t\tINSTALL_PATH = \"@rpath\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"@loader_path/Frameworks\";\n\t\t\t\tLIBRARY_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)\",\n\t\t\t\t\t\"\\\"$(SRCROOT)/CURLHandle/SFTP\\\"\",\n\t\t\t\t);\n\t\t\t\tLIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = \"\\\"$(SRCROOT)\\\"\";\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tFoundation,\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tAppKit,\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.dlsxtreme.connection;\n\t\t\t\tPRODUCT_NAME = ConnectionKit;\n\t\t\t\tRUN_CLANG_STATIC_ANALYZER = YES;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tWARNING_CFLAGS = \"-Wdocumentation\";\n\t\t\t\tZERO_LINK = NO;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t79CFD12A09F702BF00172CDD /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tDEPLOYMENT_POSTPROCESSING = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tFRAMEWORK_VERSION = A;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_ENABLE_OBJC_EXCEPTIONS = YES;\n\t\t\t\tGCC_PFE_FILE_C_DIALECTS = \"objective-c c++ objective-c++\";\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = ConnectionKit/Connection_Prefix.pch;\n\t\t\t\tHEADER_SEARCH_PATHS = \"\\\"$(SOURCE_ROOT)/CURLHandle/SFTP/libssh2/include\\\"\";\n\t\t\t\tINFOPLIST_FILE = \"Resources/Framework-Info.plist\";\n\t\t\t\tINSTALL_PATH = \"@rpath\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"@loader_path/Frameworks\";\n\t\t\t\tLIBRARY_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)\",\n\t\t\t\t\t\"\\\"$(SRCROOT)/CURLHandle/SFTP\\\"\",\n\t\t\t\t);\n\t\t\t\tLIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = \"\\\"$(SRCROOT)\\\"\";\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tFoundation,\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tAppKit,\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.dlsxtreme.connection;\n\t\t\t\tPRODUCT_NAME = ConnectionKit;\n\t\t\t\tRUN_CLANG_STATIC_ANALYZER = YES;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tWARNING_CFLAGS = \"-Wdocumentation\";\n\t\t\t\tZERO_LINK = NO;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tC01FCF4F08A954540054247B /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_INCREASE_PRECOMPILED_HEADER_SHARING = NO;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.6;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = macosx;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tC01FCF5008A954540054247B /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tGCC_INCREASE_PRECOMPILED_HEADER_SHARING = NO;\n\t\t\t\tGCC_TREAT_WARNINGS_AS_ERRORS = NO;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.6;\n\t\t\t\tSDKROOT = macosx;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t220AD7A71509019B00748655 /* Build configuration list for PBXNativeTarget \"UnitTests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t220AD7A81509019B00748655 /* Debug */,\n\t\t\t\t220AD7A91509019B00748655 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t22C9CFB91703327A004610FE /* Build configuration list for PBXNativeTarget \"ProfilingTester\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t22C9CFAC1703327A004610FE /* Debug */,\n\t\t\t\t22C9CFAD1703327A004610FE /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t2791180A178B5C64006BF857 /* Build configuration list for PBXNativeTarget \"ConnectionKitUI\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t2791180B178B5C64006BF857 /* Debug */,\n\t\t\t\t2791180C178B5C64006BF857 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t2791180D178B5C64006BF857 /* Build configuration list for PBXNativeTarget \"ConnectionKitUITests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t2791180E178B5C64006BF857 /* Debug */,\n\t\t\t\t2791180F178B5C64006BF857 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t27F3373E16BC1FB100E70511 /* Build configuration list for PBXNativeTarget \"AuthTester\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t27F3373F16BC1FB100E70511 /* Debug */,\n\t\t\t\t27F3374016BC1FB100E70511 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t79CFD12809F702BF00172CDD /* Build configuration list for PBXNativeTarget \"ConnectionKit\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t79CFD12909F702BF00172CDD /* Debug */,\n\t\t\t\t79CFD12A09F702BF00172CDD /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tC01FCF4E08A954540054247B /* Build configuration list for PBXProject \"Connection\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tC01FCF4F08A954540054247B /* Debug */,\n\t\t\t\tC01FCF5008A954540054247B /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = 29B97313FDCFA39411CA2CEA /* Project object */;\n}\n"
  },
  {
    "path": "Connection.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:Connection.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "Connection.xcodeproj/xcshareddata/xcschemes/ConnectionKit.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0700\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"79CFD12509F702BE00172CDD\"\n               BuildableName = \"ConnectionKit.framework\"\n               BlueprintName = \"ConnectionKit\"\n               ReferencedContainer = \"container:Connection.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"220AD7971509019B00748655\"\n               BuildableName = \"UnitTests.xctest\"\n               BlueprintName = \"UnitTests\"\n               ReferencedContainer = \"container:Connection.xcodeproj\">\n            </BuildableReference>\n            <SkippedTests>\n               <Test\n                  Identifier = \"BaseCKProtocolTests\">\n               </Test>\n               <Test\n                  Identifier = \"BaseCKTests\">\n               </Test>\n               <Test\n                  Identifier = \"CK2FileManagerBaseTests\">\n               </Test>\n               <Test\n                  Identifier = \"CK2FileManagerFTPTests/testFile1\">\n               </Test>\n               <Test\n                  Identifier = \"CK2FileManagerFTPTests/testFile2\">\n               </Test>\n               <Test\n                  Identifier = \"CK2FileManagerFTPTests/testFolder\">\n               </Test>\n               <Test\n                  Identifier = \"CK2FileManagerGenericTests\">\n               </Test>\n               <Test\n                  Identifier = \"CKUploaderTests/testRemoveFileAtPath\">\n               </Test>\n               <Test\n                  Identifier = \"CKUploaderTests/testRemoveFileAtPathNoAuthentication\">\n               </Test>\n               <Test\n                  Identifier = \"KMSTestCase\">\n               </Test>\n               <Test\n                  Identifier = \"MockServerTests\">\n               </Test>\n            </SkippedTests>\n         </TestableReference>\n      </Testables>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"79CFD12509F702BE00172CDD\"\n            BuildableName = \"ConnectionKit.framework\"\n            BlueprintName = \"ConnectionKit\"\n            ReferencedContainer = \"container:Connection.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "ConnectionKit/CK2Authentication.h",
    "content": "//\n//  CK2Authentication.h\n//  Connection\n//\n//  Created by Mike on 18/12/2012.\n//\n//\n\n#import <Foundation/Foundation.h>\n\n\n#pragma mark SSH Host Fingerprint\n\ntypedef NS_ENUM(NSInteger, CK2KnownHostMatch) {\n    CK2KnownHostMatchOK,\n    CK2KnownHostMatchMismatch,\n    CK2KnownHostMatchMissing,\n};\n\ntypedef NS_ENUM(NSInteger, CK2KnownHostType) {\n    CK2KnownHostTypeUnknown,\n    CK2KnownHostTypeRSA1,\n    CK2KnownHostTypeRSA,\n    CK2KnownHostTypeDSS,\n};\n\n\n@interface NSURLProtectionSpace (CK2SSHHostFingerprint)\n\n/**\n The result of ConnectionKit checking the host's fingerprint against a local known_hosts file.\n \n Upon connecting to an SSH server, ConnectionKit compares its host fingerprint\n against the contents of the local known_hosts file. An authentication challenge\n is then issued to the delegate asking it how it would like to handle the result\n of that check. This method encapsulates that result:\n \n - `CK2KnownHostMatchOK` — the server and known_hosts match.\n - `CK2KnownHostMatchMissing` — the server appears not to have been connected to before, as no entry for it is present in known_hosts.\n - `CK2KnownHostMatchMismatch` — the server's fingerprint is different to that in the known_hosts file. It is likely the server has been compromised, modified, or replaced\n\n @return One of the CK2KnownHostMatch enum. 0 for auth methods other than CK2AuthenticationMethodHostFingerprint.\n */\n- (CK2KnownHostMatch)ck2_knownHostMatch;\n\n/**\n @result The raw data of the server's public SSH key. (`nil` if the `authenticationMethod` is not `CK2AuthenticationMethodHostFingerprint`)\n */\n@property(readonly, copy, getter=ck2_serverPublicKey) NSData *serverPublicKey;\n\n/**\n @result The type of the server's public SSH key. (`CK2KnownHostTypeUnknown` if the `authenticationMethod` is not `CK2AuthenticationMethodHostFingerprint`)\n */\n@property(readonly, getter=ck2_serverKnownHostType) CK2KnownHostType serverKnownHostType;\n\n/**\n @const CK2AuthenticationMethodHostFingerprint\n @abstract The authentication method used by SSH connections for checking a host's fingerprint\n */\nextern NSString * const CK2AuthenticationMethodHostFingerprint;\n\n/**\n Creates a protection space object to encapsulate the result of checking an SSH server's host fingerprint\n \n Generally clients are handed `NSURLProtectionSpace`s by ConnectionKit and have\n no need to construct their own. So can probably ignore this method :)\n \n @param host name of the server being connected to.\n @param match is one of CK2KnownHostMatch's enumerations that declares the result of the check.\n @return a protection spaces whose `-authenticationMethod` is `CK2AuthenticationMethodHostFingerprint`.\n */\n+ (NSURLProtectionSpace *)ck2_protectionSpaceWithHost:(NSString *)host knownHostMatch:(CK2KnownHostMatch)match publicKey:(NSData *)key type:(CK2KnownHostType)keyType;\n\n@end\n\n\n@interface NSURLCredential (CK2SSHHostFingerprint)\n\n/**\n Constructs a credential to encapsulate the outcome of evaluating an SSH server's\n host fingerprint.\n \n @param persistence indicates whether new keys should be added to the known_hosts file\n @return the credential\n */\n+ (NSURLCredential *)ck2_credentialForKnownHostWithPersistence:(NSURLCredentialPersistence)persistence;\n\n@end\n\n\n#pragma mark SSH Public Key Auth\n\n@interface NSURLCredential (CK2SSHPublicKey)\n\n/**\n Constructs a credential to encapsulate the use of public key authentication\n \n @param user to log in as\n @param publicKey is the location of the public key file. If using OpenSSL (usually the case on OS X), pass nil here to have the public key automatically derived from the private key\n @param privateKey is the location of the private key file. Pass nil to use SSH-Agent instead (note: fails when sandboxed)\n @param passphrase is used to decrypt a passphrase-protected private key file\n @param persistence specifies whether to store passphrase in the keychain or not\n @return the credential\n */\n+ (NSURLCredential *)ck2_credentialWithUser:(NSString *)user\n                               publicKeyURL:(NSURL *)publicKey\n                              privateKeyURL:(NSURL *)privateKey\n                                   password:(NSString *)passphrase\n                                persistence:(NSURLCredentialPersistence)persistence;\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2Authentication.m",
    "content": "//\n//  CK2Authentication.m\n//  Connection\n//\n//  Created by Mike on 18/12/2012.\n//\n//\n\n#import \"CK2Authentication.h\"\n\n#import <CURLHandle/CURLTransfer.h>\n\n\n#pragma mark SSH Host Fingerprint\n\n@interface CK2SSHHostFingerprintProtectionSpace : NSURLProtectionSpace\n{\n    CK2KnownHostMatch   _match;\n    NSData              *_publicKey;\n    CK2KnownHostType    _publicKeyType;\n}\n@end\n\n\n@implementation CK2SSHHostFingerprintProtectionSpace\n\n- initWithHost:(NSString *)host match:(enum curl_khmatch)match publicKey:(NSData *)key type:(CK2KnownHostType)keyType;\n{\n    if (self = [self initWithHost:host port:0 protocol:@\"ssh\" realm:nil authenticationMethod:CK2AuthenticationMethodHostFingerprint])\n    {\n        _match = match;\n        _publicKey = [key copy];\n        _publicKeyType = keyType;\n    }\n    return self;\n}\n\n- (void)dealloc;\n{\n    [_publicKey release];\n    [super dealloc];\n}\n\n// Force it to return correct thing\n- (NSString *)authenticationMethod; { return CK2AuthenticationMethodHostFingerprint; }\n- (NSString *)protocol; { return @\"ssh\"; }\n\n- (CK2KnownHostMatch)ck2_knownHostMatch; { return _match; }\n- (NSData *)ck2_serverPublicKey; { return _publicKey; }\n- (CK2KnownHostType)ck2_serverKnownHostType; { return _publicKeyType; }\n\n// Make sure super doesn't create an actual copy\n- (id)copyWithZone:(NSZone *)zone; { return [self retain]; }\n\n@end\n\n\n@implementation NSURLProtectionSpace (CK2SSHHostFingerprint)\n\n- (CK2KnownHostMatch)ck2_knownHostMatch; { return 0; }\n- (NSData *)ck2_serverPublicKey; { return nil; }\n- (CK2KnownHostType)ck2_serverKnownHostType; { return CK2KnownHostTypeUnknown; }\n\nNSString * const CK2AuthenticationMethodHostFingerprint = @\"CK2AuthenticationMethodHostFingerprint\";\n\n+ (NSURLProtectionSpace *)ck2_protectionSpaceWithHost:(NSString *)host knownHostMatch:(CK2KnownHostMatch)match publicKey:(NSData *)key type:(CK2KnownHostType)keyType;\n{\n    return [[[CK2SSHHostFingerprintProtectionSpace alloc] initWithHost:host match:match publicKey:key type:keyType] autorelease];\n}\n\n@end\n\n\n@implementation NSURLCredential (CK2SSHHostFingerprint)\n\n+ (NSURLCredential *)ck2_credentialForKnownHostWithPersistence:(NSURLCredentialPersistence)persistence;\n{\n    return [self credentialWithUser:nil password:nil persistence:persistence];\n}\n\n@end\n\n\n#pragma mark -\n\n\n@interface NSURLCredential (SFTPWrapperSuppliedMethods)\n\n+ (NSURLCredential *)ck2_credentialWithUser:(NSString *)user\n                               publicKeyURL:(NSURL *)publicKey\n                              privateKeyURL:(NSURL *)privateKey;\n\n- (NSURLCredential *)ck2_credentialWithPassword:(NSString *)password persistence:(NSURLCredentialPersistence)persistence;\n\n@end\n\n\n@implementation NSURLCredential (CK2SSHPublicKey)\n\n+ (NSURLCredential *)ck2_credentialWithUser:(NSString *)user\n                               publicKeyURL:(NSURL *)publicKey\n                              privateKeyURL:(NSURL *)privateKey\n                                   password:(NSString *)password\n                                persistence:(NSURLCredentialPersistence)persistence;\n{\n    NSURLCredential *result = [self ck2_credentialWithUser:user publicKeyURL:publicKey privateKeyURL:privateKey];\n    result = [result ck2_credentialWithPassword:password persistence:persistence];\n    return result;\n}\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2BrowserPreviewController.h",
    "content": "//\n//  CK2BrowserPreviewControllerViewController.h\n//  CKTest\n//\n//  Created by Paul Kim on 12/26/12.\n//  Copyright (c) 2012 Paul Kim. All rights reserved.\n//\n\n#import <Cocoa/Cocoa.h>\n\n@interface CK2BrowserPreviewController : NSViewController\n{\n\n}\n\n- (id)init;\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2BrowserPreviewController.m",
    "content": "//\n//  CK2BrowserPreviewControllerViewController.m\n//  CKTest\n//\n//  Created by Paul Kim on 12/26/12.\n//  Copyright (c) 2012 Paul Kim. All rights reserved.\n//\n\n#import \"CK2BrowserPreviewController.h\"\n#import \"CK2BrowserPreviewView.h\"\n#import \"NSURL+CK2OpenPanel.h\"\n\n@implementation CK2BrowserPreviewController\n\n- (id)init;\n{\n    if ((self = [super initWithNibName:@\"CK2FilePreview\" bundle:[NSBundle bundleForClass:[self class]]]) != nil)\n    {\n    }\n    \n    return self;\n}\n\n- (void)loadView\n{\n    [super loadView];\n}\n\n- (void)setRepresentedObject:(id)representedObject\n{\n    [super setRepresentedObject:representedObject];\n    \n    [(CK2BrowserPreviewView *)[self view] setURL:representedObject];\n}\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2BrowserPreviewView.h",
    "content": "//\n//  CK2BrowserPreviewView.h\n//  Connection\n//\n//  Created by Paul Kim on 1/18/13.\n//\n//\n\n#import <Cocoa/Cocoa.h>\n\n@interface CK2BrowserPreviewView : NSView\n{\n    IBOutlet NSImageView        *_iconView;\n    IBOutlet NSTextField        *_nameField;\n    IBOutlet NSTextField        *_kindField;\n    IBOutlet NSTextField        *_sizeField;\n    IBOutlet NSTextField        *_dateModifiedField;\n    IBOutlet NSTextField        *_nameLabel;\n    IBOutlet NSTextField        *_kindLabel;\n    IBOutlet NSTextField        *_sizeLabel;\n    IBOutlet NSTextField        *_dateModifiedLabel;\n    \n    NSRect                      _separatorRect;\n    NSGradient                  *_separatorGradient;\n}\n\n- (void)setURL:(NSURL *)url;\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2BrowserPreviewView.m",
    "content": "//\n//  CK2BrowserPreviewView.m\n//  Connection\n//\n//  Created by Paul Kim on 1/18/13.\n//\n//\n\n#import \"CK2BrowserPreviewView.h\"\n#import \"NSURL+CK2OpenPanel.h\"\n\n#define MARGIN                  24.0\n#define LABELS_TOP_MARGIN       10.0\n#define LABELS_LEFT_MARGIN      20.0\n#define LABELS_RIGHT_MARGIN     10.0\n\n@implementation CK2BrowserPreviewView\n\n- (void)dealloc\n{\n    [[NSNotificationCenter defaultCenter] removeObserver:self];\n    [_separatorGradient release];\n    \n    [super dealloc];\n}\n\n- (void)drawRect:(NSRect)dirtyRect\n{\n    if (_separatorGradient == nil)\n    {\n        _separatorGradient = [[NSGradient alloc] initWithColorsAndLocations:\n                              [NSColor colorWithCalibratedWhite:1.0 alpha:0.0],\n                              0.0,\n                              [NSColor colorWithCalibratedWhite:0.83 alpha:1.0],\n                              0.25,\n                              [NSColor colorWithCalibratedWhite:0.83 alpha:1.0],\n                              0.75,\n                              [NSColor colorWithCalibratedWhite:1.0 alpha:0.0],\n                              1.0,\n                              nil];\n    }\n    \n    [_separatorGradient drawInRect:_separatorRect angle:0.0];\n}\n\n- (void)setURL:(NSURL *)url\n{\n    if (url != nil)\n    {\n     [_iconView setObjectValue:[url ck2_icon]];\n     [_nameField setStringValue:[url ck2_displayName]];\n     [_sizeField setObjectValue:[url ck2_size]];\n     [_kindField setStringValue:[url ck2_kind]];\n     [_dateModifiedField setObjectValue:[url ck2_dateModified]];\n    }\n    else\n    {\n        [_iconView setObjectValue:nil];\n        [_nameField setStringValue:@\"\"];\n        [_sizeField setObjectValue:@\"\"];\n        [_kindField setStringValue:@\"\"];\n        [_dateModifiedField setObjectValue:@\"\"];\n    }\n}\n\n\n- (void)setFrame:(NSRect)frameRect\n{\n    [super setFrame:frameRect];\n    \n    [self tile];\n}\n\n- (void)tileLabelField:(NSTextField *)labelField valueField:(NSTextField *)valueField\n{\n    NSRect  bounds, rect;\n    CGFloat xSep;\n    \n    bounds = [self bounds];\n    xSep = NSWidth(bounds) * .4;\n    \n    rect = [labelField frame];\n    rect.origin.x = MAX(xSep - NSWidth(rect), LABELS_LEFT_MARGIN);\n    [labelField setFrame:rect];\n    \n    rect = [valueField frame];\n    rect.origin.x = xSep;\n    rect.size.width = NSMaxX(bounds) - LABELS_RIGHT_MARGIN - rect.origin.x;\n    [valueField setFrame:rect];\n}\n\n- (void)tileLabels\n{\n    NSRect      rect;\n    NSSize      size;\n    CGFloat     y, height;\n\n    [self tileLabelField:_dateModifiedLabel valueField:_dateModifiedField];\n    [self tileLabelField:_sizeLabel valueField:_sizeField];\n    [self tileLabelField:_kindLabel valueField:_kindField];\n    [self tileLabelField:_nameLabel valueField:_nameField];\n    \n    // Allow name field to take multiple lines (up to 3)\n    height = NSHeight([_nameLabel frame]);\n    \n    rect = [_nameField frame];\n    rect.size.height = CGFLOAT_MAX;\n    size = [[_nameField cell] cellSizeForBounds:rect];\n    rect.size.height = MAX(size.height, height);\n    rect.size.height = MIN(rect.size.height, 3 * height);\n    [_nameField setFrame:rect];\n    \n    y = NSMaxY(rect);\n    rect = [_nameLabel frame];\n    rect.origin.y = y - NSHeight(rect);\n    [_nameLabel setFrame:rect];\n}\n\n- (void)tile\n{\n    NSRect  bounds, iconFrame;\n    \n    bounds = [self bounds];\n    \n    [self tileLabels];\n\n    _separatorRect.size.width = NSWidth(bounds) * .8;\n    _separatorRect.size.height = 1.0;\n    _separatorRect.origin.x = NSMinX(bounds) + (NSWidth(bounds) - NSWidth(_separatorRect)) / 2.0;\n    _separatorRect.origin.y = NSMaxY([_nameLabel frame]) + LABELS_TOP_MARGIN;\n\n    iconFrame.origin = NSZeroPoint;     // Unnecessary but added to shut up the static analyzer\n    iconFrame.size.width = MIN(NSWidth(bounds) - 2 * MARGIN, NSHeight(bounds) - NSMaxY(_separatorRect) - 2 * MARGIN);\n    iconFrame.size.height = NSWidth(iconFrame);\n    iconFrame.origin.x = NSMinX(bounds) + (NSWidth(bounds) - NSWidth(iconFrame)) / 2.0;\n    iconFrame.origin.y = NSMaxY(_separatorRect) + MARGIN;\n    \n    [_iconView setFrame:iconFrame];\n    \n    [self setNeedsDisplay:YES];\n}\n\n- (void)superviewFrameChanged:(NSNotification *)notification\n{\n    [self setFrame:[[self superview] bounds]];\n}\n\n- (void)removeFromSuperview\n{\n    [[NSNotificationCenter defaultCenter] removeObserver:self name:NSViewFrameDidChangeNotification object:[self superview]];\n    \n    [super removeFromSuperview];\n}\n\n- (void)viewDidMoveToSuperview\n{\n    NSView      *superview;\n    \n    superview = [self superview];\n    if (superview != nil)\n    {\n        [superview setPostsFrameChangedNotifications:YES];\n    \n        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(superviewFrameChanged:) name:NSViewFrameDidChangeNotification object:superview];\n    \n        [self superviewFrameChanged:nil];\n    }\n}\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2CURLBasedProtocol.h",
    "content": "//\n//  CK2CURLBasedProtocol.h\n//  Connection\n//\n//  Created by Mike on 06/12/2012.\n//\n//\n\n#import \"CK2Protocol.h\"\n\n#import <CURLHandle/CURLTransfer.h>\n\n\n@class CK2RemoteURL;\n\n@interface CK2CURLBasedProtocol : CK2Protocol <CURLTransferDelegate>\n{\n    CURLTransfer    *_transfer;\n    BOOL            _cancelled;\n    NSString        *_user;\n    \n    void    (^_completionHandler)(NSError *error);\n    void    (^_dataBlock)(NSData *data);\n    \n    int64_t _totalBytesWritten;\n    int64_t _totalBytesExpectedToWrite;\n}\n\n#pragma mark Initialisation\n// In any of these methods, if completion handler is nil, the standard behaviour of reporting to the client will be performed\n\n- (id)initWithRequest:(NSURLRequest *)request client:(id <CK2ProtocolClient>)client completionHandler:(void (^)(NSError *))handler;\n- (id)initWithRequest:(NSURLRequest *)request client:(id <CK2ProtocolClient>)client dataHandler:(void (^)(NSData *))dataBlock completionHandler:(void (^)(NSError *))handler;\n\n- (id)initWithCustomCommands:(NSArray *)commands request:(NSURLRequest *)request createIntermediateDirectories:(BOOL)createIntermediates client:(id <CK2ProtocolClient>)client completionHandler:(void (^)(NSError *error))handler;\n\n// Already handled for you; can override in a subclass if you want\n- (id)initForEnumeratingDirectoryWithRequest:(NSURLRequest *)request includingPropertiesForKeys:(NSArray *)keys options:(NSDirectoryEnumerationOptions)mask client:(id<CK2ProtocolClient>)client;\n\n- (id)initForCreatingFileWithRequest:(NSURLRequest *)request size:(int64_t)size withIntermediateDirectories:(BOOL)createIntermediates client:(id<CK2ProtocolClient>)client completionHandler:(void (^)(NSError *error))handler;\n\n#pragma mark Loading\n\n// If the protocol requires authentication, override -start to fire off an authentication challenge to the client. When a response is received to the challenge, CK2CURLBasedProtocol automatically handles it to start up the handle/request\n- (void)start;\n- (void)startWithProtectionSpace:(NSURLProtectionSpace *)protectionSpace;\n- (void)startWithRequest:(NSURLRequest *)request credential:(NSURLCredential *)credential;\n\n\n#pragma mark Progress\n@property(nonatomic, readonly) int64_t totalBytesWritten;\n@property(nonatomic, readonly) int64_t totalBytesExpectedToWrite;\n\n\n#pragma mark Customization\n+ (BOOL)usesMultiHandle;    // defaults to YES. Subclasses can override to be NO and fall back to the old synchronous \"easy\" backend\n- (void)popCompletionHandlerByExecutingWithError:(NSError *)error;\n- (void)reportToProtocolWithError:(NSError*)error;\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2CURLBasedProtocol.m",
    "content": "//\n//  CK2CURLBasedProtocol.m\n//  Connection\n//\n//  Created by Mike on 06/12/2012.\n//\n//\n\n#import \"CK2CURLBasedProtocol.h\"\n#import \"CK2CurlTransferStackManager.h\"\n\n#import <CURLHandle/CURLHandle.h>\n#import <sys/dirent.h>\n\n#import <AppKit/AppKit.h>   // for NSImage\n#import <objc/runtime.h>\n\n\n@implementation CK2CURLBasedProtocol\n\n- (id)initWithRequest:(NSURLRequest *)request client:(id <CK2ProtocolClient>)client completionHandler:(void (^)(NSError *))handler;\n{\n    if (self = [self initWithRequest:request client:client])\n    {\n        [self pushCompletionHandler:^(NSError *error) {\n            \n            // Update cache\n            if (!error)\n            {\n                [self updateHomeDirectoryStore];\n            }\n            \n            // Report the completion to handler or protocol\n            if (handler)\n            {\n                handler(error);\n            }\n            else\n            {\n                [self reportToProtocolWithError:error];\n            }\n            \n            // Clean up transfer\n            [_transfer release]; _transfer = nil;\n        }];\n    }\n    \n    return self;\n}\n\n- (id)initWithRequest:(NSURLRequest *)request client:(id <CK2ProtocolClient>)client dataHandler:(void (^)(NSData *))dataBlock completionHandler:(void (^)(NSError *))handler\n{\n    if (self = [self initWithRequest:request client:client completionHandler:handler])\n    {\n        _dataBlock = [dataBlock copy];\n    }\n    return self;\n}\n\n- (id)initWithCustomCommands:(NSArray *)commands request:(NSURLRequest *)sourceRequest createIntermediateDirectories:(BOOL)createIntermediates client:(id <CK2ProtocolClient>)client completionHandler:(void (^)(NSError *error))handler;\n{\n    // Navigate to the directory\n    // @\"HEAD\" => CURLOPT_NOBODY, which stops libcurl from trying to list the directory's contents\n    // If the connection is already at that directory then curl wisely does nothing\n    NSMutableURLRequest *request = [sourceRequest mutableCopy];\n    [request setHTTPMethod:@\"HEAD\"];\n    [request curl_setCreateIntermediateDirectories:createIntermediates];\n    \n    // Custom commands once we're in the correct directory\n    // CURLOPT_PREQUOTE does much the same thing, but sometimes runs the command twice in my testing\n    [request curl_setPostTransferCommands:commands];\n    \n    self = [self initWithRequest:request client:client dataHandler:nil completionHandler:handler];\n    \n    [request release];\n    return self;\n}\n\n- (id)initForCreatingFileWithRequest:(NSURLRequest *)request size:(int64_t)size withIntermediateDirectories:(BOOL)createIntermediates client:(id<CK2ProtocolClient>)client completionHandler:(void (^)(NSError *error))handler;\n{\n    if ([request curl_createIntermediateDirectories] != createIntermediates)\n    {\n        NSMutableURLRequest *mutableRequest = [[request mutableCopy] autorelease];\n        [mutableRequest curl_setCreateIntermediateDirectories:createIntermediates];\n        request = mutableRequest;\n    }\n    \n    if (self = [self initWithRequest:request client:client completionHandler:handler])\n    {\n        _totalBytesExpectedToWrite = size;\n    }\n    return self;\n}\n\n#pragma mark Directory Enumeration\n\n- (BOOL)shouldEnumerateFilename:(NSString *)name options:(NSDirectoryEnumerationOptions)mask;\n{\n    // SFTP and some FTP servers report . and .. which we don't care about\n    if ([name isEqualToString:@\".\"] || [name isEqualToString:@\"..\"])\n    {\n        return NO;\n    }\n    \n    if ((mask & NSDirectoryEnumerationSkipsHiddenFiles) && [name hasPrefix:@\".\"]) return NO;\n    \n    return YES;\n}\n\n- (NSError*)processData:(NSMutableData*)data request:(NSURLRequest *)request url:(NSURL*)directoryURL path:(NSString*)directoryPath keys:(NSArray*)keys options:(NSDirectoryEnumerationOptions)mask\n{\n    NSError* result = nil;\n\n    // Process the data to make a directory listing\n    while (1)\n    {\n        CFDictionaryRef parsedDict = NULL;\n        CFIndex bytesConsumed = CFFTPCreateParsedResourceListing(NULL,\n                                                                 [data bytes], [data length],\n                                                                 &parsedDict);\n\n        if (bytesConsumed > 0)\n        {\n            [data replaceBytesInRange:NSMakeRange(0, bytesConsumed) withBytes:NULL length:0];\n\n            // Make sure CFFTPCreateParsedResourceListing was able to properly\n            // parse the incoming data\n            if (parsedDict)\n            {\n                NSString *name = [self pathForKey:kCFFTPResourceName inDictionary:parsedDict];\n\n                if ([self shouldEnumerateFilename:name options:mask])\n                {\n                    NSNumber *type = CFDictionaryGetValue(parsedDict, kCFFTPResourceType);\n                    BOOL isDirectory = [type intValue] == DT_DIR;\n\n                    NSURL *aURL = [directoryURL URLByAppendingPathComponent:name];\n                    if (isDirectory && !CFURLHasDirectoryPath((CFURLRef)aURL))\n                    {\n                        aURL = [aURL URLByAppendingPathComponent:@\"\"];  // http://www.mikeabdullah.net/guaranteeing-directory-urls.html\n                    }\n\n                    // Fill in requested keys as best we can\n                    NSArray *keysToFill = (keys ? keys : self.class.defaultPropertyKeys);\n\n                    for (NSString *aKey in keysToFill)\n                    {\n                        if ([aKey isEqualToString:NSURLContentModificationDateKey])\n                        {\n                            [CK2FileManager setTemporaryResourceValue:CFDictionaryGetValue(parsedDict, kCFFTPResourceModDate) forKey:aKey inURL:aURL];\n                        }\n                        else if ([aKey isEqualToString:NSURLIsDirectoryKey])\n                        {\n                            [CK2FileManager setTemporaryResourceValue:@(isDirectory) forKey:aKey inURL:aURL];\n                        }\n                        else if ([aKey isEqualToString:NSURLIsHiddenKey])\n                        {\n                            [CK2FileManager setTemporaryResourceValue:@([name hasPrefix:@\".\"]) forKey:aKey inURL:aURL];\n                        }\n                        else if ([aKey isEqualToString:NSURLIsRegularFileKey])\n                        {\n                            [CK2FileManager setTemporaryResourceValue:@([type intValue] == DT_REG) forKey:aKey inURL:aURL];\n                        }\n                        else if ([aKey isEqualToString:NSURLIsSymbolicLinkKey])\n                        {\n                            [CK2FileManager setTemporaryResourceValue:@([type intValue] == DT_LNK) forKey:aKey inURL:aURL];\n                        }\n                        else if ([aKey isEqualToString:NSURLLocalizedTypeDescriptionKey])\n                        {\n                            // Could guess from extension\n                        }\n                        else if ([aKey isEqualToString:NSURLNameKey])\n                        {\n                            [CK2FileManager setTemporaryResourceValue:name forKey:aKey inURL:aURL];\n                        }\n                        else if ([aKey isEqualToString:NSURLParentDirectoryURLKey])\n                        {\n                            [CK2FileManager setTemporaryResourceValue:directoryPath forKey:NSURLParentDirectoryURLKey inURL:aURL];\n                        }\n                        else if ([aKey isEqualToString:NSURLTypeIdentifierKey])\n                        {\n                            // Guess from symlink, extension, and directory\n                            if ([type intValue] == DT_LNK)\n                            {\n                                [CK2FileManager setTemporaryResourceValue:(NSString *)kUTTypeSymLink forKey:aKey inURL:aURL];\n                            }\n                            else\n                            {\n                                NSString *extension = [name pathExtension];\n                                if ([extension length])\n                                {\n                                    CFStringRef type = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension,\n                                                                                             (CFStringRef)extension,\n                                                                                             (isDirectory ? kUTTypeDirectory : kUTTypeData));\n\n                                    [CK2FileManager setTemporaryResourceValue:(NSString *)type forKey:aKey inURL:aURL];\n                                    CFRelease(type);\n                                }\n                                else\n                                {\n                                    [CK2FileManager setTemporaryResourceValue:(NSString *)kUTTypeData forKey:aKey inURL:aURL];\n                                }\n                            }\n                        }\n                        else if ([aKey isEqualToString:NSURLFileSizeKey])\n                        {\n                            [CK2FileManager setTemporaryResourceValue:CFDictionaryGetValue(parsedDict, kCFFTPResourceSize) forKey:aKey inURL:aURL];\n                        }\n                        else if ([aKey isEqualToString:CK2URLSymbolicLinkDestinationKey])\n                        {\n                            NSString *path = [self pathForKey:kCFFTPResourceLink inDictionary:parsedDict];\n                            if ([path length])\n                            {\n                                // Servers in my experience hand include a trailing slash to indicate if the target is a directory\n                                // Could generate a CK2RemoteURL instead so as to explicitly mark it as a directory, but that seems unecessary for now\n                                // According to the original CKConnectionOpenPanel source, some servers use a backslash instead. I don't know what though – Windows based ones? If so, do they use backslashes for all path components?\n                                [CK2FileManager setTemporaryResourceValue:[self.class URLWithPath:path relativeToURL:directoryURL] forKey:aKey inURL:aURL];\n                            }\n                        }\n                        else if (&NSURLFileResourceTypeKey &&   // not available till 10.7\n                                 [aKey isEqualToString:NSURLFileResourceTypeKey])\n                        {\n                                NSString *typeValue;\n                                switch ([type integerValue])\n                                {\n                                    case DT_CHR:\n                                        typeValue = NSURLFileResourceTypeCharacterSpecial;\n                                        break;\n                                    case DT_DIR:\n                                        typeValue = NSURLFileResourceTypeDirectory;\n                                        break;\n                                    case DT_BLK:\n                                        typeValue = NSURLFileResourceTypeBlockSpecial;\n                                        break;\n                                    case DT_REG:\n                                        typeValue = NSURLFileResourceTypeRegular;\n                                        break;\n                                    case DT_LNK:\n                                        typeValue = NSURLFileResourceTypeSymbolicLink;\n                                        break;\n                                    case DT_SOCK:\n                                        typeValue = NSURLFileResourceTypeSocket;\n                                        break;\n                                    default:\n                                        typeValue = NSURLFileResourceTypeUnknown;\n                                }\n\n                                [CK2FileManager setTemporaryResourceValue:typeValue forKey:aKey inURL:aURL];\n                        }\n                        else if (&NSURLFileSecurityKey && [aKey isEqualToString:NSURLFileSecurityKey])\n                        {\n                                CFFileSecurityRef security = CFFileSecurityCreate(NULL);\n\n                                NSNumber *mode = CFDictionaryGetValue(parsedDict, kCFFTPResourceMode);\n                                if (CFFileSecuritySetMode(security, mode.unsignedShortValue))\n                                {\n                                    [CK2FileManager setTemporaryResourceValue:(NSFileSecurity *)security forKey:aKey inURL:aURL];\n                                }\n\n                                CFRelease(security);\n                        }\n                    }\n\n                    [self.client protocol:self didDiscoverItemAtURL:aURL];\n                }\n\n                CFRelease(parsedDict);\n            }\n        }\n        else if (bytesConsumed < 0)\n        {\n            // error!\n            NSDictionary *userInfo = [[NSDictionary alloc] initWithObjectsAndKeys:\n                                      [request URL], NSURLErrorFailingURLErrorKey,\n                                      [[request URL] absoluteString], NSURLErrorFailingURLStringErrorKey,\n                                      nil];\n\n            result = [NSError errorWithDomain:NSURLErrorDomain code:NSURLErrorCannotParseResponse userInfo:userInfo];\n            [userInfo release];\n            break;\n        }\n        else\n        {\n            break;\n        }\n    }\n\n    return result;\n}\n\n// Retrieves the path/filename for a given key, and then tries to take into account tricky encoding issues\n// https://github.com/karelia/ConnectionKit/issues/41\n- (NSString *)pathForKey:(CFStringRef)key inDictionary:(CFDictionaryRef)dictionary;\n{\n    NSString *result = CFDictionaryGetValue(dictionary, key);\n    \n    // For strings which fall outside of ASCII, hope that they're UTF-8\n    if (![result canBeConvertedToEncoding:NSASCIIStringEncoding])\n    {\n        NSData *source = [result dataUsingEncoding:NSMacOSRomanStringEncoding];\n        // technically, this is a little dodgy. -dataUsingEncoding: could generate some sort of BOM, but I don't believe MacRoman has such a concept so we're safe for now\n        \n        if (source)\n        {\n            NSString *utf8 = [[NSString alloc] initWithData:source encoding:NSUTF8StringEncoding];\n            if (utf8)\n            {\n                result = [utf8 autorelease];\n            }\n        }\n    }\n    \n    return result;\n}\n\n- (id)initForEnumeratingDirectoryWithRequest:(NSURLRequest *)request includingPropertiesForKeys:(NSArray *)keys options:(NSDirectoryEnumerationOptions)mask client:(id<CK2ProtocolClient>)client;\n{\n    request = [[self class] newRequestWithRequest:request isDirectory:YES];\n\n    NSMutableData *totalData = [[NSMutableData alloc] init];\n\n    self = [self initWithRequest:request client:client dataHandler:^(NSData *data) {\n\n        [totalData appendData:data];\n\n    } completionHandler:^(NSError *error) {\n\n        if (error)\n        {\n            [client protocol:self didCompleteWithError:error];\n        }\n        else\n        {\n            // Correct relative paths if we can\n            NSURL *directoryURL = request.URL;\n            NSString *directoryPath = [self.class pathOfURLRelativeToHomeDirectory:directoryURL];\n\n            NSURL *home = [self.class homeDirectoryURLForServerAtURL:directoryURL];\n            if (home && ![directoryPath isAbsolutePath])\n            {\n                if (directoryPath.length && ![directoryPath hasSuffix:@\"/\"]) directoryPath = [directoryPath stringByAppendingString:@\"/\"];\n                directoryURL = [home URLByAppendingPathComponent:directoryPath];\n            }\n\n            // Report directory itself\n            if (mask & CK2DirectoryEnumerationIncludesDirectory)\n            {\n                [self.client protocol:self didDiscoverItemAtURL:directoryURL];\n            }\n\n           // Process the data to make a directory listing\n            NSError* error = [self processData:totalData request:request url:directoryURL path:directoryPath keys:keys options:mask];\n            [self.client protocol:self didCompleteWithError:error];\n        }\n    }];\n\n    [totalData release];\n    [request release];\n    return self;\n}\n\n+ (NSArray *)defaultPropertyKeys;\n{\n    NSArray *result = @[NSURLContentModificationDateKey,\n                        NSURLIsDirectoryKey,\n                        NSURLIsRegularFileKey,\n                        NSURLIsSymbolicLinkKey,\n                        NSURLNameKey,\n                        NSURLFileSizeKey,\n                        CK2URLSymbolicLinkDestinationKey];\n    \n    if (&NSURLFileResourceTypeKey) result = [result arrayByAddingObject:NSURLFileResourceTypeKey];\n    if (&NSURLFileSecurityKey) result = [result arrayByAddingObject:NSURLFileSecurityKey];\n    \n    return result;\n}\n\n#pragma mark Dealloc\n\n- (void)dealloc;\n{\n    [_transfer release];\n    [_user release];\n    [_completionHandler release];\n    [_dataBlock release];\n    \n    [super dealloc];\n}\n\n#pragma mark Loading\n\n- (void)start; { return [self startWithRequest:self.request credential:nil]; }\n\n- (void)startWithProtectionSpace:(NSURLProtectionSpace *)protectionSpace;\n{\n    NSURLAuthenticationChallenge *challenge = [[NSURLAuthenticationChallenge alloc]\n                                               initWithProtectionSpace:protectionSpace\n                                               proposedCredential:nil\n                                               previousFailureCount:0\n                                               failureResponse:nil\n                                               error:nil\n                                               sender:nil];\n    \n    [self sendAuthChallenge:challenge];\n    [challenge release];\n}\n\n- (void)sendAuthChallenge:(NSURLAuthenticationChallenge *)challenge;\n{\n    NSParameterAssert(challenge);\n    \n    [self.client protocol:self didReceiveChallenge:challenge completionHandler:^(CK2AuthChallengeDisposition disposition, NSURLCredential *credential) {\n        \n        // By default, try once with proposed credential, then give up\n        // Otherwise, can go round in a loop of failed auth https://karelia.fogbugz.com/f/cases/248882\n        if (disposition == CK2AuthChallengePerformDefaultHandling && challenge.previousFailureCount == 0) {\n            credential = challenge.proposedCredential;\n            disposition = CK2AuthChallengeUseCredential;\n        }\n        \n        switch (disposition)\n        {\n            case CK2AuthChallengeUseCredential:\n            {\n                // Swap out existing handler for one that retries after an auth failure. Stores credential if requested upon success\n                [self pushCompletionHandler:^(NSError *error) {\n                    \n                    if (error.code == NSURLErrorUserAuthenticationRequired && [error.domain isEqualToString:NSURLErrorDomain])\n                    {\n                        [self.client protocol:self\n                                 appendString:[NSString stringWithFormat:@\"Authentication failed for user %@\", credential.user]\n                                 toTranscript:CK2TranscriptText];\n                        \n                        // Retry auth\n                        NSURLAuthenticationChallenge *newChallenge = [[NSURLAuthenticationChallenge alloc]\n                                                                      initWithProtectionSpace:challenge.protectionSpace\n                                                                      proposedCredential:credential\n                                                                      previousFailureCount:(challenge.previousFailureCount + 1)\n                                                                      failureResponse:nil\n                                                                      error:error\n                                                                      sender:nil];\n                        \n                        [self sendAuthChallenge:newChallenge];\n                        [newChallenge release];\n                    }\n                    else\n                    {\n                        if (!error)\n                        {\n                            [[NSURLCredentialStorage sharedCredentialStorage] setCredential:credential forProtectionSpace:challenge.protectionSpace];\n                        }\n                        \n                        [self popCompletionHandlerByExecutingWithError:error];\n                    }\n                }];\n                \n                [self startWithRequest:self.request credential:credential];\n                break;\n            }\n            default:\n            {\n                [self.client protocol:self didCompleteWithError:[NSError errorWithDomain:NSURLErrorDomain\n                                                                                    code:NSURLErrorUserCancelledAuthentication\n                                                                                userInfo:nil]];\n            }\n        }\n    }];\n}\n\n- (void)startWithRequest:(NSURLRequest *)request credential:(NSURLCredential *)credential;\n{\n    _user = [credential.user copy];\n    \n    request = [self.client protocol:self willSendRequest:request redirectResponse:nil];\n    \n    CURLTransferStack* multi = nil;\n    if ([request respondsToSelector:@selector(ck2_multi)])  // should only be a testing/debugging feature\n    {\n        multi = [request performSelector:@selector(ck2_multi)]; // typically this is nil, meaning use the default, but we can override it for test purposes\n    }\n    \n    _totalBytesWritten = 0;\n\n    if ([[self class] usesMultiHandle])\n    {\n        // Nasty, nasty HACK here, to share across the file manager\n        CK2FileManager *fileManager = [self valueForKeyPath:@\"client.fileManager\"];\n        @synchronized(fileManager) {\n            static void *key = &key;\n            multi = [objc_getAssociatedObject(fileManager, key) transferStack];\n            if (!multi) {\n                CK2CurlTransferStackManager *manager = [[CK2CurlTransferStackManager alloc] init];\n                multi = manager.transferStack;\n                objc_setAssociatedObject(fileManager, key, manager, OBJC_ASSOCIATION_RETAIN_NONATOMIC);\n                [manager release];\n            }\n        }\n        \n        _transfer = [[multi transferWithRequest:request credential:credential delegate:self] retain];\n        [_transfer resume];\n    }\n    else\n    {\n        // Create the queue & handle for whole app to share\n        static CURLTransfer *transfer;\n        static dispatch_queue_t queue;\n        \n        static dispatch_once_t onceToken;\n        dispatch_once(&onceToken, ^{\n            \n            transfer = [[CURLTransfer alloc] init];\n            queue = dispatch_queue_create(\"com.karelia.connection.fallback-CURLTransfer\", NULL);\n        });\n\n        CURLTransfer* transferToUse;\n        if (multi) // although we're not using the multi, we use it being set here as a signal to use a new handle for this transaction\n        {\n            transferToUse = [[[CURLTransfer alloc] init] autorelease];\n        }\n        else\n        {\n            transferToUse = transfer;\n        }\n\n        // Let the work commence!\n        dispatch_async(queue, ^{\n            \n            if (_cancelled) return;\n            \n            _transfer = [transferToUse retain];\n            [_transfer sendSynchronousRequest:request credential:credential delegate:self];\n        });\n    }\n}\n\n- (void)reportToProtocolWithError:(NSError*)error\n{\n    [[self client] protocol:self didCompleteWithError:error];\n}\n\n- (void)stop;\n{\n    // Mark as cancelled before actually cancelling so _cancelled has to be YES for any other transfers on the queue\n    _cancelled = YES;\n    [_transfer cancel];\n}\n\n#pragma mark Progress\n\n@synthesize totalBytesWritten = _totalBytesWritten;\n@synthesize totalBytesExpectedToWrite = _totalBytesExpectedToWrite;\n\n#pragma mark Managing the Completion Handler\n\n/*  This code is devious and perhaps even evil. Manages a \"stack\" of completion\n *  handlers by actually only having a single block. When the block runs, it\n *  replaces itself with the next one down the stack.\n */\n\n- (void)pushCompletionHandler:(void (^)(NSError*))block;\n{\n    NSParameterAssert(block);\n    \n    id previousHandler = _completionHandler;\n    \n    _completionHandler = ^(NSError *error) {\n        \n        // Put the old handler back, then execute what was actually requested of us\n        [_completionHandler release]; _completionHandler = previousHandler;\n        block(error);\n    };\n    _completionHandler = [_completionHandler copy];\n}\n\n- (void)popCompletionHandlerByExecutingWithError:(NSError *)error;\n{\n    // If the block is nil, that means the entire stack of handlers has already been popped, which should be a programmer error\n    id keepAlive = _completionHandler;\n    [keepAlive retain];\n    _completionHandler(error);\n    [keepAlive release];\n}\n\n#pragma mark URLs\n\n+ (NSURLRequest *)newRequestWithRequest:(NSURLRequest *)request isDirectory:(BOOL)directory;\n{\n    NSURL *url = [request URL];\n    \n    // CURL is very particular about whether URLs passed to it have directory terminator or not\n    if (directory != CFURLHasDirectoryPath((CFURLRef)url))\n    {\n        if (directory)\n        {\n            url = [url URLByAppendingPathComponent:@\"\"];\n        }\n        else\n        {\n            CFStringRef lastComponent = CFURLCopyLastPathComponent((CFURLRef)url);    // keeps %2F kinda intact as a regular slash\n            \n            url = [[url URLByDeletingLastPathComponent] URLByAppendingPathComponent:(NSString *)lastComponent];\n            // any slash from %2F will go back in to give a URL containing an extra slash, which should be good enough for libcurl to handle\n            \n            CFRelease(lastComponent);\n        }\n    }\n    \n    NSMutableURLRequest *result = [request mutableCopy];\n    [result setURL:url];\n    return result;\n}\n\n#pragma mark Home Directory Store\n\n+ (BOOL)isHomeDirectoryAtURL:(NSURL *)url;\n{\n    NSURL *home = [self homeDirectoryURLForServerAtURL:url];\n    BOOL result = [[self pathOfURLRelativeToHomeDirectory:url] isEqualToString:[self pathOfURLRelativeToHomeDirectory:home]];\n    return result;\n}\n\n+ (NSURL *)homeDirectoryURLForServerAtURL:(NSURL *)hostURL;\n{\n    NSString *host = [[NSURL URLWithString:@\"/\" relativeToURL:hostURL] absoluteString].lowercaseString;\n    \n    NSMutableDictionary *store = [self homeURLsByHostURL];\n    @synchronized (store)\n    {\n        return [store objectForKey:host];\n    }\n}\n\n- (void)updateHomeDirectoryStore;\n{\n    NSString *homeDirectoryPath = [_transfer initialFTPPath];\n    \n    if ([homeDirectoryPath isAbsolutePath])\n    {\n        if (homeDirectoryPath.length > 1 && ![homeDirectoryPath hasSuffix:@\"/\"])    // ensure it's a directory path\n        {\n            homeDirectoryPath = [homeDirectoryPath stringByAppendingString:@\"/\"];\n        }\n        \n        NSURL *homeDirectoryURL = [self.class URLWithPath:homeDirectoryPath relativeToURL:self.request.URL].absoluteURL;\n        \n        homeDirectoryURL = [self.class URLByReplacingUserInfoInURL:homeDirectoryURL withUser:_user];    // include username\n        NSString *host = [[NSURL URLWithString:@\"/\" relativeToURL:homeDirectoryURL] absoluteString].lowercaseString;\n        \n        NSMutableDictionary *store = [self.class homeURLsByHostURL];\n        @synchronized (store)\n        {\n            [store setObject:homeDirectoryURL forKey:host];\n        }\n    }\n}\n\n+ (NSMutableDictionary *)homeURLsByHostURL;\n{\n    static NSMutableDictionary *sHomeURLsByHostURL;\n    static dispatch_once_t onceToken;\n    dispatch_once(&onceToken, ^{\n        sHomeURLsByHostURL = [[NSMutableDictionary alloc] initWithCapacity:1];\n    });\n    \n    return sHomeURLsByHostURL;\n}\n\n#pragma mark CURLTransferDelegate\n\n- (void)transfer:(CURLTransfer *)transfer didReceiveData:(NSData *)data;\n{\n    [self updateHomeDirectoryStore];    // Make sure is updated before parsing of directory listing\n    if (_dataBlock) _dataBlock(data);\n}\n\n- (void)transfer:(CURLTransfer *)transfer willSendBodyDataOfLength:(NSUInteger)bytesWritten\n{\n    _totalBytesWritten += bytesWritten;\n    \n    [self.client protocol:self\n          didSendBodyData:bytesWritten\n           totalBytesSent:_totalBytesWritten\n totalBytesExpectedToSend:self.totalBytesExpectedToWrite];\n}\n\n- (void)transfer:(CURLTransfer *)transfer didCompleteWithError:(NSError *)error;\n{\n    [self popCompletionHandlerByExecutingWithError:error];\n}\n\n- (void)transfer:(CURLTransfer *)transfer didReceiveDebugInformation:(NSString *)string ofType:(curl_infotype)type;\n{\n    CK2TranscriptType ckType;\n    switch (type)\n    {\n        case CURLINFO_HEADER_IN:\n            ckType = CK2TranscriptHeaderIn;\n            break;\n\n        case CURLINFO_HEADER_OUT:\n            ckType = CK2TranscriptHeaderOut;\n            break;\n\n        case CURLINFO_TEXT:\n            ckType = CK2TranscriptText;\n            break;\n            \n        default:\n            return;\n    }\n\n    [[self client] protocol:self appendString:string toTranscript:ckType];\n}\n\n#pragma mark Customization\n\n// Much to my annoyance, multi-socket backend doesn't seem to be working right at the moment\n// But we're now using the regular multi API, which seems to be working a treat\n+ (BOOL)usesMultiHandle; { return YES; }\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2CurlTransferStackManager.h",
    "content": "//\n//  CK2CurlTransferStackManager.h\n//  Connection\n//\n//  Created by Mike on 23/03/2015.\n//\n//\n\n#import <CURLHandle/CURLHandle.h>\n\n\n/**\n This is a little wrapper around a CURLTransferStack. We use it to tie each CK2FileManager to a\n transfer stack, and invalidate that stack when appropriate.\n */\n@interface CK2CurlTransferStackManager : NSObject {\n    CURLTransferStack   *_transferStack;\n}\n\n/**\n The manager automatically creates a transfer stack for itself\n */\n@property(nonatomic, readonly) CURLTransferStack *transferStack;\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2CurlTransferStackManager.m",
    "content": "//\n//  CK2CurlTransferStackManager.m\n//  Connection\n//\n//  Created by Mike on 23/03/2015.\n//\n//\n\n#import \"CK2CurlTransferStackManager.h\"\n\n@implementation CK2CurlTransferStackManager\n\n- (instancetype)init {\n    if (self = [super init]) {\n        _transferStack = [CURLTransferStack transferStackWithDelegate:nil delegateQueue:nil];\n    }\n    return self;\n}\n\n- (void)dealloc {\n    // We're being torn down, so figure now is the time to invalidate transfer stack. Crude, but\n    // there you go.\n    [self.transferStack finishTransfersAndInvalidate];\n    \n    [super dealloc];\n}\n\n@synthesize transferStack = _transferStack;\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2FTPProtocol.h",
    "content": "//\n//  CK2FTPProtocol.h\n//  Connection\n//\n//  Created by Mike on 12/10/2012.\n//\n//\n\n#import \"CK2CURLBasedProtocol.h\"\n\n\n@interface CK2FTPProtocol : CK2CURLBasedProtocol\n{\n  @private\n    BOOL    _atEnd;\n    \n    // SSL\n    NSURLCredential *_credential;\n    NSUInteger      _sslFailures;\n}\n\n@end\n\n\n"
  },
  {
    "path": "ConnectionKit/CK2FTPProtocol.m",
    "content": "//\n//  CK2FTPProtocol.m\n//  Connection\n//\n//  Created by Mike on 12/10/2012.\n//\n//\n\n#import \"CK2FTPProtocol.h\"\n\n#import <CURLHandle/CURLHandle.h>\n\n\n@interface CK2FTPSProtectionSpace : NSURLProtectionSpace\n{\n  @private\n    SecTrustRef _trust;\n}\n- initWithServerTrust:(SecTrustRef)trust host:(NSString *)host port:(NSInteger)port;\n@end\n\n\n#pragma mark -\n\n\n@implementation CK2FTPProtocol\n\n#pragma mark URLs\n\n+ (BOOL)canHandleURL:(NSURL *)url;\n{\n    NSString *scheme = [url scheme];\n    \n    return ([@\"ftp\" caseInsensitiveCompare:scheme] == NSOrderedSame ||\n            [@\"ftpes\" caseInsensitiveCompare:scheme] == NSOrderedSame ||\n            [@\"ftps\" caseInsensitiveCompare:scheme] == NSOrderedSame);\n}\n\n+ (NSURL *)URLWithPath:(NSString *)path relativeToURL:(NSURL *)baseURL;\n{\n    // FTP is special. Absolute paths need to specified with an extra prepended slash <http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTURL>\n    // According to libcurl's docs that should be enough. But with our current build of it, it seems they've gotten stricter\n    // The FTP spec could be interpreted that the only way to refer to the root directly is with the sequence @\"%2F\", which decodes as a slash\n    // That makes it very clear to the library etc. this particular slash is meant to be transmitted to the server, rather than treated as a path component separator\n    // Happily it also simplifies our code, as coaxing a double slash into NSURL is a mite tricky\n    if ([path isAbsolutePath])\n    {\n        // Pare it back to just a plain path of @\"/\" and no latter components\n        NSString *urlString = [[NSURL URLWithString:@\"/\" relativeToURL:baseURL] absoluteString];\n        \n        // Tack on the path given to us\n        // http://www.mikeabdullah.net/escaping-url-paths-in-cocoa.html\n        CFStringRef escaped = CFURLCreateStringByAddingPercentEscapes(NULL,\n                                                                      (CFStringRef)path,\n                                                                      NULL,\n                                                                      CFSTR(\";?#\"),\n                                                                      kCFStringEncodingUTF8);\n        \n        NSURL *result = [NSURL URLWithString:[urlString stringByAppendingString:(NSString *)escaped]];\n        CFRelease(escaped);\n        \n        return result;\n    }\n    \n    return [super URLWithPath:path relativeToURL:baseURL];\n}\n\n+ (NSString *)pathOfURLRelativeToHomeDirectory:(NSURL *)URL;\n{\n    // FTP is special. The first slash of the path is to be ignored <http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTURL>\n    // As above, the library seems to be stricter on how the slash is to be encoded these days. I'm not sure whether we should be similarly strict when decoding. Leaving it be for now\n    CFStringRef strictPath = CFURLCopyStrictPath((CFURLRef)[URL absoluteURL], NULL);\n    NSString *result = [(NSString *)strictPath stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];\n    if (strictPath) CFRelease(strictPath);\n    return result;\n}\n\n#pragma mark URL Requests\n\n- (id)initWithRequest:(NSURLRequest *)request client:(id<CK2ProtocolClient>)client;\n{\n    // libcurl doesn't understand ftpes: URLs natively, so convert them back into ftp: with the appropriate connection settings\n    NSURL *url = request.URL;\n    if ([url.scheme caseInsensitiveCompare:@\"ftpes\"] == NSOrderedSame)\n    {\n        url = [NSURL URLWithString:[url.absoluteString stringByReplacingCharactersInRange:NSMakeRange(0, 5) // bit hacky\n                                                                               withString:@\"ftp\"]];\n        \n        NSMutableURLRequest *mutableRequest = [[request mutableCopy] autorelease];\n        mutableRequest.URL = url;\n        [mutableRequest curl_setDesiredSSLLevel:CURLUSESSL_ALL];\n        request = mutableRequest;\n    }\n    \n    return [super initWithRequest:request client:client];\n}\n\n#pragma mark Operations\n\n- (id)initWithCustomCommands:(NSArray *)commands request:(NSURLRequest *)childRequest createIntermediateDirectories:(BOOL)createIntermediates client:(id<CK2ProtocolClient>)client completionHandler:(void (^)(NSError *))handler;\n{\n    NSMutableURLRequest *request = [childRequest mutableCopy];\n    request.URL = [childRequest.URL URLByDeletingLastPathComponent];\n    \n    self = [super initWithCustomCommands:commands\n                                 request:request\n           createIntermediateDirectories:createIntermediates\n                                  client:client\n                       completionHandler:handler];\n    \n    [request release];\n    return self;\n}\n\n- (id)initForCreatingDirectoryWithRequest:(NSURLRequest *)request withIntermediateDirectories:(BOOL)createIntermediates openingAttributes:(NSDictionary *)attributes client:(id<CK2ProtocolClient>)client;\n{\n    return [self initWithCustomCommands:[NSArray arrayWithObject:[@\"MKD \" stringByAppendingString:[[request URL] lastPathComponent]]]\n             request:request\n          createIntermediateDirectories:createIntermediates\n                                 client:client\n                      completionHandler:^(NSError *error) {\n\n                          if (error)\n                          {\n                              error = [self translateStandardErrors:error];\n                          }\n\n                          [self reportToProtocolWithError:error];\n                      }\n\n            ];\n}\n\n- (id)initForCreatingFileWithRequest:(NSURLRequest *)request size:(int64_t)size withIntermediateDirectories:(BOOL)createIntermediates openingAttributes:(NSDictionary *)attributes client:(id<CK2ProtocolClient>)client;\n{\n    return [self initForCreatingFileWithRequest:request size:size withIntermediateDirectories:createIntermediates client:client completionHandler:^(NSError *error) {\n        \n        if (error) {\n            if ([self looksLikeFTPIdleTimeoutProblem:error])\n            {\n                error = nil;\n            }\n            // Give a bit of a clue for debugging how far we got through\n            else if (self.totalBytesWritten) {\n                NSMutableDictionary *info = [error.userInfo mutableCopy];\n                \n                NSString *description;\n                if (self.totalBytesExpectedToWrite == NSURLResponseUnknownLength) {\n                    description = [[info objectForKey:NSLocalizedDescriptionKey] stringByAppendingFormat:\n                                   @\" (%@ KB sent.)\",\n                                   @(self.totalBytesWritten / 1024)];\n                }\n                else {\n                    description = [[info objectForKey:NSLocalizedDescriptionKey] stringByAppendingFormat:\n                                   @\" (%@ of %@ KB sent.)\",\n                                   @(self.totalBytesWritten / 1024),\n                                   @(self.totalBytesExpectedToWrite / 1024)];\n                }\n                \n                [info setObject:description forKey:NSLocalizedDescriptionKey];\n                error = [NSError errorWithDomain:error.domain code:error.code userInfo:info];\n                [info release];\n            }\n        }\n        \n        [client protocol:self didCompleteWithError:error];\n    }];\n}\n\n- (id)initForRenamingItemWithRequest:(NSURLRequest *)request newName:(NSString *)newName client:(id<CK2ProtocolClient>)client\n{\n    NSString* sourcePath = [[request URL] lastPathComponent];\n\n    return [self initWithCustomCommands:[NSArray arrayWithObjects:\n                                         [@\"RNFR \" stringByAppendingString:sourcePath],\n                                         [@\"RNTO \" stringByAppendingString:newName],\n                                         nil\n                                         ]\n                                request:request\n          createIntermediateDirectories:NO\n                                 client:client\n                      completionHandler:^(NSError *error) {\n                          error = [self translateStandardErrors:error];\n                          [self reportToProtocolWithError:error];\n                      }];\n}\n\n- (id)initForRemovingItemWithRequest:(NSURLRequest *)request client:(id<CK2ProtocolClient>)client;\n{\n    NSURL *url = request.URL;\n    \n    // Pick an appropriate command\n    // DELE is only intended to delete files, but in our testing, some FTP servers happily support deleting a directory using it\n    NSString *command = @\"DELE \";\n    \n    NSNumber *isDirectory;\n    if ([url getResourceValue:&isDirectory forKey:NSURLIsDirectoryKey error:NULL] && isDirectory.boolValue)\n    {\n        command = @\"RMD \";\n    }\n    else if (CFURLHasDirectoryPath((CFURLRef)url))\n    {\n        command = @\"RMD \";\n    }\n    \n    return [self initWithCustomCommands:[NSArray arrayWithObject:[command stringByAppendingString:url.lastPathComponent]]\n             request:request\n          createIntermediateDirectories:NO\n                                 client:client\n                      completionHandler:^(NSError *error) {\n                          if (error)\n                          {\n                              error = [self translateStandardErrors:error];\n                          }\n\n                          [self reportToProtocolWithError:error];\n                      }];\n}\n\n- (id)initForSettingAttributes:(NSDictionary *)keyedValues ofItemWithRequest:(NSURLRequest *)request client:(id<CK2ProtocolClient>)client;\n{\n    NSNumber *permissions = [keyedValues objectForKey:NSFilePosixPermissions];\n    if (permissions)\n    {\n        NSString* path = [[request URL] lastPathComponent];\n        NSArray *commands = [NSArray arrayWithObject:[NSString stringWithFormat:\n                                                      @\"SITE CHMOD %lo %@\",\n                                                      [permissions unsignedLongValue],\n                                                      path]];\n        \n        return [self initWithCustomCommands:commands\n                 request:request\n              createIntermediateDirectories:NO\n                                     client:client\n                          completionHandler:^(NSError *error) {\n                              \n                              if (error)\n                              {\n                                  NSString* domain = error.domain;\n                                  NSInteger code = error.code;\n\n                                  // CHMOD failures for unsupported or unrecognized command should go ignored\n                                  if (code== CURLE_QUOTE_ERROR && [domain isEqualToString:CURLcodeErrorDomain])\n                                  {\n                                      NSUInteger responseCode = [error curlResponseCode];\n                                      if (responseCode == 500 || responseCode == 502 || responseCode == 504)\n                                      {\n                                          error = nil;\n                                      }\n                                  }\n\n                                  if (error)\n                                  {\n                                      error = [self translateStandardErrors:error];\n                                  }\n                              }\n\n                              [self reportToProtocolWithError:error];\n                          }];\n    }\n    else\n    {\n        self = [self initWithRequest:nil client:client];\n        return self;\n    }\n}\n\n- (void)dealloc;\n{\n    [_credential release];\n    [super dealloc];\n}\n\n#pragma mark Errors\n\n- (NSError*)translateStandardErrors:(NSError*)error\n{\n    NSString* domain = error.domain;\n    NSInteger code = error.code;\n    \n    if (code == CURLE_QUOTE_ERROR && [domain isEqualToString:CURLcodeErrorDomain])\n    {\n        NSUInteger responseCode = [error curlResponseCode];\n        if (responseCode == 550)\n        {\n            error = [self standardCouldntWriteErrorWithUnderlyingError:error];\n        }\n    }\n    else if (code == CURLE_REMOTE_ACCESS_DENIED && [domain isEqualToString:CURLcodeErrorDomain])\n    {\n        // Could be a permissions problem, or could be that a CWD command failed because the directory doesn't exist\n        error = [self standardCouldntReadErrorWithUnderlyingError:error];\n    }\n    else if ((code == NSURLErrorNoPermissionsToReadFile) && ([domain isEqualToString:NSURLErrorDomain]))\n    {\n        // CURLTransfer helpfully returns a URL error here, but we want to return a cocoa error instead\n        error = [self standardCouldntWriteErrorWithUnderlyingError:error];\n    }\n    else\n    {\n        NSLog(@\"untranslated error for %@ %@\", NSStringFromSelector(_cmd), error);\n    }\n\n    return error;\n}\n\n/**\n FTP suffers a fairly notorious problem. During a long upload, the control connection is completely\n idle. As such, there's a tendency for internet routers to then cut it off. When the data connection\n completes, Curl goes to use the control connection to finish up and finds that it no longer can,\n thanks to that cutoff. The really nasty thing is Curl can't know for sure if the cutoff was because\n of idling (and the upload finished successfully), or if there was a proper connection problem while\n the last packet of data was being sent.\n \n Understandably, users can be rather annoyed if they keep being told their long uploads have failed\n (particularly in an app like Sandvox where a failure will result in the upload being retried on\n another occasion until it does succeed).\n \n So our best bet seems to be a heuristic: If all file data was *transmitted* (not necessarily *received*)\n and the failure could be caused by an idle timeout, assume the upload was actually a success.\n */\n- (BOOL)looksLikeFTPIdleTimeoutProblem:(NSError *)error {\n    if (!_atEnd) return NO;\n    \n    // We've seen more than a single error code so far!\n    if (error.code == NSURLErrorTimedOut && [error.domain isEqualToString:NSURLErrorDomain]) return YES;\n    if (error.code == CURLE_RECV_ERROR && [error.domain isEqualToString:CURLcodeErrorDomain]) return YES; // https://karelia.fogbugz.com/f/cases/248867/\n    \n    return NO;\n}\n\n#pragma mark Lifecycle\n\n- (void)start;\n{\n    // If there's no request, that means we were asked to do nothing possible over FTP. Most likely, storing attributes that aren't POSIX permissions\n    // So jump straight to completion\n    NSURLRequest *request = self.request;\n    if (!request)\n    {\n        [[self client] protocol:self didCompleteWithError:nil];\n        return;\n    }\n\n    NSURL *url = request.URL;\n    NSString *scheme = url.scheme;\n    \n    NSNumber *port = url.port;\n    if (!port)\n    {\n        port = ([scheme isEqualToString:@\"ftps\"] ? @(990) : @(21));\n    }\n    \n    NSString *protocol = NSURLProtectionSpaceFTP;\n    if (request.curl_desiredSSLLevel >= CURLUSESSL_CONTROL ||\n        [@\"ftps\" caseInsensitiveCompare:scheme] == NSOrderedSame)\n    {\n        protocol = @\"ftps\";\n    }\n    \n    NSURLProtectionSpace *space = [[NSURLProtectionSpace alloc] initWithHost:[url host]\n                                                                        port:port.integerValue\n                                                                    protocol:protocol\n                                                                       realm:nil\n                                                        authenticationMethod:NSURLAuthenticationMethodDefault];\n    \n    [self startWithProtectionSpace:space];\n    [space release];\n}\n\n- (void)startWithRequest:(NSURLRequest *)request credential:(NSURLCredential *)credential;\n{\n    // Cache the credential in case we need to retry FTPS\n    [credential retain];\n    [_credential release]; _credential = credential;\n    \n    [super startWithRequest:request credential:credential];\n}\n\n#pragma mark Home Directory\n\n/*- (void)findHomeDirectoryWithCompletionHandler:(void (^)(NSString *path, NSError *error))handler;\n{\n    // Deliberately want a request that should avoid doing any work\n    NSMutableURLRequest *request = [[self request] mutableCopy];\n    [request setURL:[NSURL URLWithString:@\"/\" relativeToURL:[request URL]]];\n    [request setHTTPMethod:@\"HEAD\"];\n\n    [self sendRequest:request dataHandler:nil completionHandler:^(CURLTransfer *transfer, NSError *error) {\n        if (error)\n        {\n            handler(nil, error);\n        }\n        else\n        {\n            handler([transfer initialFTPPath], error);\n        }\n    }];\n    \n    [request release];\n}*/\n\n#pragma mark CURLTransferDelegate\n\n- (void)transfer:(CURLTransfer *)transfer didCompleteWithError:(NSError *)error;\n{\n    // For SSL errors, report extra info\n    SecTrustRef trust = (SecTrustRef)[error.userInfo objectForKey:NSURLErrorFailingURLPeerTrustErrorKey];\n    if (trust)\n    {\n        NSURL *url = self.request.URL;\n        \n        NSURLProtectionSpace *space = [[CK2FTPSProtectionSpace alloc] initWithServerTrust:trust\n                                                                                     host:url.host\n                                                                            port:url.port.integerValue];\n        \n        _sslFailures++;\n        \n        NSURLAuthenticationChallenge *challenge = [[NSURLAuthenticationChallenge alloc] initWithProtectionSpace:space\n                                                                                             proposedCredential:nil\n                                                                                           previousFailureCount:_sslFailures\n                                                                                                failureResponse:nil\n                                                                                                          error:error\n                                                                                                         sender:nil];\n        \n        [self.client protocol:self didReceiveChallenge:challenge completionHandler:^(CK2AuthChallengeDisposition disposition, NSURLCredential *credential) {\n            \n            if (disposition == CK2AuthChallengeUseCredential && credential)\n            {\n                // Retry\n                // Ideally we'd adjust libcurl to only accept this one new\n                // certificate, but I can't spot a proper API for that, so we'll\n                // have to live with a minor security flaw for now.\n                NSMutableURLRequest *request = [self.request mutableCopy];\n                [request curl_setShouldVerifySSLHost:NO];   // disabling host check is all Sandvox needs\n                [self startWithRequest:request credential:_credential];\n                [request release];\n            }\n            else if (disposition == CK2AuthChallengeCancelAuthenticationChallenge)\n            {\n                [super transfer:transfer didCompleteWithError:[NSError errorWithDomain:NSURLErrorDomain\n                                                                                  code:NSURLErrorUserCancelledAuthentication\n                                                                              userInfo:nil]];\n            }\n            else\n            {\n                [super transfer:transfer didCompleteWithError:error];\n            }\n        }];\n        \n        [challenge release];\n        [space release];\n        \n        return;\n    }\n    \n    [super transfer:transfer didCompleteWithError:error];\n}\n\n- (void)transfer:(CURLTransfer *)transfer willSendBodyDataOfLength:(NSUInteger)bytesWritten;\n{\n    // Watch for the file end being reached before passing onto the original requester\n    if (bytesWritten == 0) _atEnd = YES;\n    \n    [super transfer:transfer willSendBodyDataOfLength:bytesWritten];\n}\n\n- (void)transfer:(CURLTransfer *)transfer didReceiveDebugInformation:(NSString *)string ofType:(curl_infotype)type;\n{\n    // Don't want to include password in transcripts usually!\n    if (type == CURLINFO_HEADER_OUT &&\n        [string hasPrefix:@\"PASS\"] &&\n        ![[NSUserDefaults standardUserDefaults] boolForKey:@\"AllowPasswordToBeLogged\"])\n    {\n        string = @\"PASS ####\";\n    }\n    \n    [super transfer:transfer didReceiveDebugInformation:string ofType:type];\n}\n\n@end\n\n\n#pragma mark -\n\n\n@implementation CK2FTPSProtectionSpace\n\n- initWithServerTrust:(SecTrustRef)trust host:(NSString *)host port:(NSInteger)port;\n{\n    if (self = [self initWithHost:host port:port protocol:@\"ftps\" realm:nil authenticationMethod:NSURLAuthenticationMethodServerTrust])\n    {\n        _trust = trust;\n        CFRetain(_trust);\n    }\n    return self;\n}\n\n- (void)dealloc;\n{\n    CFRelease(_trust);\n    [super dealloc];\n}\n\n- (SecTrustRef)serverTrust; { return _trust; }\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2FileCell.h",
    "content": "/*\n This class is based on FileSystemBrowserCell. The original version of\n which can be found here: \n http://developer.apple.com/library/mac/#samplecode/ComplexBrowser/Listings/FileSystemBrowserCell_m.html\n \n The original code falls under the copyright and license specified \n there.\n\n \n Modifications to the code for this project fall under the following\n license:\n \n Copyright (c) 2013, Karelia Software\n All rights reserved.\n \n Redistribution and use in source and binary forms, with or without modification,\n are permitted provided that the following conditions are met:\n \n Redistributions of source code must retain the above copyright notice, this list\n of conditions and the following disclaimer.\n \n Redistributions in binary form must reproduce the above copyright notice, this\n list of conditions and the following disclaimer in the documentation and/or other\n materials provided with the distribution.\n \n Neither the name of Karelia Software nor the names of its contributors may be used to\n endorse or promote products derived from this software without specific prior\n written permission.\n \n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\n SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\n TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY\n WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n \n */\n\n#import <Cocoa/Cocoa.h>\n\n@interface CK2FileCell : NSTextFieldCell {\n@private\n    NSImage *_image;\n    NSColor *_labelColor;\n    BOOL    _isTextOnly;\n}\n\n@property(retain) NSImage *image;\n@property(retain) NSColor *labelColor;\n@property(assign, getter=isTextOnly, nonatomic) BOOL textOnly;\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2FileCell.m",
    "content": "/*\n This class is based on FileSystemBrowserCell. The original version of\n which can be found here:\n http://developer.apple.com/library/mac/#samplecode/ComplexBrowser/Listings/FileSystemBrowserCell_m.html\n \n The original code falls under the copyright and license specified\n there.\n \n \n Modifications to the code for this project fall under the following\n license:\n \n Copyright (c) 2013, Karelia Software\n All rights reserved.\n \n Redistribution and use in source and binary forms, with or without modification,\n are permitted provided that the following conditions are met:\n \n Redistributions of source code must retain the above copyright notice, this list\n of conditions and the following disclaimer.\n \n Redistributions in binary form must reproduce the above copyright notice, this\n list of conditions and the following disclaimer in the documentation and/or other\n materials provided with the distribution.\n \n Neither the name of Karelia Software nor the names of its contributors may be used to\n endorse or promote products derived from this software without specific prior\n written permission.\n \n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\n SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\n TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY\n WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n \n */\n\n#import \"CK2FileCell.h\"\n\n@implementation CK2FileCell\n\n#define ICON_SIZE \t\t16.0\t// Our Icons are ICON_SIZE x ICON_SIZE \n#define ICON_INSET_HORIZ\t4.0     // Distance to inset the icon from the left edge. \n#define ICON_TEXT_SPACING\t2.0     // Distance between the end of the icon and the text part \n#define ICON_INSET_VERT         2.0     // Distance from top/bottom of icon\n\n- (id)init {\n    self = [super init];\n    [self setLineBreakMode:NSLineBreakByTruncatingMiddle];\n    return self;\n}\n\n- (id)copyWithZone:(NSZone *)zone {\n    CK2FileCell *result = [super copyWithZone:zone];\n    result->_image = nil;\n    result.image = self.image;\n    result->_labelColor = nil;\n    result.labelColor = self.labelColor;\n    return result;\n}\n\n- (void)dealloc {\n    [_image release];\n    [_labelColor release];\n    [super dealloc];\n}\n\n@synthesize image = _image;\n@synthesize labelColor = _labelColor;\n@synthesize textOnly = _isTextOnly;\n\n\n- (void)setTextOnly:(BOOL)flag\n{\n    _isTextOnly = flag;\n    if (_isTextOnly)\n    {\n        [self setLineBreakMode:NSLineBreakByTruncatingTail];\n    }\n    else\n    {\n        [self setLineBreakMode:NSLineBreakByTruncatingMiddle];\n    }\n}\n\n\n- (NSRect)imageRectForBounds:(NSRect)bounds {\n    bounds.origin.x += ICON_INSET_HORIZ;\n    bounds.size.width = ICON_SIZE;\n    bounds.origin.y += trunc((bounds.size.height - ICON_SIZE) / 2.0); \n    bounds.size.height = ICON_SIZE;\n    return bounds;\n}\n\n- (NSRect)titleRectForBounds:(NSRect)bounds {\n    if (!_isTextOnly)\n    {\n        // Inset the title for the image\n        CGFloat inset = (ICON_INSET_HORIZ + ICON_SIZE + ICON_TEXT_SPACING);\n        bounds.origin.x += inset;\n        bounds.size.width -= inset;\n    }\n    return [super titleRectForBounds:bounds];\n}\n\n- (NSSize)cellSizeForBounds:(NSRect)aRect {\n    // Make our cells a bit higher than normal to give some additional space for the icon to fit.\n    NSSize theSize = [super cellSizeForBounds:aRect];\n    theSize.width += (ICON_INSET_HORIZ + ICON_SIZE + ICON_TEXT_SPACING);\n    theSize.height = ICON_INSET_VERT + ICON_SIZE + ICON_INSET_VERT;\n    return theSize;\n}\n\n- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {\n    // First draw a label background color\n    if (self.labelColor != nil) {\n        [[self.labelColor colorWithAlphaComponent:0.2] set];\n        NSRectFillUsingOperation(cellFrame, NSCompositeSourceOver);\n    }\n    \n    if (!_isTextOnly)\n    {\n        NSRect imageRect = [self imageRectForBounds:cellFrame];\n        \n        [self.image drawInRect:imageRect\n                      fromRect:NSZeroRect\n                     operation:NSCompositeSourceOver\n                      fraction:1.0\n                respectFlipped:YES\n                         hints:nil];\n        \n        CGFloat inset = (ICON_INSET_HORIZ + ICON_SIZE + ICON_TEXT_SPACING);\n        cellFrame.origin.x += inset;\n        cellFrame.size.width -= inset;\n    }\n    cellFrame.origin.y += 1; // Looks better\n    cellFrame.size.height -= 1;\n    [super drawInteriorWithFrame:cellFrame inView:controlView];\n}\n\n- (void)drawWithExpansionFrame:(NSRect)cellFrame inView:(NSView *)view {\n    // We want to exclude the icon from the expansion frame when you hover over the cell\n    [super drawInteriorWithFrame:cellFrame inView:view];\n}\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2FileManager.h",
    "content": "//\n//  CK2FileManager\n//  Connection\n//\n//  Created by Mike on 08/10/2012.\n//\n\n#import <Foundation/Foundation.h>\n\n\ntypedef void (^CK2ProgressBlock)(int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToSend);\n\n\nextern NSString * const CK2FileMIMEType;\n\n\ntypedef NS_OPTIONS(NSInteger, CK2DirectoryEnumerationOptions) {\n    CK2DirectoryEnumerationIncludesDirectory = 1L << 31,    // see directory methods below for details\n};\n\n\n@protocol CK2FileManagerDelegate;\n@class CK2FileOperation;\n\n\n/**\n ConnectionKit's equivalent of NSFileManager\n All operations are asynchronous, including ones on the local file system.\n Supports remote file servers, currently over FTP, SFTP and WebDAV.\n Allocate and initialise as many file managers as you wish; there is no +defaultManager method\n Provide a file manager with a delegate to handle authentication in the same fashion as NSURLConnection\n Behind the scenes, ConnectionKit takes care of creating as many connections to\n servers as are needed. This means you can perform multiple operations at once,\n but please avoid performing too many at once as that could easily upset a\n server.\n \n Supported protocols and their URL schemes:\n \n Scheme | Protocol\n ------ | --------\n file   | Local files\n ftp    | FTP\n ftps   | FTP with Implicit SSL\n ftpes  | FTP with TLS/SSL\n http   | WebDAV\n https  | WebDAV over HTTPS\n sftp   | SFTP\n \n Note that on OS releases where `-[NSURLConnection setDelegateQueue:]` is\n unavailable, WebDAV operations rely on the main thread running its runloop in\n the default mode.\n \n*/\n\n@interface CK2FileManager : NSObject\n{\n  @private\n    id <CK2FileManagerDelegate> _delegate;\n    NSOperationQueue            *_delegateQueue;\n}\n\n#pragma mark Creating a File Manager\n\n/**\n Creates a CK2FileManager instance.\n \n @param delegate A delegate object that handles authentication etc.\n @param queue A queue for scheduling the delegate calls and completion handlers. If `nil`, ConnectionKit creates a serial operation queue for performing all delegate method calls and completion handler calls.\n */\n+ (CK2FileManager *)fileManagerWithDelegate:(id <CK2FileManagerDelegate>)delegate delegateQueue:(NSOperationQueue *)queue;\n\n\n#pragma mark Discovering Directory Contents\n\n/**\n Performs a shallow search of the specified directory and returns URLs for the contained items.\n \n This method performs a shallow search of the directory and therefore does not traverse symbolic links or return the contents of any subdirectories. This method also does not return URLs for the current directory (“.”), parent directory (“..”) but it can return hidden files (files that begin with a period character)\n \n The order of the files in the returned array generally follows that returned by the server, which is likely undefined.\n \n Paths are standardized if possible (i.e. case is corrected if needed, and relative paths resolved).\n Any user info you pass in as part of `url` (username or password) will be included back in returned\n URLs. Note that if you use the authentication callback to specify a user different to the one in\n `url`, the results you get back won't reflect that change in user; it becomes your responsibility\n to adjust the resultant URLs if your app needs it.\n \n Many protocols provide a decent error code indicating *why* the operation\n failed. Unfortunately, FTP cannot. The FTP spec means the only machine-readable\n response is a 550 code. This covers pretty much any sort of filesystem access\n problem (as opposed to an issue with the connection itself). Thus FTP ops\n cannot distinguish between a folder not existing, not actually being a folder,\n and the user having insufficient permissions to access it. Instead you'll get\n back plain old `NSFileReadUnknownError`.\n \n @param url for the directory whose contents you want to enumerate.\n @param keys to try and include from the server. Pass nil to get a default set. Include NSURLParentDirectoryURLKey to get \n @param mask of options. In addition to NSDirectoryEnumerationOptions, accepts CK2DirectoryEnumerationIncludesDirectory\n @param block called with URLs, each of which identifies a file, directory, or symbolic link. If the directory contains no entries, the array is empty. If an error occurs, contents is nil and error should be non-nil.\n @return The new file operation.\n */\n- (CK2FileOperation *)contentsOfDirectoryAtURL:(NSURL *)url\n                    includingPropertiesForKeys:(NSArray *)keys\n                                       options:(NSUInteger)mask\n                             completionHandler:(void (^)(NSArray *contents, NSError *error))block __attribute((nonnull(1,4)));\n\nextern NSString * const CK2URLSymbolicLinkDestinationKey; // The destination URL of a symlink\n\n\n#pragma mark Creating Items\n\n/**\n Creates a directory at the specified URL.\n \n If a file or directory already exists at `url`, it is at the server's discretion\n whether the operation succeeds by replacing the existing item, or fails.\n \n Only some protocols/servers support/respect applying attributes to a directory\n as part of creating it. Indeed, some servers don't really support attributes at\n all! So any attributes you pass here might well go ignored. In practice, at\n present you should see something like this:\n \n - FTP:    Attributes are completely ignored\n - SFTP:   Only `NSFilePosixPermissions` is used; some servers choose to ignore it\n - WebDAV: Attributes are ignored\n - file:   The full suite of attributes supported by `NSFileManager` should be available\n \n If you particularly care about setting attributes on a remote server, then a\n follow-up call to -setAttributes:… is needed.\n \n Note: Even though this is a \"write\" operation, it is still possible to get back\n something like `NSFileReadUnknownError`. In particular, FTP must traverse the\n directory hierarchy which can fail if the target directory turns out not to\n exist, or the user has insufficient permissions to access it.\n \n @param url A URL that specifies the directory to create. This parameter must not be nil.\n @param createIntermediates If YES, this method creates any non-existent parent directories as part of creating the directory in url. If NO, this method fails if any of the intermediate parent directories does not exist.\n @param attributes to apply *only* if the server supports supplying them at creation time. See discussion for more details.\n @param handler Called at the end of the operation. A non-nil error indicates failure.\n @return The new file operation.\n */\n- (CK2FileOperation *)createDirectoryAtURL:(NSURL *)url withIntermediateDirectories:(BOOL)createIntermediates openingAttributes:(NSDictionary *)attributes completionHandler:(void (^)(NSError *error))handler __attribute((nonnull(1)));\n\n/**\n Creates a file with the specified content at the specified URL.\n \n If a file or directory already exists at `url`, it is at the server's discretion\n whether the operation succeeds by replacing the existing item, or fails.\n \n Only some protocols/servers support/respect applying attributes to a file as\n part of creating it. Indeed, some servers don't really support attributes at\n all! So any attributes you pass here might well go ignored. In practice, at\n present you should see something like this:\n \n - FTP:    Attributes are completely ignored\n - SFTP:   Only `NSFilePosixPermissions` is used; some servers choose to ignore it\n - WebDAV: Only `CK2FileMIMEType` is supported\n - file:   Attributes are ignored\n \n If you particularly care about setting attributes on a remote server, then a\n follow-up call to -setAttributes:… is needed.\n \n Protocol Quirks To Be Aware Of:\n \n FTP:\n Even though this is a \"write\" operation, it is still possible to get back `NSFileReadUnknownError`.\n FTP clients must traverse the directory hierarchy which can fail if the target directory turns out\n not to exist (and you haven't asked to create it), or the user has insufficient permissions to\n access it.\n \n WebDAV:\n Some servers out there choose to treat `createIntermediates` as if it's always YES.\n When asking to create intermediate directories, most WebDAV servers will require uploading the\n entire file data before finding out if directories actually do need to be created. For a large file,\n that could be quite a waste of time and bandwidth. In some applications it may be better to create\n the intermediate directories first, regardless of need, and then try the upload.\n \n @param url A URL that specifies the file to create. This parameter must not be nil.\n @param data A data object containing the contents of the new file.\n @param createIntermediates If YES, this method creates any non-existent parent directories as part of creating the file in url. If NO, this method should fail if any of the intermediate parent directories does not exist (see WebDAV caveat above).\n @param attributes to apply *only* if the server supports supplying them at creation time. See discussion for more details.\n @param progressBlock Called as each \"chunk\" of the file is written. In some cases, uploads have to be restarted from the beginning; the previousAttemptCount argument tells you how many times that has happened so far\n @param handler Called at the end of the operation. A non-nil error indicates failure.\n @return The new file operation.\n */\n- (CK2FileOperation *)createFileAtURL:(NSURL *)url contents:(NSData *)data withIntermediateDirectories:(BOOL)createIntermediates openingAttributes:(NSDictionary *)attributes progressBlock:(CK2ProgressBlock)progressBlock completionHandler:(void (^)(NSError *error))handler __attribute((nonnull(1,2)));\n\n- (CK2FileOperation *)createFileOperationWithURL:(NSURL *)url\n                                        fromData:(NSData *)data\n                     withIntermediateDirectories:(BOOL)createIntermediates\n                               openingAttributes:(NSDictionary *)attributes\n                               completionHandler:(void (^)(NSError *error))handler __attribute((nonnull(1,2)));\n\n/**\n Creates a file by copying the content of the specified URL.\n \n If a file or directory already exists at `destinationURL`, it is at the\n server's discretion whether the operation succeeds by replacing the existing\n item, or fails.\n \n Only some protocols/servers support/respect applying attributes to a file as\n part of creating it. Indeed, some servers don't really support attributes at\n all! So any attributes you pass here might well go ignored. In practice, at\n present you should see something like this:\n \n - FTP:    Attributes are completely ignored\n - SFTP:   Only `NSFilePosixPermissions` is used; some servers choose to ignore it\n - WebDAV: Only `CK2FileMIMEType` is supported\n - file:   Attributes are ignored\n \n If you particularly care about setting attributes on a remote server, then a\n follow-up call to -setAttributes:… is needed.\n \n It's up to the individual protocol implementation, but generally ConnectionKit\n will avoid loading the entire source file into memory at once.\n \n FTP:\n Even though this is a \"write\" operation, it is still possible to get back `NSFileReadUnknownError`.\n FTP clients must traverse the directory hierarchy which can fail if the target directory turns out\n not to exist (and you haven't asked to create it), or the user has insufficient permissions to\n access it.\n \n WebDAV:\n Some servers out there choose to treat `createIntermediates` as if it's always YES.\n When asking to create intermediate directories, most WebDAV servers will require uploading the\n entire file data before finding out if directories actually do need to be created. For a large file,\n that could be quite a waste of time and bandwidth. In some applications it may be better to create\n the intermediate directories first, regardless of need, and then try the upload.\n \n @param destinationURL A URL that specifies the file to create. This parameter must not be nil.\n @param sourceURL The file whose contents to use for creating the new file.\n @param createIntermediates If YES, this method creates any non-existent parent directories as part of creating the file in url. If NO, this method should fail if any of the intermediate parent directories does not exist (see WebDAV caveat above).\n @param attributes to apply *only* if the server supports supplying them at creation time. See discussion for more details.\n @param progressBlock Called as each \"chunk\" of the file is written. In some cases, uploads have to be restarted from the beginning; the previousAttemptCount argument tells you how many times that has happened so far\n @param handler Called at the end of the operation. A non-nil error indicates failure.\n @return The new file operation.\n */\n- (CK2FileOperation *)createFileAtURL:(NSURL *)destinationURL withContentsOfURL:(NSURL *)sourceURL withIntermediateDirectories:(BOOL)createIntermediates openingAttributes:(NSDictionary *)attributes progressBlock:(CK2ProgressBlock)progressBlock completionHandler:(void (^)(NSError *error))handler __attribute((nonnull(1,2)));\n\n- (CK2FileOperation *)createFileOperationWithURL:(NSURL *)destinationURL\n                                        fromFile:(NSURL *)sourceURL\n                     withIntermediateDirectories:(BOOL)createIntermediates\n                               openingAttributes:(NSDictionary *)attributes\n                               completionHandler:(void (^)(NSError *error))handler __attribute((nonnull(1,2)));\n\n\n#pragma mark Deleting Items\n\n/**\n Removes the item at the specified URL.\n \n The handling of files versus directories is heavily at the discretion of the\n protocol implementation at present:\n \n - file:   Like NSFileManager, cheerfully deletes files or directories,\n           including contents.\n - WebDAV: Provided the server adheres to the WebDAV spec, has the same\n           behaviour as local files.\n - SFTP:   If the URL has `NSURLIsDirectoryKey` set to `YES`, or a trailing\n           slash, is treated as a directory. Only empty directories can be\n           deleted though, so your code is responsible for making the directory\n           (and it's subdirectories) empty first. Otherwise, the URL is treated\n           as a file. As far as I am aware, SFTP servers are quite strict on the\n           difference between files and directories.\n - FTP:    The same as SFTP except there are definitely plenty of servers in the\n           wild which will delete empty directories when asked to delete a *file*\n           of that name. Even though this is a \"write\" operation, it is still\n           possible to get back something like `NSFileReadUnknownError`, as FTP\n           may require traversing the directory hierarchy which can fail if the\n           target directory turns out not to exist, or the user has insufficient\n           permissions to access it.\n \n @param url A file URL specifying the file or directory to remove.\n @param handler Called at the end of the operation. A non-nil error indicates failure.\n @return The new file operation.\n */\n- (CK2FileOperation *)removeItemAtURL:(NSURL *)url completionHandler:(void (^)(NSError *error))handler __attribute((nonnull(1)));\n\n- (CK2FileOperation *)removeOperationWithURL:(NSURL *)url completionHandler:(void (^)(NSError *error))handler __attribute((nonnull(1)));\n\n\n#pragma mark Moving Items\n/**\n Renames the item at the specified URL\n \n @param srcURL The file or directory to rename.\n @param newName The new name for the file. Note that some FTP servers seem to cope poorly with filenames containing a space, truncating at the first space character.\n @param handler Called at the end of the operation. A non-nil error indicates failure.\n @return The new file operation.\n */\n- (CK2FileOperation *)renameItemAtURL:(NSURL *)srcURL toFilename:(NSString *)newName completionHandler:(void (^)(NSError *error))handler;\n\n\n#pragma mark Getting and Setting Attributes\n\n/**\n Sets the attributes of the specified file or directory.\n \n Unsupported attributes are ignored. Failure is only considered to have occurred\n when an attribute appears to be supported by the server/protocol in use, but\n actually fails to set. In practice at present the supported attributes should\n be:\n \n - FTP:    Only NSFilePosixPermissions is supported, and not by all servers\n - SFTP:   Only NSFilePosixPermissions is supported\n - WebDAV: No attributes are supported\n - file:   Same attributes as NSFileManager supports\n \n Note: Even though this is a \"write\" operation, it is still possible to get back\n something like `NSFileReadUnknownError`. In particular, FTP must traverse the\n directory hierarchy which can fail if the target directory turns out not to\n exist, or the user has insufficient permissions to access it.\n \n @param keyedValues A dictionary containing as keys the attributes to set for path and as values the corresponding value for the attribute.\n @param url The URL of a file or directory.\n @param handler Called at the end of the operation. A non-nil error indicates failure.\n @return The new file operation.\n */\n- (CK2FileOperation *)setAttributesOperationWithURL:(NSURL *)url attributes:(NSDictionary *)keyedValues completionHandler:(void (^)(NSError *error))handler __attribute((nonnull(1,2)));\n\n// To retrieve attributes, instead perform a listing of the *parent* directory, and pick out resource properties from the returned URLs that you're interested in\n\n\n#pragma mark Delegate\n\n/**\n The file manager's delegate.\n \n Delegate methods are delivered on an arbitrary queue/thread.\n Changing delegate might mean you still receive messages shortly after the change. Not ideal I know!\n */\n@property(assign) id <CK2FileManagerDelegate> delegate;\n\n/**\n The operation queue provided when this object was created. (read-only)\n \n All delegate method calls and completion handlers are performed on this queue.\n */\n@property(readonly, retain) NSOperationQueue *delegateQueue;\n\n@end\n\n\n@interface CK2FileManager (URLs)\n\n/**\n Initializes and returns a newly created NSURL object by changing `baseURL` to the specified path.\n \n Some protocols differentiate between absolute paths, and those relative to the\n user's home directory. This method constructs URLs to accomodate that and the\n quirks of different protocols. Here are some example URLs:\n \n Protocol | `/absolute` path              | `relative` path\n -------- | ----------------------------- | -------------------------------\n HTTP     | `http://example.com/absolute` | `http://example.com/relative`\n FTP      | `ftp://example.com//absolute` | `ftp://example.com/relative`\n SSH      | `sftp://example.com/absolute` | `sftp://example.com/~/relative`\n \n There is a subtle bug in 10.6's handling of relative file URLs. This method\n stops it hitting you.\n \n @param path The path that the NSURL object will represent. If path is a relative path, it is treated as being relative to the user's home directory once connected to `baseURL`. Passing nil for this parameter produces an exception.\n @param isDir A Boolean value that specifies whether path is treated as a directory path when resolving against relative path components. Pass YES if the path indicates a directory, NO otherwise.\n @param baseURL A URL providing at least a scheme and host for the result to be based on. Any path as part of this URL is ignored.\n @return An NSURL object initialized with path. `nil` if `baseURL` proved unsuitable.\n*/\n+ (NSURL *)URLWithPath:(NSString *)path isDirectory:(BOOL)isDir hostURL:(NSURL *)baseURL __attribute((nonnull(1,3)));\n\n// NOTE: +URLWithPath:relativeToURL: tends to return relative URLs. You may well find it preferable to call -absoluteURL on the result in your app to keep things simple\n// I'm seriously considering removing this method as it tends not to be that useful in practice. +URLWithPath:isDirectory:hostURL: does exactly what it says on the tin\n+ (NSURL *)URLWithPath:(NSString *)path relativeToURL:(NSURL *)baseURL __attribute((nonnull(1,2)));\n\n/**\n Extracts the path component of a URL, accounting for the subtleties of FTP etc.\n \n Normally, paths in URLs are absolute. FTP and SSH-based protocols both have the\n concept of a \"home\" directory though. i.e. the working directory upon login.\n Thus, their URLs must distinguish between absolute and relative paths\n (the latter are interpreted relative to the home directory). This method makes\n that same distinction to return an absolute or relative path, as interpreted\n by the specific protocol. Some examples:\n \n ftp://example.com/relative      =>  relative\n ftp://example.com//absolute     =>  /absolute\n sftp://example.com/absolute     =>  /absolute\n sftp://example.com/~/relative   =>  relative\n \n \n\n @param URL to extract the path from. \n @return the URL's path. If the path has a trailing slash it is stripped.\n */\n+ (NSString *)pathOfURL:(NSURL *)URL;\n\n/**\n Equivalent of CFURLSetTemporaryResourcePropertyForKey() that supports non-file URLs\n \n Calls through to Core Foundation for file URLs, but provides its own storage for others\n When first used for a non-file URL, -[NSURL getResourceValue:forKey:error:] is swizzled so the value can be easily retreived by clients later\n This method is primarily used by non-file protocols to populate URLs returned during a directory listing. But it could be helpful to clients for adding in other info\n CRITICAL: keys are tested using POINTER equality for non-file URLs, so you must pass in a CONSTANT\n \n @param value to cache. Retained\n @param key to store under. Any existing value is overwritten\n @param url to cache for\n */\n+ (void)setTemporaryResourceValue:(id)value forKey:(NSString *)key inURL:(NSURL *)url __attribute((nonnull(2,3)));\n\n@end\n\n\n/**\n * Disposition options for auth challenge delegate message\n */\ntypedef NS_ENUM(NSInteger, CK2AuthChallengeDisposition) {\n    CK2AuthChallengeUseCredential = 0,                     /* Use the specified credential, which may be `nil` */\n    CK2AuthChallengePerformDefaultHandling = 1,            /* Default handling for the challenge - as if this delegate were not implemented; the credential parameter is ignored. */\n    CK2AuthChallengeCancelAuthenticationChallenge = 2,     /* The entire request will be canceled; the credential parameter is ignored. */\n    CK2AuthChallengeRejectProtectionSpace = 3,             /* This challenge is rejected and the next authentication protection space should be tried;the credential parameter is ignored. */\n};\n\n\n@protocol CK2FileManagerDelegate <NSObject>\n@optional\n\n/**\n EXPERIMENTAL\n \n Gives the delegate a chance to customise requests for those protocols which use\n them (currently WebDAV only)\n */\n- (void)fileManager:(CK2FileManager *)manager operation:(CK2FileOperation *)operation\n                                        willSendRequest:(NSURLRequest *)request\n                                       redirectResponse:(NSURLResponse *)response\n                                      completionHandler:(void (^)(NSURLRequest *))completionHandler;\n\n/**\n The task has received an authentication challenge.\n \n If this delegate is not implemented, the behavior will be the same as using the\n default handling disposition.\n */\n- (void)fileManager:(CK2FileManager *)manager operation:(CK2FileOperation *)operation\n                                    didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge\n                                      completionHandler:(void (^)(CK2AuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler;\n\n/**\n * Sent periodically to notify the delegate of upload progress. This\n * information is also available as properties of the operation.\n */\n- (void)fileManager:(CK2FileManager *)manager operation:(CK2FileOperation *)operation\n                                       didWriteBodyData:(int64_t)bytesSent\n                                      totalBytesWritten:(int64_t)totalBytesSent\n                              totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToSend;\n\n\ntypedef NS_ENUM(NSUInteger, CK2TranscriptType) {\n\tCK2TranscriptText,\n\tCK2TranscriptHeaderIn,\n\tCK2TranscriptHeaderOut,\n};    // deliberately aligned with curl_infotype for convenience\n\n/**\n Reports received transcript info.\n \n @param manager The file manager.\n @param info The received transcript line(s). Should end in a newline character.\n @param transcript The type of transcript received.\n */\n- (void)fileManager:(CK2FileManager *)manager appendString:(NSString *)info toTranscript:(CK2TranscriptType)transcript;\n\n/**\n * Sent as the last message related to a specific operation. Error may be\n * `nil`, which implies that no error occurred and this operation is finished.\n */\n- (void)fileManager:(CK2FileManager *)manager operation:(CK2FileOperation *)operation\n                                   didCompleteWithError:(NSError *)error;\n\n- (void)fileManager:(CK2FileManager *)manager didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge __attribute((deprecated(\"implement -fileManager:operation:didReceiveChallenge:completionHandler: instead\")));\n\n@end\n\n\n@interface CK2FileManager (Deprecated)\n\n- (void)cancelOperation:(CK2FileOperation *)operation __attribute((nonnull(1), deprecated(\"Use -[CK2FileOperation cancel] instead\")));\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2FileManager.m",
    "content": "//\n//  CK2FileManager\n//  Connection\n//\n//  Created by Mike on 08/10/2012.\n//\n//\n\n#import \"CK2FileManager.h\"\n#import \"CK2FileOperation.h\"\n#import \"CK2Protocol.h\"\n\n#import <objc/runtime.h>\n\n\nNSString * const CK2FileMIMEType = @\"CK2FileMIMEType\";\n\n\n#pragma mark -\n\n\n@interface CK2FileOperation (Private) <CK2ProtocolClient>\n\n- (id)initEnumerationOperationWithURL:(NSURL *)url\n           includingPropertiesForKeys:(NSArray *)keys\n                              options:(NSDirectoryEnumerationOptions)mask\n                              manager:(CK2FileManager *)manager\n                     enumerationBlock:(void (^)(NSURL *))enumBlock\n                      completionBlock:(void (^)(NSError *))block;\n\n- (id)initDirectoryCreationOperationWithURL:(NSURL *)url\n                withIntermediateDirectories:(BOOL)createIntermediates\n                          openingAttributes:(NSDictionary *)attributes\n                                    manager:(CK2FileManager *)manager\n                            completionBlock:(void (^)(NSError *))block;\n\n- (id)initFileCreationOperationWithURL:(NSURL *)url\n                                  data:(NSData *)data\n           withIntermediateDirectories:(BOOL)createIntermediates\n                     openingAttributes:(NSDictionary *)attributes\n                               manager:(CK2FileManager *)manager\n                         progressBlock:(CK2ProgressBlock)progressBlock\n                       completionBlock:(void (^)(NSError *))block;\n\n- (id)initFileCreationOperationWithURL:(NSURL *)remoteURL\n                                  file:(NSURL *)localURL\n           withIntermediateDirectories:(BOOL)createIntermediates\n                     openingAttributes:(NSDictionary *)attributes\n                               manager:(CK2FileManager *)manager\n                         progressBlock:(CK2ProgressBlock)progressBlock\n                       completionBlock:(void (^)(NSError *))block;\n\n- (id)initRemovalOperationWithURL:(NSURL *)url\n                          manager:(CK2FileManager *)manager\n                  completionBlock:(void (^)(NSError *))block;\n\n- (id)initRenameOperationWithSourceURL:(NSURL *)srcURL\n                               newName:(NSString *)newName\n                               manager:(CK2FileManager *)manager\n                       completionBlock:(void (^)(NSError *))block;\n\n- (id)initResourceValueSettingOperationWithURL:(NSURL *)url\n                                        values:(NSDictionary *)keyedValues\n                                       manager:(CK2FileManager *)manager\n                               completionBlock:(void (^)(NSError *))block;\n\n@end\n\n\n@interface CK2Protocol (Internals)\n+ (Class)classForURL:(NSURL *)url;    // only suitable for stateless calls to the protocol class\n@end\n\n\n#pragma mark -\n\n\nNSString * const CK2URLSymbolicLinkDestinationKey = @\"CK2URLSymbolicLinkDestination\";\n\n@interface CK2FileManager()\n- (Class)classForOperation;\n@end\n\n@implementation CK2FileManager\n\n#pragma mark Creating a File Manager\n\n+ (CK2FileManager *)fileManagerWithDelegate:(id <CK2FileManagerDelegate>)delegate delegateQueue:(NSOperationQueue *)queue;\n{\n    return [[[self alloc] initWithDelegate:delegate delegateQueue:queue] autorelease];\n}\n\n- initWithDelegate:(id <CK2FileManagerDelegate>)delegate delegateQueue:(NSOperationQueue *)queue;\n{\n    if (self = [super init])\n    {\n        // Create our own serial queue if needed\n        _delegateQueue = [queue retain];\n        if (!_delegateQueue)\n        {\n            _delegateQueue = [[NSOperationQueue alloc] init];\n            _delegateQueue.maxConcurrentOperationCount = 1;\n        }\n        \n        self.delegate = delegate;\n    }\n    \n    return self;\n}\n\n- init;\n{\n    return [self initWithDelegate:nil delegateQueue:nil];\n}\n\n- (void)dealloc {\n    [_delegateQueue release];\n    \n    [super dealloc];\n}\n\n#pragma mark Discovering Directory Contents\n\n- (CK2FileOperation *)contentsOfDirectoryAtURL:(NSURL *)url\n      includingPropertiesForKeys:(NSArray *)keys\n                         options:(NSUInteger)mask\n               completionHandler:(void (^)(NSArray *, NSError *))block;\n{\n    NSMutableArray *contents = [[NSMutableArray alloc] init];\n    \n    CK2FileOperation * result = [self enumerateContentsOfURL:url includingPropertiesForKeys:keys options:(mask|NSDirectoryEnumerationSkipsSubdirectoryDescendants) usingBlock:^(NSURL *aURL) {\n        \n        [contents addObject:aURL];\n        \n    } completionHandler:^(NSError *error) {\n        \n        block((error ? nil : contents), // don't confuse clients should we have recieved only a partial listing\n              error);\n        \n        [contents release];\n    }];\n    \n    return result;\n}\n\n- (CK2FileOperation *)enumerateContentsOfURL:(NSURL *)url includingPropertiesForKeys:(NSArray *)keys options:(NSUInteger)mask usingBlock:(void (^)(NSURL *))block completionHandler:(void (^)(NSError *))completionBlock;\n{\n    NSParameterAssert(url);\n    \n    CK2FileOperation *operation = [[[self classForOperation] alloc] initEnumerationOperationWithURL:url\n                                                                 includingPropertiesForKeys:keys\n                                                                                    options:mask\n                                                                                    manager:self\n                                                                           enumerationBlock:block\n                                                                            completionBlock:completionBlock];\n    \n    [operation resume];\n    return [operation autorelease];\n}\n\n#pragma mark Creating and Deleting Items\n\n- (CK2FileOperation *)createDirectoryAtURL:(NSURL *)url withIntermediateDirectories:(BOOL)createIntermediates openingAttributes:(NSDictionary *)attributes completionHandler:(void (^)(NSError *error))handler;\n{\n    NSParameterAssert(url);\n    \n    CK2FileOperation *operation = [[[self classForOperation] alloc] initDirectoryCreationOperationWithURL:url\n                                                                      withIntermediateDirectories:createIntermediates\n                                                                                openingAttributes:attributes\n                                                                                          manager:self\n                                                                                  completionBlock:handler];\n    \n    [operation resume];\n    return [operation autorelease];\n}\n\n- (CK2FileOperation *)createFileAtURL:(NSURL *)url contents:(NSData *)data withIntermediateDirectories:(BOOL)createIntermediates openingAttributes:(NSDictionary *)attributes progressBlock:(CK2ProgressBlock)progressBlock completionHandler:(void (^)(NSError *error))handler;\n{\n    CK2FileOperation *result = [self createFileOperationWithURL:url\n                                                       fromData:data\n                                    withIntermediateDirectories:createIntermediates\n                                              openingAttributes:attributes\n                                                  progressBlock:progressBlock\n                                              completionHandler:handler];\n    \n    [result resume];\n    return result;\n}\n\n- (CK2FileOperation *)createFileOperationWithURL:(NSURL *)url fromData:(NSData *)data withIntermediateDirectories:(BOOL)createIntermediates openingAttributes:(NSDictionary *)attributes completionHandler:(void (^)(NSError *error))handler;\n{\n    return [self createFileOperationWithURL:url\n                                   fromData:data\n                withIntermediateDirectories:createIntermediates\n                          openingAttributes:attributes\n                              progressBlock:NULL\n                          completionHandler:handler];\n}\n\n- (CK2FileOperation *)createFileOperationWithURL:(NSURL *)url fromData:(NSData *)data withIntermediateDirectories:(BOOL)createIntermediates openingAttributes:(NSDictionary *)attributes progressBlock:(CK2ProgressBlock)progressBlock completionHandler:(void (^)(NSError *))handler;\n{\n    CK2FileOperation *result = [[[self classForOperation] alloc] initFileCreationOperationWithURL:url\n                                                                                             data:data\n                                                                      withIntermediateDirectories:createIntermediates\n                                                                                openingAttributes:attributes\n                                                                                          manager:self\n                                                                                    progressBlock:progressBlock\n                                                                                  completionBlock:handler];\n    \n    return [result autorelease];\n}\n\n- (CK2FileOperation *)createFileAtURL:(NSURL *)destinationURL withContentsOfURL:(NSURL *)sourceURL withIntermediateDirectories:(BOOL)createIntermediates openingAttributes:(NSDictionary *)attributes progressBlock:(CK2ProgressBlock)progressBlock completionHandler:(void (^)(NSError *error))handler;\n{\n    CK2FileOperation *result = [self createFileOperationWithURL:destinationURL\n                                                       fromFile:sourceURL\n                                    withIntermediateDirectories:createIntermediates\n                                              openingAttributes:attributes\n                                                  progressBlock:progressBlock\n                                              completionHandler:handler];\n    \n    [result resume];\n    return result;\n}\n\n- (CK2FileOperation *)createFileOperationWithURL:(NSURL *)destinationURL fromFile:(NSURL *)sourceURL withIntermediateDirectories:(BOOL)createIntermediates openingAttributes:(NSDictionary *)attributes completionHandler:(void (^)(NSError *error))handler;\n{\n    __block CK2FileOperation *result = [self createFileOperationWithURL:destinationURL\n                                                               fromFile:sourceURL\n                                            withIntermediateDirectories:createIntermediates\n                                                      openingAttributes:attributes\n                                                          progressBlock:^(int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToSend) {\n                                                              \n                                                              id <CK2FileManagerDelegate> delegate = self.delegate;\n                                                              if ([delegate respondsToSelector:@selector(fileManager:operation:didWriteBodyData:totalBytesWritten:totalBytesExpectedToWrite:)])\n                                                              {\n                                                                  [delegate fileManager:self\n                                                                              operation:result\n                                                                       didWriteBodyData:bytesWritten\n                                                                      totalBytesWritten:totalBytesWritten\n                                                              totalBytesExpectedToWrite:totalBytesExpectedToSend];\n                                                              }\n                                                          }\n                                                      completionHandler:handler];\n    return result;\n}\n\n- (CK2FileOperation *)createFileOperationWithURL:(NSURL *)destinationURL fromFile:(NSURL *)sourceURL withIntermediateDirectories:(BOOL)createIntermediates openingAttributes:(NSDictionary *)attributes progressBlock:(CK2ProgressBlock)progressBlock completionHandler:(void (^)(NSError *error))handler;\n{\n    CK2FileOperation *operation = [[[self classForOperation] alloc] initFileCreationOperationWithURL:destinationURL\n                                                                                        file:sourceURL\n                                                                 withIntermediateDirectories:createIntermediates\n                                                                           openingAttributes:attributes\n                                                                                     manager:self\n                                                                               progressBlock:progressBlock\n                                                                             completionBlock:handler];\n    \n    return [operation autorelease];\n}\n\n- (CK2FileOperation *)removeItemAtURL:(NSURL *)url completionHandler:(void (^)(NSError *error))handler;\n{\n    CK2FileOperation *operation = [self removeOperationWithURL:url completionHandler:handler];\n    [operation resume];\n    return operation;\n}\n\n- (CK2FileOperation *)removeOperationWithURL:(NSURL *)url completionHandler:(void (^)(NSError *))handler;\n{\n    CK2FileOperation *operation = [[[self classForOperation] alloc] initRemovalOperationWithURL:url manager:self completionBlock:handler];\n    return [operation autorelease];\n}\n\n#pragma mark Renaming Items\n\n- (CK2FileOperation *)renameItemAtURL:(NSURL *)srcURL toFilename:(NSString *)newName completionHandler:(void (^)(NSError *))handler\n{\n    CK2FileOperation *operation = [[[self classForOperation] alloc] initRenameOperationWithSourceURL:srcURL\n                                                                                    newName:newName\n                                                                                           manager:self\n                                                                                   completionBlock:handler];\n    \n    [operation resume];\n    return [operation autorelease];\n}\n\n#pragma mark Getting and Setting Attributes\n\n- (CK2FileOperation *)setAttributesOperationWithURL:(NSURL *)url attributes:(NSDictionary *)keyedValues completionHandler:(void (^)(NSError *))handler {\n    NSParameterAssert(url);\n    NSParameterAssert(keyedValues);\n    \n    CK2FileOperation *operation = [[[self classForOperation] alloc] initResourceValueSettingOperationWithURL:url\n                                                                                              values:keyedValues\n                                                                                             manager:self\n                                                                                     completionBlock:handler];\n    \n    return [operation autorelease];\n}\n\n#pragma mark Delegate\n\n@synthesize delegate = _delegate;\n@synthesize delegateQueue = _delegateQueue;\n\n#pragma mark Operations\n\n- (Class)classForOperation\n{\n    return [CK2FileOperation class];\n}\n\n- (void)cancelOperation:(CK2FileOperation *)operation;\n{\n    [operation cancel];\n}\n\n@end\n\n\n@implementation CK2FileManager (URLs)\n\n#pragma mark URLs\n\n+ (NSURL *)URLWithPath:(NSString *)path isDirectory:(BOOL)isDir hostURL:(NSURL *)baseURL;\n{\n    NSParameterAssert(path);\n    NSParameterAssert(baseURL);\n    \n    \n    // Make a directory if demanded\n    if (isDir && ![path hasSuffix:@\"/\"] && path.length)\n    {\n        path = [path stringByAppendingString:@\"/\"];\n    }\n    \n    // Strip down to just host URL\n    CFIndex length = CFURLGetBytes((CFURLRef)baseURL, NULL, 0);\n    CFRange pathRange = CFURLGetByteRangeForComponent((CFURLRef)baseURL, kCFURLComponentPath, NULL);\n    \n    if (pathRange.location != kCFNotFound &&\n        pathRange.location < length)\n    {\n        NSMutableData *data = [[NSMutableData alloc] initWithLength:pathRange.location];\n        CFURLGetBytes((CFURLRef)baseURL, data.mutableBytes, pathRange.location);\n        \n        NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];\n        baseURL = [NSURL URLWithString:string];\n        \n        [string release];\n        [data release];\n    }\n    \n    NSURL *result = [self URLWithPath:path relativeToURL:baseURL].absoluteURL;\n    \n    // Make sure is a directory if requested\n    if (isDir) NSAssert(CFURLHasDirectoryPath((CFURLRef)result), @\"Not a directory: %@\", result);\n    \n    return result;\n}\n\n+ (NSURL *)URLWithPath:(NSString *)path relativeToURL:(NSURL *)baseURL;\n{\n    Class protocolClass = [CK2Protocol classForURL:baseURL];\n    if (!protocolClass)\n    {\n        protocolClass = [CK2Protocol class];\n        if ([path isAbsolutePath])\n        {\n            // On 10.6, file URLs sometimes behave strangely when combined with an absolute path. Force it to be resolved\n            if ([baseURL isFileURL]) [baseURL absoluteString];\n        }\n    }\n    return [protocolClass URLWithPath:path relativeToURL:baseURL];\n}\n\n+ (NSString *)pathOfURL:(NSURL *)URL;\n{\n    Class protocolClass = [CK2Protocol classForURL:URL];\n    if (!protocolClass) protocolClass = [CK2Protocol class];\n    NSString *result = [protocolClass pathOfURLRelativeToHomeDirectory:URL];\n    \n    // Forcefully strip trailing slashes\n    NSUInteger length = result.length;\n    if (length >= 2) // ignore leading slash\n    {\n        NSRange searchRange = NSMakeRange(1, length - 1);   // ignore leading slash\n        \n        do\n        {\n            NSRange trailingSlashRange = [result rangeOfString:@\"/\"\n                                                       options:NSBackwardsSearch|NSAnchoredSearch\n                                                         range:searchRange];\n            \n            if (trailingSlashRange.location == NSNotFound) break;\n            \n            result = [result substringToIndex:trailingSlashRange.location];\n            searchRange.length -= trailingSlashRange.length;\n        }\n        while (searchRange.length);\n    }\n    \n    return result;\n}\n\n+ (void)setTemporaryResourceValue:(id)value forKey:(NSString *)key inURL:(NSURL *)url;\n{\n    // File URLs are already handled by the system\n    // Ideally, would use CFURLSetTemporaryResourcePropertyForKey() first for all URLs as a test, but on 10.7.5 at least, it crashes with non-file URLs\n    if ([url isFileURL])\n    {\n        CFURLSetTemporaryResourcePropertyForKey((CFURLRef)value, (CFStringRef)key, value);\n    }\n    else\n    {\n        [self setTemporaryResourceValueForKey:key inURL:url asBlock:^id{\n            return value;\n        }];\n    }\n}\n\n// The block is responsible for returning the value on-demand\n+ (void)setTemporaryResourceValueForKey:(NSString *)key inURL:(NSURL *)url asBlock:(id (^)(void))block;\n{\n    // Store the block as an associated object\n    objc_setAssociatedObject(url, key, block, OBJC_ASSOCIATION_COPY);\n    \n    \n    // Swizzle so getter method includes cache in its search\n    static dispatch_once_t onceToken;\n    dispatch_once(&onceToken, ^{\n        \n        Class class = NSURL.class;\n        Method originalMethod = class_getInstanceMethod(class, @selector(getResourceValue:forKey:error:));\n        Method overrideMethod = class_getInstanceMethod(class, @selector(ck2_getResourceValue:forKey:error:));\n        method_exchangeImplementations(originalMethod, overrideMethod);\n    });\n}\n\n/*!\n @method         canHandleURL:\n \n @abstract\n Performs a \"preflight\" operation that performs some speculative checks to see if a URL has a suitable protocol registered to handle it.\n \n @discussion\n The result of this method is valid only as long as no protocols are registered or unregistered, and as long as the request is not mutated (if the request is mutable). Hence, clients should be prepared to handle failures even if they have performed request preflighting by calling this method.\n \n @param\n url     The URL to preflight.\n \n @result\n YES         if it is likely that the given request can be used to\n perform a file operation and the associated I/O can be\n started\n */\n+ (BOOL)canHandleURL:(NSURL *)url;\n{\n    return ([CK2Protocol classForURL:url] != nil);\n}\n\n@end\n\n\n#pragma mark -\n\n\n@implementation NSURL (CK2TemporaryResourceProperties)\n\n#pragma mark Getting and Setting File System Resource Properties\n\n- (BOOL)ck2_getResourceValue:(out id *)value forKey:(NSString *)key error:(out NSError **)error;\n{\n    // Special case, as for the setter method\n    if ([self isFileURL])\n    {\n        return [self ck2_getResourceValue:value forKey:key error:error];    // calls the original implementation\n    }\n    \n    \n    // See if key has been cached\n    id (^block)(void) = objc_getAssociatedObject(self, key);\n    \n    if (block)\n    {\n        *value = block();\n        return YES;\n    }\n    \n    \n    // A few special keys we generate on-demand pretty much by guessing since the server isn't up to providing that sort of info\n        if ([key isEqualToString:NSURLHasHiddenExtensionKey])\n        {\n            *value = [NSNumber numberWithBool:NO];\n            return YES;\n        }\n        else if ([key isEqualToString:NSURLLocalizedNameKey])\n        {\n            *value = [self lastPathComponent];\n            return YES;\n        }\n        \n        // Have to define NSURLPathKey as a macro for older releases:\n#if (!defined MAC_OS_X_VERSION_10_8) || MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_8\n#define NSURLPathKey @\"_NSURLPathKey\"\n#endif\n        else if ([key isEqualToString:NSURLPathKey])\n        {\n            *value = [CK2FileManager pathOfURL:self];\n            return YES;\n        }\n#undef NSURLPathKey\n        \n        else if ([key isEqualToString:NSURLIsPackageKey])\n        {\n            NSString        *extension;\n            \n            *value = @NO;\n            extension = [self pathExtension];\n            \n            if ([extension length] > 0)\n            {\n                NSArray         *baseUTIs;\n                \n                baseUTIs = (NSArray *)UTTypeCreateAllIdentifiersForTag(kUTTagClassFilenameExtension, (CFStringRef)extension, NULL);\n\n                for (NSString *uti in baseUTIs)\n                {\n                    if (UTTypeConformsTo((CFStringRef)uti, CFSTR(\"com.apple.package\")))\n                    {\n                        *value = @YES;\n                        break;\n                    }\n                }\n                \n                [baseUTIs release];\n            }\n            \n            return YES;\n        }\n        else\n        {\n            return [self ck2_getResourceValue:value forKey:key error:error];    // calls the original implementation\n        }\n    \n    return YES;\n}\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2FileManagerWithTestSupport.h",
    "content": "//\n//  Created by Sam Deane on 27/03/2013.\n//  Copyright (c) 2013 Karelia Software. All rights reserved.\n\n#import \"CK2FileManager.h\"\n\n@class CURLTransferStack;\n\n/**\n CK2FileManager with some additional API for test purposes.\n */\n\n@interface CK2FileManagerWithTestSupport : CK2FileManager\n{\n    BOOL _dontShareConnections;\n    CURLTransferStack* _multi;\n}\n\n/**\n An alternative CURLMultiHandle to use instead of the default one.\n This is generated on demand, if dontShareConnections is set.\n */\n\n@property (strong, readonly, nonatomic) CURLTransferStack* multi;\n\n/**\n Set this property to force CURL based protocols use an alternative CURLTransfer instead of the default one\n */\n\n@property (assign, nonatomic) BOOL dontShareConnections;\n\n@end\n\n@interface NSURLRequest(CK2FileManagerDebugging)\n- (CURLTransferStack*)ck2_multi;\n@end\n\n@interface NSMutableURLRequest(CK2FileManagerDebugging)\n- (void)ck2_setMulti:(CURLTransferStack*)multi;\n@end\n\n"
  },
  {
    "path": "ConnectionKit/CK2FileManagerWithTestSupport.m",
    "content": "//\n//  Created by Sam Deane on 27/03/2013.\n//  Copyright (c) 2013 Karelia Software. All rights reserved.\n\n#import \"CK2FileManagerWithTestSupport.h\"\n#import \"CK2FileOperationWithTestSupport.h\"\n\n#import <CURLHandle/CURLHandle.h>\n\n\n@interface CURLTransfer (Testing)\n+ (void)cleanupStandaloneMulti:(CURLTransferStack *)multi;\n+ (CURLTransferStack *)standaloneMultiForTestPurposes;\n@end\n\n\n@implementation CK2FileManagerWithTestSupport\n\n@synthesize dontShareConnections = _dontShareConnections;\n@synthesize multi = _multi;\n\n- (void)dealloc\n{\n    [CURLTransfer cleanupStandaloneMulti:_multi];\n    [_multi release];\n\n    [super dealloc];\n}\n\n- (Class)classForOperation\n{\n    return [CK2FileOperationWithTestSupport class];\n}\n\n- (CURLTransferStack*)multi\n{\n    if (_dontShareConnections && !_multi)\n    {\n        _multi = [[CURLTransfer standaloneMultiForTestPurposes] retain];\n    }\n\n    return _dontShareConnections ? _multi : nil;\n}\n\n@end\n\n@implementation NSURLRequest(CK2FileManagerDebugging)\n\n- (CURLTransferStack*)ck2_multi\n{\n    return [NSURLProtocol propertyForKey:@\"ck2_multi\" inRequest:self];\n}\n\n@end\n@implementation NSMutableURLRequest(CK2FileManagerDebugging)\n\n- (void)ck2_setMulti:(CURLTransferStack*)multi\n{\n    [NSURLProtocol setProperty:multi forKey:@\"ck2_multi\" inRequest:self];\n}\n\n\n@end\n\n"
  },
  {
    "path": "ConnectionKit/CK2FileOperation.h",
    "content": "//\n//  CK2FileOperation.h\n//  Connection\n//\n//  Created by Mike on 22/03/2013.\n//\n//\n\n#import \"CK2FileManager.h\"\n\n@class CK2Protocol;\n\n\ntypedef NS_ENUM(NSInteger, CK2FileOperationState) {\n    CK2FileOperationStateRunning = 0,                     /* The operation is currently being serviced by the file manager */\n    CK2FileOperationStateSuspended = 1,                   /* The operation is yet to start. */\n    CK2FileOperationStateCanceling = 2,                   /* The operation has been told to cancel and will complete shortly. */\n    CK2FileOperationStateCompleted = 3,                   /* The operation has completed and the file manager will receive no more delegate notifications */\n};\n\n\n@class CK2FileOperationCallbacks;\n\n/**\n All @properties are KVO-compliant.\n*/\n@interface CK2FileOperation : NSObject <NSCopying>  // retains self when copying\n{\n  @private\n    CK2FileManager  *_manager;\n    NSURL           *_originalURL;\n    NSString        *_descriptionForErrors;\n    dispatch_queue_t    _queue;\n    \n    CK2Protocol *_protocol;\n    CK2FileOperationCallbacks   *_callbacks;\n    \n    void    (^_completionBlock)(NSError *);\n    void    (^_enumerationBlock)(NSURL *);\n    NSURL   *_localURL;\n    \n    int64_t _bytesWritten;\n    int64_t _bytesExpectedToWrite;\n    CK2ProgressBlock    _progressBlock;\n    \n    // Temporary hack which gets us to fire off extra directory creating requests should the main op fail\n    BOOL    _createIntermediateDirectories;\n    \n    CK2FileOperationState   _state;\n    NSError                 *_error;\n}\n\n/**\n @return a deep copy of the original connection request.\n \n You can think of this as the \"primary\" URL for a given operation. Normally this is fairly obvious:\n if uploading, it's the URL being uploaded to. When we come to support downloads, it's the URL being\n downloaded from.\n \n This can potentially get a bit tricky doing something like renaming/moving a file; in which case,\n this URL will be that of the _source_ file.\n \n ConnectionKit doesn't currently support redirects, but were it to, this URL would remain constant\n and we'd likely introduce a new `currentURL` property for retrieving the redirected URL if need be.\n */\n@property (readonly, copy) NSURL *originalURL;\n\n/**\n * Number of body bytes already written.\n *\n * Excludes any headers, such as in HTTP messages, or FTP control connection.\n */\n@property (readonly) int64_t countOfBytesWritten;\n\n/**\n * Number of body bytes we expect to write.\n *\n * Excludes any headers, such as in HTTP messages, or FTP control connection.\n */\n@property (readonly) int64_t countOfBytesExpectedToWrite;\n\n/**\n * `-cancel` returns immediately, but marks an operation as being canceled.\n * The operation will signal its completion handler with an\n * error value of `{ NSURLErrorDomain, NSURLErrorCancelled }`.  In some\n * cases, the operation may signal other work before it acknowledges the\n * cancelation.\n */\n- (void)cancel;\n\n/**\n * The current state of the operation.\n */\n@property (readonly) CK2FileOperationState state;\n\n/**\n * The error, if any. Also delivered to completion handler.\n * This property will be `nil` in the event that no error occured.\n */\n@property (readonly, copy) NSError *error;\n\n/**\n Sets an operation going if it hasn't already.\n */\n- (void)resume;\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2FileOperation.m",
    "content": "//\n//  CK2FileOperation.m\n//  Connection\n//\n//  Created by Mike on 22/03/2013.\n//\n//\n\n#import \"CK2FileOperation.h\"\n#import \"CK2Protocol.h\"\n\n#import <AppKit/AppKit.h>   // so icon handling can use NSImage and NSWorkspace for now\n\n\n@interface CK2FileOperationCallbacks : NSObject {\n    \n    CK2Protocol *(^_protocolCreator)(CK2FileOperation *fileOp, Class protocolClass);\n}\n\n/**\n @param protocolCreator The block is passed the file operation it applies to — so don't wind up with\n a retain cycle — and the class of the protocol to be created.\n */\n+ (instancetype)callbacksWithProtocolCreator:(CK2Protocol *(^)(CK2FileOperation *fileOp, Class protocolClass))protocolCreator;\n\n- (CK2Protocol *)createProtocolForFileOperation:(CK2FileOperation *)fileOp class:(Class)protocolClass NS_RETURNS_RETAINED;\n\n@end\n\n\n#pragma mark -\n\n\n@interface CK2FileOperation () <CK2ProtocolClient>\n\n- (id)initWithURL:(NSURL *)url\n errorDescription:(NSString *)errorDescription\n          manager:(CK2FileManager *)manager\ncompletionHandler:(void (^)(NSError *))completionBlock\ncallbacks:(CK2FileOperationCallbacks *)callbacks NS_DESIGNATED_INITIALIZER;\n\n@property(readonly) CK2FileManager *fileManager;    // goes to nil once finished/failed\n@property (readwrite) int64_t countOfBytesWritten;\n@property (readwrite) int64_t countOfBytesExpectedToWrite;\n@property(readwrite) CK2FileOperationState state;\n@property (readwrite, copy) NSError *error;\n@end\n\n\n#pragma mark -\n\n\n@interface CK2Protocol (Internals)\n// Completion block is guaranteed to be called on our private serial queue\n+ (void)classForURL:(NSURL *)url completionHandler:(void (^)(Class protocolClass))block;\n@end\n\n\n@interface CK2FileManager (Internals)\n+ (void)setTemporaryResourceValueForKey:(NSString *)key inURL:(NSURL *)url asBlock:(id (^)(void))block;\n@end\n\n\n#pragma mark -\n\n\n@implementation CK2FileOperation\n\n#pragma mark Lifecycle\n\n- (id)initWithURL:(NSURL *)url\n errorDescription:(NSString *)errorDescription\n          manager:(CK2FileManager *)manager\ncompletionHandler:(void (^)(NSError *))completionBlock\ncallbacks:(CK2FileOperationCallbacks *)callbacks;\n{\n    NSParameterAssert(url);\n    NSParameterAssert(manager);\n    \n    if (self = [super init])\n    {\n        _state = CK2FileOperationStateSuspended;\n        _manager = [manager retain];\n        _originalURL = [url copy];\n        _descriptionForErrors = [errorDescription copy];\n        \n        if (!completionBlock)\n        {\n            completionBlock = ^(NSError *error) {\n                id <CK2FileManagerDelegate> delegate = manager.delegate;\n                if ([delegate respondsToSelector:@selector(fileManager:operation:didCompleteWithError:)])\n                {\n                    [delegate fileManager:manager operation:self didCompleteWithError:error];\n                }\n            };\n        }\n        _completionBlock = [completionBlock copy];\n        \n        _callbacks = [callbacks retain];\n        _queue = dispatch_queue_create(\"com.karelia.connection.file-operation\", NULL);\n    }\n    \n    return self;\n}\n\n- (id)initEnumerationOperationWithURL:(NSURL *)url\n           includingPropertiesForKeys:(NSArray *)keys\n                              options:(NSDirectoryEnumerationOptions)mask\n                              manager:(CK2FileManager *)manager\n                     enumerationBlock:(void (^)(NSURL *))enumBlock\n                      completionBlock:(void (^)(NSError *))block;\n{\n    NSString *name = url.lastPathComponent;\n    \n    NSString *description;\n    if (name.length)\n    {\n        description = [NSString stringWithFormat:NSLocalizedString(@\"The folder “%@” could not be accessed.\", \"error descrption\"),\n                       url.lastPathComponent];\n    }\n    else\n    {\n        description = NSLocalizedString(@\"The server could not be accessed.\", \"error description\");\n    }\n    \n    CK2FileOperationCallbacks *callbacks = [CK2FileOperationCallbacks callbacksWithProtocolCreator:^CK2Protocol *(CK2FileOperation *fileOp, Class protocolClass) {\n        \n        // If we try to do this outside the block there's a risk the protocol object will be created *before* the enum block has been stored, which ends real badly\n        fileOp->_enumerationBlock = [enumBlock copy];\n        \n        return [[protocolClass alloc] initForEnumeratingDirectoryWithRequest:[fileOp requestWithURL:url]\n                                                  includingPropertiesForKeys:keys\n                                                                     options:mask\n                                                                      client:fileOp];\n    }];\n    \n    return [self initWithURL:url errorDescription:description manager:manager completionHandler:block callbacks:callbacks];\n}\n\n- (id)initDirectoryCreationOperationWithURL:(NSURL *)url\n                withIntermediateDirectories:(BOOL)createIntermediates\n                          openingAttributes:(NSDictionary *)attributes\n                                    manager:(CK2FileManager *)manager\n                            completionBlock:(void (^)(NSError *))block;\n{\n    NSString *description = [NSString stringWithFormat:NSLocalizedString(@\"The folder “%@” could not be created.\", \"error descrption\"),\n                             url.lastPathComponent];\n    \n    CK2FileOperationCallbacks *callbacks = [CK2FileOperationCallbacks callbacksWithProtocolCreator:^CK2Protocol *(CK2FileOperation *fileOp, Class protocolClass) {\n        \n        return [[protocolClass alloc] initForCreatingDirectoryWithRequest:[fileOp requestWithURL:url]\n                                              withIntermediateDirectories:createIntermediates\n                                                        openingAttributes:attributes\n                                                                   client:fileOp];\n    }];\n    \n    self = [self initWithURL:url errorDescription:description manager:manager completionHandler:block callbacks:callbacks];\n    \n    // Special case SFTP for now.\n    if ([url.scheme caseInsensitiveCompare:@\"sftp\"] == NSOrderedSame) {\n        _createIntermediateDirectories = createIntermediates;\n    }\n    \n    return self;\n}\n\n- (id)initFileCreationOperationWithURL:(NSURL *)url\n                                  data:(NSData *)data\n           withIntermediateDirectories:(BOOL)createIntermediates\n                     openingAttributes:(NSDictionary *)attributes\n                               manager:(CK2FileManager *)manager\n                         progressBlock:(CK2ProgressBlock)progressBlock\n                       completionBlock:(void (^)(NSError *))block;\n{\n    NSString *description = [NSString stringWithFormat:NSLocalizedString(@\"The file “%@” could not be uploaded.\", \"error description\"),\n                             url.lastPathComponent];\n    \n    CK2FileOperationCallbacks *callbacks = [CK2FileOperationCallbacks callbacksWithProtocolCreator:^CK2Protocol *(CK2FileOperation *fileOp, Class protocolClass) {\n        \n        NSMutableURLRequest *request = [[fileOp requestWithURL:url] mutableCopy];\n        request.HTTPBody = data;\n        \n        CK2Protocol *result = [[protocolClass alloc] initForCreatingFileWithRequest:request\n                                                                               size:data.length\n                                                        withIntermediateDirectories:createIntermediates\n                                                                  openingAttributes:attributes\n                                                                             client:fileOp];\n        \n        [request release];\n        return result;\n    }];\n    \n    self = [self initWithURL:url errorDescription:description manager:manager completionHandler:block callbacks:callbacks];\n    \n    _bytesExpectedToWrite = data.length;\n    _progressBlock = [progressBlock copy];\n    \n    // Special case SFTP for now.\n    if ([url.scheme caseInsensitiveCompare:@\"sftp\"] == NSOrderedSame) {\n        _createIntermediateDirectories = createIntermediates;\n    }\n\n    return self;\n}\n\n- (id)initFileCreationOperationWithURL:(NSURL *)url\n                                  file:(NSURL *)sourceURL\n           withIntermediateDirectories:(BOOL)createIntermediates\n                     openingAttributes:(NSDictionary *)attributes\n                               manager:(CK2FileManager *)manager\n                         progressBlock:(CK2ProgressBlock)progressBlock\n                       completionBlock:(void (^)(NSError *))block;\n{\n    NSString *description = [NSString stringWithFormat:NSLocalizedString(@\"The file “%@” could not be uploaded.\", \"error descrption\"),\n                             url.lastPathComponent];\n    \n    NSNumber *fileSize;\n    if (![sourceURL getResourceValue:&fileSize forKey:NSURLFileSizeKey error:NULL]) fileSize = nil;;\n    \n    CK2FileOperationCallbacks *callbacks = [CK2FileOperationCallbacks callbacksWithProtocolCreator:^CK2Protocol *(CK2FileOperation *fileOp, Class protocolClass) {\n        \n        fileOp->_localURL = [sourceURL copy];\n        \n        NSMutableURLRequest *request = [[fileOp requestWithURL:url] mutableCopy];\n        \n        // Read the data using an input stream if possible, and know file size\n        int64_t size = (fileSize ? fileSize.longLongValue : NSURLResponseUnknownLength);\n        if (size >= 0)\n        {\n            NSInputStream *stream = [fileOp protocol:nil needNewBodyStream:nil];\n            if (stream)\n            {\n                [request setHTTPBodyStream:stream];\n            }\n        }\n        \n        if (!request.HTTPBodyStream)\n        {\n            NSError *error;\n            NSData *data = [[NSData alloc] initWithContentsOfURL:sourceURL options:0 error:&error];\n            \n            if (data)\n            {\n                [request setHTTPBody:data];\n                size = data.length;\n                [data release];\n            }\n            else\n            {\n                [request release];\n                if (!error) error = [NSError errorWithDomain:NSCocoaErrorDomain code:NSFileReadUnknownError userInfo:nil];\n                [fileOp protocol:nil didCompleteWithError:error];\n                return nil;\n            }\n        }\n        \n        CK2Protocol *result = [[protocolClass alloc] initForCreatingFileWithRequest:request\n                                                                               size:size\n                                                        withIntermediateDirectories:createIntermediates\n                                                                  openingAttributes:attributes\n                                                                             client:fileOp];\n        \n        [request release];\n        return result;\n    }];\n    \n    self = [self initWithURL:url errorDescription:description manager:manager completionHandler:block callbacks:callbacks];\n    \n    _bytesExpectedToWrite = fileSize.longLongValue;\n    _progressBlock = [progressBlock copy];\n    \n    // Special case SFTP for now.\n    if ([url.scheme caseInsensitiveCompare:@\"sftp\"] == NSOrderedSame) {\n        _createIntermediateDirectories = createIntermediates;\n    }\n    \n    return self;\n}\n\n- (id)initRemovalOperationWithURL:(NSURL *)url\n                          manager:(CK2FileManager *)manager\n                  completionBlock:(void (^)(NSError *))block;\n{\n    NSString *description = [NSString stringWithFormat:NSLocalizedString(@\"The file “%@” could not be deleted.\", \"error descrption\"),\n                             url.lastPathComponent];\n    \n    CK2FileOperationCallbacks *callbacks = [CK2FileOperationCallbacks callbacksWithProtocolCreator:^CK2Protocol *(CK2FileOperation *fileOp, Class protocolClass) {\n        return [[protocolClass alloc] initForRemovingItemWithRequest:[fileOp requestWithURL:url] client:fileOp];\n    }];\n    \n    return [self initWithURL:url errorDescription:description manager:manager completionHandler:block callbacks:callbacks];\n}\n\n- (id)initRenameOperationWithSourceURL:(NSURL *)srcURL\n                      newName:(NSString *)newName\n                             manager:(CK2FileManager *)manager\n                     completionBlock:(void (^)(NSError *))block;\n{\n    NSString *description = [NSString stringWithFormat:NSLocalizedString(@\"The file “%@” could not be renamed.\", \"error descrption\"),\n                             srcURL.lastPathComponent];\n    \n    CK2FileOperationCallbacks *callbacks = [CK2FileOperationCallbacks callbacksWithProtocolCreator:^CK2Protocol *(CK2FileOperation *fileOp, Class protocolClass) {\n        return [[protocolClass alloc] initForRenamingItemWithRequest:[fileOp requestWithURL:srcURL] newName:newName client:fileOp];\n    }];\n    \n    return [self initWithURL:srcURL errorDescription:description manager:manager completionHandler:block callbacks:callbacks];\n}\n\n- (id)initResourceValueSettingOperationWithURL:(NSURL *)url\n                                        values:(NSDictionary *)keyedValues\n                                       manager:(CK2FileManager *)manager\n                               completionBlock:(void (^)(NSError *))block;\n{\n    NSString *description = [NSString stringWithFormat:NSLocalizedString(@\"The file “%@” could not be updated.\", \"error descrption\"),\n                             url.lastPathComponent];\n    \n    CK2FileOperationCallbacks *callbacks = [CK2FileOperationCallbacks callbacksWithProtocolCreator:^CK2Protocol *(CK2FileOperation *fileOp, Class protocolClass) {\n        \n        return [[protocolClass alloc] initForSettingAttributes:keyedValues\n                                             ofItemWithRequest:[fileOp requestWithURL:url]\n                                                        client:fileOp];\n    }];\n    \n    return [self initWithURL:url errorDescription:description manager:manager completionHandler:block callbacks:callbacks];\n}\n\n- (void)completeWithError:(NSError *)error;\n{\n    // Run completion block on own queue so that:\n    //  A) It doesn't potentially hold up the calling queue for too long\n    //  B) Serialises access\n    dispatch_async(_queue, ^{\n        \n        if (_completionBlock)   // only allow \"completion\" to happen the once!\n        {\n            // It's now safe to stop the protocol as it can't misinterpret the message and issue its own cancellation error (or at least if it does, goes ignored)\n            [_protocol stop];\n            \n            // Store the error and notify completion handler\n            // Make all notifications — including KVO — happen on the delegate queue\n            // Grab the handler now since we're about to clear out the original storage. The\n            // delegate block should capture this so we don't need to retain it ourselves\n            void (^handler)(NSError *) = _completionBlock;\n            \n            [self tryToMessageDelegateSelector:NULL usingBlock:^(id<CK2FileManagerDelegate> delegate) { // NULL selector so always executes\n                self.error = error;\n                self.state = CK2FileOperationStateCompleted;\n                handler(error);\n            }];\n            \n            // Clean up too so as to break retain cycles. HAS to happen within this block (and not\n            // e.g. during the delegate call back) so _completionBlock is cleared out and never\n            // allowed to run twice\n            [_completionBlock release]; _completionBlock = nil;\n            [_progressBlock release];   _progressBlock = nil;\n            [_enumerationBlock release];_enumerationBlock = nil;\n            \n            \n            // Break retain cycle, but deliberately keep weak reference so we know we're associated with it\n            [_protocol release];\n        }\n    });\n}\n\n- (void)dealloc\n{\n    //[_protocol release];  DON'T release protocol. It should be a weak reference by the time deallocation happens\n    [_manager release];\n    [_originalURL release];\n    if (_queue) dispatch_release(_queue);\n    [_completionBlock release];\n    [_enumerationBlock release];\n    [_callbacks release];\n    [_progressBlock release];\n    [_localURL release];\n    [_error release];\n\n    [super dealloc];\n}\n\n#pragma mark Manager\n\n@synthesize fileManager = _manager;\n\n- (void)tryToMessageDelegateSelector:(SEL)selector usingBlock:(void (^)(id <CK2FileManagerDelegate> delegate))block;\n{\n    CK2FileManager *manager = self.fileManager;\n    NSAssert(manager, @\"%@ disconnected from its manager too early\", self.class);\n    \n    // Clients could change the delegate at any time. If we trust them to do so in concert with the\n    // delegate queue, then that can be made reasonably safe by only accessing the delegate from\n    // within the queue.\n    // It's still inherently a bit dangerous though, as the client could change it on a different\n    // queue, or could have specified a non-serial delegate queue.\n    [manager.delegateQueue addOperationWithBlock:^{\n        id <CK2FileManagerDelegate> delegate = manager.delegate;\n        if (!selector || [delegate respondsToSelector:selector]) {\n            block(delegate);\n        }\n    }];\n}\n\n#pragma mark URL & Requests\n\n@synthesize originalURL = _originalURL;\n\n- (NSURLRequest *)requestWithURL:(NSURL *)url;\n{\n    return [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:60.0];\n}\n\n#pragma mark Body Data\n\n@synthesize countOfBytesWritten = _bytesWritten;\n@synthesize countOfBytesExpectedToWrite = _bytesExpectedToWrite;\n\n#pragma mark Cancellation\n\n- (void)cancel;\n{\n    if (self.state >= CK2FileOperationStateCanceling) return;\n    \n    /*  Any already-enqueued delegate messages will likely still run. That's fine as it seems we might as well report things that are already known to have happened\n     */\n    \n    // FIXME: There's a race condition here where .state could change after our intitial check of it\n    \n    self.state = CK2FileOperationStateCanceling;\n    \n    // Report cancellation to completion handler. If protocol has already finished or failed, it'll go ignored\n    NSError *cancellationError = [[NSError alloc] initWithDomain:NSURLErrorDomain code:NSURLErrorCancelled userInfo:nil];\n    [self completeWithError:cancellationError];\n    \n    [cancellationError release];\n}\n\n#pragma mark State\n\n@synthesize state = _state;\n@synthesize error = _error;\n\n- (void)resume;\n{\n    if (self.state == CK2FileOperationStateSuspended)\n    {\n        self.state = CK2FileOperationStateRunning;\n        [self createProtocolAndStart];\n    }\n}\n\n/**\n Private method that does the work of creating the protocol instance, and getting it going\n */\n- (void)createProtocolAndStart {\n    NSURL *url = self.originalURL;\n    \n    [CK2Protocol classForURL:url completionHandler:^(Class protocolClass) {\n        \n        if (protocolClass)\n        {\n            // Bounce over to operation's own queue for kicking off the real work\n            // Keep an eye out for early opportunity to bail out if get cancelled\n            dispatch_async(_queue, ^{\n                \n                if (self.state == CK2FileOperationStateRunning)\n                {\n                    NSAssert(_protocol == nil, @\"Protocol has already been created\");\n                    _protocol = [_callbacks createProtocolForFileOperation:self class:protocolClass];\n                    \n                    if (!_protocol)\n                    {\n                        // it's likely that the protocol has already called protocol:didFailWithError:, which will have called finishWithError:, which means that a call to the completion\n                        // block is queue up already with an error in it\n                        // just in case though, we can report a more generic error here - once the completion block is called once it will be cleared out, the protocol's error will win\n                        // if there is one\n                        NSDictionary *info = @{NSURLErrorKey : url, NSURLErrorFailingURLErrorKey : url, NSURLErrorFailingURLStringErrorKey : [url absoluteString]};\n                        NSError *error = [[NSError alloc] initWithDomain:NSURLErrorDomain code:NSURLErrorUnsupportedURL userInfo:info]; // TODO: what's the correct error to report here?\n                        [self completeWithError:error];\n                        [error release];\n                    }\n                    \n                    if (self.state == CK2FileOperationStateRunning) [_protocol start];\n                }\n            });\n        }\n        else\n        {\n            NSDictionary *info = @{NSURLErrorKey : url, NSURLErrorFailingURLErrorKey : url, NSURLErrorFailingURLStringErrorKey : [url absoluteString]};\n            NSError *error = [[NSError alloc] initWithDomain:NSURLErrorDomain code:NSURLErrorUnsupportedURL userInfo:info];\n            [self completeWithError:error];\n            [error release];\n        }\n    }];\n}\n\n#pragma mark CK2ProtocolClient\n\n- (void)protocol:(CK2Protocol *)protocol didCompleteWithError:(NSError *)error;\n{\n    NSAssert(protocol == _protocol, @\"Message received from unexpected protocol: %@ (should be %@)\", protocol, _protocol);\n    \n    // Errors should start with our description\n    if (error)\n    {\n        if (_createIntermediateDirectories) {\n            NSString *path = [CK2FileManager pathOfURL:self.originalURL];\n            if (path.length && ![path isEqualToString:@\"/\"]) {\n                \n                NSURL *directoryURL = [self.originalURL URLByDeletingLastPathComponent];\n                _createIntermediateDirectories = NO;    // avoid doing this again\n                \n                [self.fileManager createDirectoryAtURL:directoryURL\n                           withIntermediateDirectories:YES\n                                     openingAttributes:nil  // probably ought to provide something better, but I'm being lazy\n                                     completionHandler:^(NSError *directoryError) {\n                                         \n                                         // If creating directory also fails, give up. Otherwise let's try again!\n                                         if (directoryError) {\n                                             [self protocol:protocol didCompleteWithError:error];\n                                         }\n                                         else {\n                                             [_protocol release]; _protocol = nil;\n                                             [self createProtocolAndStart];\n                                         }\n                                     }];\n                \n                return;\n            }\n        }\n        \n        if (_descriptionForErrors)\n        {\n            NSMutableDictionary *info = [error.userInfo mutableCopy];\n            NSString *description = [_descriptionForErrors stringByAppendingFormat:@\" %@\", error.localizedDescription];\n            [info setObject:description forKey:NSLocalizedDescriptionKey];\n            error = [NSError errorWithDomain:error.domain code:error.code userInfo:info];\n            [info release];\n        }\n    }\n    \n    [self completeWithError:error];\n}\n\n- (NSURLRequest *)protocol:(CK2Protocol *)protocol willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response;\n{\n    NSAssert(protocol == _protocol, @\"Message received from unexpected protocol: %@ (should be %@)\", protocol, _protocol);\n    \n    id <CK2FileManagerDelegate> delegate = self.fileManager.delegate;\n    if ([delegate respondsToSelector:@selector(fileManager:operation:willSendRequest:redirectResponse:completionHandler:)])\n    {\n        dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);\n        \n        __block NSURLRequest *weakRequest;\n        [delegate fileManager:self.fileManager operation:self willSendRequest:request redirectResponse:response completionHandler:^(NSURLRequest *request) {\n            weakRequest = [request retain];\n            dispatch_semaphore_signal(semaphore);\n        }];\n        \n        dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);\n        request = [weakRequest autorelease];\n        dispatch_release(semaphore);\n    }\n    \n    return request;\n}\n\n- (void)protocol:(CK2Protocol *)protocol didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(CK2AuthChallengeDisposition, NSURLCredential *))completionHandler;\n{\n    NSAssert(protocol == _protocol, @\"Message received from unexpected protocol: %@ (should be %@)\", protocol, _protocol);\n    if (self.state >= CK2FileOperationStateCanceling) return; // don't care about auth once cancelled\n    \n    \n    // Invent a default credential if needed\n    if (!challenge.proposedCredential)\n    {\n        NSURLProtectionSpace *space = challenge.protectionSpace;\n        NSString *user = self.originalURL.user;\n        NSString *password = self.originalURL.password;\n        \n        NSURLCredential *credential;\n        if (user)\n        {\n            if (password) {\n                credential = [NSURLCredential credentialWithUser:user password:password persistence:NSURLCredentialPersistenceNone];\n            }\n            else {\n                credential = [[NSURLCredentialStorage.sharedCredentialStorage credentialsForProtectionSpace:space] objectForKey:user];\n            }\n        }\n        else\n        {\n            credential = [[NSURLCredentialStorage sharedCredentialStorage] defaultCredentialForProtectionSpace:space];\n        }\n        \n        challenge = [[NSURLAuthenticationChallenge alloc] initWithProtectionSpace:space\n                                                               proposedCredential:credential\n                                                             previousFailureCount:challenge.previousFailureCount\n                                                                  failureResponse:challenge.failureResponse\n                                                                            error:challenge.error\n                                                                           sender:challenge.sender];\n        \n        [challenge autorelease];\n    }\n    \n    \n    // Notify the delegate\n    CK2FileManager *manager = self.fileManager;\n    id <CK2FileManagerDelegate> delegate = manager.delegate;\n    \n    if ([delegate respondsToSelector:@selector(fileManager:operation:didReceiveChallenge:completionHandler:)])\n    {\n        [manager.delegateQueue addOperationWithBlock:^{\n            \n        __block BOOL handlerCalled = NO;\n        [delegate fileManager:manager operation:self didReceiveChallenge:challenge completionHandler:^(CK2AuthChallengeDisposition disposition, NSURLCredential *credential) {\n            \n            if (handlerCalled) [NSException raise:NSInvalidArgumentException format:@\"Auth Challenge completion handler block called more than once\"];\n            handlerCalled = YES;\n            \n            dispatch_async(_queue, ^{\n                completionHandler(disposition, credential);\n            });\n        }];\n            \n        }];\n    }\n    else if ([delegate respondsToSelector:@selector(fileManager:didReceiveAuthenticationChallenge:)])\n    {\n        NSLog(@\"%@ implements the old CK2FileManager authentication delegate method instead of the new one\", delegate.class);\n    }\n    else\n    {\n        dispatch_async(_queue, ^{\n            completionHandler(CK2AuthChallengePerformDefaultHandling, nil);\n        });\n    }\n    \n    \n    // TODO: Cache credentials per protection space\n}\n\n- (void)protocol:(CK2Protocol *)protocol appendString:(NSString *)info toTranscript:(CK2TranscriptType)transcript;\n{\n    NSAssert(protocol == _protocol, @\"Message received from unexpected protocol: %@ (should be %@)\", protocol, _protocol);\n    \n    \n    // Pass straight onto delegate and trust it not to take too long handling it\n    // We used to dispatch off onto one of the global queues, but that does have the nasty downside of messages sometimes arriving out-of-order or concurrently\n    [self tryToMessageDelegateSelector:@selector(fileManager:appendString:toTranscript:) usingBlock:^(id<CK2FileManagerDelegate> delegate) {\n        [delegate fileManager:self.fileManager appendString:info toTranscript:transcript];\n    }];\n}\n\n- (void)protocol:(CK2Protocol *)protocol didDiscoverItemAtURL:(NSURL *)url;\n{\n    NSAssert(protocol == _protocol, @\"Message received from unexpected protocol: %@ (should be %@)\", protocol, _protocol);\n    // Even if cancelled, allow through as the discovery still stands; might be useful for caching elsewhere\n    \n    // Provide ancestry and other fairly generic keys on-demand\n    [self.class setResourceValueBlocksForURL:url protocolClass:protocol.class];\n    \n    \n        [self tryToMessageDelegateSelector:NULL usingBlock:^(id<CK2FileManagerDelegate> delegate) {\n            if (_enumerationBlock) _enumerationBlock(url);\n        }];\n    \n    // It seems poor security to vend out passwords here, so have a quick sanity check\n    if (CFURLGetByteRangeForComponent((CFURLRef)url, kCFURLComponentPassword, NULL).location != kCFNotFound)\n    {\n        NSLog(@\"%@ is reporting URLs with a password, such as %@\\nThis seems poor security practice\", protocol, url);\n    }\n}\n\n+ (void)setResourceValueBlocksForURL:(NSURL *)strongURL protocolClass:(Class)protocolClass;\n{\n    __block NSURL *url = strongURL;    // URL retains its resource values; so if the blocks retained the URL would be a cycle\n    \n    NSString *path = [protocolClass pathOfURLRelativeToHomeDirectory:url];\n    if ([path isAbsolutePath])\n    {\n        [CK2FileManager setTemporaryResourceValueForKey:NSURLParentDirectoryURLKey inURL:url asBlock:^id {\n            \n            if (path.pathComponents.count > 1)   // stop at root\n            {\n                NSURL *result = [url URLByDeletingLastPathComponent];\n                [CK2FileManager setTemporaryResourceValue:@YES forKey:NSURLIsDirectoryKey inURL:result];\n                \n                // Recurse\n                [self setResourceValueBlocksForURL:result protocolClass:protocolClass];\n                \n                return result;\n            }\n            \n            return nil;\n        }];\n        \n        \n        // Only need supply icon if protocol hasn't done so\n        NSImage *icon;\n        if (![url getResourceValue:&icon forKey:NSURLEffectiveIconKey error:NULL] || !icon)\n        {\n            // Fill in icon as best we can\n            [CK2FileManager setTemporaryResourceValueForKey:NSURLEffectiveIconKey inURL:url asBlock:^id{\n                \n                NSString *fileType = url.pathExtension;\n                if (path.pathComponents.count == 1)\n                {\n                    fileType = NSFileTypeForHFSTypeCode(kGenericFileServerIcon);\n                }\n                else if ([fileType isEqual:@\"app\"])\n                {\n                    fileType = NSFileTypeForHFSTypeCode(kGenericApplicationIcon);\n                }\n                else\n                {\n                    NSNumber *isDirectory;\n                    if (![url getResourceValue:&isDirectory forKey:NSURLIsDirectoryKey error:NULL] || isDirectory == nil)\n                    {\n                        isDirectory = @(CFURLHasDirectoryPath((CFURLRef)url));\n                    }\n                    \n                    // Guess based on file type\n                    if (isDirectory.boolValue)\n                    {\n                        if ([protocolClass isHomeDirectoryAtURL:url])\n                        {\n                            fileType = NSFileTypeForHFSTypeCode(kUserFolderIcon);\n                        }\n                        else\n                        {\n                            NSNumber *package;\n                            if (![url getResourceValue:&package forKey:NSURLIsPackageKey error:NULL] || !package.boolValue)\n                            {\n                                return [NSImage imageNamed:NSImageNameFolder];\n                            }\n                        }\n                    }\n                }\n                \n                return [[NSWorkspace sharedWorkspace] iconForFileType:fileType];\n            }];\n        }\n    }\n}\n\n- (void)protocol:(CK2Protocol *)protocol didSendBodyData:(int64_t)bytesSent totalBytesSent:(int64_t)totalBytesSent totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend;\n{\n    self.countOfBytesWritten = totalBytesSent;\n    self.countOfBytesExpectedToWrite = totalBytesExpectedToSend;\n    \n    CK2FileManager *manager = self.fileManager;\n    [manager.delegateQueue addOperationWithBlock:^{\n        \n    if (_progressBlock)\n    {\n        _progressBlock(bytesSent, totalBytesSent, totalBytesExpectedToSend);\n    }\n    else\n    {\n        id <CK2FileManagerDelegate> delegate = manager.delegate;\n        if ([delegate respondsToSelector:@selector(fileManager:operation:didWriteBodyData:totalBytesWritten:totalBytesExpectedToWrite:)])\n        {\n            [delegate fileManager:manager\n                        operation:self\n                 didWriteBodyData:bytesSent\n                totalBytesWritten:totalBytesSent\n        totalBytesExpectedToWrite:totalBytesExpectedToSend];\n        }\n    }\n        \n    }];\n}\n\n- (NSInputStream *)protocol:(CK2Protocol *)protocol needNewBodyStream:(NSURLRequest *)request;\n{\n    NSAssert(protocol == _protocol, @\"Message received from unexpected protocol: %@ (should be %@)\", protocol, _protocol);\n    \n    NSInputStream *stream = [[NSInputStream alloc] initWithURL:_localURL];\n    return [stream autorelease];\n}\n\n#pragma mark NSCopying\n\n- (id)copyWithZone:(NSZone *)zone;\n{\n    // For easy stashing in dictionaries\n    return [self retain];\n}\n\n@end\n\n\n#pragma mark -\n\n\n@implementation CK2FileOperationCallbacks\n\n+ (instancetype)callbacksWithProtocolCreator:(CK2Protocol *(^)(CK2FileOperation *, Class))protocolCreator {\n    CK2FileOperationCallbacks *result = [[self alloc] init];\n    result->_protocolCreator = [protocolCreator copy];\n    return [result autorelease];\n}\n\n- (CK2Protocol *)createProtocolForFileOperation:(CK2FileOperation *)fileOp class:(Class)protocolClass {\n    return _protocolCreator(fileOp, protocolClass);\n}\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2FileOperationWithTestSupport.h",
    "content": "//\n//  Created by Sam Deane on 27/03/2013.\n//  Copyright (c) 2013 Karelia Software. All rights reserved.\n\n#import \"CK2FileOperation.h\"\n\n@interface CK2FileOperationWithTestSupport : CK2FileOperation\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2FileOperationWithTestSupport.m",
    "content": "//\n//  Created by Sam Deane on 27/03/2013.\n//  Copyright (c) 2013 Karelia Software. All rights reserved.\n\n#import \"CK2FileOperationWithTestSupport.h\"\n#import \"CK2FileManagerWithTestSupport.h\"\n\n@implementation CK2FileOperationWithTestSupport\n\n- (NSURLRequest *)requestWithURL:(NSURL *)url;\n{\n    NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:60.0];\n    CK2FileManagerWithTestSupport* manager = [self valueForKey:@\"_manager\"];\n    if (manager.dontShareConnections)\n    {\n        [request ck2_setMulti:manager.multi];\n    }\n\n    return request;\n}\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2FileProtocol.h",
    "content": "//\n//  CK2FileProtocol.h\n//  Connection\n//\n//  Created by Mike on 18/10/2012.\n//\n//\n\n#import \"CK2Protocol.h\"\n\n@interface CK2FileProtocol : CK2Protocol\n{\n  @private\n    void    (^_block)(void);\n    BOOL    _cancelled;\n    dispatch_queue_t _queue;\n    \n    int64_t _bytesExpectedToWrite;\n}\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2FileProtocol.m",
    "content": "//\n//  CK2FileProtocol.m\n//  Connection\n//\n//  Created by Mike on 18/10/2012.\n//\n//\n\n#import \"CK2FileProtocol.h\"\n\n#import \"CK2CURLBasedProtocol.h\"\n\n// alternate implementations for initForCreatingFileWithRequest\n// whilst we're developing, I'm keeping around the code for all of them\ntypedef enum\n{\n    kCreateWithCURL,\n    kCreateWithStreams,\n    kCreateWithPOSIXAndGCD\n} CreateMode;\n\nstatic const CreateMode kCreateMode = kCreateWithPOSIXAndGCD;\n\nstatic size_t kCopyBufferSize = 4096;\n\n\n@implementation CK2FileProtocol\n\n+ (BOOL)canHandleURL:(NSURL *)url;\n{\n    return [url isFileURL];\n}\n\n- (id)initWithBlock:(void (^)(void))block;\n{\n    if (self = [self init])\n    {\n        NSAssert(block != nil, @\"should have a valid block\");\n        _block = [block copy];\n    }\n    \n    return self;\n}\n\n- (void)dealloc\n{\n    if (_queue)\n    {\n        dispatch_release(_queue);\n    }\n\n    [_block release];\n    [super dealloc];\n}\n\n- (id)initForEnumeratingDirectoryWithRequest:(NSURLRequest *)request includingPropertiesForKeys:(NSArray *)keys options:(NSDirectoryEnumerationOptions)mask client:(id<CK2ProtocolClient>)client;\n{\n    return [self initWithBlock:^{\n        \n        // Report the main directory first\n        if (mask & CK2DirectoryEnumerationIncludesDirectory)\n        {\n            NSURL *directory = [request.URL URLByStandardizingPath];\n            if (!directory)\n            {\n                [client protocol:self didCompleteWithError:[NSError errorWithDomain:NSCocoaErrorDomain code:NSFileReadUnknownError userInfo:nil]];\n                return;\n            }\n            \n            [client protocol:self didDiscoverItemAtURL:directory];\n        }\n        \n        \n        // Enumerate contents\n        __block NSError* enumerationError = nil;\n        NSDirectoryEnumerator *enumerator = [[NSFileManager defaultManager] enumeratorAtURL:[request URL]\n                                                                 includingPropertiesForKeys:keys\n                                                                                    options:mask\n                                                                               errorHandler:^BOOL(NSURL *url, NSError *error) {\n\n                                                                                   enumerationError = error;\n                                                                                   return NO; // TODO: are there errors that we want to ignore here?\n                                                                               }];\n        \n\n        NSURL *aURL;\n        while (!_cancelled && !enumerationError && (aURL = [enumerator nextObject]))\n        {\n            [client protocol:self didDiscoverItemAtURL:aURL];\n            \n        }\n\n        if (_cancelled) return; // bail should we be cancelled\n\n        [client protocol:self didCompleteWithError:enumerationError];\n    }];\n}\n\n- (id)initForCreatingDirectoryWithRequest:(NSURLRequest *)request withIntermediateDirectories:(BOOL)createIntermediates openingAttributes:(NSDictionary *)attributes client:(id<CK2ProtocolClient>)client;\n{\n    return [self initWithBlock:^{\n        \n        NSURL *url = request.URL;\n        \n        NSError *error;\n#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_7\n        if ([[NSFileManager defaultManager] createDirectoryAtURL:url withIntermediateDirectories:createIntermediates attributes:attributes error:&error])\n#else\n        if ([[NSFileManager defaultManager] createDirectoryAtPath:[url path] withIntermediateDirectories:createIntermediates attributes:attributes error:&error])\n#endif\n        {\n            [client protocol:self didCompleteWithError:nil];\n        }\n        else\n        {\n            NSAssert(error, @\"-[NSFileManager createDirectory…] failed to vend out error upon failure\");\n            [client protocol:self didCompleteWithError:error];\n        }\n    }];\n}\n\n\n- (id)initForCreatingFileWithRequest:(NSURLRequest *)request size:(int64_t)size withIntermediateDirectories:(BOOL)createIntermediates openingAttributes:(NSDictionary *)attributes client:(id<CK2ProtocolClient>)client;\n{\n    return [self initWithBlock:^{\n        \n        _bytesExpectedToWrite = size;\n        \n        // Sadly libcurl doesn't support creating intermediate directories for local files, so do it ourself\n        if (createIntermediates)\n        {\n            NSURL* intermediates = [[request URL] URLByDeletingLastPathComponent];\n            \n            NSError *error;\n#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_7\n            if (![[NSFileManager defaultManager] createDirectoryAtURL:intermediates withIntermediateDirectories:YES attributes:nil error:&error])\n#else\n            if (![[NSFileManager defaultManager] createDirectoryAtPath:[intermediates path] withIntermediateDirectories:YES attributes:nil error:&error])\n#endif\n            {\n                NSAssert(error, @\"-[NSFileManager createDirectory…] failed to vend out error upon failure\");\n                [client protocol:self didCompleteWithError:error];\n                return;\n            }\n        }\n\n        // whilst testing, support all three creation methods\n        switch (kCreateMode)\n        {\n            case kCreateWithCURL:\n            {\n                [self createFileWithCURLForRequest:request openingAttributes:attributes client:client];\n                break;\n            }\n\n            case kCreateWithStreams:\n            {\n                [self createFileSyncForRequest:request openingAttributes:attributes client:client];\n                break;\n            }\n\n            default:\n                [self createFileAsyncForRequest:request openingAttributes:attributes client:client];\n        }\n    }];\n}\n\n- (id)initForRenamingItemWithRequest:(NSURLRequest *)request newName:(NSString *)newName client:(id<CK2ProtocolClient>)client\n{\n    return [self initWithBlock:^{\n\n        NSError *error;\n        NSURL* srcURL = [request URL];\n        NSURL* dstURL = [[srcURL URLByDeletingLastPathComponent] URLByAppendingPathComponent:newName];\n        if ([[NSFileManager defaultManager] moveItemAtURL:srcURL toURL:dstURL error:&error])\n        {\n            [client protocol:self didCompleteWithError:nil];\n        }\n        else\n        {\n            NSAssert(error, @\"-[NSFileManager moveItemAtURL…] failed to vend out error upon failure\");\n            [client protocol:self didCompleteWithError:error];\n        }\n    }];\n}\n\n- (id)initForRemovingItemWithRequest:(NSURLRequest *)request client:(id<CK2ProtocolClient>)client;\n{\n    return [self initWithBlock:^{\n                \n        NSError *error;\n        if ([[NSFileManager defaultManager] removeItemAtURL:[request URL] error:&error])\n        {\n            [client protocol:self didCompleteWithError:nil];\n        }\n        else\n        {\n            NSAssert(error, @\"-[NSFileManager removeItemAtURL…] failed to vend out error upon failure\");\n            [client protocol:self didCompleteWithError:error];\n        }\n    }];\n}\n\n- (id)initForSettingAttributes:(NSDictionary *)keyedValues ofItemWithRequest:(NSURLRequest *)request client:(id<CK2ProtocolClient>)client;\n{\n    return [self initWithBlock:^{\n        \n        NSError *error;\n        if ([[NSFileManager defaultManager] setAttributes:keyedValues ofItemAtPath:[[request URL] path] error:&error])\n        {\n            [client protocol:self didCompleteWithError:nil];\n        }\n        else\n        {\n            NSAssert(error, @\"-[NSFileManager setAttributes…] failed to vend out error upon failure\");\n            [client protocol:self didCompleteWithError:error];\n        }\n    }];\n}\n\n- (void)start;\n{\n    _block();\n}\n\n- (void)stop;\n{\n    // Most operations are synchronous; we can't stop them\n    _cancelled = YES;\n    // TODO: File creation is DEFINITELY cancellable\n}\n\n#pragma mark - File Copying\n\n- (NSError*)modifiedErrorForFileError:(NSError*)error\n{\n    if ([error.domain isEqualToString:NSPOSIXErrorDomain])\n    {\n        if (error.code == ENOENT)\n        {\n            error = [NSError errorWithDomain:NSCocoaErrorDomain code:NSFileNoSuchFileError userInfo:[NSDictionary dictionaryWithObject:error forKey:NSUnderlyingErrorKey]];\n        }\n        else if (error.code == EACCES)\n        {\n            error = [NSError errorWithDomain:NSCocoaErrorDomain code:NSFileWriteNoPermissionError userInfo:[NSDictionary dictionaryWithObject:error forKey:NSUnderlyingErrorKey]];\n        }\n    }\n\n    return error;\n}\n\n- (NSError*)noInputStreamError\n{\n    NSError* error = [NSError errorWithDomain:NSCocoaErrorDomain code:NSFileReadInvalidFileNameError userInfo:nil];\n\n    return error;\n}\n\n- (NSError*)currentPOSIXError\n{\n    return [self modifiedErrorForFileError:[NSError errorWithDomain:NSPOSIXErrorDomain code:errno userInfo:nil]];\n}\n\n- (NSInputStream*)inputStreamForRequest:(NSURLRequest*)request\n{\n    NSInputStream *inputStream = nil;\n    NSData* inputData = [request HTTPBody];\n    if (inputData)\n    {\n        inputStream = [[[NSInputStream alloc] initWithData:inputData] autorelease];\n    }\n    else\n    {\n        inputStream = [request HTTPBodyStream];\n    }\n\n    return inputStream;\n}\n\n/**\n File creation implementation that uses CURLTransfer.\n The main problem with this is that CURLTransfer doesn't return very good error information.\n */\n\n- (void)createFileWithCURLForRequest:(NSURLRequest*)request openingAttributes:(NSDictionary *)attributes client:(id<CK2ProtocolClient>)client;\n{\n    // Hand off to CURLTransfer to create the file\n    __block CK2CURLBasedProtocol *curlProtocol = [[CK2CURLBasedProtocol alloc] initWithRequest:request client:nil completionHandler:^(NSError *error) {\n\n        [client protocol:self didCompleteWithError:error];\n        [curlProtocol autorelease];\n    }];\n\n    [curlProtocol start];\n}\n\n/**\n Simple file creation implementation which just works synchronously, copying between two streams.\n */\n\n- (void)createFileSyncForRequest:(NSURLRequest*)request openingAttributes:(NSDictionary *)attributes client:(id<CK2ProtocolClient>)client;\n{\n    NSInputStream *inputStream = [self inputStreamForRequest:request];\n    [inputStream open];\n\n    NSOutputStream *outputStream = [[NSOutputStream alloc] initWithURL:[request URL] append:NO];\n    [outputStream open];\n\n    NSError* error = nil;\n    if (inputStream && outputStream)\n    {\n        uint8_t buffer[kCopyBufferSize];\n        while ([inputStream hasBytesAvailable])\n        {\n            NSInteger length = [inputStream read:buffer maxLength:kCopyBufferSize];\n            if (length < 0)\n            {\n                error = [inputStream streamError];\n                break;\n            }\n\n            NSUInteger written = [outputStream write:buffer maxLength:length];\n            if (written != length)\n            {\n                error = [outputStream streamError];\n                break;\n            }\n            \n            [self.client protocol:self\n                  didSendBodyData:length\n                   totalBytesSent:[[inputStream propertyForKey:NSStreamFileCurrentOffsetKey] longValue]\n         totalBytesExpectedToSend:_bytesExpectedToWrite];\n        }\n        \n        [inputStream close];\n        [outputStream close];\n        [outputStream release];\n    }\n    else\n    {\n        error = [self noInputStreamError];\n    }\n\n    [client protocol:self didCompleteWithError:[self modifiedErrorForFileError:error]];\n}\n\n/**\n File creation implementation which works asynchronously.\n We open an input stream for the input.\n We open an output file for writing using POSIX open/write calls.\n We then attach a gcd dispatch source to it, and use that to pull input from the stream and write it to the file.\n \n We make a dedicated queue to attach the source to, and release it in the cancel handler of the source, so\n it only lives for the duration of the operation.\n */\n\n- (void)createFileAsyncForRequest:(NSURLRequest*)request openingAttributes:(NSDictionary *)attributes client:(id<CK2ProtocolClient>)client;\n{\n    NSInputStream *inputStream = [self inputStreamForRequest:request];\n    NSError* error = nil;\n\n    if (inputStream != nil)\n    {\n        [inputStream open];\n\n        NSURL* url = [request URL];\n        NSAssert([url isFileURL], @\"wrong URL scheme: %@\", url);\n        NSString* path = [url path];\n        int perms = [attributes filePosixPermissions];\n        if (perms == 0)\n        {\n            perms = 0744;\n        }\n        int outfile = open([path UTF8String], O_CREAT | O_TRUNC | O_WRONLY, perms);\n        if (outfile != -1)\n        {\n            dispatch_queue_t queue = dispatch_queue_create(\"CK2FileProtocol\", NULL);\n            dispatch_source_t source = dispatch_source_create(DISPATCH_SOURCE_TYPE_WRITE, outfile, 0, queue);\n\n            dispatch_source_set_event_handler(source, ^{\n                uint8_t buffer[kCopyBufferSize];\n                NSInteger length = [inputStream read:buffer maxLength:kCopyBufferSize];\n                if (length <= 0)\n                {\n                    dispatch_source_cancel(source);\n                    [client protocol:self didCompleteWithError:[self modifiedErrorForFileError:[inputStream streamError]]];\n                }\n                else\n                {\n                    ssize_t written = write(outfile, buffer, length);\n                    if (written != length)\n                    {\n                        [client protocol:self didCompleteWithError:[self currentPOSIXError]];\n                    }\n                }\n            });\n\n            dispatch_source_set_cancel_handler(source, ^{\n                close(outfile);\n                dispatch_release(source);\n                dispatch_release(queue);\n            });\n            \n            dispatch_resume(source);\n        }\n        else\n        {\n            error = [self currentPOSIXError];\n        }\n    }\n    else\n    {\n        error = [self noInputStreamError];\n    }\n\n    if (error)\n    {\n        [client protocol:self didCompleteWithError:error];\n    }\n}\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2FileSizeFormatter.h",
    "content": "//\n//  CK2FileSizeFormatter.h\n//  Connection\n//\n//  Created by Paul Kim on 1/16/13.\n//\n//\n\n#import <Foundation/Foundation.h>\n\n@interface CK2FileSizeFormatter : NSNumberFormatter\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2FileSizeFormatter.m",
    "content": "//\n//  CK2FileSizeFormatter.m\n//  Connection\n//\n//  Created by Paul Kim on 1/16/13.\n//\n//\n\n#import \"CK2FileSizeFormatter.h\"\n\n#define FRACTION_TRESHOLD_INDEX   2\n\nstatic NSArray  *_unitLabels;\n\n@implementation CK2FileSizeFormatter\n\n+ (void)initialize\n{\n    if ([[self class] isEqual:[CK2FileSizeFormatter class]])\n    {\n        _unitLabels = [@[ @\"bytes\", @\"KB\", @\"MB\", @\"TB\", @\"PB\", @\"EB\", @\"ZB\", @\"YB\" ] retain];\n    }\n}\n\n- (NSString *)stringForObjectValue:(id)anObject\n{\n    if ([anObject isKindOfClass:[NSNumber class]])\n    {\n        NSUInteger              i, count;\n        double                  size;\n        NSString                *formattedNumber;\n        \n        size = [anObject doubleValue];\n        count = [_unitLabels count];\n        \n        for (i = 0; (i < count) && (size >= 1000); i++)\n        {\n            size /= 1000;\n        }\n        \n        if (i >= count)\n        {\n            i = count - 1;\n        }\n\n        if (i < FRACTION_TRESHOLD_INDEX)\n        {\n            [self setMaximumFractionDigits:0];\n        }\n        else\n        {\n            [self setMaximumFractionDigits:1];\n        }\n        \n        formattedNumber = [super stringForObjectValue:[NSNumber numberWithDouble:size]];\n        \n        return [NSString stringWithFormat:@\"%@ %@\", formattedNumber, [_unitLabels objectAtIndex:i]];\n    }\n    else if ([anObject isKindOfClass:[NSString class]])\n    {\n        return @\"--\";\n    }\n    return @\"\";\n}\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2IconItemView.h",
    "content": "//\n//  CK2IconItemView.h\n//  ConnectionKit\n//\n//  Created by Paul Kim on 12/23/12.\n//  Copyright (c) 2012 Paul Kim. All rights reserved.\n//\n//\n// Redistribution and use in source and binary forms, with or without modification,\n// are permitted provided that the following conditions are met:\n//\n// Redistributions of source code must retain the above copyright notice, this list\n// of conditions and the following disclaimer.\n//\n// Redistributions in binary form must reproduce the above copyright notice, this\n// list of conditions and the following disclaimer in the documentation and/or other\n// materials provided with the distribution.\n//\n// Neither the name of Karelia Software nor the names of its contributors may be used to\n// endorse or promote products derived from this software without specific prior\n// written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\n// SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\n// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY\n// WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n#import <Cocoa/Cocoa.h>\n\n@class CK2IconViewItem;\n\n@interface CK2IconItemView : NSView\n{\n    IBOutlet CK2IconViewItem        *_item;\n    NSTextFieldCell                 *_textCell;\n}\n\n@property (readwrite, assign, nonatomic) CK2IconViewItem      *item;\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2IconItemView.m",
    "content": "//\n//  CK2IconItemView.m\n//  ConnectionKit\n//\n//  Created by Paul Kim on 12/23/12.\n//  Copyright (c) 2012 Paul Kim. All rights reserved.\n//\n//\n// Redistribution and use in source and binary forms, with or without modification,\n// are permitted provided that the following conditions are met:\n//\n// Redistributions of source code must retain the above copyright notice, this list\n// of conditions and the following disclaimer.\n//\n// Redistributions in binary form must reproduce the above copyright notice, this\n// list of conditions and the following disclaimer in the documentation and/or other\n// materials provided with the distribution.\n//\n// Neither the name of Karelia Software nor the names of its contributors may be used to\n// endorse or promote products derived from this software without specific prior\n// written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\n// SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\n// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY\n// WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n#import \"CK2IconItemView.h\"\n#import \"CK2IconViewItem.h\"\n\n#import \"NSURL+CK2OpenPanel.h\"\n#import \"CK2IconView.h\"\n#import \"NSImage+CK2OpenPanel.h\"\n\n#define MARGIN                 4.0\n#define ICON_SIZE              64.0\n#define ICON_SELECTION_MARGIN  4.0\n#define ICON_TEXT_MARGIN       8.0\n#define TEXT_WIDTH             114.0\n#define TEXT_HEIGHT            34.0\n#define SELECTION_RADIUS       8.5\n#define INNER_SELECTION_RADIUS 3.0\n\n@implementation CK2IconItemView\n\n@synthesize item = _item;\n\n- (id)initWithFrame:(NSRect)frameRect\n{\n    if ((self = [super initWithFrame:frameRect]) != nil)\n    {\n        [self createTextField];\n    }\n    return self;\n}\n\n- (void)dealloc\n{\n    [self setItem:nil];\n    [_textCell release];\n    [super dealloc];\n}\n\n- (void)createTextField\n{\n    _textCell = [[NSTextFieldCell alloc] initTextCell:@\"\"];\n    [_textCell setEditable:NO];\n    [_textCell setAlignment:NSCenterTextAlignment];\n    [_textCell setLineBreakMode:NSLineBreakByWordWrapping];\n    [_textCell setTruncatesLastVisibleLine:YES];\n}\n\n- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context\n{\n    if ([keyPath isEqual:@\"selected\"] || [keyPath isEqual:@\"enabled\"])\n    {\n        [self setNeedsDisplay:YES];\n    }\n    else\n    {\n        [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];\n    }\n}\n\n- (void)setItem:(CK2IconViewItem *)item\n{\n    if (item != _item)\n    {\n        [_item removeObserver:self forKeyPath:@\"selected\"];\n        [_item removeObserver:self forKeyPath:@\"enabled\"];\n        _item = item;\n        [_item addObserver:self forKeyPath:@\"selected\" options:NSKeyValueObservingOptionNew context:NULL];\n        [_item addObserver:self forKeyPath:@\"enabled\" options:NSKeyValueObservingOptionNew context:NULL];\n    }\n}\n\n- (NSRect)iconRectForBounds:(NSRect)bounds\n{\n    return NSMakeRect(NSMinX(bounds) + (NSWidth(bounds) - ICON_SIZE) / 2.0,\n                      NSMinY(bounds) + (NSHeight(bounds) - (2 * ICON_SELECTION_MARGIN + 2 * MARGIN + ICON_SIZE + ICON_TEXT_MARGIN + TEXT_HEIGHT)) / 2.0 + TEXT_HEIGHT + ICON_TEXT_MARGIN + ICON_SELECTION_MARGIN + MARGIN,\n                      ICON_SIZE, ICON_SIZE);\n}\n\n- (NSRect)textRectForBounds:(NSRect)bounds\n{\n    NSRect  rect;\n    \n    if ([[[self item] representedObject] ck2_isPlaceholder])\n    {\n        NSSize  size;\n        \n        rect = [self bounds];\n        rect.size.height = CGFLOAT_MAX;\n        rect.size.width = NSWidth(bounds) * .75;\n        size = [_textCell cellSizeForBounds:rect];\n\n        rect = NSMakeRect(NSMinX(bounds) + (NSWidth(bounds) - size.width) / 2.0, NSMinY(bounds) + (NSHeight(bounds) - size.height) / 2.0, size.width, size.height);\n    }\n    else\n    {\n        rect = NSMakeRect(NSMinX(bounds) + (NSWidth(bounds) - TEXT_WIDTH) / 2.0, NSMinY(bounds) + (NSHeight(bounds) - (2 * ICON_SELECTION_MARGIN + ICON_SIZE + ICON_TEXT_MARGIN + TEXT_HEIGHT)) / 2.0, TEXT_WIDTH, TEXT_HEIGHT);\n    }\n    return rect;\n}\n\n- (NSColor *)selectionColor\n{\n    return [NSColor colorWithCalibratedWhite:0.76 alpha:1.0];\n}\n\n- (void)drawSelectionForText:(NSString *)label inRect:(NSRect)rect\n{\n    // Draw text selection\n    NSTextView      *fieldEditor;\n    NSLayoutManager *layoutManager;\n    NSRectArray     rects;\n    NSUInteger      count;\n    CGFloat         yPos;\n    NSBezierPath    *path;\n    NSRange         range;\n    NSColor         *selectionColor;\n    \n    fieldEditor = (NSTextView *)[[self window] fieldEditor:YES forObject:self];\n    [_textCell setUpFieldEditorAttributes:fieldEditor];\n    [fieldEditor setString:label];\n    [fieldEditor setFrame:rect];\n    [fieldEditor setTextContainerInset:NSZeroSize];\n    [fieldEditor setFont:[_textCell font]];\n    \n    layoutManager = [fieldEditor layoutManager];\n    \n    range = NSMakeRange(0, [label length]);\n    rects = [layoutManager rectArrayForCharacterRange:range withinSelectedCharacterRange:range inTextContainer:[fieldEditor textContainer] rectCount:&count];\n    \n    if ([[self window] isKeyWindow])\n    {\n        selectionColor = [NSColor alternateSelectedControlColor];\n        [_textCell setTextColor:[NSColor whiteColor]];\n    }\n    else\n    {\n        selectionColor = [self selectionColor];\n    }\n    [selectionColor set];\n    \n    yPos = NSMaxY(rect) - 1.0; // A little fudge\n    count = MIN(2, count);\n    for (NSUInteger i = 0; i < count; i++)\n    {\n        // The rects aren't positioned correctly so we correct them here. Also some fudge on the height\n        rects[i].size.height += 1.0;\n        rects[i].origin.x = NSMinX(rect) + (NSWidth(rect) - NSWidth(rects[i])) / 2.0;\n        rects[i].origin.y = yPos - NSHeight(rects[i]);\n        \n        if (!NSContainsRect(rect, rects[i]) && (i != 0))\n        {\n            // We only care about the rects within the visible region. For instance, we sometimes get one rect for\n            // the two lines plus another rect out of bounds\n            count = i;\n        }\n        \n        yPos = NSMinY(rects[i]);\n    }\n    \n    path = nil;\n    if (count > 1)\n    {\n        CGFloat         diff, height;\n        \n        diff = NSWidth(rects[0]) - NSWidth(rects[1]);\n        if (diff < SELECTION_RADIUS + INNER_SELECTION_RADIUS)\n        {\n            // The two lines of text are pretty close to eachother so just construct one rect to encompass them both\n            count = 1;\n            height = NSHeight(rects[0]) + NSHeight(rects[1]);\n            rects[0] = NSMakeRect(MIN(NSMinX(rects[0]), NSMinX(rects[1])), NSMaxY(rect) - height,\n                                  MAX(NSWidth(rects[0]), NSWidth(rects[1])), height);\n            rects[0] = NSInsetRect(rects[0], -SELECTION_RADIUS, 0.0);\n            \n            path = [NSBezierPath bezierPathWithRoundedRect:rects[0] xRadius:SELECTION_RADIUS yRadius:SELECTION_RADIUS];\n        }\n        else\n        {\n            // Lines of text are varying widths. Construct a path to follow the general shape, rounding the ends/corners.\n            CGFloat radius;\n            \n            radius = NSHeight(rects[0]) / 2.0;\n            \n            path = [NSBezierPath bezierPath];\n            // Top left corner\n            [path moveToPoint:NSMakePoint(NSMinX(rects[0]), NSMaxY(rects[0]))];\n            \n            if (diff > 0.0)\n            {\n                // First line is wider than the second\n                \n                // Right cap, top rect\n                [path appendBezierPathWithArcWithCenter:NSMakePoint(NSMaxX(rects[0]), NSMinY(rects[0]) + radius) radius:radius startAngle:90 endAngle:270 clockwise:YES];\n                \n                // Upper right corner, bottom rect\n                [path appendBezierPathWithArcWithCenter:NSMakePoint(NSMaxX(rects[1]) + radius + INNER_SELECTION_RADIUS, NSMaxY(rects[1]) - INNER_SELECTION_RADIUS) radius:INNER_SELECTION_RADIUS startAngle:90 endAngle:180 clockwise:NO];\n                \n                // Lower right corner, bottom rect\n                [path appendBezierPathWithArcWithCenter:NSMakePoint(NSMaxX(rects[1]), NSMinY(rects[1]) + radius) radius:radius startAngle:0 endAngle:270 clockwise:YES];\n                \n                // Lower left corner, bottom rect\n                [path appendBezierPathWithArcWithCenter:NSMakePoint(NSMinX(rects[1]), NSMinY(rects[1]) + radius) radius:radius startAngle:270 endAngle:180 clockwise:YES];\n                \n                // Upper left corner, bottom rect\n                [path appendBezierPathWithArcWithCenter:NSMakePoint(NSMinX(rects[1]) - radius - INNER_SELECTION_RADIUS, NSMaxY(rects[1]) - INNER_SELECTION_RADIUS) radius:INNER_SELECTION_RADIUS startAngle:0 endAngle:90 clockwise:NO];\n                \n                // Left cap, top rect\n                [path appendBezierPathWithArcWithCenter:NSMakePoint(NSMinX(rects[0]), NSMinY(rects[0]) + radius) radius:radius startAngle:270 endAngle:90 clockwise:YES];\n            }\n            else\n            {\n                // Upper right corner, top rect\n                [path appendBezierPathWithArcWithCenter:NSMakePoint(NSMaxX(rects[0]), NSMaxY(rects[0]) - radius) radius:radius startAngle:90 endAngle:0 clockwise:YES];\n                \n                // Lower right corner, top rect\n                [path appendBezierPathWithArcWithCenter:NSMakePoint(NSMaxX(rects[0]) + radius + INNER_SELECTION_RADIUS, NSMinY(rects[0]) + INNER_SELECTION_RADIUS) radius:INNER_SELECTION_RADIUS startAngle:180 endAngle:270 clockwise:NO];\n                \n                // Right cap, bottom rect\n                [path appendBezierPathWithArcWithCenter:NSMakePoint(NSMaxX(rects[1]), NSMinY(rects[1]) + radius) radius:radius startAngle:90 endAngle:270 clockwise:YES];\n                \n                // Left cap, bottom rect\n                [path appendBezierPathWithArcWithCenter:NSMakePoint(NSMinX(rects[1]), NSMinY(rects[1]) + radius) radius:radius startAngle:180 endAngle:90 clockwise:YES];\n                \n                // Lower left corner, top rect\n                [path appendBezierPathWithArcWithCenter:NSMakePoint(NSMinX(rects[0]) - radius - INNER_SELECTION_RADIUS, NSMinY(rects[0]) + INNER_SELECTION_RADIUS) radius:INNER_SELECTION_RADIUS startAngle:270 endAngle:0 clockwise:NO];\n                [path appendBezierPathWithArcWithCenter:NSMakePoint(NSMinX(rects[0]), NSMaxY(rects[0]) - radius) radius:radius startAngle:180 endAngle:90 clockwise:YES];\n            }\n            [path closePath];\n        }\n    }\n    else\n    {\n        rects[0] = NSInsetRect(rects[0], -SELECTION_RADIUS, 0);\n        path = [NSBezierPath bezierPathWithRoundedRect:rects[0] xRadius:SELECTION_RADIUS yRadius:SELECTION_RADIUS];\n    }\n    \n    [path fill];\n}\n\n\n- (void)drawRect:(NSRect)dirtyRect\n{\n    CK2IconViewItem *item;\n    NSRect          iconRect, rect, bounds;\n    NSColor         *color, *selectionColor;\n    NSString        *label;\n    NSURL           *url;\n    \n    item = [self item];\n\n    NSAssert([item view] == self, @\"Item view for view %@ not properly set.\", self);\n    \n    url = [item representedObject];\n    \n    bounds = [self bounds];\n    \n    selectionColor = [NSColor colorWithCalibratedWhite:0.76 alpha:1.0];\n    \n    if (![url ck2_isPlaceholder])\n    {\n        // Draw icon (and its selection)\n        iconRect = [self iconRectForBounds:bounds];\n        if ([item isSelected])\n        {\n            NSBezierPath    *path;\n            \n            rect = NSInsetRect(iconRect, -ICON_SELECTION_MARGIN, -ICON_SELECTION_MARGIN);\n            path = [NSBezierPath bezierPathWithRoundedRect:rect xRadius:ICON_SELECTION_MARGIN yRadius:ICON_SELECTION_MARGIN];\n            [selectionColor set];\n            [path fill];\n        }\n        \n        [[url ck2_icon] drawInRect:iconRect fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0];\n    \n        if (![item isEnabled])\n        {\n            [[NSColor colorWithDeviceWhite:1.0 alpha:0.5] set];\n            NSRectFillUsingOperation(iconRect, NSCompositeSourceAtop);\n        }\n    }\n    \n    color = [item isEnabled] ? [NSColor controlTextColor] : [NSColor disabledControlTextColor];\n    \n    rect = [self textRectForBounds:bounds];\n    \n    label = [url ck2_displayName];\n    [_textCell setStringValue:label];\n    \n    if ([[self item] isSelected])\n    {\n        [self drawSelectionForText:label inRect:rect];\n    }\n    else\n    {\n        [_textCell setTextColor:color];\n    }\n\n    [_textCell drawWithFrame:rect inView:self];\n}\n\n-(void)mouseDown:(NSEvent *)theEvent\n{\n    NSInteger       clickCount;\n    CK2IconViewItem *item;\n    NSPoint         point;\n    NSRect          bounds;\n    BOOL            isFlipped;\n\n    point = [self convertPoint:[theEvent locationInWindow] fromView:nil];\n    bounds = [self bounds];\n    item = [self item];\n    isFlipped = [self isFlipped];\n\n    if ([item isEnabled] &&\n        (NSMouseInRect(point, [self iconRectForBounds:bounds], isFlipped) ||\n         NSMouseInRect(point, [self textRectForBounds:bounds], isFlipped)))\n    {\n        [super mouseDown:theEvent];\n        \n        clickCount = [theEvent clickCount];\n        \n        if (clickCount == 1)\n        {\n            [NSApp sendAction:[item action] to:[item target] from:[self item]];\n        }\n        else if (clickCount == 2)\n        {\n            [NSApp sendAction:[item doubleAction] to:[item target] from:[self item]];\n        }\n    }\n}\n\n// Suppress animations\n- (id)animator\n{\n    return self;\n}\n\n- (id)animationForKey:(NSString *)key\n{\n    return nil;\n}\n\n#pragma mark NSCoding\n\n#define ITEM_KEY            @\"item\"\n\n- (id)initWithCoder:(NSCoder *)aDecoder\n{\n    if ((self = [super initWithCoder:aDecoder]) != nil)\n    {        \n        [self createTextField];\n        [self setItem:[aDecoder decodeObjectForKey:ITEM_KEY]];\n    }\n    return self;\n}\n\n- (void)encodeWithCoder:(NSCoder *)aCoder\n{\n    [super encodeWithCoder:aCoder];\n    \n    [aCoder encodeObject:[self item] forKey:ITEM_KEY];\n}\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2IconView.h",
    "content": "//\n//  CK2IconView.h\n//  Connection\n//\n//  Created by Paul Kim on 1/17/13.\n//\n//\n\n#import <Cocoa/Cocoa.h>\n\n@interface CK2IconView : NSCollectionView\n{\n    NSMutableString     *_typeSelectBuffer;\n    NSTimer             *_typeSelectTimer;\n    \n    BOOL                _messageMode;\n}\n\n@property (readwrite, assign, nonatomic) BOOL   messageMode;\n\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2IconView.m",
    "content": "//\n//  CK2IconView.m\n//  Connection\n//\n//  Created by Paul Kim on 1/17/13.\n//\n//\n\n#import \"CK2IconView.h\"\n#import \"NSURL+CK2OpenPanel.h\"\n\n@implementation CK2IconView\n\n@synthesize messageMode = _messageMode;\n\n- (id)initWithFrame:(NSRect)frame\n{\n    if (self = [super initWithFrame:frame])\n    {\n        [self initNotifications];\n    }\n    \n    return self;\n}\n\n- (void)dealloc\n{\n    [[NSNotificationCenter defaultCenter] removeObserver:self];\n    \n    if ([_typeSelectTimer isValid])\n    {\n        [_typeSelectTimer invalidate];\n        [_typeSelectTimer release];\n    }\n    [_typeSelectBuffer release];\n    \n    [super dealloc];\n}\n\n- (void)initNotifications\n{\n    // Tried doing this by overriding setFrame: but it seems to cause spastic behavior. Seems to work more smoothly\n    // when done this way.\n    [self setPostsFrameChangedNotifications:YES];\n    \n    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(tile) name:NSViewFrameDidChangeNotification object:self];\n}\n\n- (void)awakeFromNib\n{\n    [self initNotifications];\n}\n\n- (void)setMessageMode:(BOOL)messageMode\n{\n    _messageMode = messageMode;\n    [self tile];\n}\n\n- (void)setContent:(NSArray *)content\n{\n    [super setContent:content];\n    [self tile];\n}\n\n- (void)tile\n{\n    NSRect    bounds;\n    \n    bounds = [self bounds];\n    if (_messageMode)\n    {\n        [self setMinItemSize:bounds.size];\n        [self setMaxItemSize:bounds.size];\n    }\n    else\n    {\n        NSUInteger  colCount;\n        CGFloat     calcWidth;\n        NSSize      size, minSize;\n        \n        // NSCollectionView tends to align things towards the left. We want the icons to be evenly distributed so we\n        // set the minimum width of each item to force such a layout.\n\n        minSize = [[[self itemPrototype] view] frame].size;\n        \n        colCount = NSWidth(bounds) / minSize.width;\n        calcWidth = floor(NSWidth(bounds) / colCount);\n        \n        [self setMaxNumberOfColumns:colCount];\n        \n        size = NSMakeSize(MIN(calcWidth, minSize.width), minSize.height);\n        [self setMinItemSize:size];\n        // Setting the max size gets rid of odd scroller behavior\n        [self setMaxItemSize:size];\n    }\n}\n\n- (void)resetTypeSelectTimer\n{\n    if ([_typeSelectTimer isValid])\n    {\n        [_typeSelectTimer invalidate];\n        [_typeSelectTimer release];\n    }\n    \n    // You have to type the name within a short period of time otherwise it resets. We use -keyRepeatDelay as that\n    // seems like a reasonable match. May have to do some experimentation to find out what the delay really is (and\n    // if it correlates to any existing settings).\n    _typeSelectTimer = [[NSTimer alloc] initWithFireDate:[NSDate dateWithTimeIntervalSinceNow:[NSEvent keyRepeatDelay]] interval:0 target:self selector:@selector(clearTypeSelectBuffer:) userInfo:nil repeats:NO];\n    [[NSRunLoop currentRunLoop] addTimer:_typeSelectTimer forMode:NSRunLoopCommonModes];\n}\n\n- (void)clearTypeSelectBuffer:(id)sender\n{\n    if ([sender isKindOfClass:[NSTimer class]])\n    {\n        [_typeSelectTimer invalidate];\n        [_typeSelectTimer release];\n        _typeSelectTimer = nil;\n    }\n    [_typeSelectBuffer setString:@\"\"];\n}\n\n- (void)keyDown:(NSEvent *)event\n{\n    if ([event type] == NSKeyDown)\n    {\n        NSString    *string;\n        NSUInteger  flags;\n        \n        string = [event characters];\n        flags = [event modifierFlags] & NSDeviceIndependentModifierFlagsMask;\n        \n        if (([string isEqual:@\"/\"] || [string isEqual:@\"~\"]) && ((flags & NSCommandKeyMask) == 0))\n        {\n            // Let the window handle it\n            [[self nextResponder] keyDown:event];\n            return;\n        }\n    }\n    [super keyDown:event];\n}\n\n- (void)insertText:(id)aString\n{\n    NSUInteger      i;\n    NSArray         *urls;\n    \n    if (_typeSelectBuffer == nil)\n    {\n        _typeSelectBuffer = [[NSMutableString alloc] init];\n    }\n    \n    if ([_typeSelectBuffer length] == 0)\n    {\n        [self resetTypeSelectTimer];\n    }\n    \n    [_typeSelectBuffer appendString:aString];\n    urls = [self content];\n\n    i = [urls indexOfObject:_typeSelectBuffer inSortedRange:NSMakeRange(0, [urls count]) options:NSBinarySearchingInsertionIndex | NSBinarySearchingFirstEqual usingComparator:\n         ^ NSComparisonResult (id obj1, id obj2)\n         {\n             NSString    *string1, *string2;\n             \n             string1 = obj1;\n             if ([obj1 isKindOfClass:[NSURL class]])\n             {\n                 string1 = [obj1 ck2_displayName];\n             }\n             string2 = obj2;\n             if ([obj2 isKindOfClass:[NSURL class]])\n             {\n                 string2 = [obj2 ck2_displayName];\n             }\n             \n             return [string1 caseInsensitiveCompare:string2];\n         }];\n    \n    if (i == NSNotFound)\n    {\n        NSBeep();\n    }\n    else\n    {\n        [self setSelectionIndexes:[NSIndexSet indexSetWithIndex:i]];\n        [self scrollRectToVisible:[self frameForItemAtIndex:i]];\n    }\n}\n\n- (void)viewWillMoveToWindow:(NSWindow *)newWindow\n{\n    NSWindow            *window;\n    \n    window = [self window];\n    \n    if (window != nil)\n    {\n        NSNotificationCenter    *notificationCenter;\n\n        notificationCenter = [NSNotificationCenter defaultCenter];\n        [notificationCenter removeObserver:self name:NSWindowDidBecomeKeyNotification object:window];\n        [notificationCenter removeObserver:self name:NSWindowDidResignKeyNotification object:window];\n    }\n}\n\n- (void)viewDidMoveToWindow\n{\n    NSWindow                *window;\n    \n    window = [self window];\n\n    if (window != nil)\n    {\n        NSNotificationCenter    *notificationCenter;\n        \n        notificationCenter = [NSNotificationCenter defaultCenter];\n        [notificationCenter addObserver:self selector:@selector(windowDidBecomeKey:) name:NSWindowDidBecomeKeyNotification object:window];\n        [notificationCenter addObserver:self selector:@selector(windowDidResignKey:) name:NSWindowDidResignKeyNotification object:window];\n    }\n}\n\n- (void)windowDidBecomeKey:(NSNotification *)notification\n{\n    [self setNeedsDisplay:YES];\n}\n\n- (void)windowDidResignKey:(NSNotification *)notification\n{\n    [self setNeedsDisplay:YES];\n}\n\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2IconViewItem.h",
    "content": "//\n//  CK2IconViewItem.h\n//  ConnectionKit\n//\n//  Created by Paul Kim on 12/19/12.\n//  Copyright (c) 2012 Paul Kim. All rights reserved.\n//\n//\n// Redistribution and use in source and binary forms, with or without modification,\n// are permitted provided that the following conditions are met:\n//\n// Redistributions of source code must retain the above copyright notice, this list\n// of conditions and the following disclaimer.\n//\n// Redistributions in binary form must reproduce the above copyright notice, this\n// list of conditions and the following disclaimer in the documentation and/or other\n// materials provided with the distribution.\n//\n// Neither the name of Karelia Software nor the names of its contributors may be used to\n// endorse or promote products derived from this software without specific prior\n// written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\n// SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\n// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY\n// WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n#import <Cocoa/Cocoa.h>\n\n@interface CK2IconViewItem : NSCollectionViewItem\n{\n    IBOutlet id         _target;\n    SEL                 _action;\n    SEL                 _doubleAction;\n    BOOL                _isEnabled;\n}\n\n@property (readwrite, assign) id                        target;\n@property (readwrite, assign) SEL                       action;\n@property (readwrite, assign) SEL                       doubleAction;\n@property (readwrite, assign, getter=isEnabled) BOOL    enabled;\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2IconViewItem.m",
    "content": "//\n//  CK2IconViewItem.m\n//  ConnectionKit\n//\n//  Created by Paul Kim on 12/19/12.\n//  Copyright (c) 2012 Paul Kim. All rights reserved.\n//\n//\n// Redistribution and use in source and binary forms, with or without modification,\n// are permitted provided that the following conditions are met:\n//\n// Redistributions of source code must retain the above copyright notice, this list\n// of conditions and the following disclaimer.\n//\n// Redistributions in binary form must reproduce the above copyright notice, this\n// list of conditions and the following disclaimer in the documentation and/or other\n// materials provided with the distribution.\n//\n// Neither the name of Karelia Software nor the names of its contributors may be used to\n// endorse or promote products derived from this software without specific prior\n// written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\n// SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\n// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY\n// WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n#import \"CK2IconViewItem.h\"\n#import \"CK2IconItemView.h\"\n\n@interface CK2IconViewItem ()\n\n@end\n\n@implementation CK2IconViewItem\n\n@synthesize target = _target;\n@synthesize action = _action;\n@synthesize doubleAction = _doubleAction;\n@synthesize enabled = _isEnabled;\n\n- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil\n{\n    if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) != nil)\n    {\n        [self setEnabled:YES];\n    }\n    \n    return self;\n}\n\n- (void)dealloc\n{\n    [(CK2IconItemView *)[self view] setItem:nil];\n    [super dealloc];\n}\n\n- (void)setView:(NSView *)view\n{\n    [super setView:view];\n    \n    [(CK2IconItemView *)[self view] setItem:self];\n}\n\n#pragma mark NSCopying\n\n- (id)copyWithZone:(NSZone *)zone\n{\n    CK2IconViewItem     *copy;\n    \n    copy = [super copyWithZone:zone];\n    [copy setTarget:[self target]];\n    [copy setAction:[self action]];\n    [copy setDoubleAction:[self doubleAction]];\n    \n    return copy;\n}\n\n#pragma mark NSCoding\n\n#define TARGET_KEY          @\"target\"\n#define ACTION_KEY          @\"action\"\n#define DOUBLE_ACTION_KEY   @\"doubleAction\"\n#define ENABLED_ACTION_KEY  @\"enabled\"\n\n- (id)initWithCoder:(NSCoder *)aDecoder\n{\n    if ((self = [super initWithCoder:aDecoder]) != nil)\n    {\n        [self setTarget:[aDecoder decodeObjectForKey:TARGET_KEY]];\n        [self setAction:NSSelectorFromString([aDecoder decodeObjectForKey:ACTION_KEY])];\n        [self setDoubleAction:NSSelectorFromString([aDecoder decodeObjectForKey:DOUBLE_ACTION_KEY])];\n        [self setEnabled:[aDecoder decodeBoolForKey:ENABLED_ACTION_KEY]];        \n    }\n    return self;\n}\n\n- (void)encodeWithCoder:(NSCoder *)aCoder\n{\n    [super encodeWithCoder:aCoder];\n    \n    [aCoder encodeObject:[self target] forKey:TARGET_KEY];\n    [aCoder encodeObject:NSStringFromSelector([self action]) forKey:ACTION_KEY];\n    [aCoder encodeObject:NSStringFromSelector([self doubleAction]) forKey:DOUBLE_ACTION_KEY];\n    [aCoder encodeBool:[self isEnabled] forKey:ENABLED_ACTION_KEY];\n}\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2NewFolderWindowController.h",
    "content": "//\n//  CK2NewFolderWindowWindowController.h\n//  Connection\n//\n//  Created by Paul Kim on 1/22/13.\n//\n//\n\n#import <ConnectionKit/ConnectionKit.h>\n\n@class CK2OpenPanelController;\n\n@interface CK2NewFolderWindowController : NSWindowController\n{\n    IBOutlet NSTextField                *_nameField;\n    IBOutlet NSButton                   *_okButton;\n    IBOutlet NSTextField                *_statusField;\n    IBOutlet NSProgressIndicator        *_progressIndicator;\n    \n    CK2OpenPanelController              *_controller;\n    NSURL                               *_folderURL;\n    NSArray                             *_existingNames;\n    CK2FileOperation                    *_operation;\n    NSError                             *_error;\n}\n\n@property (readonly, retain) NSURL      *folderURL;\n@property (readonly, retain) NSError    *error;\n\n- (id)initWithController:(CK2OpenPanelController *)controller;;\n\n- (BOOL)runModalForURL:(NSURL *)url;\n\n- (IBAction)ok:(id)sender;\n- (IBAction)cancel:(id)sender;\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2NewFolderWindowController.m",
    "content": "//\n//  CK2NewFolderWindowWindowController.m\n//  Connection\n//\n//  Created by Paul Kim on 1/22/13.\n//\n//\n\n#import \"CK2NewFolderWindowController.h\"\n#import \"CK2OpenPanelController.h\"\n#import <ConnectionKit/CK2FileManager.h>\n\n#define DEFAULT_NAME        @\"untitled folder\"\n\n@interface CK2NewFolderWindowController ()\n\n@property (readwrite, retain) NSURL           *folderURL;\n@property (readwrite, retain) NSError       *error;\n\n@end\n\n@implementation CK2NewFolderWindowController\n\n@synthesize folderURL = _folderURL;\n@synthesize error = _error;\n\n- (id)initWithController:(CK2OpenPanelController *)controller\n{\n    if ((self = [super initWithWindowNibName:@\"CK2NewFolderWindow\"]) != nil)\n    {\n        _controller = controller;\n    }\n    \n    return self;\n}\n\n- (void)dealloc\n{\n    [_operation cancel];\n    [_operation release];\n    [_folderURL release];\n    [_error release];\n    [_existingNames release];\n    \n    [super dealloc];\n}\n\n- (void)controlTextDidChange:(NSNotification *)aNotification\n{\n    NSText      *fieldEditor;\n    NSString    *string;\n    BOOL        nameExists;\n    \n    fieldEditor = [[aNotification userInfo] objectForKey:@\"NSFieldEditor\"];\n    \n    string = [fieldEditor string];\n    \n    nameExists = [_existingNames containsObject:string];\n    \n    [_statusField setHidden:!nameExists];\n    [_okButton setEnabled:([string length] != 0) && !nameExists];\n    \n    //PENDING:\n    //Replace ':' with '-'\n}\n\n- (BOOL)runModalForURL:(NSURL *)url\n{\n    NSArray     *children;\n    NSInteger   resultCode;\n    NSString    *name;\n    NSUInteger  i;\n    \n    [self setFolderURL:url];\n    children = [_controller childrenForURL:url];\n    _existingNames = [[children valueForKey:@\"lastPathComponent\"] retain];\n    \n    name = DEFAULT_NAME;\n    i = 2;\n    while ([_existingNames containsObject:name])\n    {\n        name = [NSString stringWithFormat:@\"%@ %lu\", DEFAULT_NAME, (unsigned long)i++];\n    }\n    // Window may not be loaded yet.\n    [self window];\n    \n    [_nameField setStringValue:name];\n\n    resultCode = [NSApp runModalForWindow:[self window]];\n\n    return ((resultCode == NSOKButton) && (_error == nil));\n}\n\n\n- (void)endWithCode:(NSInteger)code\n{\n    NSWindow    *window;\n    \n    [_progressIndicator stopAnimation:self];\n\n    window = [self window];\n    [window close];\n    [_operation release];\n    _operation = nil;\n    [_existingNames release];\n    _existingNames = nil;\n\n    if ([window isModalPanel])\n    {\n        [NSApp stopModalWithCode:code];\n    }\n}\n\n- (void)doIt:sender\n{\n    [self endWithCode:NSOKButton];\n}\n\n- (IBAction)ok:(id)sender\n{\n    NSString    *folderName;\n    NSURL       *url, *parentURL;\n    \n    folderName = [_nameField stringValue];\n    parentURL = [self folderURL];\n    url = [parentURL URLByAppendingPathComponent:folderName isDirectory:YES];\n    // Need to set this since the url is not vended by CK2\n    [CK2FileManager setTemporaryResourceValue:parentURL forKey:NSURLParentDirectoryURLKey inURL:url];\n    \n    [_okButton setEnabled:NO];\n    \n    _operation = [[[_controller fileManager] createDirectoryAtURL:url withIntermediateDirectories:NO openingAttributes:nil completionHandler:\n     ^(NSError *blockError)\n     {\n         NSEvent     *event;\n                  \n             [self setError:blockError];\n             [self setFolderURL:url];\n             [self endWithCode:NSOKButton];\n             \n             [_okButton setEnabled:YES];\n         \n         // It seems that the run loop doesn't wake up after ending the modal session from a block (also happens with\n         // -performSelectorOnMainThread:) so we create a fake event here to \"jiggle its rat\" (rdar://13079612)\n         event = [NSEvent otherEventWithType:NSApplicationDefined location:NSZeroPoint modifierFlags:0 timestamp:0 windowNumber:[[self window] windowNumber] context:NULL subtype:NSApplicationDefined data1:0 data2:0];\n         [NSApp postEvent:event atStart:YES];\n\n     }] retain];\n    \n    [_progressIndicator startAnimation:self];\n}\n\n- (IBAction)cancel:(id)sender\n{\n    [_operation cancel];\n    [self endWithCode:NSCancelButton];\n}\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2OpenPanel.h",
    "content": "//\n//  CK2OpenPanel.h\n//  ConnectionKit\n//\n//  Created by Paul Kim on 12/14/12.\n//  Copyright (c) 2012 Paul Kim. All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without modification,\n// are permitted provided that the following conditions are met:\n//\n// Redistributions of source code must retain the above copyright notice, this list\n// of conditions and the following disclaimer.\n//\n// Redistributions in binary form must reproduce the above copyright notice, this\n// list of conditions and the following disclaimer in the documentation and/or other\n// materials provided with the distribution.\n//\n// Neither the name of Karelia Software nor the names of its contributors may be used to\n// endorse or promote products derived from this software without specific prior\n// written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\n// SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\n// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY\n// WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n\n\n\n#import <Cocoa/Cocoa.h>\n#import <ConnectionKit/ConnectionKit.h>\n\n//TODO: Handle/display errors better\n//TODO: Add save panel functionality?\n//TODO: Save window/view dimensions?\n//TODO: Autocomplete in the path field?\n\n\n@class CK2OpenPanel;\n@protocol CK2OpenPanelDelegate <NSWindowDelegate>\n\n@optional\n\n- (void)panel:(CK2OpenPanel *)sender didChangeToDirectoryURL:(NSURL *)url;\n- (BOOL)panel:(CK2OpenPanel *)sender shouldEnableURL:(NSURL *)url;\n- (BOOL)panel:(CK2OpenPanel *)sender validateURL:(NSURL *)url error:(NSError **)outError;\n- (void)panelSelectionDidChange:(CK2OpenPanel *)sender;\n\n- (void)panel:(CK2OpenPanel *)sender didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(CK2AuthChallengeDisposition, NSURLCredential *))completionHandler;\n- (void)panel:(CK2OpenPanel *)sender appendString:(NSString *)info toTranscript:(CK2TranscriptType)transcript;\n\n- (void)panel:(CK2OpenPanel *)sender didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge __attribute((deprecated(\"implement -panel:didReceiveChallenge:completionHandler instead\")));\n\n@end\n\n\n@class CK2OpenPanelController;\n\n/**\n CK2OpenPanel is the equivalent of NSOpenPanel, but built on ConnectionKit so that it can allow you to browse\n filesystems on other machines via the protocols ConnectionKit supports. The goal of this was to emulate NSOpenPanel\n as far as it made sense. It's user and programming interfaces remain fairly close to NSOpenPanel with the following\n exceptions:\n\n User Interface:\n - Added a header to indicate the host. Should help in cases where multiple CK2OpenPanels are showing.\n - Since this is oriented towards selecting an existing file or directory, it does not have NSSavePanel's support\n for save operations, such as the field to enter a name for the file. Will consider adding this in if there is demand.\n - No sidebar. Besides a home directory, there are no common standard directories. It's unclear whether users would\n use this enough to keep around favorite directories on different servers.\n - A home button has been added to quickly jump to the home directory.\n - There is no search field as we cannot do anything resembling a Spotlight search over network protocols. An\n exhaustive search would be time-consuming and probably not very friendly to the server. May consider doing search\n just in the current directory, though.\n - No \"arrange\" pull-down. Not sure if anyone would miss this and didn't seem worth the effort.\n - No coverflow view. Not very useful (no previews) and not worth the effort.\n - The UI operates asynchronously from any operations it performs. Since these are network operations, the UI should\n not beachball while performing long operations. A progress indicator/reload button has been added and a loading\n message appears in directories whose contents are being retrieved.\n - No preview or application icons (a generic app icon is used). It's a bit resource heavy and server-unfriendly\n downloading application icons. Previews for other files would end up just downloading files outright.\n - No QuickLook. See above about previews.\n - Does not support drag and drop. Doesn't make sense to have the open panel navigate to a file on the server based\n on a locally dropped file.\n\n API:\n - No API's related to saving files (name field, expansion state, hide extension).\n - -setDirectoryURL: can also take a completion block, since the operation is asynchronous.\n\n Despite all of the above, CK2OpenPanel should be a near-drop-in replacement for NSOpenPanel in terms of code usage\n and user experience. The emulation of NSOpenPanel's behavior goes fairly deep and you may be\n surprised by the features supported.\n */\n@interface CK2OpenPanel : NSPanel\n{\n    CK2OpenPanelController      *_viewController;\n    NSString                    *_title;\n    NSString                    *_prompt;\n    NSString                    *_message;\n    BOOL                        _canChooseFiles;\n    BOOL                        _canChooseDirectories;\n    BOOL                        _allowsMultipleSelection;\n    BOOL                        _showsHiddenFiles;\n    BOOL                        _treatsFilePackagesAsDirectories;\n    BOOL                        _canCreateDirectories;\n    NSArray                     *_allowedFileTypes;\n    \n    void                        (^_completionBlock)(NSInteger result);\n}\n\n@property (readwrite, copy) NSString    *title;\n@property (readwrite, copy) NSString    *prompt;\n@property (readwrite, copy) NSString    *message;\n@property (readwrite, retain) NSView    *accessoryView;\n@property (readwrite, assign) BOOL      canChooseFiles;\n@property (readwrite, assign) BOOL      canChooseDirectories;\n@property (readwrite, assign) BOOL      allowsMultipleSelection;\n@property (readwrite, assign) BOOL      showsHiddenFiles;\n@property (readwrite, assign) BOOL      treatsFilePackagesAsDirectories;\n@property (readwrite, assign) BOOL      canCreateDirectories;\n@property (readwrite, copy) NSArray     *allowedFileTypes;\n@property (readwrite, retain, nonatomic) NSURL       *directoryURL;\n\n@property (readonly, retain) NSURL        *URL;\n@property (readonly, copy) NSArray      *URLs;\n\n\n\n+ (CK2OpenPanel *)openPanel;\n\n@property(assign) id <CK2OpenPanelDelegate> delegate;\n\n/**\n The completion block will not be called until the given URL's contents are fully loaded. That way, if you show the\n panel in the completion block, nothing will be \"in progress\". You can still show the panel beforehand but much of\n the UI will be disabled until the URL is loaded. The UI will still be responsive in that you'll see progress\n indicators spinning and you can still cancel the panel.\n \n The completion block is called on the main thread, and as a nicety,\n deliberately *avoids* using a dispatch queue to do so, so you can call\n `-runModal` from within it if desired (see the `-runModal` docs for details).\n\n Note that directoryURL immediately reflects the URL this method was called with but may change when the operation\n is complete as the server may resolve the URL to something else. It's best to not rely on the directoryURL until\n the completion block has fired.\n\n Most commonly, we expect you'll want to show the user's home directory. To get that URL, consult CK2FileManager like so:\n  NSURL *homeDir = [CK2FileManager URLWithPath:@\"\" isDirectory:YES hostURL:[NSURL URLWithString:@\"sftp://example.com\"]];\n \n @param directoryURL        The URL of the host/directory to connect to.\n @param block               The completion block that is called when the operation is complete.\n*/\n- (void)setDirectoryURL:(NSURL *)directoryURL completionHandler:(void (^)(NSError *error))block;\n\n- (void)beginSheetModalForWindow:(NSWindow *)window completionHandler:(void (^)(NSInteger result))handler;\n- (void)beginWithCompletionHandler:(void (^)(NSInteger result))handler;\n\n/**\n Displays the panel and begins its event loop with the current working (or last selected) directory as the default starting point.\n \n @return `NSFileHandlingPanelOKButton` (if the user clicks the OK button) or `NSFileHandlingPanelCancelButton` (if the user clicks the Cancel button).\n \n This method invokes `-[NSApplication runModalForWindow:` with `self` as the\n argument.\n \n You must **NOT** run an open panel modally from the main dispatch\n queue. Doing so will block the queue, preventing important internal callbacks\n from arriving, including from ConnectionKit itself, and the springy scrolling\n behaviour introduced in 10.7+.\n \n Instead, call as part of regular runloop activity, such as directly from a user-\n generated event, or deferred execution using something like\n `-performSelector:afterDelay:…`\n */\n- (NSInteger)runModal;\n\n- (IBAction)ok:(id)sender;\n- (IBAction)cancel:(id)sender;\n\n- (void)validateVisibleColumns;\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2OpenPanel.m",
    "content": "//\n//  CKRemoteOpenPanel.m\n//  ConnectionKit\n//\n//  Created by Paul Kim on 12/14/12.\n//  Copyright (c) 2012 Paul Kim. All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without modification,\n// are permitted provided that the following conditions are met:\n//\n// Redistributions of source code must retain the above copyright notice, this list\n// of conditions and the following disclaimer.\n//\n// Redistributions in binary form must reproduce the above copyright notice, this\n// list of conditions and the following disclaimer in the documentation and/or other\n// materials provided with the distribution.\n//\n// Neither the name of Karelia Software nor the names of its contributors may be used to\n// endorse or promote products derived from this software without specific prior\n// written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\n// SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\n// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY\n// WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n\n#import \"CK2OpenPanel.h\"\n#import \"CK2OpenPanelController.h\"\n#import \"NSURL+CK2OpenPanel.h\"\n\n@interface CK2OpenPanel ()\n\n@property (readwrite, copy) void        (^completionBlock)(NSInteger result);\n\n- (void)endWithCode:(NSInteger)code;\n\n@end\n\n@implementation CK2OpenPanel\n\n@synthesize title = _title;\n@synthesize prompt = _prompt;\n@synthesize message = _message;\n@synthesize canChooseFiles = _canChooseFiles;\n@synthesize canChooseDirectories = _canChooseDirectories;\n@synthesize allowsMultipleSelection = _allowsMultipleSelection;\n@synthesize showsHiddenFiles = _showsHiddenFiles;\n@synthesize treatsFilePackagesAsDirectories = _treatsFilePackagesAsDirectories;\n@synthesize canCreateDirectories = _canCreateDirectories;\n@synthesize allowedFileTypes = _allowedFileTypes;\n@synthesize completionBlock = _completionBlock;\n\n+ (CK2OpenPanel *)openPanel\n{\n    return [[[CK2OpenPanel alloc] init] autorelease];\n}\n\n- (id)init\n{\n    if ((self = [super initWithContentRect:NSMakeRect(0.0, 0.0, 525.0, 350.0) styleMask:NSTitledWindowMask | NSResizableWindowMask backing:NSBackingStoreBuffered defer:NO]) != nil)\n    {\n        NSRect  rect;\n        NSView  *view;\n\n        [self setTitle:NSLocalizedStringFromTableInBundle(@\"Open\", nil, [NSBundle bundleForClass:[self class]], @\"Default open panel title\")];\n        [self setHidesOnDeactivate:NO];\n        \n        _viewController  = [[CK2OpenPanelController alloc] initWithPanel:self];\n        \n        view = [_viewController view];\n        rect = [[self class] frameRectForContentRect:[view frame] styleMask:[self styleMask]];\n        \n        [self setFrame:rect display:NO];\n        [self setContentView:view];\n        \n        [self setCanChooseDirectories:YES];\n        [self setCanChooseFiles:NO];\n        [self setCanCreateDirectories:NO];\n        [self setTreatsFilePackagesAsDirectories:NO];\n        [self setShowsHiddenFiles:NO];\n        [self setMinSize:NSMakeSize(515.0, 475.0)];\n    }\n    return self;\n}\n\n- (void)dealloc\n{\n    [_viewController close]; // holds a weak ref to us which needs breaking\n    \n    [_viewController release];\n    [_title release];\n    [_prompt release];\n    [_message release];\n    [_allowedFileTypes release];\n    [_completionBlock release];\n    \n    [super dealloc];\n}\n\n- (id <CK2OpenPanelDelegate>)delegate\n{\n    // Both protocols (this one and NSWindowDelegate) are totally optional so we\n    // can cast with impunity, as NSSavePanel most likely does for its delegate\n    return (id <CK2OpenPanelDelegate>)[super delegate];\n}\n\n- (void)setDelegate:(id <CK2OpenPanelDelegate>)delegate\n{\n    // Both protocols (this one and NSWindowDelegate) are totally optional so we\n    // can cast with impunity, as NSSavePanel most likely does for its delegate\n    [super setDelegate:(id <NSWindowDelegate>)delegate];\n}\n\n- (NSView *)accessoryView\n{\n    return [_viewController accessoryView];\n}\n\n- (void)setAccessoryView:(NSView *)accessoryView\n{\n    [_viewController setAccessoryView:accessoryView];\n}\n\n- (NSURL *)directoryURL\n{\n    return [_viewController directoryURL];\n}\n\n- (void)setDirectoryURL:(NSURL *)directoryURL;\n{\n    [self setDirectoryURL:directoryURL completionHandler:nil];\n}\n\n- (void)setDirectoryURL:(NSURL *)directoryURL completionHandler:(void (^)(NSError *))block;\n{\n    // Kick off async loading of the URL, but also store our own copy for clients to immediately pull out again if they wish\n    [_viewController changeDirectory:directoryURL completionHandler:^(NSError *error) {\n        \n        // Re-dispatch using runloop so there's no danger from clients deciding\n        // to call -runModal within it\n        NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{\n            block(error);\n        }];\n        \n        [[NSRunLoop currentRunLoop] performSelector:@selector(start)\n                                             target:operation\n                                           argument:nil\n                                              order:0\n                                              modes:@[NSRunLoopCommonModes]];\n    }];\n}\n\n- (NSURL *)URL\n{\n    return [_viewController URL];\n}\n\n- (NSArray *)URLs\n{\n    return [_viewController URLs];\n}\n\n- (void)willAppear;\n{\n    // Default to root if no-one's supplied anything better\n    if (![self directoryURL]) [self setDirectoryURL:[NSURL fileURLWithPath:@\"/\"]];\n    \n    [_viewController reload];\n}\n\n- (void)beginSheetModalForWindow:(NSWindow *)window completionHandler:(void (^)(NSInteger result))handler\n{\n    [self willAppear];\n    \n    CFRetain(self);\n    [NSApp beginSheet:self modalForWindow:window modalDelegate:self didEndSelector:@selector(sheetDidEnd:returnCode:contextInfo:) contextInfo:[handler copy]];\n}\n\n- (void)sheetDidEnd:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo\n{\n    if (sheet == self)\n    {\n        void    (^completionBlock)(NSInteger result);\n        \n        completionBlock = contextInfo;\n        \n        if (completionBlock != nil)\n        {\n            completionBlock(returnCode);\n            [completionBlock release];\n        }\n        \n        CFRelease(self);    // cancels out retain in -beginSheet\n    }\n}\n\n- (void)beginWithCompletionHandler:(void (^)(NSInteger result))handler\n{\n    [self willAppear];\n        \n    [self setCompletionBlock:handler];\n    [self center];\n    [self makeKeyAndOrderFront:self];\n}\n\n- (NSInteger)runModal\n{\n    [self willAppear];\n    \n    [self center];\n    return [NSApp runModalForWindow:self];\n}\n\n- (void)endWithCode:(NSInteger)code\n{\n    [self close];\n    \n    if ([self isModalPanel])\n    {\n        [NSApp stopModalWithCode:code];\n    }\n    else if ([self isSheet])\n    {\n        [NSApp endSheet:self returnCode:code];\n    }\n    else\n    {\n        void        (^block)(NSInteger);\n            \n        block = [self completionBlock];\n        \n        if (block != nil)\n        {\n            block(code);\n            [self setCompletionBlock:nil];\n        }\n    }\n    \n    [_viewController resetSession];\n}\n\n- (IBAction)ok:(id)sender\n{\n    if ([[self delegate] respondsToSelector:@selector(panel:validateURL:error:)])\n    {\n        NSError     *error;\n        \n        for (NSURL *url in [self URLs])\n        {\n            error = nil;\n            if (![[self delegate] panel:self validateURL:url error:&error])\n            {\n                [self presentError:error modalForWindow:self delegate:nil didPresentSelector:NULL contextInfo:NULL];\n                return;\n            }\n        }\n    }\n    [self endWithCode:NSFileHandlingPanelOKButton];\n}\n\n- (IBAction)cancel:(id)sender\n{\n    [self endWithCode:NSFileHandlingPanelCancelButton];\n}\n\n- (BOOL)performKeyEquivalent:(NSEvent *)event\n{\n    // Certain keys, like up and down arrows, will trigger this method being called even if the command key isn't down\n    // so we need to check here.\n    if (([event modifierFlags] & NSDeviceIndependentModifierFlagsMask & NSCommandKeyMask) != 0)\n    {\n        NSString    *string;\n        \n        string = [event charactersIgnoringModifiers];\n        \n        if ([string isEqual:@\">\"])\n        {\n            [self setShowsHiddenFiles:![self showsHiddenFiles]];\n            return YES;\n        }\n        else if ([string isEqual:@\"H\"])\n        {\n            [_viewController home:self];\n            return YES;\n        }\n        else if ([string isEqual:@\"G\"])\n        {\n            [_viewController showPathFieldWithString:[[self directoryURL] path]];\n            return YES;\n        }\n        else if ([string isEqual:@\"[\"])\n        {\n            [_viewController back:self];\n            return YES;\n        }\n        else if ([string isEqual:@\"]\"])\n        {\n            [_viewController forward:self];\n            return YES;\n        }\n        else if ([string isEqual:[NSString stringWithFormat:@\"%C\", (unichar)NSUpArrowFunctionKey]])\n        {\n            NSURL       *parentURL;\n            \n            parentURL = [[self directoryURL] ck2_parentURL];\n            \n            if (parentURL != nil)\n            {\n                [_viewController changeDirectory:parentURL completionHandler:\n                 ^(NSError *error)\n                 {\n                     if (error != nil)\n                     {\n                         NSLog(@\"Could not navigate to enclosing folder from URL %@: %@\", [self directoryURL], error);\n                         NSBeginCriticalAlertSheet(NSLocalizedStringFromTableInBundle(@\"Could not go to enclosing folder.\", nil, [NSBundle bundleForClass:[self class]], @\"Enclosing folder error\"),\n                                                   NSLocalizedStringFromTableInBundle(@\"OK\", nil, [NSBundle bundleForClass:[self class]], @\"OK Button\"), nil, nil, self, nil, NULL, NULL, NULL, @\"%@\", [error localizedDescription]);\n                         [_viewController back:self];\n                     }\n                 }];\n            }\n            return YES;\n        }\n        else if ([string isEqual:[NSString stringWithFormat:@\"%C\", (unichar)NSDownArrowFunctionKey]])\n        {\n            [_viewController goToSelectedItem:self];\n            return YES;\n        }\n    }\n    return [super performKeyEquivalent:event];\n}\n\n- (void)keyDown:(NSEvent *)event\n{\n    if ([event type] == NSKeyDown)\n    {\n        NSString    *string;\n        NSUInteger  flags;\n        \n        string = [event characters];\n        flags = [event modifierFlags] & NSDeviceIndependentModifierFlagsMask;\n\n        if (([string isEqual:@\"/\"] || [string isEqual:@\"~\"]) && ((flags & NSCommandKeyMask) == 0))\n        {\n            [_viewController showPathFieldWithString:string];\n            return;\n        }\n    }\n    [super keyDown:event];\n}\n\n- (void)validateVisibleColumns\n{\n    [_viewController validateVisibleColumns];\n}\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2OpenPanelColumnViewController.h",
    "content": "//\n//  CK2OpenPanelBrowserController.h\n//  ConnectionKit\n//\n//  Created by Paul Kim on 12/29/12.\n//  Copyright (c) 2012 Paul Kim. All rights reserved.\n//\n//\n// Redistribution and use in source and binary forms, with or without modification,\n// are permitted provided that the following conditions are met:\n//\n// Redistributions of source code must retain the above copyright notice, this list\n// of conditions and the following disclaimer.\n//\n// Redistributions in binary form must reproduce the above copyright notice, this\n// list of conditions and the following disclaimer in the documentation and/or other\n// materials provided with the distribution.\n//\n// Neither the name of Karelia Software nor the names of its contributors may be used to\n// endorse or promote products derived from this software without specific prior\n// written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\n// SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\n// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY\n// WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n#import <Cocoa/Cocoa.h>\n#import \"CK2OpenPanelViewController.h\"\n\n@class CK2BrowserPreviewController;\n\n@interface CK2OpenPanelColumnViewController : CK2OpenPanelViewController <NSBrowserDelegate>\n{\n    IBOutlet NSBrowser                  *_browser;\n    CK2BrowserPreviewController         *_previewController;\n    NSURL                               *_rootURL;\n}\n\n@property (readwrite, retain) NSURL   *rootURL;\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2OpenPanelColumnViewController.m",
    "content": "//\n//  CK2OpenPanelBrowserController.m\n//  ConnectionKit\n//\n//  Created by Paul Kim on 12/29/12.\n//  Copyright (c) 2012 Paul Kim. All rights reserved.\n//\n//\n// Redistribution and use in source and binary forms, with or without modification,\n// are permitted provided that the following conditions are met:\n//\n// Redistributions of source code must retain the above copyright notice, this list\n// of conditions and the following disclaimer.\n//\n// Redistributions in binary form must reproduce the above copyright notice, this\n// list of conditions and the following disclaimer in the documentation and/or other\n// materials provided with the distribution.\n//\n// Neither the name of Karelia Software nor the names of its contributors may be used to\n// endorse or promote products derived from this software without specific prior\n// written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\n// SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\n// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY\n// WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n#import \"CK2OpenPanelColumnViewController.h\"\n#import \"CK2OpenPanelController.h\"\n#import \"CK2FileCell.h\"\n#import \"CK2BrowserPreviewController.h\"\n#import \"NSURL+CK2OpenPanel.h\"\n#import \"NSImage+CK2OpenPanel.h\"\n\n@implementation CK2OpenPanelColumnViewController\n\n@synthesize rootURL = _rootURL;\n\n- (void)dealloc\n{\n    [_previewController release];\n    [_rootURL release];\n    [super dealloc];\n}\n\n- (void)awakeFromNib\n{\n    [_browser setCellClass:[CK2FileCell class]];\n    [_browser setDoubleAction:@selector(itemDoubleClicked:)];\n}\n\n- (BOOL)allowsMutipleSelection\n{\n    return [_browser allowsMultipleSelection];\n}\n\n- (void)setAllowsMutipleSelection:(BOOL)allowsMutipleSelection\n{\n    [_browser setAllowsMultipleSelection:allowsMutipleSelection];\n}\n\n- (BOOL)hasFixedRoot\n{\n    return YES;\n}\n\n// Gets the index path of the directory url and the indexset of the URLs under it. \"urls\" is passed by reference as\n// this method can change the list if only a subset can be selected (like when switching from the outline view to this\n// one). Will return YES if the list of urls has changed.\n- (BOOL)getIndexPath:(NSIndexPath **)indexPath indexSet:(NSIndexSet **)indexSet ofURLs:(NSArray **)urls inDirectory:(NSURL *)directoryURL\n{\n    CK2OpenPanelController      *controller;\n    NSURL                       *root, *tempURL;\n    NSUInteger                  count;\n    __block NSUInteger          *indexes, indexCount;\n    NSMutableIndexSet           *resultIndexes;\n    NSMutableArray              *newURLs;\n    \n    if (![_browser isLoaded])\n    {\n        [_browser loadColumnZero];\n    }\n    \n    controller = [self controller];\n    if (directoryURL == nil)\n    {\n        if ([*urls count] > 0)\n        {\n            directoryURL = [*urls objectAtIndex:0];\n        }\n        else\n        {\n            return NO;\n        }\n    }\n    if (![controller URLCanHazChildren:directoryURL])\n    {\n        directoryURL = [directoryURL ck2_parentURL];\n    }\n    \n    root = [self rootURL];\n\n    if (indexPath != NULL)\n    {\n        NSMutableArray  *ancestorURLs;\n        NSURL           *parentURL;\n        NSArray         *children;\n        NSUInteger      row;\n        \n        ancestorURLs = [NSMutableArray array];\n        tempURL = directoryURL;\n        while (![tempURL isEqual:root])\n        {\n            if (tempURL == nil)\n            {\n                NSLog(@\"Ancestor URL not found going up from %@ to %@\", directoryURL, root);\n                *urls = @[];\n                return YES;\n            }\n            [ancestorURLs insertObject:tempURL atIndex:0];\n            tempURL = [tempURL ck2_parentURL];\n        }\n        [ancestorURLs insertObject:root atIndex:0];\n        \n        count = [ancestorURLs count];\n        \n        indexes = NULL;\n        if (count > 0)\n        {\n            indexes = (NSUInteger *)malloc(sizeof(NSUInteger) * count);\n            \n            indexCount = 0;\n            \n            parentURL = nil;\n            \n            for (tempURL in ancestorURLs)\n            {\n                if (parentURL != nil)\n                {\n                    children = [controller childrenForURL:parentURL];\n                    \n                    row = [children indexOfObject:tempURL];\n                    \n                    if (row == NSNotFound)\n                    {\n                        NSLog(@\"Can't find entry in browser %@\", tempURL);\n                        break;\n                    }\n                    else\n                    {\n                        indexes[indexCount++] = row;\n                    }\n                }\n                parentURL = tempURL;\n            }\n            \n            if (indexCount > 0)\n            {\n                *indexPath = [NSIndexPath indexPathWithIndexes:indexes length:indexCount];\n            }\n            \n            free(indexes);\n        }\n    }\n    \n    resultIndexes = [NSMutableIndexSet indexSet];\n    newURLs = [NSMutableArray array];\n    \n    for (tempURL in *urls)\n    {\n        NSArray     *children;\n        NSUInteger  row;\n        \n        children = [controller childrenForURL:directoryURL];\n        row = [children indexOfObject:tempURL];\n        \n        if (row == NSNotFound)\n        {\n            tempURL = [tempURL ck2_URLByDeletingTrailingSlash];\n            \n            row = [children indexOfObject:tempURL];\n        }\n        \n        if (row != NSNotFound)\n        {\n            [resultIndexes addIndex:row];\n            [newURLs addObject:tempURL];\n        }\n    }\n    \n    if (indexSet != NULL)\n    {\n        *indexSet = resultIndexes;\n    }\n    \n    if ([newURLs count] != [*urls count])\n    {\n        *urls = newURLs;\n        return YES;\n    }\n    return NO;\n}\n\n- (void)reload\n{\n    [_browser loadColumnZero];\n}\n\n- (void)update\n{\n    CK2OpenPanelController      *controller;\n    NSArray                     *urls;\n    NSIndexPath                 *indexPath;\n    NSIndexSet                  *indexSet;\n    \n    controller = [self controller];\n    urls = [controller URLs];\n    \n    indexPath = nil;\n    indexSet = nil;\n    if ([self getIndexPath:&indexPath indexSet:&indexSet ofURLs:&urls inDirectory:[controller directoryURL]])\n    {\n        [controller setURLs:urls updateDirectory:NO sender:self];\n    }\n    \n    if (indexPath != nil)\n    {\n        NSUInteger      column;\n        \n        [_browser setSelectionIndexPath:indexPath];\n        column = [indexPath length];\n        \n        if (column > 0)\n        {\n            [_browser selectRowIndexes:indexSet inColumn:column];\n            [_browser scrollColumnToVisible:column];\n            [_browser scrollRowToVisible:[indexSet lastIndex] inColumn:column];\n            [_browser scrollRowToVisible:[indexSet firstIndex] inColumn:column];\n        }\n    }\n    else\n    {\n        [_browser selectRowIndexes:nil inColumn:0];\n    }\n}\n\n- (void)urlDidLoad:(NSURL *)url\n{\n    NSURL       *viewRoot;\n    \n    viewRoot = [self rootURL];\n    \n    // Only care about the url if it's visible (under the current view root).\n    if ([viewRoot ck2_isAncestorOfURL:url])\n    {\n        NSIndexPath         *indexPath;\n        NSArray             *urls;\n        \n        indexPath = nil;\n        urls = @[ url ];\n        [self getIndexPath:&indexPath indexSet:NULL ofURLs:&urls inDirectory:nil];\n        \n        if (indexPath != nil)\n        {\n            [_browser reloadColumn:[indexPath length]];\n        }\n        else\n        {\n            [_browser loadColumnZero];\n        }\n        [_browser setNeedsDisplay:YES];\n    }\n}\n\n- (NSArray *)selectedURLs\n{\n    NSIndexPath         *indexPath;\n    NSIndexSet          *indexSet;\n    NSInteger           column;\n    NSMutableArray      *urls;\n    \n    urls = [NSMutableArray array];\n    indexPath = [_browser selectionIndexPath];\n    \n    column = [indexPath length] - 1;\n    if (column >= 0)\n    {\n        indexSet = [_browser selectedRowIndexesInColumn:column];\n\n        [indexSet enumerateIndexesUsingBlock:\n         ^(NSUInteger idx, BOOL *stop)\n        {\n            NSURL       *url;\n            \n            url = [_browser itemAtRow:idx inColumn:column];\n            \n            if (url != nil)\n            {\n                [urls addObject:url];\n            }\n        }];\n    }\n    return urls;\n}\n\n- (IBAction)itemDoubleClicked:(id)sender\n{\n    [self goToSelectedItem:sender];\n}\n\n- (IBAction)goToSelectedItem:(id)sender\n{\n    NSArray                 *urls;\n    BOOL                    isValid;\n    CK2OpenPanelController  *controller;\n    \n    controller = [self controller];\n    urls = [self selectedURLs];\n    isValid = YES;\n    for (NSURL *url in urls)\n    {\n        if (![controller isURLValid:url])\n        {\n            isValid = NO;\n            break;\n        }\n    }\n    \n    if (isValid)\n    {\n        [controller ok:self];\n    }\n}\n\n\n#pragma mark NSBrowserDelegate methods\n\n- (id)rootItemForBrowser:(NSBrowser *)browser\n{\n    return [self rootURL];\n}\n\n- (id)browser:(NSBrowser *)browser child:(NSInteger)index ofItem:(id)item\n{\n    NSArray     *children;\n    \n    children = [[self controller] childrenForURL:item];\n    \n    if (index >= [children count])\n    {\n        NSLog(@\"Got out of range index for some reason\");\n    }\n    return [children objectAtIndex:index];\n}\n\n- (BOOL)browser:(NSBrowser *)browser isLeafItem:(id)item\n{\n    return ![[self controller] URLCanHazChildren:item];\n}\n\n- (NSInteger)browser:(NSBrowser *)browser numberOfChildrenOfItem:(id)item\n{\n    return [[[self controller] childrenForURL:item] count];\n}\n\n- (id)browser:(NSBrowser *)browser objectValueForItem:(id)item\n{\n    return [item ck2_displayName];\n}\n\n- (BOOL)browser:(NSBrowser *)browser shouldEditItem:(id)item\n{\n    return NO;\n}\n\n- (void)browser:(NSBrowser *)browser willDisplayCell:(id)cell atRow:(NSInteger)row column:(NSInteger)column\n{\n    NSURL                       *url;\n    CK2OpenPanelController      *controller;\n    \n    controller = [self controller];\n    url = [browser itemAtRow:row inColumn:column];\n    \n    [cell setImage:[url ck2_icon]];\n    \n    if ([controller isURLValid:url] || [controller URLCanHazChildren:url])\n    {\n        [cell setTextColor:[NSColor controlTextColor]];\n    }\n    else\n    {\n        [cell setTextColor:[NSColor disabledControlTextColor]];\n    }\n\n    [cell setTextOnly:[url ck2_isPlaceholder]];\n}\n\n- (NSIndexSet *)browser:(NSBrowser *)browser selectionIndexesForProposedSelection:(NSIndexSet *)proposedSelectionIndexes inColumn:(NSInteger)column\n{\n    NSMutableIndexSet       *indexSet;\n    CK2OpenPanelController  *controller;\n    \n    controller = [self controller];\n    indexSet = [NSMutableIndexSet indexSet];\n    \n    [proposedSelectionIndexes enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL *stop)\n     {\n         NSURL                   *url;\n         \n         url = [browser itemAtRow:idx inColumn:column];\n         \n         if ([controller isURLValid:url] || [controller URLCanHazChildren:url])\n         {\n             [indexSet addIndex:idx];\n         }\n     }];\n    \n    // If we are not selecting any new items, returning an empty indexset will nuke the original selection. We\n    // rectify that here.\n    if ([indexSet count] == 0)\n    {\n        [indexSet addIndexes:[browser selectedRowIndexesInColumn:column]];\n    }\n    \n    return indexSet;\n}\n\n- (BOOL)browser:(NSBrowser *)browser canDragRowsWithIndexes:(NSIndexSet *)rowIndexes inColumn:(NSInteger)column withEvent:(NSEvent *)event\n{\n    return NO;\n}\n\n- (BOOL)browser:(NSBrowser *)browser writeRowsWithIndexes:(NSIndexSet *)rowIndexes inColumn:(NSInteger)column toPasteboard:(NSPasteboard *)pasteboard\n{\n    return NO;\n}\n\n- (NSViewController *)browser:(NSBrowser *)browser previewViewControllerForLeafItem:(id)item\n{\n    if (_previewController == nil)\n    {\n        _previewController = [[CK2BrowserPreviewController alloc] init];\n    }\n    return _previewController;\n}\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2OpenPanelController.h",
    "content": "//\n//  CKRemoteViewController.h\n//  ConnectionKit\n//\n//  Created by Paul Kim on 12/14/12.\n//  Copyright (c) 2012 Paul Kim. All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without modification,\n// are permitted provided that the following conditions are met:\n//\n// Redistributions of source code must retain the above copyright notice, this list\n// of conditions and the following disclaimer.\n//\n// Redistributions in binary form must reproduce the above copyright notice, this\n// list of conditions and the following disclaimer in the documentation and/or other\n// materials provided with the distribution.\n//\n// Neither the name of Karelia Software nor the names of its contributors may be used to\n// endorse or promote products derived from this software without specific prior\n// written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\n// SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\n// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY\n// WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n#import <Cocoa/Cocoa.h>\n#import <dispatch/dispatch.h>\n#import <ConnectionKit/CK2FileManager.h>\n\n@class CK2OpenPanel, CK2BrowserPreviewController, CK2PathControl, CK2FileManager, CK2OpenPanelColumnViewController, CK2OpenPanelListViewController, CK2OpenPanelIconViewController, CK2PathFieldWindowController;\n\n@interface CK2OpenPanelController : NSViewController <NSTabViewDelegate, CK2FileManagerDelegate>\n{\n    IBOutlet NSView                 *_topSection;\n    IBOutlet NSTextField            *_hostField;\n    IBOutlet NSView                 *_buttonSection;\n    IBOutlet CK2PathControl         *_pathControl;\n    IBOutlet NSSegmentedControl     *_viewPicker;\n    IBOutlet NSView                 *_middleSection;\n    IBOutlet NSTabView              *_tabView;\n    IBOutlet NSView                 *_bottomSection;\n    IBOutlet NSButton               *_okButton;\n    IBOutlet NSButton               *_cancelButton;\n    IBOutlet NSButton               *_refreshButton;\n    IBOutlet NSProgressIndicator    *_progressIndicator;\n    IBOutlet NSSegmentedControl     *_historyButtons;\n    IBOutlet NSButton               *_newFolderButton;\n    IBOutlet NSSegmentedControl     *_homeButton;\n    \n    IBOutlet NSTextField            *_messageLabel;\n    IBOutlet NSBox                  *_accessoryContainer;\n    NSView                          *_initialAccessoryView;\n    \n    IBOutlet CK2OpenPanel                        *_openPanel;\n    IBOutlet CK2OpenPanelColumnViewController    *_browserController;\n    IBOutlet CK2OpenPanelListViewController      *_listViewController;\n    IBOutlet CK2OpenPanelIconViewController      *_iconViewController;\n    \n    NSURL                           *_directoryURL;\n    NSArray                         *_urls;\n    NSURL                           *_homeURL;\n    \n    NSMutableDictionary             *_urlCache;\n    NSMutableDictionary             *_runningOperations;\n    CK2FileManager                  *_fileManager;\n    \n    NSUndoManager                   *_historyManager;\n    NSTabViewItem                   *_lastTab;\n    \n    CK2FileOperation                *_currentLoadingOperation;\n    \n    CK2PathFieldWindowController    *_pathFieldController;\n}\n\n@property (readonly, assign) CK2OpenPanel       *openPanel;\n@property (readonly, retain) NSURL              *directoryURL;\n@property (readwrite, retain) NSURL             *URL;\n@property (readwrite, copy, nonatomic) NSArray  *URLs;\n@property (readwrite, retain, nonatomic) NSURL  *homeURL;\n@property (readwrite, retain) NSView            *accessoryView;\n\n@property (readonly, retain) CK2FileManager     *fileManager;\n\n- (id)initWithPanel:(CK2OpenPanel *)panel;\n- (void)close;  // Open panel MUST call this to clear out weak reference to itself, otherwise BOOM dangling pointer!\n\n- (void)changeDirectory:(NSURL *)directoryURL completionHandler:(void (^)(NSError *error))block;\n\n- (IBAction)pathControlItemSelected:(id)sender;\n\n- (void)resetSession;\n\n- (IBAction)ok:(id)sender;\n- (IBAction)cancel:(id)sender;\n- (IBAction)refresh:(id)sender;\n- (IBAction)newFolder:(id)sender;\n- (IBAction)changeHistory:(id)sender;\n- (IBAction)back:(id)sender;\n- (IBAction)forward:(id)sender;\n\n- (IBAction)home:(id)sender;\n- (void)goToSelectedItem:(id)sender;\n\n- (void)showPathFieldWithString:(NSString *)string;\n\n- (void)setURLs:(NSArray *)urls updateDirectory:(BOOL)updateDir sender:(id)sender;\n- (void)setURLs:(NSArray *)urls updateDirectory:(BOOL)updateDir updateRoot:(BOOL)updateRoot sender:(id)sender;\n- (BOOL)isURLValid:(NSURL *)url;\n- (BOOL)URLCanHazChildren:(NSURL *)url;\n- (NSArray *)childrenForURL:(NSURL *)url;\n- (void)addToHistory;\n- (void)reload;\n\n- (void)validateVisibleColumns;\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2OpenPanelController.m",
    "content": "//\n//  CKRemoteViewController.m\n//  ConnectionKit\n//\n//  Created by Paul Kim on 12/14/12.\n//  Copyright (c) 2012 Paul Kim. All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without modification,\n// are permitted provided that the following conditions are met:\n//\n// Redistributions of source code must retain the above copyright notice, this list\n// of conditions and the following disclaimer.\n//\n// Redistributions in binary form must reproduce the above copyright notice, this\n// list of conditions and the following disclaimer in the documentation and/or other\n// materials provided with the distribution.\n//\n// Neither the name of Karelia Software nor the names of its contributors may be used to\n// endorse or promote products derived from this software without specific prior\n// written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\n// SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\n// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY\n// WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n\n//NOTES:\n// - Besides the normal UI stuff which must be done in the main thread, the URL cache must also only be modified in the\n//   main thread. This is to prevent a case where NSBrowser or NSOutlineView query for the children of an URL first for\n//   the number of children, then query again for the actual children. In this case, if the URL cache is updated in\n//   between these two calls, those UI classes can end up asking for an invalid index.\n// - Because most things should only be modified in the main thread, you may not see the results until the next\n//   run loop cycle. Since we're using GCD, it's a queue so you can at least rely on order of operations corresponding\n//   to the order you queued things up.\n// - The previous point is exploited to avoid race conditions. Otherwise, a semaphore (wait/signal) would have to be\n//   used in those cases.\n\n\n#import \"CK2OpenPanelController.h\"\n#import \"CK2OpenPanel.h\"\n#import \"CK2FileCell.h\"\n#import \"NSURL+CK2OpenPanel.h\"\n#import \"CK2OpenPanelViewController.h\"\n#import \"CK2OpenPanelIconViewController.h\"\n#import \"CK2OpenPanelListViewController.h\"\n#import \"CK2OpenPanelColumnViewController.h\"\n#import \"CK2PathControl.h\"\n#import \"CK2NewFolderWindowController.h\"\n#import \"CK2IconView.h\"\n#import \"CK2PathFieldWindowController.h\"\n#import <ConnectionKit/CK2FileManager.h>\n\n#define DEFAULT_OPERATION_TIMEOUT       20\n\n#define MIN_PROMPT_BUTTON_WIDTH         82\n#define PROMPT_BUTTON_RIGHT_MARGIN      18\n#define MESSAGE_SIDE_MARGIN             16\n#define MESSAGE_HEIGHT                  24\n\n#define HISTORY_DIRECTORY_URL_KEY           @\"directoryURL\"\n#define HISTORY_DIRECTORY_VIEW_INDEX_KEY    @\"viewIndex\"\n\n#define ICON_VIEW_IDENTIFIER                @\"icon\"\n#define LIST_VIEW_IDENTIFIER                @\"list\"\n#define COLUMN_VIEW_IDENTIFIER              @\"column\"\n#define BLANK_VIEW_IDENTIFIER               @\"blank\"\n\n#define CK2OpenPanelLastViewPrefKey         @\"CK2NavPanelFileLastListModeForOpenModeKey\"\n\n@interface CK2OpenPanelController ()\n\n@property (readwrite, retain) NSURL       *directoryURL;\n\n@end\n\n@implementation CK2OpenPanelController\n\n@synthesize openPanel = _openPanel;\n@synthesize directoryURL = _directoryURL;\n@synthesize URLs = _urls;\n@synthesize homeURL = _homeURL;\n\n@synthesize fileManager = _fileManager;\n\n#pragma mark Lifecycle\n\n- (id)initWithPanel:(CK2OpenPanel *)panel\n{\n    NSBundle        *bundle;\n    \n    bundle = [NSBundle bundleForClass:[self class]];\n    \n    if ((self = [super initWithNibName:@\"CK2OpenPanel\" bundle:bundle]) != nil)\n    {\n        _openPanel = panel;\n        _urlCache = [[NSMutableDictionary alloc] init];\n        _runningOperations = [[NSMutableDictionary alloc] init];\n\n        _historyManager = [[NSUndoManager alloc] init];\n        \n        _fileManager = [[CK2FileManager fileManagerWithDelegate:self delegateQueue:[NSOperationQueue mainQueue]] retain];\n        \n        [_openPanel addObserver:self forKeyPath:@\"prompt\" options:NSKeyValueObservingOptionNew context:NULL];\n        [_openPanel addObserver:self forKeyPath:@\"message\" options:NSKeyValueObservingOptionOld context:NULL];\n        [_openPanel addObserver:self forKeyPath:@\"canChooseFiles\" options:NSKeyValueObservingOptionNew context:NULL];\n        [_openPanel addObserver:self forKeyPath:@\"canChooseDirectories\" options:NSKeyValueObservingOptionNew context:NULL];\n        [_openPanel addObserver:self forKeyPath:@\"allowsMultipleSelection\" options:NSKeyValueObservingOptionNew context:NULL];\n        [_openPanel addObserver:self forKeyPath:@\"showsHiddenFiles\" options:NSKeyValueObservingOptionNew context:NULL];\n        [_openPanel addObserver:self forKeyPath:@\"treatsFilePackagesAsDirectories\" options:NSKeyValueObservingOptionNew context:NULL];\n        [_openPanel addObserver:self forKeyPath:@\"allowedFileTypes\" options:NSKeyValueObservingOptionNew context:NULL];\n        [_openPanel addObserver:self forKeyPath:@\"canCreateDirectories\" options:NSKeyValueObservingOptionNew context:NULL];\n    }\n    \n    return self;\n}\n\n- (void)close\n{\n    [_openPanel removeObserver:self forKeyPath:@\"prompt\"];\n    [_openPanel removeObserver:self forKeyPath:@\"message\"];\n    [_openPanel removeObserver:self forKeyPath:@\"canChooseFiles\"];\n    [_openPanel removeObserver:self forKeyPath:@\"canChooseDirectories\"];\n    [_openPanel removeObserver:self forKeyPath:@\"allowsMultipleSelection\"];\n    [_openPanel removeObserver:self forKeyPath:@\"showsHiddenFiles\"];\n    [_openPanel removeObserver:self forKeyPath:@\"treatsFilePackagesAsDirectories\"];\n    [_openPanel removeObserver:self forKeyPath:@\"allowedFileTypes\"];\n    [_openPanel removeObserver:self forKeyPath:@\"canCreateDirectories\"];\n    \n    if (_openPanel)\n    {\n        [[NSNotificationCenter defaultCenter] removeObserver:self name:NSWindowDidBecomeKeyNotification object:_openPanel];\n        [[NSNotificationCenter defaultCenter] removeObserver:self name:NSWindowDidResignKeyNotification object:_openPanel];\n    }\n    \n    _openPanel = nil;\n}\n\n- (void)dealloc\n{\n    [_initialAccessoryView release];\n    for (CK2FileOperation *operation in [_runningOperations allValues])\n    {\n        [operation cancel];\n    }\n    \n    if (_currentLoadingOperation != nil)\n    {\n        [_currentLoadingOperation cancel];\n        [_currentLoadingOperation release];\n    }\n    \n    [self close];   // just to be sure\n\n    [_directoryURL release];\n    [_urls release];\n    [_homeURL release];\n    [_urlCache release];\n    [_runningOperations release];\n    [_fileManager release];\n    [_historyManager release];\n    [_pathFieldController release];\n    \n    [super dealloc];\n}\n\n- (void)awakeFromNib\n{\n    NSTabViewItem       *item;\n    id                  value;\n   \n    _initialAccessoryView = [[_accessoryContainer contentView] retain];\n    \n    [_hostField setStringValue:@\"\"];\n    [self validateHistoryButtons];\n    [self validateOKButton];\n    [self validateProgressIndicator];\n   \n    value = [[NSUserDefaults standardUserDefaults] stringForKey:CK2OpenPanelLastViewPrefKey];\n    if (value == nil)\n    {\n        // If not set, use the global default used by NSOpenPanel\u0013\n        value = [[NSUserDefaults standardUserDefaults] stringForKey:@\"NSNavPanelFileLastListModeForOpenModeKey\"];\n\n        switch ([value integerValue])\n        {\n            case 1:\n                value = COLUMN_VIEW_IDENTIFIER;\n                break;\n            case 2:\n                value = LIST_VIEW_IDENTIFIER;\n                break;\n            case 3:\n                value = ICON_VIEW_IDENTIFIER;\n                break;\n            default:\n                value = ICON_VIEW_IDENTIFIER;\n        }\n    }\n    \n    item = [_tabView tabViewItemAtIndex:[_tabView indexOfTabViewItemWithIdentifier:value]];\n    \n    [_tabView selectTabViewItem:item];\n    [_viewPicker setSelectedSegment:[_tabView indexOfTabViewItem:item]];\n    [_openPanel makeFirstResponder:[item initialFirstResponder]];\n}\n\n- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context\n{\n    if ([keyPath isEqual:@\"prompt\"])\n    {\n        NSRect  rect1, rect2, superBounds;\n        \n        [_okButton setTitle:[_openPanel prompt]];\n        superBounds = [[_okButton superview] bounds];\n        \n        [_okButton sizeToFit];\n        rect1 = [_okButton frame];\n        rect1.size.width = MAX(MIN_PROMPT_BUTTON_WIDTH, NSWidth(rect1));\n        rect1.origin.x = NSMaxX(superBounds) - PROMPT_BUTTON_RIGHT_MARGIN - NSWidth(rect1);\n        [_okButton setFrame:rect1];\n        \n        rect2 = [_cancelButton frame];\n        rect2.origin.x = NSMinX(rect1) - NSWidth(rect2);\n        [_cancelButton setFrame:rect2];\n    }\n    else if ([keyPath isEqual:@\"message\"])\n    {\n        id          oldMessage;\n        NSString    *message;\n        CGFloat     height;\n        NSRect      rect, bounds;\n        \n        oldMessage = [change objectForKey:NSKeyValueChangeOldKey];\n        oldMessage = oldMessage == [NSNull null] ? nil : oldMessage;\n        message = [_openPanel message];\n\n        if ([message length] > 0)\n        {\n            [_messageLabel setStringValue:message];\n        }\n        \n        bounds = [[self view] bounds];\n        height = 0.0;\n        \n        if (([oldMessage length] == 0) && ([message length] > 0))\n        {\n            height = MESSAGE_HEIGHT;\n        }\n        else if (([oldMessage length] > 0) && ([message length] == 0))\n        {\n            height = -MESSAGE_HEIGHT;\n        }\n        \n        if (height != 0.0)\n        {\n            NSUInteger  buttonMask, middleMask;\n            \n            rect = [[self view] frame];\n            rect.size.height += height;\n            \n            buttonMask = [_buttonSection autoresizingMask];\n            [_buttonSection setAutoresizingMask:NSViewMaxYMargin | NSViewWidthSizable];\n            middleMask = [_middleSection autoresizingMask];\n            [_middleSection setAutoresizingMask:NSViewMaxYMargin | NSViewWidthSizable];\n            \n            rect = [_openPanel frameRectForContentRect:rect];\n            [_openPanel setFrame:rect display:YES];\n            \n            [_buttonSection setAutoresizingMask:buttonMask];\n            [_middleSection setAutoresizingMask:middleMask];\n\n            if ([_messageLabel superview] != [self view])\n            {\n                rect = [_messageLabel frame];\n                rect.origin.x = NSMinX(bounds) + MESSAGE_SIDE_MARGIN;\n                rect.origin.y = NSMaxY([_buttonSection frame]);\n                rect.size.width = NSWidth(bounds) - 2 * MESSAGE_SIDE_MARGIN;\n                [_messageLabel setFrame:rect];\n                [[self view] addSubview:_messageLabel];\n            }\n            else\n            {\n                [_messageLabel removeFromSuperview];\n            }\n        }\n    }\n    else if ([keyPath isEqual:@\"canChooseFiles\"] || [keyPath isEqual:@\"canChooseDirectories\"] ||\n             [keyPath isEqual:@\"showsHiddenFiles\"] || [keyPath isEqual:@\"treatsFilePackagesAsDirectories\"] ||\n             [keyPath isEqual:@\"allowedFileTypes\"])\n    {\n        [self validateVisibleColumns];\n    }\n    else if ([keyPath isEqual:@\"canCreateDirectories\"])\n    {\n        if ([_openPanel canCreateDirectories])\n        {\n            [_newFolderButton setHidden:NO];\n        }\n        else\n        {\n            [_newFolderButton setHidden:YES];\n        }\n    }\n    else if ([keyPath isEqual:@\"allowsMultipleSelection\"])\n    {\n        [_iconViewController setAllowsMutipleSelection:[_openPanel allowsMultipleSelection]];\n        [_listViewController setAllowsMutipleSelection:[_openPanel allowsMultipleSelection]];\n        [_browserController setAllowsMutipleSelection:[_openPanel allowsMultipleSelection]];\n    }\n    else\n    {\n        [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];\n    }\n}\n\n- (NSArray *)fileProperties\n{\n    return @[ NSURLIsDirectoryKey, NSURLFileSizeKey, NSURLContentModificationDateKey, NSURLLocalizedNameKey, NSURLIsSymbolicLinkKey, CK2URLSymbolicLinkDestinationKey, NSURLIsPackageKey, NSURLIsHiddenKey, NSURLEffectiveIconKey, NSURLParentDirectoryURLKey ];\n}\n\n- (NSView *)accessoryView\n{\n    NSView  *view;\n    \n    view = [_accessoryContainer contentView];\n    \n    if (view == _initialAccessoryView)\n    {\n        return nil;\n    }\n    return view;\n}\n\n- (void)setAccessoryView:(NSView *)accessoryView\n{\n    NSRect  rect;\n    CGFloat height;\n    NSUInteger  mask;\n    \n    // Save off the mask and tweak it. We want the middle section to have different resizing behavior while we\n    // resize the window\n    mask = [_middleSection autoresizingMask];\n    [_middleSection setAutoresizingMask:NSViewMinYMargin | NSViewWidthSizable];\n\n    if (accessoryView != nil)\n    {\n        NSRect      accessoryFrame, containerFrame;\n\n        height = 0.0;\n        if ([_accessoryContainer superview] == [self view])\n        {\n            height = NSHeight([[_accessoryContainer contentView] frame]);\n        }\n        \n        accessoryFrame = [accessoryView frame];\n\n        // Remove the accessory container while we muck around with window dimensions and such. We want to preserve the\n        // accessory view's original size. Also, no need to retain because it's a top-level object in the xib.\n        [_accessoryContainer removeFromSuperview];\n        \n        [_accessoryContainer setFrameFromContentFrame:accessoryFrame];\n        [_accessoryContainer setContentView:accessoryView];\n        \n        // Tile the container\n        containerFrame = [_accessoryContainer frame];\n        containerFrame.origin.x = 0.0;\n        containerFrame.origin.y = NSMaxY([_bottomSection frame]);\n        [_accessoryContainer setFrame:containerFrame];\n\n \n        // Resize the window to accommodate\n        rect = [[self view] frame];\n        //PENDING: shrink to fit? Check against windows min and max?\n        rect.size.width = NSWidth(containerFrame);\n        rect.size.height += NSHeight(containerFrame) - height;\n        rect = [_openPanel frameRectForContentRect:rect];\n        [_openPanel setFrame:rect display:YES];\n        \n        [[self view] addSubview:_accessoryContainer];\n    }\n    else\n    {\n        CGFloat  height;\n        \n        height = NSHeight([_accessoryContainer frame]);\n        [_accessoryContainer setContentView:_initialAccessoryView];\n        [_accessoryContainer removeFromSuperview];\n        \n        rect = [[self view] frame];\n        rect.size.height -= height;\n        rect = [_openPanel frameRectForContentRect:rect];\n        [_openPanel setFrame:rect display:YES];\n    }\n    \n    [_middleSection setAutoresizingMask:mask];\n}\n\n- (void)validateVisibleColumns\n{\n    [[_browserController view] setNeedsDisplay:YES];\n    [[_listViewController view] setNeedsDisplay:YES];\n    [_iconViewController reload];\n    [self validateOKButton];\n}\n\n- (void)resetSession\n{\n    for (CK2FileOperation *operation in [_runningOperations allValues])\n    {\n        [operation cancel];\n    }\n    [_runningOperations removeAllObjects];\n    \n    if (_currentLoadingOperation != nil)\n    {\n        [_currentLoadingOperation cancel];\n        [_currentLoadingOperation release];\n        _currentLoadingOperation = nil;\n    }\n\n    [_urlCache removeAllObjects];\n    [_historyManager removeAllActions];\n\n    [self setURLs:nil];\n}\n\n- (NSArray *)URLs\n{\n    if ([_urls count] == 0)\n    {\n        NSURL   *directoryURL;\n        \n        directoryURL = [self directoryURL];\n        \n        if (directoryURL != nil)\n        {\n            return @[ [self directoryURL] ];\n        }\n        return nil;\n    }\n    return _urls;\n}\n\n- (NSURL *)URL\n{\n    NSArray     *urls;\n    \n    urls = [self URLs];\n    if ([urls count] > 0)\n    {\n        return [urls objectAtIndex:0];\n    }\n    return nil;\n}\n\n- (void)setURL:(NSURL *)URL\n{\n    [self setURLs:(URL ? @[URL] : nil)];\n}\n\n// Called by the open panel. The completion block will not be called until the given URL is loaded.\n- (void)changeDirectory:(NSURL *)directoryURL completionHandler:(void (^)(NSError *error))block\n{\n    // Set it now so that the value can be returned if queried. Don't bother syncing with the UI as it will be set\n    // again (possibly with a different value) later.\n    [self setDirectoryURL:directoryURL];\n    \n    \n    //PENDING: compare url\n    if (_currentLoadingOperation != nil)\n    {\n        [_currentLoadingOperation cancel];\n        [_currentLoadingOperation release];\n    }\n    \n    _currentLoadingOperation = [_fileManager contentsOfDirectoryAtURL:directoryURL includingPropertiesForKeys:[self fileProperties] options:(NSDirectoryEnumerationSkipsSubdirectoryDescendants | CK2DirectoryEnumerationIncludesDirectory) completionHandler:\n    ^(NSArray *contents, NSError *blockError)\n    {\n        if (blockError != nil)\n        {\n             NSLog(@\"Error loading contents of URL %@: %@\", directoryURL, blockError);\n        }\n        else\n        {\n            NSURL           *resolvedURL;\n            NSArray         *children;\n            \n            // The first url returned is the rootURL properly resolved (in case the URL is relative to the user's home\n            // directory, for instance).\n            resolvedURL = [contents objectAtIndex:0];\n            \n            children = [contents subarrayWithRange:NSMakeRange(1, [contents count] - 1)];\n            [self setDirectoryURL:resolvedURL];\n            \n                [self cacheChildren:children forURL:resolvedURL];\n                [self urlDidLoad:resolvedURL];\n                \n                [_currentLoadingOperation release];\n                _currentLoadingOperation = nil;\n                \n                if (blockError == nil)\n                {\n                    [self setURLs:@[ resolvedURL ] updateDirectory:YES updateRoot:YES sender:self];\n                }\n                [self validateViews];\n        }\n        \n             if (block != NULL)\n             {\n                 block(blockError);\n             }\n    }];\n    \n    // There shouldn't be a race condition with the block above since this should be on the main thread and\n    // the above block won't run on the main thread until this code completes and returns to the run loop.\n    [_currentLoadingOperation retain];\n    \n    [_hostField setStringValue:[directoryURL host]];\n    [self validateViews];\n}\n\n\n- (void)setURLs:(NSArray *)urls updateDirectory:(BOOL)flag\n{\n    [self setURLs:urls updateDirectory:flag updateRoot:NO sender:nil];\n}\n\n- (void)setURLs:(NSArray *)urls updateDirectory:(BOOL)updateDir sender:(id)sender\n{\n    [self setURLs:urls updateDirectory:updateDir updateRoot:NO sender:sender];\n}\n\n- (void)setURLs:(NSArray *)urls updateDirectory:(BOOL)updateDir updateRoot:(BOOL)updateRoot sender:(id)sender\n{\n    CK2OpenPanelViewController  *currentController;\n    NSTabViewItem               *selectedTab;\n    \n    [self setURLs:urls];\n    [self validateOKButton];\n    \n    if (updateDir)\n    {\n        NSURL       *directoryURL;\n\n        directoryURL = [urls objectAtIndex:0];\n        if (![self URLCanHazChildren:directoryURL])\n        {\n            directoryURL = [directoryURL ck2_parentURL];\n        }\n        \n        [self setDirectoryURL:directoryURL];\n        \n        if (sender != _pathControl)\n        {\n            [_pathControl setURL:directoryURL];\n        }\n        \n        if ([[_openPanel delegate] respondsToSelector:@selector(panel:didChangeToDirectoryURL:)])\n        {\n            [[_openPanel delegate] panel:_openPanel didChangeToDirectoryURL:directoryURL];\n        }\n    }\n \n    [self validateNewFolderButton];\n\n    selectedTab = [_tabView selectedTabViewItem];\n    currentController = [self viewControllerForIdentifier:[selectedTab identifier]];\n    if ((sender != currentController) || (![currentController hasFixedRoot] && updateDir))\n    {\n        if (updateRoot)\n        {\n            [_browserController setRootURL:[self directoryURL]];\n        }\n        \n        if (updateDir)\n        {\n            [currentController reload];\n        }\n        [currentController update];\n    }\n    [_openPanel makeFirstResponder:[selectedTab initialFirstResponder]];\n    \n    if ([[_openPanel delegate] respondsToSelector:@selector(panelSelectionDidChange:)])\n    {\n        [[_openPanel delegate] panelSelectionDidChange:_openPanel];\n    }\n}\n\n- (void)cacheChildren:(NSArray *)children forURL:(NSURL *)url\n{\n    if (children == nil)\n    {\n        [_urlCache removeObjectForKey:url];\n    }\n    else\n    {\n        NSArray     *sortedChildren;\n        \n        sortedChildren = [children sortedArrayUsingComparator:[NSURL ck2_displayComparator]];\n        [_urlCache setObject:sortedChildren forKey:url];\n    }\n}\n\n- (NSArray *)childrenForURL:(NSURL *)url\n{\n    id      children;\n        \n    children = nil;\n    \n    if ((url != nil) && [self URLCanHazChildren:url])\n    {\n        children = [_urlCache objectForKey:url];\n        \n        if (children == nil)\n        {\n            CK2FileOperation *operation;\n            \n            // Placeholder while children are being fetched\n            children = @[ [NSURL ck2_loadingURL] ];\n\n            [self cacheChildren:children forURL:url];\n            \n            if ([_runningOperations objectForKey:url] == nil)\n            {\n                operation = [_fileManager contentsOfDirectoryAtURL:url\n                                        includingPropertiesForKeys:[self fileProperties]\n                                                           options:NSDirectoryEnumerationSkipsSubdirectoryDescendants\n                completionHandler:\n                ^(NSArray *contents, NSError *blockError)\n                {\n                    id             value;\n\n                    value = contents;\n                    if (value == nil)\n                    {\n                        if (blockError != nil)\n                        {\n                            NSString *errorMessage = blockError.localizedFailureReason;\n                            if (!errorMessage) errorMessage = blockError.localizedDescription;\n                            \n                            value = @[ [NSURL ck2_errorURLWithMessage:errorMessage] ];\n                            NSLog(@\"Error loading contents of URL %@: %@\", url, blockError);\n                        }\n                        else\n                        {\n                            // Shouldn't happen\n                            NSLog(@\"Received nil from -contentsOfDirectoryAtURL: for URL %@ but no error set\", url);\n                            value = [NSArray array];\n                        }\n                    }\n                    \n                        [self cacheChildren:value forURL:url];\n\n                        [_runningOperations removeObjectForKey:url];\n                        \n                        [self validateProgressIndicator];\n                        [self urlDidLoad:url];\n                }];\n\n                // There shouldn't be a race condition with the block above since this should be on the main thread and\n                // the above block won't run on the main thread until this code completes and returns to the run loop.\n                [_runningOperations setObject:operation forKey:url];\n\n                [self validateProgressIndicator];\n            }\n        }\n        else\n        {\n            if (![[self openPanel] showsHiddenFiles])\n            {\n                children = [children filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:\n                                                                  ^BOOL(id evaluatedObject, NSDictionary *bindings)\n                                                                  {\n                                                                      return ![evaluatedObject ck2_isHidden];\n                                                                  }]];\n            }\n        }\n    }\n    return children;\n}\n\n- (BOOL)isURLValid:(NSURL *)url\n{\n    if (![url ck2_isPlaceholder])\n    {\n        id <CK2OpenPanelDelegate>   delegate;\n        BOOL                        delegateValid, fileTypeValid;\n        NSArray                     *allowedFileTypes;\n        \n        delegate = [_openPanel delegate];\n        \n        delegateValid = (![delegate respondsToSelector:@selector(panel:shouldEnableURL:)] || [delegate panel:_openPanel shouldEnableURL:url]);\n        \n        allowedFileTypes = [_openPanel allowedFileTypes];\n        fileTypeValid = ([allowedFileTypes count] == 0) || [allowedFileTypes containsObject:[url pathExtension]];\n        \n        if ([self URLCanHazChildren:url])\n        {\n            return [_openPanel canChooseDirectories] && delegateValid && fileTypeValid;\n        }\n        else\n        {\n            return [_openPanel canChooseFiles] && delegateValid && fileTypeValid;\n        }\n    }\n    return NO;\n}\n\n- (BOOL)URLCanHazChildren:(NSURL *)url\n{\n    return [url ck2_isDirectory] && (![url ck2_isPackage] || [_openPanel treatsFilePackagesAsDirectories]);\n}\n\n- (void)urlDidLoad:(NSURL *)url\n{\n    [[self currentViewController] urlDidLoad:url];\n    [self validateNewFolderButton];\n}\n\n- (CK2OpenPanelViewController *)currentViewController\n{\n    return [self viewControllerForIdentifier:[[_tabView selectedTabViewItem] identifier]];\n}\n\n- (CK2OpenPanelViewController *)viewControllerForIdentifier:(NSString *)identifier\n{\n    if ([identifier isEqual:COLUMN_VIEW_IDENTIFIER])\n    {\n        return _browserController;\n    }\n    else if ([identifier isEqual:LIST_VIEW_IDENTIFIER])\n    {\n        return _listViewController;\n    }\n    else if ([identifier isEqual:ICON_VIEW_IDENTIFIER])\n    {\n        return _iconViewController;\n    }\n    return nil;\n}\n\n- (void)validateViews\n{\n    BOOL    enable;\n    \n    enable = (_currentLoadingOperation == nil);\n    \n    [_viewPicker setEnabled:enable];\n    [_homeButton setEnabled:enable];\n    \n    if (!enable)\n    {\n        if (_lastTab == nil)\n        {\n            _lastTab = [_tabView selectedTabViewItem];\n        }\n        \n        [_tabView selectTabViewItemWithIdentifier:BLANK_VIEW_IDENTIFIER];\n    }\n    else\n    {\n        if (_lastTab == nil)\n        {\n            _lastTab = [_tabView tabViewItemAtIndex:[_tabView indexOfTabViewItemWithIdentifier:COLUMN_VIEW_IDENTIFIER]];\n        }\n        [_tabView selectTabViewItem:_lastTab];\n        _lastTab = nil;\n    }\n    \n    [self validateHistoryButtons];\n    [self validateOKButton];\n    [self validateProgressIndicator];\n    [self validateHomeButton];\n    [self validateNewFolderButton];\n}\n\n- (void)reload\n{\n    [_browserController reload];\n    [_iconViewController reload];\n    [_listViewController reload];\n    \n    [self validateViews];\n}\n\n- (void)validateProgressIndicator\n{\n    NSURL                       *url;\n    NSArray                     *urls;\n    BOOL                        urlIsLoading;\n    CK2OpenPanelViewController  *currentController;\n    \n    urlIsLoading = NO;\n    currentController = [self currentViewController];\n\n    urls = [currentController selectedURLs];\n    \n    if ([urls count] > 0)\n    {\n        for (url in urls)\n        {\n            if ([_runningOperations objectForKey:url] != nil)\n            {\n                urlIsLoading = YES;\n                break;\n            }\n        }\n    }\n    else\n    {\n        urlIsLoading = ([_runningOperations objectForKey:[self directoryURL]] != nil);\n    }\n    \n    if ((_currentLoadingOperation == nil) && !urlIsLoading)\n    {\n        [_progressIndicator stopAnimation:self];\n        [_progressIndicator setHidden:YES];\n        [_refreshButton setHidden:NO];\n    }\n    else\n    {\n        [_refreshButton setHidden:YES];\n        [_progressIndicator startAnimation:self];\n        [_progressIndicator setHidden:NO];\n    }\n}\n\n- (IBAction)refresh:(id)sender\n{\n    NSURL                       *url;\n    NSArray                     *urls;\n    BOOL                        urlIsLoading;\n    CK2OpenPanelViewController  *viewController;\n    NSResponder                 *firstResponder;\n    \n    urlIsLoading = NO;\n    urls = [self URLs];\n    \n    if ([urls count] == 0)\n    {\n        urls = @[ [self directoryURL] ];\n    }\n    \n    for (url in urls)\n    {\n        if ([_runningOperations objectForKey:url] != nil)\n        {\n            urlIsLoading = YES;\n            break;\n        }\n    }\n    \n    if (!urlIsLoading)\n    {\n        for (url in urls)\n        {\n            [self cacheChildren:nil forURL:url];\n        }\n    }\n\n    viewController = [self currentViewController];\n    firstResponder = [[self openPanel] firstResponder];\n    if ([firstResponder isKindOfClass:[NSView class]] && [(NSView *)firstResponder isDescendantOf:[viewController view]])\n    {\n        firstResponder = [viewController view];\n    }\n\n    [viewController reload];\n    [viewController update];\n    \n    [[self openPanel] makeFirstResponder:firstResponder];\n    [self validateNewFolderButton];\n    [self validateProgressIndicator];\n}\n\n- (void)validateHomeButton\n{\n}\n\n- (void)validateOKButton\n{\n    BOOL    isValid;\n    \n    isValid = NO;\n    if (_currentLoadingOperation == nil)\n    {\n        isValid = YES;\n        for (NSURL *url in [self URLs])\n        {\n            if (![self isURLValid:url])\n            {\n                isValid = NO;\n                break;\n            }\n        }\n    }\n    \n    [_okButton setEnabled:isValid];\n}\n\n- (IBAction)ok:(id)sender\n{\n    [_openPanel ok:sender];\n}\n\n- (IBAction)cancel:(id)sender\n{\n    [self setURL:nil];\n    [_openPanel cancel:sender];\n}\n\n- (void)validateNewFolderButton\n{\n    if (_currentLoadingOperation != nil)\n    {\n        [_newFolderButton setEnabled:NO];\n    }\n    else\n    {\n        NSArray     *children;\n        BOOL        childrenLoaded;\n    \n        children = [self childrenForURL:[self directoryURL]];\n    \n        childrenLoaded = (children != nil) && (([children count] != 1) || ![[children objectAtIndex:0] ck2_isPlaceholder]);\n        [_newFolderButton setEnabled:childrenLoaded];\n    }\n}\n\n- (IBAction)newFolder:(id)sender\n{\n    CK2NewFolderWindowController    *controller;\n    NSURL                           *parentURL;\n    \n    controller = [[CK2NewFolderWindowController alloc] initWithController:self];\n    parentURL = [self directoryURL];\n    \n    if ([controller runModalForURL:parentURL])\n    {\n        NSURL           *url;\n        NSArray             *children;\n        NSMutableArray      *newChildren;\n        NSUInteger          i;\n        \n        url = [controller folderURL];\n        \n        children = [_urlCache objectForKey:parentURL];\n        newChildren = [NSMutableArray arrayWithArray:children];\n        \n        i = [newChildren indexOfObject:url inSortedRange:NSMakeRange(0, [newChildren count]) options:NSBinarySearchingInsertionIndex usingComparator:[NSURL ck2_displayComparator]];\n\n        [newChildren insertObject:url atIndex:i];\n        \n        [self cacheChildren:newChildren forURL:parentURL];\n        [self setURLs:@[ url ] updateDirectory:YES updateRoot:NO sender:nil];\n    }\n    else if ([controller error] != nil)\n    {\n        NSLog(@\"Could not create directory under URL %@: %@\", parentURL, [controller error]);\n        NSBeginCriticalAlertSheet(NSLocalizedStringFromTableInBundle(@\"Could not create folder\", nil, [NSBundle bundleForClass:[self class]], @\"Create folder error\"),\n                                  NSLocalizedStringFromTableInBundle(@\"OK\", nil, [NSBundle bundleForClass:[self class]], @\"OK Button\"), nil, nil, [self openPanel], nil, NULL, NULL, NULL, @\"%@\", [[controller error] localizedDescription]);\n    }\n    \n    [controller release];\n}\n\n- (void)validateHistoryButtons\n{\n    [_historyButtons setEnabled:((_currentLoadingOperation == nil) && ([_historyManager canUndo])) forSegment:0];\n    [_historyButtons setEnabled:((_currentLoadingOperation == nil) && ([_historyManager canRedo])) forSegment:1];\n}\n\n- (IBAction)changeHistory:(id)sender\n{\n    NSInteger       selectedIndex;\n    \n    selectedIndex = [_historyButtons selectedSegment];\n    switch (selectedIndex)\n    {\n        case 0:\n            [self back:sender];\n            break;\n        case 1:\n            [self forward:sender];\n            break;\n    }\n}\n\n- (IBAction)back:(id)sender\n{\n    [_historyManager undo];\n    [self validateHistoryButtons];\n}\n\n- (IBAction)forward:(id)sender\n{\n    [_historyManager redo];\n    [self validateHistoryButtons];\n}\n\n- (void)changeView:(NSDictionary *)dict\n{\n    NSTabViewItem       *tabItem;\n    NSUInteger          i;\n    \n    [self addToHistory];\n\n    [self setURLs:@[ [dict objectForKey:HISTORY_DIRECTORY_URL_KEY] ] updateDirectory:YES];\n    \n    i = [[dict objectForKey:HISTORY_DIRECTORY_VIEW_INDEX_KEY] unsignedIntegerValue];\n    tabItem = [_tabView tabViewItemAtIndex:i];\n    \n    [[self viewControllerForIdentifier:[tabItem identifier]] restoreViewHistoryState:dict];\n    [_tabView selectTabViewItemAtIndex:i];\n}\n\n- (void)addToHistory\n{\n    NSMutableDictionary         *dict;\n    CK2OpenPanelViewController  *currentController;\n    NSTabViewItem               *tabItem;\n    NSURL                       *directoryURL;\n    \n    directoryURL = [self directoryURL];\n    \n    // If nil, indicates an error so should not push it on the undo stack\n    if (directoryURL != nil)\n    {\n        tabItem = [_tabView selectedTabViewItem];\n        \n        dict = [NSMutableDictionary dictionary];\n        [dict setObject:[self directoryURL] forKey:HISTORY_DIRECTORY_URL_KEY];\n        [dict setObject:[NSNumber numberWithUnsignedInteger:[_tabView indexOfTabViewItem:tabItem]] forKey:HISTORY_DIRECTORY_VIEW_INDEX_KEY];\n        \n        currentController = [self viewControllerForIdentifier:[tabItem identifier]];\n        [currentController saveViewHistoryState:dict];\n        \n        [_historyManager registerUndoWithTarget:self selector:@selector(changeView:) object:dict];\n        \n        [self validateHistoryButtons];\n    }\n}\n\n- (IBAction)home:(id)sender\n{\n    NSURL   *homeURL;\n    \n    homeURL = [self homeURL];\n    \n    if (homeURL == nil)\n    {\n        if (_currentLoadingOperation != nil)\n        {\n            [_currentLoadingOperation cancel];\n            [_currentLoadingOperation release];\n        }\n\n        // The homeURL isn't resolved so we resolve it here and also load/cache its children.        \n        homeURL = [CK2FileManager URLWithPath:@\"\" isDirectory:YES hostURL:[self directoryURL]];\n        \n        _currentLoadingOperation = [_fileManager contentsOfDirectoryAtURL:homeURL includingPropertiesForKeys:[self fileProperties] options:CK2DirectoryEnumerationIncludesDirectory completionHandler:\n        ^(NSArray *contents, NSError *blockError)\n        {\n            NSArray     *children;\n            NSURL       *resolvedURL;\n            \n            resolvedURL = homeURL;\n            if (blockError != nil)\n            {\n                NSString *errorMessage = blockError.localizedFailureReason;\n                if (!errorMessage) errorMessage = blockError.localizedDescription;\n                \n                children = @[ [NSURL ck2_errorURLWithMessage:errorMessage] ];\n                NSLog(@\"Error loading contents of URL %@: %@\", homeURL, blockError);\n            }\n            else\n            {\n                resolvedURL = [contents objectAtIndex:0];\n                children = [contents subarrayWithRange:NSMakeRange(1, [contents count] - 1)];\n            }\n            \n                [self setHomeURL:resolvedURL];\n                [self cacheChildren:children forURL:resolvedURL];\n\n                [_currentLoadingOperation release];\n                _currentLoadingOperation = nil;\n\n                [self validateProgressIndicator];\n                [self urlDidLoad:resolvedURL];\n                               \n                [self setURLs:@[ resolvedURL ] updateDirectory:YES updateRoot:YES sender:self ];\n        }];\n        \n        // There shouldn't be a race condition with the block above since this should be on the main thread and\n        // the above block won't run on the main thread until this code completes and returns to the run loop.\n        [_currentLoadingOperation retain];\n        \n        [self validateProgressIndicator];\n    }\n    else\n    {\n        [self setURLs:@[ homeURL ] updateDirectory:YES updateRoot:YES sender:self ];\n    }\n}\n\n- (void)goToSelectedItem:(id)sender\n{\n    [[self currentViewController] goToSelectedItem:(id)sender];\n}\n\n- (void)showPathFieldWithString:(NSString *)string\n{\n    if (_pathFieldController == nil)\n    {\n        _pathFieldController = [[CK2PathFieldWindowController alloc] init];\n    }\n    [_pathFieldController setStringValue:string];\n    \n    [_pathFieldController beginSheetModalForWindow:[self openPanel] completionHandler:\n     ^(NSInteger result)\n     {\n         if (result == NSOKButton)\n         {\n             NSString   *path;\n             \n             path = [_pathFieldController stringValue];\n             \n             if ([path hasPrefix:@\"~\"])\n             {\n                 path = [path substringFromIndex:1];\n                 \n                 if ([path hasPrefix:@\"/\"])\n                 {\n                     path = [path substringFromIndex:1];\n                 }\n             }\n             \n             [self addToHistory];\n             \n             [self changeDirectory:[CK2FileManager URLWithPath:path isDirectory:YES hostURL:[self directoryURL]] completionHandler:\n              ^(NSError *error)\n              {\n                  if (error != nil)\n                  {\n                      NSLog(@\"Could not switch to URL %@: %@\", [self directoryURL], error);\n                      NSBeginCriticalAlertSheet(NSLocalizedStringFromTableInBundle(@\"Could not switch to folder\", nil, [NSBundle bundleForClass:[self class]], @\"Switch folder error\"),\n                                                NSLocalizedStringFromTableInBundle(@\"OK\", nil, [NSBundle bundleForClass:[self class]], @\"OK Button\"), nil, nil, [self openPanel], nil, NULL, NULL, NULL, @\"%@\", [error localizedDescription]);\n\n                      \n                      // NSOpenPanel will try and select as much of the URL as is valid. We don't do that here since it may\n                      // take a while to resolve each ancestor so we just revert back to the previous directory.\n                      [self back:self];\n                  }\n              }];\n         }\n     }];\n}\n\n- (IBAction)pathControlItemSelected:(id)sender\n{\n    NSURL       *url;\n    \n    url = [_pathControl URL];\n    \n    if (![url isEqual:[self directoryURL]])\n    {\n        [self addToHistory];\n        [self setURLs:@[ url ] updateDirectory:YES updateRoot:YES sender:_pathControl];\n    }\n}\n\n#pragma mark NSPathControlDelegate\n\n- (BOOL)pathControl:(NSPathControl *)pathControl shouldDragPathComponentCell:(NSPathComponentCell *)pathComponentCell withPasteboard:(NSPasteboard *)pasteboard\n{\n    return NO;\n}\n\n\n#pragma mark NSTabViewDelegate\n\n- (void)tabView:(NSTabView *)tabView willSelectTabViewItem:(NSTabViewItem *)tabViewItem\n{\n    CK2OpenPanelViewController  *viewController;\n    \n    viewController = [self viewControllerForIdentifier:[tabViewItem identifier]];\n    [viewController reload];\n    [viewController update];\n}\n\n- (void)tabView:(NSTabView *)tabView didSelectTabViewItem:(NSTabViewItem *)tabViewItem\n{\n    NSString  *identifier;\n    \n    [_openPanel makeFirstResponder:[tabViewItem initialFirstResponder]];\n    \n    identifier = [tabViewItem identifier];\n    \n    if (![identifier isEqual:BLANK_VIEW_IDENTIFIER])\n    {\n        [[NSUserDefaults standardUserDefaults] setObject:identifier forKey:CK2OpenPanelLastViewPrefKey];\n    }\n}\n\n#pragma mark CK2FileManagerDelegate\n\n- (void)fileManager:(CK2FileManager *)manager operation:(CK2FileOperation *)operation didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(CK2AuthChallengeDisposition, NSURLCredential *))completionHandler;\n{\n    id <CK2OpenPanelDelegate>        delegate;\n    \n    delegate = [[self openPanel] delegate];\n    \n    if ([delegate respondsToSelector:@selector(panel:didReceiveChallenge:completionHandler:)])\n    {\n        [delegate panel:self.openPanel didReceiveChallenge:challenge completionHandler:completionHandler];\n    }\n    else\n    {\n        completionHandler(CK2AuthChallengePerformDefaultHandling, nil);\n    }\n}\n\n- (void)fileManager:(CK2FileManager *)manager appendString:(NSString *)info toTranscript:(CK2TranscriptType)transcript;\n{\n    id <CK2OpenPanelDelegate>        delegate;\n    \n    delegate = [[self openPanel] delegate];\n    \n    if ([delegate respondsToSelector:@selector(panel:appendString:toTranscript:)])\n    {\n        [delegate panel:[self openPanel] appendString:info toTranscript:transcript];\n    }\n}\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2OpenPanelIconViewController.h",
    "content": "//\n//  CK2OpenPanelIconViewController.h\n//  ConnectionKit\n//\n//  Created by Paul Kim on 1/9/13.\n//  Copyright (c) 2013 Paul Kim. All rights reserved.\n//\n//\n// Redistribution and use in source and binary forms, with or without modification,\n// are permitted provided that the following conditions are met:\n//\n// Redistributions of source code must retain the above copyright notice, this list\n// of conditions and the following disclaimer.\n//\n// Redistributions in binary form must reproduce the above copyright notice, this\n// list of conditions and the following disclaimer in the documentation and/or other\n// materials provided with the distribution.\n//\n// Neither the name of Karelia Software nor the names of its contributors may be used to\n// endorse or promote products derived from this software without specific prior\n// written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\n// SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\n// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY\n// WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n#import \"CK2OpenPanelViewController.h\"\n\n@class CK2IconView;\n\n@interface CK2OpenPanelIconViewController : CK2OpenPanelViewController\n{\n    IBOutlet CK2IconView       *_iconView;\n}\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2OpenPanelIconViewController.m",
    "content": "//\n//  CK2OpenPanelIconViewController.m\n//  ConnectionKit\n//\n//  Created by Paul Kim on 1/9/13.\n//  Copyright (c) 2013 Paul Kim. All rights reserved.\n//\n//\n// Redistribution and use in source and binary forms, with or without modification,\n// are permitted provided that the following conditions are met:\n//\n// Redistributions of source code must retain the above copyright notice, this list\n// of conditions and the following disclaimer.\n//\n// Redistributions in binary form must reproduce the above copyright notice, this\n// list of conditions and the following disclaimer in the documentation and/or other\n// materials provided with the distribution.\n//\n// Neither the name of Karelia Software nor the names of its contributors may be used to\n// endorse or promote products derived from this software without specific prior\n// written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\n// SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\n// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY\n// WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n#import \"CK2OpenPanelIconViewController.h\"\n#import \"CK2OpenPanelController.h\"\n#import \"NSURL+CK2OpenPanel.h\"\n#import \"CK2IconViewItem.h\"\n#import \"CK2IconItemView.h\"\n#import \"CK2IconView.h\"\n\n@interface CK2OpenPanelIconViewController ()\n\n@end\n\n@implementation CK2OpenPanelIconViewController\n\n\n- (void)awakeFromNib\n{\n    CK2IconViewItem     *iconItem;\n    \n    iconItem = (CK2IconViewItem *)[_iconView itemPrototype];\n    [iconItem setTarget:self];\n    [iconItem setAction:@selector(itemSelected:)];\n    [iconItem setDoubleAction:@selector(itemDoubleClicked:)];\n}\n\n- (BOOL)allowsMutipleSelection\n{\n    return [_iconView allowsMultipleSelection];\n}\n\n- (void)setAllowsMutipleSelection:(BOOL)allowsMutipleSelection\n{\n    [_iconView setAllowsMultipleSelection:allowsMutipleSelection];\n}\n\n- (void)reload\n{\n    CK2OpenPanelController  *controller;\n    NSArray                 *children;\n    NSUInteger              i, count;\n    NSURL                   *url;\n    \n    controller = [self controller];\n    \n    children = [controller childrenForURL:[[controller openPanel] directoryURL]];\n    [_iconView setContent:children];\n    \n    if (([children count] == 1) && [[children lastObject] ck2_isPlaceholder])\n    {\n        [_iconView setMessageMode:YES];\n    }\n    else\n    {\n        [_iconView setMessageMode:NO];\n    }\n    \n    count = [children count];\n    \n    for (i = 0; i < count; i++)\n    {\n        url = [children objectAtIndex:i];\n        \n        [(CK2IconViewItem *)[_iconView itemAtIndex:i] setEnabled:([controller isURLValid:url] || [controller URLCanHazChildren:url])];\n    }\n    [_iconView setNeedsDisplay:YES];\n}\n\n- (void)update\n{\n    CK2OpenPanelController  *controller;\n    NSArray                 *children, *urls;\n    NSUInteger              i;\n    NSURL                   *url, *directoryURL;\n    NSMutableIndexSet       *indexSet;\n    NSRect                  rect;\n    NSMutableArray          *newURLs;\n    \n    [self reload];\n    \n    controller = [self controller];\n    directoryURL = [[controller openPanel] directoryURL];\n    \n    children = [controller childrenForURL:directoryURL];\n    \n    urls = [controller URLs];\n    indexSet = [NSMutableIndexSet indexSet];\n    rect = NSZeroRect;\n    \n    newURLs = [NSMutableArray array];\n    \n    for (url in urls)\n    {\n        if (![url isEqual:directoryURL])\n        {\n            i = [children indexOfObject:url];\n            \n            if (i != NSNotFound)\n            {\n                [indexSet addIndex:i];\n                rect = NSUnionRect(rect, [_iconView frameForItemAtIndex:i]);\n                [newURLs addObject:url];\n            }\n        }\n    }\n    [_iconView setSelectionIndexes:indexSet];\n    [_iconView scrollRectToVisible:rect];\n    \n    if ([newURLs count] != [urls count])\n    {\n        // Only a subset of the URLs actually are visible so we update the internal URLs to match.\n        [controller setURLs:newURLs updateDirectory:NO sender:self];\n    }\n}\n\n\n- (void)urlDidLoad:(NSURL *)url\n{\n    [self reload];\n}\n\n- (NSArray *)selectedURLs\n{\n    NSIndexSet      *indexSet;\n    NSArray         *urls;\n    \n    indexSet = [_iconView selectionIndexes];\n    if ([indexSet count] > 0)\n    {\n        urls = [[_iconView content] objectsAtIndexes:indexSet];\n    }\n    else\n    {\n        urls = [NSArray array];\n    }\n    return urls;\n}\n\n- (IBAction)itemDoubleClicked:(id)sender\n{\n    [self goToSelectedItem:sender];\n}\n\n- (IBAction)goToSelectedItem:(id)sender\n{\n    CK2OpenPanelController  *controller;\n    NSArray                 *urls;\n    \n    controller = [self controller];\n \n    urls = [self selectedURLs];\n    \n    if ([urls count] == 1)\n    {\n        NSURL                   *url;\n        \n        url = [urls objectAtIndex:0];\n        if ([controller URLCanHazChildren:url])\n        {\n            if (![url isEqual:[[controller openPanel] directoryURL]])\n            {\n                [controller addToHistory];\n                [controller setURLs:urls updateDirectory:YES sender:self];\n            }\n        }\n    }\n    else\n    {\n        BOOL    isValid;\n\n        isValid = YES;\n        for (NSURL *url in urls)\n        {\n            if (![controller isURLValid:url])\n            {\n                isValid = NO;\n            }\n        }\n        \n        if (isValid)\n        {\n            [controller ok:self];\n        }\n    }\n}\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2OpenPanelListViewController.h",
    "content": "//\n//  CK2OpenPanelListController.h\n//  ConnectionKit\n//\n//  Created by Paul Kim on 12/29/12.\n//  Copyright (c) 2012 Paul Kim. All rights reserved.\n//\n//\n// Redistribution and use in source and binary forms, with or without modification,\n// are permitted provided that the following conditions are met:\n//\n// Redistributions of source code must retain the above copyright notice, this list\n// of conditions and the following disclaimer.\n//\n// Redistributions in binary form must reproduce the above copyright notice, this\n// list of conditions and the following disclaimer in the documentation and/or other\n// materials provided with the distribution.\n//\n// Neither the name of Karelia Software nor the names of its contributors may be used to\n// endorse or promote products derived from this software without specific prior\n// written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\n// SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\n// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY\n// WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n#import \"CK2OpenPanelViewController.h\"\n\n@interface CK2OpenPanelListViewController : CK2OpenPanelViewController <NSOutlineViewDataSource, NSOutlineViewDelegate>\n{\n    IBOutlet NSOutlineView          *_outlineView;\n}\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2OpenPanelListViewController.m",
    "content": "//\n//  CK2OpenPanelListController.m\n//  ConnectionKit\n//\n//  Created by Paul Kim on 12/29/12.\n//  Copyright (c) 2012 Paul Kim. All rights reserved.\n//\n//\n// Redistribution and use in source and binary forms, with or without modification,\n// are permitted provided that the following conditions are met:\n//\n// Redistributions of source code must retain the above copyright notice, this list\n// of conditions and the following disclaimer.\n//\n// Redistributions in binary form must reproduce the above copyright notice, this\n// list of conditions and the following disclaimer in the documentation and/or other\n// materials provided with the distribution.\n//\n// Neither the name of Karelia Software nor the names of its contributors may be used to\n// endorse or promote products derived from this software without specific prior\n// written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\n// SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\n// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY\n// WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n#import \"CK2OpenPanelListViewController.h\"\n#import \"CK2OpenPanelController.h\"\n#import \"NSURL+CK2OpenPanel.h\"\n#import \"NSImage+CK2OpenPanel.h\"\n#import \"CK2FileCell.h\"\n\n@interface CK2OpenPanelListViewController ()\n\n@end\n\n@implementation CK2OpenPanelListViewController\n\n- (void)awakeFromNib\n{\n    [_outlineView setDoubleAction:@selector(itemDoubleClicked:)];\n    [_outlineView setTarget:self];\n}\n\n- (BOOL)allowsMutipleSelection\n{\n    return [_outlineView allowsMultipleSelection];\n}\n\n- (void)setAllowsMutipleSelection:(BOOL)allowsMutipleSelection\n{\n    [_outlineView setAllowsMultipleSelection:allowsMutipleSelection];\n}\n\n- (void)reload\n{\n    [_outlineView reloadData];\n}\n\n- (void)update\n{\n    NSArray                 *urls;\n    NSURL                   *url;\n    CK2OpenPanelController  *controller;\n    NSMutableIndexSet       *indexSet;\n    NSRect                  rect;\n    \n    controller = [self controller];\n    \n    [_outlineView reloadData];\n    \n    urls = [controller URLs];\n    indexSet = [NSMutableIndexSet indexSet];\n    rect = NSZeroRect;\n  \n    for (url in urls)\n    {\n        if (![url isEqual:[[controller openPanel] directoryURL]])\n        {\n            NSInteger       row;\n            \n            row = [_outlineView rowForItem:url];\n            if (row > 0)\n            {\n                [indexSet addIndex:row];\n                rect = NSUnionRect(rect, [_outlineView rectOfRow:row]);\n            }\n        }\n    }\n    [_outlineView selectRowIndexes:indexSet byExtendingSelection:NO];\n    [_outlineView scrollRectToVisible:rect];\n}\n\n- (void)urlDidLoad:(NSURL *)url\n{\n    if ([url isEqual:[[[self controller] openPanel] directoryURL]])\n    {\n        [_outlineView reloadData];\n    }\n    else\n    {\n        [_outlineView reloadItem:url reloadChildren:YES];\n    }\n}\n\n- (NSArray *)selectedURLs\n{\n    NSIndexSet      *indexSet;\n    NSMutableArray  *urls;\n    \n    indexSet = [_outlineView selectedRowIndexes];\n    \n    urls = [NSMutableArray array];\n    \n    [indexSet enumerateIndexesUsingBlock:\n     ^(NSUInteger idx, BOOL *stop)\n     {\n         NSURL       *url;\n         \n         url = [_outlineView itemAtRow:idx];\n         if (url != nil)\n         {\n             [urls addObject:url];\n         }\n     }];\n    \n    return urls;\n}\n\n- (IBAction)itemDoubleClicked:(id)sender\n{\n    [self goToSelectedItem:sender];\n}\n\n- (IBAction)goToSelectedItem:(id)sender\n{\n    CK2OpenPanelController      *controller;\n    NSArray                     *urls;\n    \n    controller = [self controller];\n    urls = [self selectedURLs];\n    \n    if ([urls count] == 1)\n    {\n        NSURL                   *url;\n        \n        url = [urls objectAtIndex:0];\n        if ([controller URLCanHazChildren:url])\n        {\n            if (![url isEqual:[[controller openPanel] directoryURL]])\n            {\n                [controller addToHistory];\n                [controller setURLs:urls updateDirectory:YES sender:self];\n            }\n        }\n        else\n        {\n            if ([controller isURLValid:url])\n            {\n                [controller ok:self];\n            }\n        }\n    }\n}\n\n#define HISTORY_LIST_EXPANDED_ITEMS_KEY     @\"listViewExpandedItems\"\n\n- (void)saveViewHistoryState:(NSMutableDictionary *)dict\n{\n    NSUInteger          count, i;\n    NSMutableArray      *items;\n    id                  item;\n    \n    count = [_outlineView numberOfRows];\n    items = [NSMutableArray array];\n    \n    for (i = 0; i < count; i++)\n    {\n        item = [_outlineView itemAtRow:i];\n        \n        if ([_outlineView isItemExpanded:item])\n        {\n            [items addObject:item];\n        }\n    }\n    \n    [dict setObject:items forKey:HISTORY_LIST_EXPANDED_ITEMS_KEY];\n}\n\n- (void)restoreViewHistoryState:(NSDictionary *)dict\n{\n    NSArray     *items;\n    \n    items = [dict objectForKey:HISTORY_LIST_EXPANDED_ITEMS_KEY];\n    \n    for (id item in items)\n    {\n        [_outlineView expandItem:item];\n    }    \n}\n\n#pragma mark NSOutlineViewDataSource methods\n\n- (id)outlineView:(NSOutlineView *)outlineView child:(NSInteger)index ofItem:(id)item\n{\n    CK2OpenPanelController  *controller;\n    \n    controller = [self controller];\n    if (item == nil)\n    {\n        item = [[controller openPanel] directoryURL];\n    }\n    return [[controller childrenForURL:item] objectAtIndex:index];\n}\n\n- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item\n{\n    CK2OpenPanelController  *controller;\n    \n    controller = [self controller];\n    if (item == nil)\n    {\n        item = [[controller openPanel] directoryURL];\n    }\n    return [controller URLCanHazChildren:item];\n}\n\n- (NSInteger)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item\n{\n        CK2OpenPanelController  *controller;\n    \n    controller = [self controller];\n    \n    if (item == nil)\n    {\n        item = [[controller openPanel] directoryURL];\n    }\n    return [[controller childrenForURL:item] count];\n}\n\n- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item\n{\n    id              identifier;\n    \n    if (item == nil)\n    {\n        item = [[[self controller] openPanel] directoryURL];\n    }\n    \n    identifier = [tableColumn identifier];\n    if ([identifier isEqual:@\"Name\"])\n    {\n        return [item ck2_displayName];\n    }\n    else if ([identifier isEqual:@\"Date Modified\"])\n    {\n        return [item ck2_dateModified];\n    }\n    else if ([identifier isEqual:@\"Size\"])\n    {\n        id      value;\n        \n        value = [(NSURL *)item ck2_size];\n        \n        if (value == nil)\n        {\n            return @\"--\";\n        }\n        return value;\n    }\n    else if ([identifier isEqual:@\"Kind\"])\n    {\n        return [(NSURL *)item ck2_kind];\n    }\n    return nil;\n}\n\n- (void)outlineView:(NSOutlineView *)outlineView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item\n{\n    CK2OpenPanelController  *controller;\n    \n    controller = [self controller];\n    if ([[tableColumn identifier] isEqual:@\"Name\"])\n    {\n        [cell setImage:[item ck2_icon]];\n        [cell setTextOnly:[item ck2_isPlaceholder]];\n    }\n    \n    if ([controller isURLValid:item] || [controller URLCanHazChildren:item])\n    {\n        [cell setTextColor:[NSColor controlTextColor]];\n    }\n    else\n    {\n        [cell setTextColor:[NSColor disabledControlTextColor]];\n    }\n}\n\n- (BOOL)outlineView:(NSOutlineView *)outlineView shouldSelectItem:(id)item\n{\n    CK2OpenPanelController  *controller;\n    \n    controller = [self controller];\n    return [controller isURLValid:item] || [controller URLCanHazChildren:item];\n}\n\n- (BOOL)outlineView:(NSOutlineView *)outlineView acceptDrop:(id < NSDraggingInfo >)info item:(id)item childIndex:(NSInteger)index\n{\n    return NO;\n}\n\n- (NSDragOperation)outlineView:(NSOutlineView *)outlineView validateDrop:(id < NSDraggingInfo >)info proposedItem:(id)item proposedChildIndex:(NSInteger)index\n{\n    return NSDragOperationNone;\n}\n\n- (BOOL)outlineView:(NSOutlineView *)outlineView writeItems:(NSArray *)items toPasteboard:(NSPasteboard *)pboard\n{\n    return NO;\n}\n\n- (id)outlineView:(NSOutlineView *)outlineView itemForPersistentObject:(id)object\n{\n    //PENDING:\n    return [NSURL URLWithString:object];\n}\n\n- (id)outlineView:(NSOutlineView *)outlineView persistentObjectForItem:(id)item\n{\n    //PENDING:\n    return [item description];\n}\n\n\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2OpenPanelViewController.h",
    "content": "//\n//  CK2OpenPanelViewController.h\n//  ConnectionKit\n//\n//  Created by Paul Kim on 12/29/12.\n//  Copyright (c) 2012 Paul Kim. All rights reserved.\n//\n//\n// Redistribution and use in source and binary forms, with or without modification,\n// are permitted provided that the following conditions are met:\n//\n// Redistributions of source code must retain the above copyright notice, this list\n// of conditions and the following disclaimer.\n//\n// Redistributions in binary form must reproduce the above copyright notice, this\n// list of conditions and the following disclaimer in the documentation and/or other\n// materials provided with the distribution.\n//\n// Neither the name of Karelia Software nor the names of its contributors may be used to\n// endorse or promote products derived from this software without specific prior\n// written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\n// SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\n// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY\n// WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n#import <Cocoa/Cocoa.h>\n\n@class CK2OpenPanelController;\n\n@interface CK2OpenPanelViewController : NSViewController\n{\n    IBOutlet CK2OpenPanelController              *_controller;\n}\n\n@property (readonly, assign) CK2OpenPanelController     *controller;\n@property (readwrite, assign) BOOL                      allowsMutipleSelection;\n\n- (id)init;\n\n- (void)reload;\n- (void)update;\n- (BOOL)hasFixedRoot;\n\n- (void)urlDidLoad:(NSURL *)url;\n\n- (NSArray *)selectedURLs;\n- (IBAction)itemSelected:(id)sender;\n- (IBAction)itemDoubleClicked:(id)sender;\n\n- (void)saveViewHistoryState:(NSMutableDictionary *)dict;\n- (void)restoreViewHistoryState:(NSDictionary *)dict;\n\n- (IBAction)goToSelectedItem:(id)sender;\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2OpenPanelViewController.m",
    "content": "//\n//  CK2OpenPanelViewController.m\n//  ConnectionKit\n//\n//  Created by Paul Kim on 12/29/12.\n//  Copyright (c) 2012 Paul Kim. All rights reserved.\n//\n//\n// Redistribution and use in source and binary forms, with or without modification,\n// are permitted provided that the following conditions are met:\n//\n// Redistributions of source code must retain the above copyright notice, this list\n// of conditions and the following disclaimer.\n//\n// Redistributions in binary form must reproduce the above copyright notice, this\n// list of conditions and the following disclaimer in the documentation and/or other\n// materials provided with the distribution.\n//\n// Neither the name of Karelia Software nor the names of its contributors may be used to\n// endorse or promote products derived from this software without specific prior\n// written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\n// SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\n// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY\n// WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n#import \"CK2OpenPanelViewController.h\"\n#import \"CK2OpenPanelController.h\"\n\n@implementation CK2OpenPanelViewController\n\n- (id)init\n{\n    if ((self = [super initWithNibName:nil bundle:nil]) != nil)\n    {\n    }\n    return self;\n}\n\n@synthesize controller = _controller;\n\n- (BOOL)allowsMutipleSelection\n{\n    return NO;\n}\n\n- (void)setAllowsMutipleSelection:(BOOL)allowsMutipleSelection\n{\n}\n\n- (void)reload\n{\n}\n\n- (void)update\n{\n}\n\n- (BOOL)hasFixedRoot\n{\n    return NO;\n}\n\n- (void)urlDidLoad:(NSURL *)url\n{\n}\n\n- (NSArray *)selectedURLs\n{\n    return [NSArray array];\n}\n\n\n- (IBAction)itemSelected:(id)sender\n{\n    NSArray         *urls;\n    \n    urls = [self selectedURLs];\n    \n    if ([urls count] > 0)\n    {\n        [[self controller] setURLs:urls updateDirectory:[self hasFixedRoot] sender:self];\n    }\n}\n\n- (IBAction)itemDoubleClicked:(id)sender\n{\n}\n\n- (void)saveViewHistoryState:(NSMutableDictionary *)dict\n{\n}\n\n- (void)restoreViewHistoryState:(NSDictionary *)dict\n{\n}\n\n- (IBAction)goToSelectedItem:(id)sender\n{\n}\n\n\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2PathControl.h",
    "content": "//\n//  CK2PathControl.h\n//  ConnectionKit\n//\n//  Created by Paul Kim on 12/27/12.\n//  Copyright (c) 2012 Paul Kim. All rights reserved.\n//\n//\n// Redistribution and use in source and binary forms, with or without modification,\n// are permitted provided that the following conditions are met:\n//\n// Redistributions of source code must retain the above copyright notice, this list\n// of conditions and the following disclaimer.\n//\n// Redistributions in binary form must reproduce the above copyright notice, this\n// list of conditions and the following disclaimer in the documentation and/or other\n// materials provided with the distribution.\n//\n// Neither the name of Karelia Software nor the names of its contributors may be used to\n// endorse or promote products derived from this software without specific prior\n// written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\n// SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\n// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY\n// WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n#import <Cocoa/Cocoa.h>\n\n@class CK2OpenPanelController;\n\n@interface CK2PathControl : NSPopUpButton\n{\n    NSURL       *_url;\n}\n\n@property (readwrite, retain, nonatomic) NSURL            *URL;\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2PathControl.m",
    "content": "//\n//  CK2PathControl.m\n//  ConnectionKit\n//\n//  Created by Paul Kim on 12/27/12.\n//  Copyright (c) 2012 Paul Kim. All rights reserved.\n//\n//\n// Redistribution and use in source and binary forms, with or without modification,\n// are permitted provided that the following conditions are met:\n//\n// Redistributions of source code must retain the above copyright notice, this list\n// of conditions and the following disclaimer.\n//\n// Redistributions in binary form must reproduce the above copyright notice, this\n// list of conditions and the following disclaimer in the documentation and/or other\n// materials provided with the distribution.\n//\n// Neither the name of Karelia Software nor the names of its contributors may be used to\n// endorse or promote products derived from this software without specific prior\n// written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\n// SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\n// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY\n// WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n#import \"CK2PathControl.h\"\n#import \"NSURL+CK2OpenPanel.h\"\n#import \"CK2OpenPanelController.h\"\n#import \"NSImage+CK2OpenPanel.h\"\n\n#define ICON_SIZE       16.0\n\n@implementation CK2PathControl\n\n@synthesize URL = _url;\n\n- (id)initWithFrame:(NSRect)frame\n{\n    if ((self = [super initWithFrame:frame pullsDown:NO]) != nil)\n    {\n        [[self menu] setAutoenablesItems:NO];\n    }\n    \n    return self;\n}\n\n- (void)dealloc\n{\n    [_url release];\n    [super dealloc];\n}\n\n- (void)urlSelected:(id)sender\n{\n    [self setURL:[sender representedObject]];\n    [self sendAction:[self action] to:[self target]];\n}\n\n- (void)setURL:(NSURL *)url\n{\n    if (![url isEqual:_url])\n    {\n        NSMenu          *menu;\n        \n        [_url release];\n        _url = [url retain];\n\n        menu = [self menu];\n        [menu removeAllItems];\n        \n        if (url != nil)\n        {\n            NSSize          size;\n            NSURL           *tempURL;\n\n            size = NSMakeSize(ICON_SIZE, ICON_SIZE);\n            tempURL = _url;\n            \n            while (tempURL != nil)\n            {\n                NSImage         *image;\n                NSString        *title;\n                NSMenuItem      *item;\n                \n                image = [[[tempURL ck2_icon] copy] autorelease];\n                title = [tempURL ck2_displayName];\n                \n                if ([title isEqual:@\"/\"] ||\n                    title.length == 0)      // happens for URLs like ftpes://user@example.com\n                {\n                    title = [tempURL host];\n                }\n                \n                item = [[NSMenuItem alloc] initWithTitle:title action:@selector(urlSelected:) keyEquivalent:@\"\"];\n                [item setTarget:self];\n                [image setSize:size];\n                [item setImage:image];\n                [item setRepresentedObject:tempURL];\n                [menu addItem:item];\n                [item release];\n                \n                tempURL = [tempURL ck2_parentURL];\n            }\n        }\n        [self selectItemAtIndex:0];\n    }\n}\n\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2PathFieldWindowController.h",
    "content": "//\n//  CK2PathFieldWindowController.h\n//  Connection\n//\n//  Created by Paul Kim on 3/25/13.\n//\n//\n\n#import <Cocoa/Cocoa.h>\n\n@interface CK2PathFieldWindowController : NSWindowController\n{\n    IBOutlet NSTextField        *_field;\n    IBOutlet NSButton           *_goButton;\n    NSString                    *_stringValue;\n}\n\n@property (readwrite, copy) NSString    *stringValue;\n\n- (id)init;\n\n- (void)beginSheetModalForWindow:(NSWindow *)window completionHandler:(void (^)(NSInteger result))handler;\n\n- (IBAction)go:(id)sender;\n- (IBAction)cancel:(id)sender;\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2PathFieldWindowController.m",
    "content": "//\n//  CK2PathFieldWindowController.m\n//  Connection\n//\n//  Created by Paul Kim on 3/25/13.\n//\n//\n\n#import \"CK2PathFieldWindowController.h\"\n\n@interface CK2PathFieldWindowController ()\n\n@end\n\n@implementation CK2PathFieldWindowController\n\n@synthesize stringValue = _stringValue;\n\n- (id)init\n{\n    if ((self = [super initWithWindowNibName:@\"CK2PathFieldWindow\"]) != nil)\n    {\n    }\n    \n    return self;\n}\n\n\n- (void)beginSheetModalForWindow:(NSWindow *)window completionHandler:(void (^)(NSInteger result))handler\n{\n    NSWindow        *sheet;\n    NSText          *fieldEditor;\n    NSString        *string;\n    \n    sheet = [self window];\n    string = [self stringValue];\n    [_field setStringValue:string];\n    [sheet makeFirstResponder:_field];\n    \n    fieldEditor = [sheet fieldEditor:YES forObject:_field];\n    [fieldEditor setSelectedRange:NSMakeRange([string length], 0)];\n\n    [NSApp beginSheet:sheet modalForWindow:window modalDelegate:self didEndSelector:@selector(sheetDidEnd:returnCode:contextInfo:) contextInfo:[handler copy]];\n}\n\n- (void)sheetDidEnd:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo\n{\n    [sheet orderOut:self];\n \n    if (returnCode == NSOKButton)\n    {\n        [self setStringValue:[_field stringValue]];\n    }\n\n    if (contextInfo != NULL)\n    {\n        void    (^block)(NSInteger);\n        \n        block = contextInfo;\n        block(returnCode);\n        [block release];\n    }\n}\n\n- (IBAction)cancel:(id)sender\n{\n    [NSApp endSheet:[self window] returnCode:NSCancelButton];\n}\n\n- (IBAction)go:(id)sender\n{\n    [NSApp endSheet:[self window] returnCode:NSOKButton];\n}\n\n- (void)controlTextDidChange:(NSNotification *)aNotification\n{\n    NSText      *fieldEditor;\n    NSString    *string;\n    \n    fieldEditor = [[aNotification userInfo] objectForKey:@\"NSFieldEditor\"];\n    \n    string = [fieldEditor string];\n    \n    [_goButton setEnabled:([string length] != 0)];\n}\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2Protocol.h",
    "content": "//\n//  CK2Protocol\n//  Connection\n//\n//  Created by Mike on 11/10/2012.\n//\n//\n\n#import <Foundation/Foundation.h>\n\n#import \"CK2FileManager.h\"\n\n\n@protocol CK2ProtocolClient;\n\n\n@interface CK2Protocol : NSObject\n{\n  @private\n    NSURLRequest            *_request;\n    id <CK2ProtocolClient>  _client;\n}\n\n#pragma mark For Subclasses to Implement\n\n// Generally, subclasses check the URL's scheme to see if they support it\n+ (BOOL)canHandleURL:(NSURL *)url;\n\n// Override these methods to get setup ready for performing the operation. The request is used to indicate the URL to operate on, and the timeout to apply\n\n- (id)initForEnumeratingDirectoryWithRequest:(NSURLRequest *)request    // MUST \"discover\" the directory itself, first\n                  includingPropertiesForKeys:(NSArray *)keys\n                                     options:(NSDirectoryEnumerationOptions)mask\n                                      client:(id <CK2ProtocolClient>)client;\n\n- (id)initForCreatingDirectoryWithRequest:(NSURLRequest *)request\n              withIntermediateDirectories:(BOOL)createIntermediates\n                        openingAttributes:(NSDictionary *)attributes\n                                   client:(id <CK2ProtocolClient>)client;\n\n// The data is supplied as -HTTPBodyData or -HTTPBodyStream on the request\n- (id)initForCreatingFileWithRequest:(NSURLRequest *)request\n                                size:(int64_t)size\n         withIntermediateDirectories:(BOOL)createIntermediates\n                   openingAttributes:(NSDictionary *)attributes\n                              client:(id <CK2ProtocolClient>)client;\n\n- (id)initForRemovingItemWithRequest:(NSURLRequest *)request\n                              client:(id <CK2ProtocolClient>)client;\n\n// The source and destination schemes or hosts might differ. If so, that's currently considered an error by the client, so do whatever the hell pleases you\n- (id)initForRenamingItemWithRequest:(NSURLRequest *)request\n                             newName:(NSString *)newName\n                            client:(id <CK2ProtocolClient>)client;\n\n- (id)initForSettingAttributes:(NSDictionary *)keyedValues\n                 ofItemWithRequest:(NSURLRequest *)request\n                            client:(id <CK2ProtocolClient>)client;\n\n// Override to kick off the requested operation\n- (void)start;\n\n// Your cue to stop doing any more work. Once this is called, the client will ignore you should you choose to continue\n// Called on an arbitrary thread, so bounce over to your own queue/thread if needed\n- (void)stop;\n\n\n#pragma mark For Subclasses to Customize\n// Session consults registered protocols to find out which is qualified to handle paths for a specific URL\n// Default behaviour is generic path-handling. Override if your protocol has some special requirements. e.g. SFTP indicates home directory with a ~\n+ (NSURL *)URLWithPath:(NSString *)path relativeToURL:(NSURL *)baseURL;\n+ (NSString *)pathOfURLRelativeToHomeDirectory:(NSURL *)URL;\n\n// Default is whether path is @\"\". Override to have a stab at the question if your protocol does have an idea of what absolute path is the home directory\n+ (BOOL)isHomeDirectoryAtURL:(NSURL *)url;\n\n\n#pragma mark For Subclasses to Use\n\n// Most subclasses will want to use this to store the request and client upon initialization, but they're not obliged to\n- (id)initWithRequest:(NSURLRequest *)request client:(id <CK2ProtocolClient>)client;\n@property(nonatomic, readonly, copy) NSURLRequest *request;\n@property(nonatomic, readonly, retain) id <CK2ProtocolClient> client;\n\n/**\n Returned to represent general failures to create or write to something, in situations where we can't get a more specific error.\n */\n\n- (NSError*)standardCouldntWriteErrorWithUnderlyingError:(NSError*)error;\n\n/**\n Returned to represent general failures to find or read something, in situations where we can't get a more specific error.\n */\n\n- (NSError*)standardCouldntReadErrorWithUnderlyingError:(NSError*)error;\n\n/**\n Returned to represent a failure that we *know* was caused by the requested item not being found.\n If the protocol can't be that specific, it should use standardCouldntWriteErrorWithUnderlyingError\n or standardCouldntReadErrorWithUnderlyingError instead.\n */\n\n- (NSError*)standardFileNotFoundErrorWithUnderlyingError:(NSError*)error;\n\n/**\n Returned to represent an authentication error, in situations where the protocol can't be more specific.\n */\n\n- (NSError*)standardAuthenticationErrorWithUnderlyingError:(NSError*)error;\n\n/**\n Replaces the user info portion of `aURL` (i.e. the username and password) with a single desired\n username.\n */\n+ (NSURL *)URLByReplacingUserInfoInURL:(NSURL *)aURL withUser:(NSString *)nsUser;\n\n#pragma mark Registration\n\n/*!\n @method registerClass:\n @abstract This method registers a protocol class, making it visible\n to several other CK2Protocol class methods.\n @discussion When the system begins to perform an operation,\n each protocol class that has been registered is consulted in turn to\n see if it can be initialized with a given request. The first\n protocol handler class to provide a YES answer to\n <tt>+canHandleURL:</tt> \"wins\" and that protocol\n implementation is used to perform the URL load. There is no\n guarantee that all registered protocol classes will be consulted.\n Hence, it should be noted that registering a class places it first\n on the list of classes that will be consulted in calls to\n <tt>+canHandleURL:</tt>, moving it in front of all classes\n that had been registered previously.\n Throws an exception if protocolClass isn't a subclass of CK2Protocol\n @param protocolClass the class to register.\n */\n+ (void)registerClass:(Class)protocolClass;\n\n@end\n\n\n@protocol CK2ProtocolClient <NSObject>\n\n#pragma mark General\n\n- (void)protocol:(CK2Protocol *)protocol didCompleteWithError:(NSError *)error;\n\n/**\n Experimental; for URLRequest-based protocols\n */\n- (NSURLRequest *)protocol:(CK2Protocol *)protocol willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response;\n\n/*!\n @method protocoldidReceiveAuthenticationChallenge:\n @abstract Start authentication for the specified request\n @param protocol The protocol object requesting authentication.\n @param challenge The authentication challenge.\n @param completionHandler Called by the system to specify what it would like done.\n @discussion The protocol client answers the request on the same queue\n as -start was called on. It may add a default credential to the\n challenge it issues to the connection delegate, if the protocol did not\n provide one.\n */\n- (void)protocol:(CK2Protocol *)protocol didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(CK2AuthChallengeDisposition, NSURLCredential*))completionHandler;\n\n- (void)protocol:(CK2Protocol *)protocol appendString:(NSString *)info toTranscript:(CK2TranscriptType)transcript;\n\n\n#pragma mark Operation-Specific\n\n// Only made use of by directory enumeration at present, but hey, maybe something else will in future\n// URL should be pre-populated with properties requested by client\n- (void)protocol:(CK2Protocol *)protocol didDiscoverItemAtURL:(NSURL *)url;\n\n- (void)protocol:(CK2Protocol *)protocol\n didSendBodyData:(int64_t)bytesSent\n  totalBytesSent:(int64_t)totalBytesSent\ntotalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend;\n\n// Call if reading from a stream needs to be retried. The client will provide you with a fresh, unopened stream to read from\n- (NSInputStream *)protocol:(CK2Protocol *)protocol needNewBodyStream:(NSURLRequest *)request;\n\n@end"
  },
  {
    "path": "ConnectionKit/CK2Protocol.m",
    "content": "//\n//  CK2Protocol\n//  Connection\n//\n//  Created by Mike on 11/10/2012.\n//\n//\n\n#import \"CK2Protocol.h\"\n\n#import \"CK2FTPProtocol.h\"\n#import \"CK2SFTPProtocol.h\"\n#import \"CK2FileProtocol.h\"\n#import \"CK2WebDAVProtocol.h\"\n\n@implementation CK2Protocol\n\n#pragma mark Serialization\n\n+ (dispatch_queue_t)queue;\n{\n    static dispatch_queue_t queue;\n    static dispatch_once_t onceToken;\n    dispatch_once(&onceToken, ^{\n        queue = dispatch_queue_create(\"CK2FileTransferSystem\", NULL);\n        \n        // Register built-in protocols too\n        sRegisteredProtocols = [[NSMutableArray alloc] initWithObjects:[CK2FileProtocol class], [CK2SFTPProtocol class], [CK2FTPProtocol class], [CK2WebDAVProtocol class], nil];\n    });\n    \n    return queue;\n}\n\n#pragma mark For Subclasses to Implement\n\n+ (BOOL)canHandleURL:(NSURL *)url;\n{\n    [self doesNotRecognizeSelector:_cmd];\n    return NO;\n}\n\n- (id)initForEnumeratingDirectoryWithRequest:(NSURLRequest *)request includingPropertiesForKeys:(NSArray *)keys options:(NSDirectoryEnumerationOptions)mask client:(id<CK2ProtocolClient>)client;\n{\n    [self doesNotRecognizeSelector:_cmd];\n    return nil;\n}\n\n- (id)initForCreatingDirectoryWithRequest:(NSURLRequest *)request withIntermediateDirectories:(BOOL)createIntermediates openingAttributes:(NSDictionary *)attributes client:(id<CK2ProtocolClient>)client;\n{\n    [self doesNotRecognizeSelector:_cmd];\n    return nil;\n}\n\n- (id)initForCreatingFileWithRequest:(NSURLRequest *)request size:(int64_t)size withIntermediateDirectories:(BOOL)createIntermediates openingAttributes:(NSDictionary *)attributes client:(id<CK2ProtocolClient>)client;\n{\n    [self doesNotRecognizeSelector:_cmd];\n    return nil;\n}\n\n- (id)initForRemovingItemWithRequest:(NSURLRequest *)request client:(id<CK2ProtocolClient>)client;\n{\n    [self doesNotRecognizeSelector:_cmd];\n    return nil;\n}\n\n- (id)initForRenamingItemWithRequest:(NSURLRequest *)request newName:(NSString *)newName client:(id<CK2ProtocolClient>)client\n{\n    [self doesNotRecognizeSelector:_cmd];\n    return nil;\n}\n\n- (id)initForSettingAttributes:(NSDictionary *)keyedValues ofItemWithRequest:(NSURLRequest *)request client:(id<CK2ProtocolClient>)client;\n{\n    [self doesNotRecognizeSelector:_cmd];\n    return nil;\n}\n\n- (void)start;\n{\n    [self doesNotRecognizeSelector:_cmd];\n}\n\n- (void)stop;\n{\n    [self doesNotRecognizeSelector:_cmd];\n}\n\n#pragma mark For Subclasses to Customize\n\n+ (NSURL *)URLWithPath:(NSString *)path relativeToURL:(NSURL *)baseURL;\n{\n    if (path.length == 0) path = @\"/\";  // special case\n    \n    CFStringRef encodedPath = CFURLCreateStringByAddingPercentEscapes(NULL,\n                                                                      (CFStringRef)path,\n                                                                      NULL,\n                                                                      CFSTR(\";?#\"),\n                                                                      kCFStringEncodingUTF8);\n    \n    NSURL* result = [NSURL URLWithString:(NSString *)encodedPath relativeToURL:baseURL];\n    CFRelease(encodedPath);\n\n    return result;\n}\n\n+ (NSString *)pathOfURLRelativeToHomeDirectory:(NSURL *)URL;\n{\n    return [URL path];\n}\n\n+ (BOOL)isHomeDirectoryAtURL:(NSURL *)url;\n{\n    return [[self pathOfURLRelativeToHomeDirectory:url] isEqualToString:@\"\"];\n}\n\n#pragma mark For Subclasses to Use\n\n- (id)initWithRequest:(NSURLRequest *)request client:(id<CK2ProtocolClient>)client;\n{\n    if (self = [self init])\n    {\n        _request = [request copy];\n        _client = [client retain];\n    }\n    return self;\n}\n\n- (void)dealloc\n{\n    [_request release];\n    [_client release];\n    \n    [super dealloc];\n}\n\n- (NSError*)standardCouldntWriteErrorWithUnderlyingError:(NSError *)error\n{\n    NSDictionary* info = error ? @{NSUnderlyingErrorKey : error} : nil;\n    NSError* result = [NSError errorWithDomain:NSCocoaErrorDomain code:NSFileWriteUnknownError userInfo:info];\n\n    return result;\n}\n\n- (NSError*)standardFileNotFoundErrorWithUnderlyingError:(NSError *)error\n{\n    NSDictionary* info = error ? @{NSUnderlyingErrorKey : error} : nil;\n    NSError* result = [NSError errorWithDomain:NSCocoaErrorDomain code:NSFileNoSuchFileError userInfo:info];\n\n    return result;\n}\n\n- (NSError*)standardCouldntReadErrorWithUnderlyingError:(NSError *)error\n{\n    NSDictionary* info = error ? @{NSUnderlyingErrorKey : error} : nil;\n    NSError* result = [NSError errorWithDomain:NSCocoaErrorDomain code:NSFileReadUnknownError userInfo:info];\n\n    return result;\n}\n\n- (NSError*)standardAuthenticationErrorWithUnderlyingError:(NSError *)error\n{\n    NSDictionary* info = error ? @{NSUnderlyingErrorKey : error} : nil;\n    NSError* result = [NSError errorWithDomain:NSURLErrorDomain code:NSURLErrorUserAuthenticationRequired userInfo:info];\n\n    return result;\n}\n\n+ (NSURL *)URLByReplacingUserInfoInURL:(NSURL *)aURL withUser:(NSString *)nsUser;\n{\n    // Canonicalize URLs by making sure username is included. Strip out password in the process\n    CFStringRef user = (CFStringRef)nsUser;\n    if (user)\n    {\n        // -stringByAddingPercentEscapesUsingEncoding: doesn't cover things like the @ symbol, so\n        // drop down to CoreFoundation\n        user = CFURLCreateStringByAddingPercentEscapes(NULL,\n                                                       user,\n                                                       NULL,\n                                                       CFSTR(\":/?#[]@!$&'()*+,;=\"),   // going by RFC3986\n                                                       kCFStringEncodingUTF8);\n    }\n    \n    CFIndex length = CFURLGetBytes((CFURLRef)aURL, NULL, 0);\n    NSMutableData *data = [[NSMutableData alloc] initWithLength:length];\n    CFURLGetBytes((CFURLRef)aURL, [data mutableBytes], length);\n    \n    CFRange authSeparatorsRange;\n    CFRange authRange = CFURLGetByteRangeForComponent((CFURLRef)aURL, kCFURLComponentUserInfo, &authSeparatorsRange);\n    \n    if (authRange.location == kCFNotFound)\n    {\n        NSData *replacement = [[(NSString *)user stringByAppendingString:@\"@\"] dataUsingEncoding:NSUTF8StringEncoding];\n        CFDataReplaceBytes((CFMutableDataRef)data, authSeparatorsRange, [replacement bytes], replacement.length);\n    }\n    else\n    {\n        NSData *replacement = [(NSString *)user dataUsingEncoding:NSUTF8StringEncoding];\n        \n        if (!user) authRange.length = authSeparatorsRange.location + authSeparatorsRange.length - authRange.location;\n        CFDataReplaceBytes((CFMutableDataRef)data, authRange, [replacement bytes], replacement.length);\n    }\n    \n    aURL = NSMakeCollectable(CFURLCreateWithBytes(NULL, [data bytes], data.length, kCFStringEncodingUTF8, NULL));\n    \n    [data release];\n    if (user) CFRelease(user);\n    \n    return [aURL autorelease];\n}\n\n@synthesize request = _request;\n@synthesize client = _client;\n\n#pragma mark Registration\n\nstatic NSMutableArray *sRegisteredProtocols;\n\n+ (void)registerClass:(Class)protocolClass;\n{\n    NSParameterAssert([protocolClass isSubclassOfClass:[CK2Protocol class]]);\n    \n    dispatch_async([self queue], ^{ // might as well be async as queue might be blocked momentarily by a protocol\n        \n        [sRegisteredProtocols insertObject:protocolClass\n                                           atIndex:0];  // so newest is consulted first\n    });\n}\n\n+ (void)classForURL:(NSURL *)url completionHandler:(void (^)(Class protocol))block;\n{\n    // Search for correct protocol\n    dispatch_async([self queue], ^{\n        \n        Class result = nil;\n        for (Class aProtocol in sRegisteredProtocols)\n        {\n            if ([aProtocol canHandleURL:url])\n            {\n                result = aProtocol;\n                break;\n            }\n        }\n        \n        block(result);\n    });\n}\n\n+ (Class)classForURL:(NSURL *)url;\n{\n    __block Class result = nil;\n    \n    // Search for correct protocol\n    dispatch_sync([self queue], ^{\n        \n        for (Class aProtocol in sRegisteredProtocols)\n        {\n            if ([aProtocol canHandleURL:url])\n            {\n                result = aProtocol;\n                break;\n            }\n        }\n    });\n    \n    return result;\n}\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2SFTPProtocol.h",
    "content": "//\n//  CK2SFTPProtocol.h\n//  Connection\n//\n//  Created by Mike on 15/10/2012.\n//\n//\n\n#import \"CK2CURLBasedProtocol.h\"\n\n@interface CK2SFTPProtocol : CK2CURLBasedProtocol\n{\n  @private    \n    NSURLAuthenticationChallenge    *_fingerprintChallenge;\n    enum curl_khstat                _knownHostsStat;\n    dispatch_semaphore_t            _fingerprintSemaphore;\n    \n    NSString    *_transcriptMessage;\n}\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2SFTPProtocol.m",
    "content": "//\n//  CK2SFTPProtocol.m\n//  Connection\n//\n//  Created by Mike on 15/10/2012.\n//\n//\n\n#import \"CK2SFTPProtocol.h\"\n#import \"CK2Authentication.h\"\n\n#import <CURLHandle/CK2SSHCredential.h>\n\n#import <AppKit/AppKit.h>\n#import <CURLHandle/CURLHandle.h>\n#import <libssh2_sftp.h>\n\n@implementation CK2SFTPProtocol\n\n+ (BOOL)canHandleURL:(NSURL *)url;\n{\n    NSString *scheme = [url scheme];\n    return ([@\"scp\" caseInsensitiveCompare:scheme] == NSOrderedSame || [@\"sftp\" caseInsensitiveCompare:scheme] == NSOrderedSame);\n}\n\n+ (NSURL *)URLWithPath:(NSString *)path relativeToURL:(NSURL *)baseURL;\n{\n    // SCP and SFTP represent the home directory using ~/ at the start of the path <http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTURL>\n    if (![path isAbsolutePath] && [[baseURL path] length] <= 1)\n    {\n        path = [@\"/~/\" stringByAppendingString:path];   // stringByAppendingPathComponent: will strip out any trailing slash; want to keep them\n    }\n    \n    return [super URLWithPath:path relativeToURL:baseURL];\n}\n\n+ (NSString *)pathOfURLRelativeToHomeDirectory:(NSURL *)URL;\n{\n    NSString *result = [super pathOfURLRelativeToHomeDirectory:URL];\n    \n    // SCP and SFTP represent the home directory using ~/ at the start of the path\n    if ([result hasPrefix:@\"/~/\"])\n    {\n        result = [result substringFromIndex:3];\n    }\n    else if ([result isEqualToString:@\"/~\"])\n    {\n        result = @\"\";   // seems a bit weird to have empty path, but enumeration acts badly if we return @\".\" instead\n    }\n    \n    return result;\n}\n\n#pragma mark Operations\n\n- (id)initForEnumeratingDirectoryWithRequest:(NSURLRequest *)request includingPropertiesForKeys:(NSArray *)keys options:(NSDirectoryEnumerationOptions)mask client:(id<CK2ProtocolClient>)client;\n{\n    if (self = [super initForEnumeratingDirectoryWithRequest:request includingPropertiesForKeys:keys options:mask client:client])\n    {\n        NSString *path = [self.class pathOfURLRelativeToHomeDirectory:request.URL];\n        _transcriptMessage = [[NSString alloc] initWithFormat:@\"Listing %@\", path];\n    }\n    return self;\n}\n\n- (id)initForCreatingDirectoryWithRequest:(NSURLRequest *)request withIntermediateDirectories:(BOOL)createIntermediates openingAttributes:(NSDictionary *)attributes client:(id<CK2ProtocolClient>)client;\n{\n    NSMutableURLRequest *mutableRequest = [request mutableCopy];\n    [mutableRequest curl_setNewDirectoryPermissions:[attributes objectForKey:NSFilePosixPermissions]];\n\n    NSString* path = [self.class pathOfURLRelativeToHomeDirectory:[request URL]];\n    \n    // Escape special characters in path so libcurl doesn't misinterpret them\n    // Needing to escape here for the compiler makes this very confusing to read, sorry! Gist is:\n    // Backslashes need to be escaped *first* as double backslashes so that:\n    // Quotes can be escaped with a backslash\n    // Then overall path is quoted so libcurl knows to treat spaces as part of the path\n    path = [path stringByReplacingOccurrencesOfString:@\"\\\\\" withString:@\"\\\\\\\\\"];\n    path = [path stringByReplacingOccurrencesOfString:@\"\\\"\" withString:@\"\\\\\\\"\"];\n    NSString* command = [@\"mkdir \" stringByAppendingFormat:@\"\\\"%@\\\"\",path];\n    \n    self = [self initWithCustomCommands:@[command]\n                                request:mutableRequest\n          createIntermediateDirectories:NO  // rely on file operation to do this instead\n                                 client:client\n                      completionHandler:^(NSError *error) {\n                          if (error)\n                          {\n                              // if the mkdir command failed, try to extract a more meaningful error\n                              if ([error code] == CURLE_QUOTE_ERROR && [[error domain] isEqualToString:CURLcodeErrorDomain])\n                              {\n                                  error = [self standardCouldntWriteErrorWithUnderlyingError:error];\n                                  // TODO: can we distinguish here between failure because the directory exists, and failure for some other reason?\n                              }\n                          }\n\n                          [self reportToProtocolWithError:error];\n                      }];\n    \n    _transcriptMessage = [[NSString alloc] initWithFormat:@\"Making directory %@\\n\", path];\n    \n    [mutableRequest release];\n    return self;\n}\n\n- (id)initForCreatingFileWithRequest:(NSURLRequest *)request size:(int64_t)size withIntermediateDirectories:(BOOL)createIntermediates openingAttributes:(NSDictionary *)attributes client:(id<CK2ProtocolClient>)client;\n{\n    NSMutableURLRequest *mutableRequest = [request mutableCopy];\n    [mutableRequest curl_setNewFilePermissions:[attributes objectForKey:NSFilePosixPermissions]];\n    \n    if (self = [self initForCreatingFileWithRequest:mutableRequest\n                                               size:size\n                        withIntermediateDirectories:NO  // rely on file operation to do this instead\n                                             client:client\n                                  completionHandler:NULL])\n    {\n        NSString* path = [self.class pathOfURLRelativeToHomeDirectory:[request URL]];\n        NSString* name = [path lastPathComponent];\n        _transcriptMessage = [[NSString alloc] initWithFormat:@\"Uploading %@ to %@\\n\", name, path];\n        \n        \n    }\n    \n    [mutableRequest release];\n    \n    return self;\n}\n\n- (id)initForRenamingItemWithRequest:(NSURLRequest *)request newName:(NSString *)newName client:(id<CK2ProtocolClient>)client\n{\n    NSString* srcPath = [self.class pathOfURLRelativeToHomeDirectory:[request URL]];\n    NSString* dstPath = [[srcPath stringByDeletingLastPathComponent] stringByAppendingPathComponent:newName];\n\n    return [self initWithCustomCommands:[NSArray arrayWithObject:[NSString stringWithFormat:@\"rename %@ %@\", srcPath, dstPath]]\n                                request:request\n          createIntermediateDirectories:NO\n                                 client:client\n                      completionHandler:^(NSError *error) {\n                          if (error)\n                          {\n                              if ([error code] == CURLE_QUOTE_ERROR && [[error domain] isEqualToString:CURLcodeErrorDomain])\n                              {\n                                  error = [NSError errorWithDomain:NSCocoaErrorDomain code:NSFileWriteUnknownError userInfo:@{ NSUnderlyingErrorKey : error }];\n                              }\n                          }\n\n                          [self reportToProtocolWithError:error];\n                      }];\n}\n\n- (id)initForRemovingItemWithRequest:(NSURLRequest *)request client:(id<CK2ProtocolClient>)client;\n{\n    NSURL *url = request.URL;\n    \n    // Pick an appropriate command\n    NSString *command = @\"rm \";\n    \n    NSNumber *isDirectory;\n    if ([url getResourceValue:&isDirectory forKey:NSURLIsDirectoryKey error:NULL] && isDirectory.boolValue)\n    {\n        command = @\"rmdir \";\n    }\n    else if (CFURLHasDirectoryPath((CFURLRef)url))\n    {\n        command = @\"rmdir \";\n    }\n    \n    \n    NSString* path = [self.class pathOfURLRelativeToHomeDirectory:url];\n    \n    self = [self initWithCustomCommands:[NSArray arrayWithObject:[command stringByAppendingString:path]]\n                                request:request\n          createIntermediateDirectories:NO\n                                 client:client\n                      completionHandler:^(NSError *error) {\n                          if (error)\n                          {\n                              if ([error code] == CURLE_QUOTE_ERROR && [[error domain] isEqualToString:CURLcodeErrorDomain])\n                              {\n                                  //NSUInteger sshError = [error curlResponseCode];\n                                  error = [self standardCouldntWriteErrorWithUnderlyingError:error];\n                              }\n                          }\n\n                          [self reportToProtocolWithError:error];\n                      }];\n    \n    _transcriptMessage = [[NSString alloc] initWithFormat:@\"Removing %@\\n\", path];\n    \n    return self;\n}\n\n- (id)initForSettingAttributes:(NSDictionary *)keyedValues ofItemWithRequest:(NSURLRequest *)request client:(id<CK2ProtocolClient>)client;\n{\n    NSNumber *permissions = [keyedValues objectForKey:NSFilePosixPermissions];\n    if (permissions)\n    {\n        NSString* path = [self.class pathOfURLRelativeToHomeDirectory:[request URL]];\n\n        NSArray *commands = [NSArray arrayWithObject:[NSString stringWithFormat:\n                                                      @\"chmod %lo %@\",\n                                                      [permissions unsignedLongValue],\n                                                      path]];\n        \n        self = [self initWithCustomCommands:commands\n                                    request:request\n              createIntermediateDirectories:NO\n                                     client:client\n                          completionHandler:^(NSError *error) {\n                              if (error)\n                              {\n                                  if ([error code] == CURLE_QUOTE_ERROR && [[error domain] isEqualToString:CURLcodeErrorDomain])\n                                  {\n                                      NSUInteger sshError = [error curlResponseCode];\n                                      switch (sshError)\n                                      {\n                                          case LIBSSH2_FX_NO_SUCH_FILE:\n                                              error = [self standardFileNotFoundErrorWithUnderlyingError:error];\n                                              break;\n\n                                          default:\n                                              error = [self standardCouldntWriteErrorWithUnderlyingError:error];\n                                              break;\n                                      }\n                                  }\n                              }\n                              \n                              [self reportToProtocolWithError:error];\n                          }];\n        \n        _transcriptMessage = [[NSString alloc] initWithFormat:@\"Changing mode on %@\\n\", path];\n    }\n    else\n    {\n        self = [self initWithRequest:nil client:client];\n    }\n    \n    return self;\n}\n\n#pragma mark Lifecycle\n\n- (void)start;\n{\n    // If there's no request, that means we were asked to do nothing possible over SFTP. Most likely, storing attributes that aren't POSIX permissions\n    // So jump straight to completion\n    if (![self request])\n    {\n        [[self client] protocol:self didCompleteWithError:nil];\n        return;\n    }\n    \n    \n    // Note what we're up to\n    if (_transcriptMessage)\n    {\n        [self.client protocol:self appendString:_transcriptMessage toTranscript:CK2TranscriptHeaderOut];\n        [_transcriptMessage release]; _transcriptMessage = nil;\n    }\n    \n    \n    // Grab the login credential\n    NSURL *url = [[self request] URL];\n    \n    NSURLProtectionSpace *space = [[CK2SSHProtectionSpace alloc] initWithHost:[url host]\n                                                                         port:[[url port] integerValue]\n                                                                     protocol:@\"ssh\"\n                                                                        realm:nil\n                                                         authenticationMethod:NSURLAuthenticationMethodDefault];\n    \n    [self startWithProtectionSpace:space];\n    [space release];\n}\n\n- (void)stop;\n{\n    [super stop];\n    \n    // Cancel the fingerprint semaphore\n    // TODO: I think this isn't quite threadsafe if the cancellation happened\n    // while the challenge is being set up or torn down. We ideally need a\n    // synchronization mechanism, probably around the CURLTransfer's queue\n    if (_fingerprintChallenge)\n    {\n        [self useKnownHostsStat:CURLKHSTAT_REJECT];\n    }\n}\n\n- (void)dealloc;\n{\n    [_fingerprintChallenge release];\n    if (_fingerprintSemaphore) dispatch_release(_fingerprintSemaphore);\n    [_transcriptMessage release];\n    \n    [super dealloc];\n}\n\n#pragma mark Auth\n\n- (id)initWithRequest:(NSURLRequest *)request client:(id<CK2ProtocolClient>)client;\n{\n    // Add the known hosts file setting to the request\n    NSMutableURLRequest *mutableRequest = [request mutableCopy];\n    [mutableRequest curl_setSSHKnownHostsFileURL:[NSURL fileURLWithPath:[@\"~/.ssh/known_hosts\" stringByExpandingTildeInPath] isDirectory:NO]];\n    \n    self = [super initWithRequest:mutableRequest client:client];\n    [mutableRequest release];\n    return self;\n}\n\n- (void)popCompletionHandlerByExecutingWithError:(NSError *)error;\n{\n    if (error)\n    {\n        // adjust the reported URL so that it's actually the full one (libcurl only got given one with the last component removed)\n        NSURL* url = [self.request URL];\n        if (![[error.userInfo objectForKey:NSURLErrorFailingURLErrorKey] isEqual:url])\n        {\n            NSMutableDictionary* modifiedInfo = [NSMutableDictionary dictionaryWithDictionary:error.userInfo];\n            [modifiedInfo setObject:url forKey:NSURLErrorFailingURLErrorKey];\n            [modifiedInfo setObject:[url absoluteString] forKey:NSURLErrorFailingURLStringErrorKey];\n            error = [NSError errorWithDomain:error.domain code:error.code userInfo:modifiedInfo];\n        }\n\n        // Re-package host key failures as something more in the vein of NSURLConnection\n        if (error.code == CURLE_PEER_FAILED_VERIFICATION && [error.domain isEqualToString:CURLcodeErrorDomain])\n        {\n            error = [NSError errorWithDomain:NSURLErrorDomain code:NSURLErrorServerCertificateUntrusted userInfo:[error userInfo]];\n        }\n    }\n\n    [super popCompletionHandlerByExecutingWithError:error];\n}\n\n#pragma mark Host Fingerprint\n\n- (enum curl_khstat)transfer:(CURLTransfer *)transfer didFindHostFingerprint:(const struct curl_khkey *)foundKey knownFingerprint:(const struct curl_khkey *)knownkey match:(enum curl_khmatch)match;\n{\n    // Once cancelled, we can't handle it. Perhaps CURLTransfer ought to protect against that happenstance itself; not sure\n    if (transfer.state >= CURLTransferStateCanceling)\n    {\n        return CURLKHSTAT_REJECT;\n    }\n    \n    \n    if (!_fingerprintSemaphore)\n    {\n        // Report the key back to delegate to see how it feels about this. Unfortunately have to uglily use a semaphore to do so\n        NSData *key;\n        if (foundKey->len == 0)  // base64 encoded\n        {\n            NSString *key64 = [[NSString alloc] initWithCString:foundKey->key encoding:NSASCIIStringEncoding];\n            key = [[NSData alloc] initWithBase64Encoding:key64];\n            [key64 release];\n        }\n        else\n        {\n            key = [[NSData alloc] initWithBytes:foundKey->key length:foundKey->len];\n        }\n        \n        NSURLProtectionSpace *space = [NSURLProtectionSpace ck2_protectionSpaceWithHost:self.request.URL.host\n                                                                         knownHostMatch:match\n                                                                              publicKey:key\n                                                                                   type:foundKey->keytype];\n        \n        [key release];\n        \n        NSURLCredential *credential = nil;\n        if (match != CURLKHMATCH_MISMATCH) credential = [NSURLCredential ck2_credentialForKnownHostWithPersistence:NSURLCredentialPersistencePermanent];\n        \n        _fingerprintChallenge = [[NSURLAuthenticationChallenge alloc] initWithProtectionSpace:space\n                                                                           proposedCredential:credential\n                                                                         previousFailureCount:0\n                                                                              failureResponse:nil\n                                                                                        error:nil\n                                                                                       sender:nil];\n        \n        _fingerprintSemaphore = dispatch_semaphore_create(0);   // must be setup before handing off to client\n        \n        [[self client] protocol:self didReceiveChallenge:_fingerprintChallenge completionHandler:^(CK2AuthChallengeDisposition disposition, NSURLCredential *credential) {\n            \n            switch (disposition)\n            {\n                case CK2AuthChallengePerformDefaultHandling:\n                    credential = _fingerprintChallenge.proposedCredential;\n                    \n                case CK2AuthChallengeUseCredential:\n                    if (credential)\n                    {\n                        [self.client protocol:self appendString:@\"Host fingerprint is fine\" toTranscript:CK2TranscriptHeaderIn];\n                        [self useKnownHostsStat:(credential.persistence == NSURLCredentialPersistencePermanent ? CURLKHSTAT_FINE_ADD_TO_FILE : CURLKHSTAT_FINE)];\n                    }\n                    else\n                    {\n                        [self useKnownHostsStat:CURLKHSTAT_REJECT];\n                    }\n                    break;\n                    \n                default:\n                    [self.client protocol:self didCompleteWithError:[NSError errorWithDomain:NSURLErrorDomain code:NSURLErrorCancelled userInfo:nil]];\n                    [self useKnownHostsStat:CURLKHSTAT_REJECT];\n                    break;\n            }\n        }];\n    }\n    \n    // Until the client replies, give libcurl a chance to process anything else. Ugly isn't it?\n    if (dispatch_semaphore_wait(_fingerprintSemaphore, 100 * NSEC_PER_MSEC))\n    {\n        return CURLKHSTAT_DEFER;\n    }\n    \n    // Finished waiting; cleanup\n    dispatch_release(_fingerprintSemaphore); _fingerprintSemaphore = NULL;\n    \n    return _knownHostsStat;\n}\n\n- (void)useKnownHostsStat:(enum curl_khstat)stat;\n{\n    NSAssert(_fingerprintChallenge, @\"Somehow been told to use curl_khstat without having issued a challenge\");\n    [_fingerprintChallenge release]; _fingerprintChallenge = nil;\n    \n    // Use semaphore to signal we know have a result\n    _knownHostsStat = stat;\n    dispatch_semaphore_signal(_fingerprintSemaphore);   // can't dispose of yet, as might not be currently waiting on it\n}\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2WebDAVProtocol.h",
    "content": "//\n//  CK2WebDAVProtocol.h\n//\n//  Created by Sam Deane on 19/11/2012.\n//\n//\n\n#import \"CK2Protocol.h\"\n#import <DAVKit/DAVKit.h>\n\ntypedef void (^CK2WebDAVCompletionHandler)(id result);\ntypedef void (^CK2WebDAVErrorHandler)(NSError* error);\n\n@interface CK2WebDAVProtocol : CK2Protocol<DAVPutRequestDelegate, DAVSessionDelegate>\n{\n@private\n    DAVSession*         _session;\n    NSOperationQueue*   _queue;\n\n    CK2WebDAVCompletionHandler _completionHandler;\n    CK2WebDAVErrorHandler _errorHandler;\n    \n    BOOL    _isWriteOp; // minor hack for now\n}\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CK2WebDAVProtocol.m",
    "content": "//\n//  CK2WebDAVProtocol.h\n//\n//  Created by Sam Deane on 19/11/2012.\n//\n\n#import \"CK2WebDAVProtocol.h\"\n\n#ifndef CK2WebDAVLog\n#define CK2WebDAVLog NSLog\n#endif\n\n@interface CK2WebDAVProtocol()\n\n@property (copy, nonatomic) CK2WebDAVCompletionHandler completionHandler;\n@property (copy, nonatomic) CK2WebDAVErrorHandler errorHandler;\n@property (strong, nonatomic) NSOperationQueue* queue;\n\n@end\n\n@implementation CK2WebDAVProtocol\n\n@synthesize completionHandler = _completionHandler;\n@synthesize errorHandler = _errorHandler;\n@synthesize queue = _queue;\n\n+ (BOOL)canHandleURL:(NSURL *)url;\n{\n    NSString *scheme = url.scheme;\n    return [@\"http\" caseInsensitiveCompare:scheme] == NSOrderedSame || [@\"https\" caseInsensitiveCompare:scheme] == NSOrderedSame;\n}\n\n#pragma mark Lifecycle\n\n- (id)initWithRequest:(NSURLRequest *)request client:(id <CK2ProtocolClient>)client\n{\n    if (self = [super initWithRequest:request client:client])\n    {\n        [self setupQueue];\n        _session = [[DAVSession alloc] initWithRootURL:request.URL delegate:self];\n    }\n\n    return self;\n}\n\n- (void)dealloc;\n{\n    CK2WebDAVLog(@\"dealloced\");\n    \n    [_completionHandler release];\n    [_errorHandler release];\n    [_queue release];\n    [_session release];\n\n    [super dealloc];\n}\n\n#pragma mark - Operations\n\n- (id)initForEnumeratingDirectoryWithRequest:(NSURLRequest *)request includingPropertiesForKeys:(NSArray *)keys options:(NSDirectoryEnumerationOptions)mask client:(id<CK2ProtocolClient>)client;\n{\n    CK2WebDAVLog(@\"enumerating directory\");\n\n    if ((self = [self initWithRequest:request client:client]) != nil)\n    {\n        NSString* path = [self pathForRequest:request];\n\n        DAVRequest* davRequest = [[DAVListingRequest alloc] initWithPath:path session:_session delegate:self];\n        [_queue addOperation:davRequest];\n\n        self.completionHandler = ^(NSArray* items) {\n            CK2WebDAVLog(@\"enumerating directory results\");\n            \n            // We're hunting an issue where some requests come back with no error, but no items either.\n            // For now, fail with a fairly generic error to try and dig out a little more detail\n            if (items.count == 0)\n            {\n                [client protocol:self didCompleteWithError:[NSError errorWithDomain:NSURLErrorDomain\n                                                                           code:NSURLErrorCannotParseResponse\n                                                                       userInfo:@{ NSURLErrorFailingURLErrorKey : request.URL }]];\n                \n                return;\n            }\n            \n            // first item should always be the directory itself\n            if (items && !(mask & CK2DirectoryEnumerationIncludesDirectory))\n            {\n                items = [items subarrayWithRange:NSMakeRange(1, [items count] - 1)];\n            }\n            \n            for (DAVResponseItem* item in items)\n            {\n                NSString *href = item.href;\n                NSString *name = [href lastPathComponent];\n                if (!((mask & NSDirectoryEnumerationSkipsHiddenFiles) && [name hasPrefix:@\".\"]))\n                {\n\n                    NSURL* url = [[davRequest concatenatedURLWithPath:href] absoluteURL];\n                    NSAssert(url, @\"-concatenatedURLWithPath: returned nil URL. Shouldn't happen unless davRequest has no URL, and that shouldn't ever happen!\");\n                    \n                    [CK2FileManager setTemporaryResourceValue:[item modificationDate] forKey:NSURLContentModificationDateKey inURL:url];\n                    [CK2FileManager setTemporaryResourceValue:[item creationDate] forKey:NSURLCreationDateKey inURL:url];\n                    [CK2FileManager setTemporaryResourceValue:@(item.contentLength) forKey:NSURLFileSizeKey inURL:url];\n                    \n                    BOOL isDirectory = [[item.fileAttributes objectForKey:NSFileType] isEqualToString:NSFileTypeDirectory];\n                    [CK2FileManager setTemporaryResourceValue:@(isDirectory) forKey:NSURLIsDirectoryKey inURL:url];\n                    \n                    NSString *mimeType = item.contentType;\n                    if (mimeType)\n                    {\n                        CFStringRef uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassMIMEType, (CFStringRef)mimeType, NULL);\n                        [CK2FileManager setTemporaryResourceValue:(NSString *)uti forKey:NSURLTypeIdentifierKey inURL:url];\n                        CFRelease(uti);\n                    }\n                    \n                    [client protocol:self didDiscoverItemAtURL:url];\n                    CK2WebDAVLog(@\"%@\", url);\n                }\n            }\n\n            [self reportFinished];\n        };\n\n    }\n\n    return self;\n}\n\n- (id)initForCreatingDirectoryWithRequest:(NSURLRequest *)request withIntermediateDirectories:(BOOL)createIntermediates openingAttributes:(NSDictionary *)attributes client:(id<CK2ProtocolClient>)client;\n{\n    CK2WebDAVLog(@\"creating directory\");\n\n    if ((self = [self initWithRequest:request client:client]) != nil)\n    {\n        _isWriteOp = YES;\n        NSString* path = [self pathForRequest:request];\n\n        // when done, we just report that we're finished\n        CK2WebDAVCompletionHandler handleCompletion = ^(id result) {\n\n            CK2WebDAVLog(@\"create directory done %@\", path);\n            [self reportFinished];\n        };\n\n        // when a real error occurs, report it\n        CK2WebDAVErrorHandler handleRealError = ^(NSError *error) {\n            CK2WebDAVLog(@\"create directory %@ failed with error %@\", path, error);\n            [self reportFailedWithError:error];\n        };\n\n        // the first time an error occurs, if we were asked to create intermediates, try again with that flag actually set to YES\n        CK2WebDAVErrorHandler handleFirstError = ^(NSError *error) {\n            // only bother trying again if we actually got a relevant error:\n            // 409 Conflict - A collection cannot be made at the Request-URI until one or more intermediate collections have been created.\n            if ([error.domain isEqualToString:DAVClientErrorDomain] && (error.code == 409))\n            {\n                if (createIntermediates)\n                {\n                    CK2WebDAVLog(@\"making directory failed with error %@, retrying making each intermediate %@\", error, path);\n                    [self addCreateDirectoryRequestForPath:path withIntermediateDirectories:YES errorHandler:handleRealError completionHandler:handleCompletion];\n                }\n                else\n                {\n                    handleRealError([self standardFileNotFoundErrorWithUnderlyingError:error]);\n                }\n            }\n            else\n            {\n                handleRealError(error);\n            }\n        };\n\n        // for the sake of efficiency, the first time we always try the creation without making intermediates\n        // if that fails, and if we were asked to make intermediates, we try again\n        [self addCreateDirectoryRequestForPath:path withIntermediateDirectories:NO errorHandler:handleFirstError completionHandler:handleCompletion];\n    };\n\n    return self;\n}\n\n- (id)initForCreatingFileWithRequest:(NSURLRequest *)request size:(int64_t)size withIntermediateDirectories:(BOOL)createIntermediates openingAttributes:(NSDictionary *)attributes client:(id<CK2ProtocolClient>)client;\n{\n    CK2WebDAVLog(@\"creating file\");\n\n    if ((self = [self initWithRequest:request client:client]) != nil)\n    {\n        if (request.HTTPBodyStream)\n        {\n            NSMutableURLRequest *mutableRequest = [request mutableCopy];\n            [mutableRequest setValue:[NSString stringWithFormat:@\"%llu\", size] forHTTPHeaderField:@\"Content-Length\"];\n            request = [mutableRequest autorelease];\n        }\n    \n        \n        _isWriteOp = YES;\n        NSString* path = [self pathForRequest:request];\n\n        CK2WebDAVCompletionHandler handleCompletion =  ^(id result) {\n            CK2WebDAVLog(@\"creating file done\");\n            [self reportFinished];\n        };\n\n        CK2WebDAVErrorHandler handleRealError = ^(NSError* error) {\n            CK2WebDAVLog(@\"creating file failed\");\n            [self reportFailedWithError:error];\n        };\n\n        // the first time an error occurs, if we were asked to create intermediates, try again with that flag actually set to YES\n        CK2WebDAVErrorHandler handleFirstError = ^(NSError *error) {\n            // only bother trying again if we actually got a relevant error:\n            // 409 Conflict - A collection cannot be made at the Request-URI until one or more intermediate collections have been created.\n            if ([error.domain isEqualToString:DAVClientErrorDomain] && (error.code == 409))\n            {\n                if (createIntermediates)\n                {\n                    CK2WebDAVLog(@\"making directory failed, retrying making each intermediate %@\", path);\n                    [self addCreateFileRequestForPath:path originalRequest:request withIntermediateDirectories:YES errorHandler:handleRealError completionHandler:handleCompletion];\n                }\n                else\n                {\n                    handleRealError([self standardFileNotFoundErrorWithUnderlyingError:error]);\n                }\n            }\n            else\n            {\n                handleRealError(error);\n            }\n        };\n\n        // for the sake of efficiency, the first time we always try the creation without making intermediates\n        // if that fails, and if we were asked to make intermediates, we try again\n        [self addCreateFileRequestForPath:path originalRequest:request withIntermediateDirectories:NO errorHandler:handleFirstError completionHandler:handleCompletion];\n\n    }\n\n    return self;\n}\n\n- (id)initForRenamingItemWithRequest:(NSURLRequest *)request newName:(NSString *)newName client:(id<CK2ProtocolClient>)client\n{\n    CK2WebDAVLog(@\"renaming file\");\n\n    if ((self = [self initWithRequest:request client:client]) != nil)\n    {\n        NSString* path = [self pathForRequest:request];\n        DAVMoveRequest* davRequest = [[DAVMoveRequest alloc] initWithPath:path session:_session delegate:self];\n        davRequest.destinationPath = [[path stringByDeletingLastPathComponent] stringByAppendingPathComponent:newName];\n        davRequest.overwrite = NO;\n        [_queue addOperation:davRequest];\n        [davRequest release];\n\n        self.completionHandler = ^(id result) {\n            CK2WebDAVLog(@\"renaming file done\");\n            [self reportFinished];\n        };\n    }\n\n    return self;\n}\n- (id)initForRemovingItemWithRequest:(NSURLRequest *)request client:(id<CK2ProtocolClient>)client;\n{\n    CK2WebDAVLog(@\"removing file\");\n\n    if ((self = [self initWithRequest:request client:client]) != nil)\n    {\n        _isWriteOp = YES;\n        NSString* path = [self pathForRequest:request];\n        DAVRequest* davRequest = [[DAVDeleteRequest alloc] initWithPath:path session:_session delegate:self];\n        [_queue addOperation:davRequest];\n        [davRequest release];\n\n        self.completionHandler = ^(id result) {\n            CK2WebDAVLog(@\"removing file done\");\n            [self reportFinished];\n        };\n    }\n\n    return self;\n}\n\n- (id)initForSettingAttributes:(NSDictionary *)keyedValues ofItemWithRequest:(NSURLRequest *)request client:(id<CK2ProtocolClient>)client;\n{\n    CK2WebDAVLog(@\"setting resource values\");\n\n    if ((self = [self initWithRequest:request client:client]) != nil)\n    {\n        _isWriteOp = YES;\n        [self reportFinished];\n    }\n\n    return self;\n}\n\n- (void)start;\n{\n    CK2WebDAVLog(@\"started\");\n    self.queue.suspended = NO;\n}\n\n- (void)stop\n{\n    CK2WebDAVLog(@\"stopped\");\n    self.queue.suspended = YES;\n    [self.queue cancelAllOperations];\n}\n\n- (NSString*)pathForRequest:(NSURLRequest*)request\n{\n    NSString *path = [CK2WebDAVProtocol pathOfURLRelativeToHomeDirectory:request.URL];\n    if (!path) path = @\"/\";\n    \n    // In some cases, a client can pass in to us a URL that contains multiple slashes in the path\n    // (e.g. Sandvox is guilty of this in one particular circumstance). Because we then pass that as\n    // a path into DAVKit, it needs cleaning up to avoid being mis-resolved.\n    while ([path hasPrefix:@\"//\"]) {\n        path = [path substringFromIndex:1];\n    }\n\n    return path;\n}\n\n#pragma mark Request Delegate\n\n- (void)requestDidBegin:(DAVRequest *)aRequest;\n{\n    CK2WebDAVLog(@\"webdav request began\");\n}\n\n- (void)request:(DAVRequest *)aRequest didSucceedWithResult:(id)result;\n{\n    CK2WebDAVLog(@\"webdav request succeeded\");\n\n    // if there is a completion handler set, it is expected to call protocolDidFinish\n    // this lets us build chains of requests where only the final one makes the\n    // didFinish call\n    if (self.completionHandler)\n    {\n        self.completionHandler(result);\n    }\n\n    // if not, we call it\n    else\n    {\n        [self reportFinished];\n    }\n}\n\n- (void)request:(DAVRequest *)aRequest didFailWithError:(NSError *)error;\n{\n    CK2WebDAVLog(@\"webdav request failed\");\n\n    if (self.errorHandler)\n    {\n        self.errorHandler(error);\n    }\n    else\n    {\n        [self reportFailedWithError:error];\n    }\n}\n\n- (NSURLRequest *)request:(DAVRequest *)aRequest willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse;\n{\n    if (redirectResponse)\n    {\n        // Disallow redirects as we have no security mechanism to manage them currently\n        return nil;\n    }\n    else\n    {\n        return [self.client protocol:self willSendRequest:request redirectResponse:redirectResponse];\n    }\n}\n\n- (void)webDAVRequest:(DAVRequest *)request didSendDataOfLength:(NSInteger)bytesWritten totalBytesWritten:(NSInteger)totalBytesWritten totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite\n{\n    CK2WebDAVLog(@\"webdav sent data\");\n\n    [self.client protocol:self\n          didSendBodyData:bytesWritten\n           totalBytesSent:totalBytesWritten\n totalBytesExpectedToSend:totalBytesExpectedToWrite];\n}\n\n- (NSInputStream*)webDAVRequest:(DAVRequest *)request needNewBodyStream:(NSURLRequest *)urlRequest\n{\n\n    NSInputStream* result = [[self client] protocol:self needNewBodyStream:urlRequest];\n\n    return result;\n}\n\n#pragma mark WebDAV Authentication\n\n- (void)webDAVSession:(DAVSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSInteger, NSURLCredential *))completionHandler;\n{\n    CK2WebDAVLog(@\"webdav received challenge\");\n    \n    [self.client protocol:self didReceiveChallenge:challenge completionHandler:^(CK2AuthChallengeDisposition disposition, NSURLCredential *credential) {\n        \n        completionHandler(disposition, credential);\n    }];\n}\n\n- (void)webDAVSession:(DAVSession *)session appendStringToTranscript:(NSString *)string sent:(BOOL)sent;\n{\n    CK2WebDAVLog(sent ? @\"--> %@ \" : @\"<-- %@\", string);\n\n    // Tack on a newline to match libcurl output\n    string = [string stringByAppendingString:@\"\\n\"];\n    \n    [[self client] protocol:self appendString:string toTranscript:(sent ? CK2TranscriptHeaderOut : CK2TranscriptHeaderIn)];\n}\n\n#pragma mark - Utilities\n\n- (void)setupQueue\n{\n    NSOperationQueue* queue = [[NSOperationQueue alloc] init];\n    queue.suspended = YES;\n    queue.name = @\"CK2WebDAVProtocol\";\n    queue.maxConcurrentOperationCount = 1;\n    self.queue = queue;\n    [queue release];\n}\n\n- (void)reportFinished\n{\n    [self.queue addOperationWithBlock:^{\n        [self.client protocol:self didCompleteWithError:nil];\n    }];\n}\n\n- (void)reportFailedWithError:(NSError*)error\n{\n    if ([error.domain isEqualToString:DAVClientErrorDomain])\n    {\n        switch (error.code)\n        {\n            case 404:\n                error = [self standardFileNotFoundErrorWithUnderlyingError:error];\n                break;\n\n            case 405:\n                // Leave as-is when trying to do a read op, like directory listing on a non-WebDAV server\n                if (_isWriteOp) error = [self standardCouldntWriteErrorWithUnderlyingError:error];\n                break;\n\n            default:\n                break;\n        }\n    }\n    \n    NSAssert(error, @\"%@ called with nil error\", NSStringFromSelector(_cmd));\n    \n    [self.queue addOperationWithBlock:^{\n        [self.client protocol:self didCompleteWithError:error];\n    }];\n}\n\n/**\n Create a createFile requesst, and potentially a chain of createDirectory requests.\n If createIntermediates is NO, we just create one request to create the file, and set the completion handler\n for the operation to whatever we were given.\n\n If it's YES, we queue up requests to create the parent directory and all intermediates, and we only call the\n file creation stuff if the directory creation succeeds (or fails because the directories already existed).\n */\n\n- (void)addCreateFileRequestForPath:(NSString*)path\n                    originalRequest:(NSURLRequest*)request\n             withIntermediateDirectories:(BOOL)createIntermediates\n                       errorHandler:(CK2WebDAVErrorHandler)errorHandler\n                  completionHandler:(CK2WebDAVCompletionHandler)completionHandler;\n{\n    CK2WebDAVLog(@\"adding create file request for %@\", path);\n\n    CK2WebDAVCompletionHandler createFileBlock = Block_copy(^(id result) {\n\n        DAVPutRequest* davRequest = [[DAVPutRequest alloc] initWithPath:path originalRequest:request session:_session delegate:self];\n        [_queue addOperation:davRequest];\n        [davRequest release];\n\n        self.completionHandler = completionHandler;\n        self.errorHandler = errorHandler;\n    });\n\n    CK2WebDAVErrorHandler errorBlock = Block_copy(^(NSError* error) {\n        CK2WebDAVLog(@\"create directory (during create file) failed for %@ with %@\", path, error);\n        if ([self shouldCreateIntermediateDirectoriesAfterError:error])\n        {\n            // ignore failure to create the directories\n            createFileBlock(nil);\n        }\n        else\n        {\n            // other errors are passed on\n            errorHandler(error);\n        }\n    });\n\n    BOOL recursed = NO;\n    if (createIntermediates)\n    {\n        NSString* parent = [path stringByDeletingLastPathComponent];\n        if (![parent isEqualToString:@\"/\"])\n        {\n            [self addCreateDirectoryRequestForPath:parent withIntermediateDirectories:YES errorHandler:errorBlock completionHandler:createFileBlock];\n            recursed = YES;\n        }\n    }\n\n    if (!recursed)\n    {\n        createFileBlock(nil);\n    }\n\n    Block_release(errorHandler);\n    Block_release(createFileBlock);\n}\n\n/**\n When creating a file, it might fail because an intermediate directory doesn't exist yet. If so, we\n need to detect and handle that error.\n */\n- (BOOL)shouldCreateIntermediateDirectoriesAfterError:(NSError *)error {\n    \n    NSString *domain = error.domain;\n    if (![domain isEqualToString:DAVClientErrorDomain]) return NO;\n    \n    switch (error.code) {\n        case 405:   // as per the WebDAV spec\n        case 404:   // be lenient https://github.com/karelia/ConnectionKit/issues/76\n            return YES;\n            \n        default:\n            return NO;\n    }\n}\n\n/**\n Create a chain of createDirectory requests.\n If createIntermediates is NO, we just create one request for the specified path, and set the completion handler\n for the operation to whatever we were given.\n\n If it's YES, we recurse down to the root of the path, and make a request which creates the root directory. We then\n set the completion of this request to create the next level up, and so on, until the final completion which creates\n the path we were initially given, and calls the completion block we were given.\n */\n\n- (void)addCreateDirectoryRequestForPath:(NSString*)path\n             withIntermediateDirectories:(BOOL)createIntermediates\n                            errorHandler:(CK2WebDAVErrorHandler)errorHandler\n                       completionHandler:(CK2WebDAVCompletionHandler)completionHandler\n{\n    CK2WebDAVLog(@\"adding create directory request for %@\", path);\n    CK2WebDAVCompletionHandler createDirectoryBlock = Block_copy(^(id result) {\n        DAVRequest* davRequest = [[DAVMakeCollectionRequest alloc] initWithPath:path session:_session delegate:self];\n        [_queue addOperation:davRequest];\n        [davRequest release];\n\n        self.completionHandler = completionHandler;\n        self.errorHandler = errorHandler;\n    });\n\n    CK2WebDAVErrorHandler errorBlock = Block_copy(^(NSError* error) {\n        CK2WebDAVLog(@\"create directory failed for %@ with %@\", path, error);\n        if (([error.domain isEqualToString:DAVClientErrorDomain]) && (error.code == 405))\n        {\n            // ignore failure to create for all but the top directory, on the basis that they may well exist already\n            createDirectoryBlock(nil);\n        }\n        else\n        {\n            // other errors are passed on\n            errorHandler(error);\n        }\n    });\n\n    BOOL recursed = NO;\n    if (createIntermediates)\n    {\n        NSString* parent = [path stringByDeletingLastPathComponent];\n        if (![parent isEqualToString:@\"/\"])\n        {\n            [self addCreateDirectoryRequestForPath:parent withIntermediateDirectories:YES errorHandler:errorBlock completionHandler:createDirectoryBlock];\n            recursed = YES;\n        }\n    }\n\n    if (!recursed)\n    {\n        createDirectoryBlock(nil);\n    }\n\n    Block_release(errorHandler);\n    Block_release(createDirectoryBlock);\n}\n\n@end\n\n"
  },
  {
    "path": "ConnectionKit/CKConnectionProtocol.h",
    "content": "/*\n Copyright (c) 2004-2006 Karelia Software. All rights reserved.\n \n Redistribution and use in source and binary forms, with or without modification, \n are permitted provided that the following conditions are met:\n \n \n Redistributions of source code must retain the above copyright notice, this list \n of conditions and the following disclaimer.\n \n Redistributions in binary form must reproduce the above copyright notice, this \n list of conditions and the following disclaimer in the documentation and/or other \n materials provided with the distribution.\n \n Neither the name of Karelia Software nor the names of its contributors may be used to \n endorse or promote products derived from this software without specific prior \n written permission.\n \n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY \n EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES \n OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT \n SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, \n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED \n TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR \n BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY \n WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n \n */\n\n\n#import <Cocoa/Cocoa.h>\n\n\n#define LocalizedStringInConnectionKitBundle(key, comment) \\\n[[NSBundle bundleForClass:[self class]] localizedStringForKey:(key) value:@\"\" table:nil]\n\n@class CKTransferRecord;\n\n\n// Some shared Error Codes\nenum {\n\tConnectionErrorUploading = 49101,\n\tConnectionErrorDownloading,\n\tConnectionErrorCreatingDirectory,\n\tConnectionErrorChangingDirectory,\n\tConnectionErrorDeleting,\n\tConnectionErrorConnecting,\n\tConnectionErrorDisconnecting,\n\tConnectionErrorUnexpectedlyDisconnected,\n\tConnectionErrorListingDirectory,\n\tConnectionErrorGeneric,\n};\n\ntypedef enum {\n\tCKTranscriptSent,\n\tCKTranscriptReceived,\n\tCKTranscriptData,\n    CKTranscriptInfo,\n} CKTranscriptType;\n\n\n/*  A lightweight version of CKConnection, selfishly for Sandvox's benefit\n */\n@protocol CKPublishingConnection <NSObject>\n\n/*!\n @method URLSchemes\n @result An array of the URL schemes supported by the connection.\n */\n+ (NSArray *)URLSchemes;\n\n/*!\n @method initWithRequest:\n @abstract The designated initializer for connections.\n @param request The request to connect with. The request object is deep-copied as part of the\n initialization process. Changes made to request after this method returns do not affect the request\n that is used for the loading process.\n @result Returns an initialized connection object or nil if the request was unsuitable.\n */\n- (id)initWithRequest:(NSURLRequest *)request;\n\n/*!\n @discussion The delegate is not retained. The delegate should implement any of the methods in the CKConnectionDelegate informal protocol to receive callbacks when connection events occur.\n */\n@property(nonatomic, assign) NSObject *delegate;\n\n/*!\n @method connect\n @abstract Causes the receiver to start the connection, if it has not already. This is generally asynchronous.\n */\n- (void)connect;\n/*!\n @method isConnected\n @result Returns YES once the connection has successfully connected to the server\n */\n- (BOOL)isConnected;\n\n/*!\n @method disconnect\n @abstract Ends the connection after any other items in the queue have been processed.\n */\n- (void)disconnect;\n/*!\n @method forceDisconnect\n @abstract Ends the connection at the next available opportunity.\n */\n- (void)forceDisconnect;\n\n/* \n\tNew method that allows you to set a custom delegate for the upload.\n\tYou must implement the ConnectionTransferDelegate informal protocol.\n\tBy default the transfer record returned is the delegate of the transfer.\n \n SFTP connections require permissions to be explicitly specified up-front as part of creating a file. (in practice some servers then ignore them). Other connection types tend to apply default permissions of their own. You should generally pass in 0644 for broad compatibility. Importantly the connection makes NO GUARANTEE the permissions will be respected; they're just an attempt for SFTP and similar\n*/\n- (CKTransferRecord *)uploadFileAtURL:(NSURL *)url toPath:(NSString *)path openingPosixPermissions:(unsigned long)permissions;\n\n/* \n New method that allows you to set a custom delegate for the upload.\n You must implement the ConnectionTransferDelegate informal protocol.\n By default the transfer record returned is the delegate of the transfer.\n \n See openingPosixPermissions advice above\n */\n- (CKTransferRecord *)uploadData:(NSData *)data toPath:(NSString *)path openingPosixPermissions:(unsigned long)permissions;\n\n- (void)setPermissions:(unsigned long)permissions forFile:(NSString *)path;\n\n- (void)deleteFile:(NSString *)path;\n\n- (void)createDirectoryAtPath:(NSString *)path posixPermissions:(NSNumber *)permissions;\n- (void)changeToDirectory:(NSString *)dirPath;\n- (NSString *)currentDirectory;\n- (void)directoryContents;\n\n@end\n\n\n@protocol CKConnection <CKPublishingConnection>\n\n+ (NSString *)name;\n\n/*!\n @method port\n @discussion Return 0 for abstract classes or connections that do not use a port.\n @result The default port for connections of the receiver's class.\n */\n+ (NSInteger)defaultPort;\n\n\n/*!\n @method request\n @discussion Please do NOT modify this request in any way!\n @result Returns the request supplied when creating the connection.\n */\n- (NSURLRequest *)request;\n\n\n// you can set a name on a connection to help with debugging.\n// TODO: Should this really be part of the protocol, or a CKAbstractConnection implementation detail?\n- (NSString *)name; \n- (void)setName:(NSString *)name;\n\n- (BOOL)isBusy;\n\n \n- (void)cleanupConnection;\n\n- (NSString *)rootDirectory;\n\n- (void)rename:(NSString *)fromPath to:(NSString *)toPath;\n- (void)recursivelyRenameS3Directory:(NSString *)fromDirectoryPath to:(NSString *)toDirectoryPath;\n\n- (void)deleteDirectory:(NSString *)dirPath;\n- (void)recursivelyDeleteDirectory:(NSString *)path;\n\n\n/* \n\treturns CKTransferRecord as a heirarchy of what will be upload, remote and local files \n\tcan be found in the records node properties\n*/\n- (CKTransferRecord *)recursivelyUpload:(NSString *)localPath to:(NSString *)remotePath;\n- (CKTransferRecord *)recursivelyUpload:(NSString *)localPath to:(NSString *)remotePath ignoreHiddenFiles:(BOOL)flag;\n\n- (CKTransferRecord *)resumeUploadFile:(NSString *)localPath \n\t\t\t\t\t\t\t\ttoFile:(NSString *)remotePath \n\t\t\t\t\t\t\tfileOffset:(unsigned long long)offset\n\t\t\t\t\t\t\t  delegate:(id)delegate;\n\n\n- (CKTransferRecord *)resumeUploadFromData:(NSData *)data\n\t\t\t\t\t\t\t\t\ttoFile:(NSString *)remotePath \n\t\t\t\t\t\t\t\tfileOffset:(unsigned long long)offset\n\t\t\t\t\t\t\t\t  delegate:(id)delegate;\n\n/* \n\tNew method that allows you to set a custom delegate for the download.\n\tYou must implement the CKConnectionTransferDelegate informal protocol.\n\tBy default the transfer record returned is the delegate of the transfer.\n*/\n- (CKTransferRecord *)downloadFile:(NSString *)remotePath \n\t\t\t\t\t   toDirectory:(NSString *)dirPath \n\t\t\t\t\t\t overwrite:(BOOL)flag\n\t\t\t\t\t\t  delegate:(id)delegate;\n\n- (CKTransferRecord *)resumeDownloadFile:(NSString *)remotePath\n\t\t\t\t\t\t\t toDirectory:(NSString *)dirPath\n\t\t\t\t\t\t\t  fileOffset:(unsigned long long)offset\n\t\t\t\t\t\t\t\tdelegate:(id)delegate;\n\n- (CKTransferRecord *)recursivelyDownload:(NSString *)remotePath\n\t\t\t\t\t\t\t\t\t   to:(NSString *)localPath\n\t\t\t\t\t\t\t\toverwrite:(BOOL)flag;\n\n- (void)checkExistenceOfPath:(NSString *)path;\n\n- (unsigned)numberOfTransfers;\n- (void)cancelTransfer;\n- (void)cancelAll;\n\n- (void)contentsOfDirectory:(NSString *)dirPath;\n\n- (double)uploadSpeed; // bytes per second\n- (double)downloadSpeed;\n\n- (void)editFile:(NSString *)remoteFile;\n\n@end\n\n\n#pragma mark -\n\n\n@interface NSObject (CKConnectionDelegate)\n\n// There are 29 callbacks & flags.\n// Need to keep NSObject Category, __flags list, setDelegate: updated\n\n#pragma mark Overall connection\n- (void)connection:(id <CKPublishingConnection>)con didConnectToHost:(NSString *)host error:(NSError *)error; // this only guarantees that the socket connected.\n- (void)connection:(id <CKPublishingConnection>)con didDisconnectFromHost:(NSString *)host;\n\n- (void)connection:(id <CKPublishingConnection>)con didReceiveError:(NSError *)error;\n\n#pragma mark Authentication\n/*!\n @method connection:didReceiveAuthenticationChallenge:\n @abstract Operates just like the NSURLConnection delegate method -connection:didReceiveAuthenticationChallenge:\n @param connection The connection for which authentication is needed\n @param challenge The NSURLAuthenticationChallenge to start authentication for\n */\n- (void)connection:(id <CKPublishingConnection>)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge;\n/*!\n @method connection:didCancelAuthenticationChallenge:\n @abstract Operates exactly the same as its NSURLConnection counterpart.\n @param connection The connection sending the message.\n @param challenge The challenge that was canceled.\n */\n- (void)connection:(id <CKPublishingConnection>)connection didCancelAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge;\n\n- (NSString *)connection:(id <CKConnection>)con passphraseForHost:(NSString *)host username:(NSString *)username publicKeyPath:(NSString *)publicKeyPath;   //SFTP Passphrase Support\n\n\n#pragma mark Other\n\n- (void)connection:(id <CKPublishingConnection>)con didCreateDirectory:(NSString *)dirPath error:(NSError *)error;\n- (void)connection:(id <CKConnection>)con didDeleteDirectory:(NSString *)dirPath error:(NSError *)error;\n- (void)connection:(id <CKPublishingConnection>)con didDeleteFile:(NSString *)path error:(NSError *)error;\n\n\n// recursivelyDeleteDirectory\n//     These methods may change soon -- Seth\n- (void)connection:(id <CKConnection>)con didDiscoverFilesToDelete:(NSArray *)contents inAncestorDirectory:(NSString *)ancestorDirPath;\n- (void)connection:(id <CKConnection>)con didDiscoverFilesToDelete:(NSArray *)contents inDirectory:(NSString *)dirPath;\n- (void)connection:(id <CKConnection>)con didDeleteDirectory:(NSString *)dirPath inAncestorDirectory:(NSString *)ancestorDirPath error:(NSError *)error;\n- (void)connection:(id <CKConnection>)con didDeleteFile:(NSString *)path inAncestorDirectory:(NSString *)ancestorDirPath error:(NSError *)error;\n\n\n- (void)connection:(id <CKPublishingConnection>)con didChangeToDirectory:(NSString *)dirPath error:(NSError *)error;\n- (void)connection:(id <CKPublishingConnection>)con didReceiveContents:(NSArray *)contents ofDirectory:(NSString *)dirPath error:(NSError *)error;\n- (void)connection:(id <CKConnection>)con didReceiveContents:(NSArray *)contents ofDirectory:(NSString *)dirPath moreComing:(BOOL)flag;\n- (void)connection:(id <CKConnection>)con didRename:(NSString *)fromPath to:(NSString *)toPath error:(NSError *)error;\n- (void)connection:(id <CKPublishingConnection>)con didSetPermissionsForFile:(NSString *)path error:(NSError *)error;\n\n\n- (void)connection:(id <CKConnection>)con download:(NSString *)path progressedTo:(NSNumber *)percent;\n- (void)connection:(id <CKConnection>)con download:(NSString *)path receivedDataOfLength:(unsigned long long)length; \n- (void)connection:(id <CKConnection>)con downloadDidBegin:(NSString *)remotePath;\n- (void)connection:(id <CKConnection>)con downloadDidFinish:(NSString *)remotePath error:(NSError *)error;\n\n\n- (void)connection:(id <CKConnection>)con upload:(NSString *)remotePath progressedTo:(NSNumber *)percent;\n- (void)connection:(id <CKConnection>)con upload:(NSString *)remotePath sentDataOfLength:(unsigned long long)length;\n- (void)connection:(id <CKPublishingConnection>)con uploadDidBegin:(NSString *)remotePath;\n- (void)connection:(id <CKPublishingConnection>)con uploadDidFinish:(NSString *)remotePath error:(NSError *)error;\n- (void)connectionDidCancelTransfer:(id <CKConnection>)con; // this is deprecated. Use method below\n- (void)connection:(id <CKConnection>)con didCancelTransfer:(NSString *)remotePath;\n\n- (void)connection:(id <CKConnection>)con checkedExistenceOfPath:(NSString *)path pathExists:(BOOL)exists error:(NSError *)error;\n\n#pragma mark Transcript\n/*!\n @method connection:appendString:toTranscript:\n @abstract Called when the connection has something to add to the connection transcript.\n @discussion Delegates should implement this method if they are interested in keeping a transcript. This could be to\n log the string to the console or add it to a text view.\n @param connection The connection sending the message\n @param string The string to add to the transcript\n @param transcript The nature of the string that is to be transcribed. CKAbstractConnection has class methods to apply formatting to the transcript.\n */\n- (void)connection:(id <CKPublishingConnection>)connection appendString:(NSString *)string toTranscript:(CKTranscriptType)transcript;\n\n@end\n\n\n#pragma mark -\n\n\n@interface NSObject (CKConnectionTransferDelegate)\n- (void)transferDidBegin:(CKTransferRecord *)transfer;\n- (void)transfer:(CKTransferRecord *)transfer transferredDataOfLength:(unsigned long long)length;\n- (void)transfer:(CKTransferRecord *)transfer progressedTo:(NSNumber *)percent;\n- (void)transfer:(CKTransferRecord *)transfer receivedError:(NSError *)error;\n- (void)transferDidFinish:(CKTransferRecord *)transfer error:(NSError *)error;\n@end\n\n\n// Attributes for which there isn't a corresponding NSFileManager key\nextern NSString *cxFilenameKey;\nextern NSString *cxSymbolicLinkTargetKey;\n\n//User Info Keys for Errors\nextern NSString *ConnectionHostKey;\nextern NSString *ConnectionDirectoryExistsKey;\nextern NSString *ConnectionDirectoryExistsFilenameKey;\n\n/*\n * The InputStream and OutputStream protocols, provides a transparent way to interchange\n * the implementation specific streams.\n */\n@protocol InputStream <NSObject>\n- (void)open;\n- (void)close;\n- (void)scheduleInRunLoop:(NSRunLoop *)aRunLoop forMode:(NSString *)mode;\n- (void)removeFromRunLoop:(NSRunLoop *)aRunLoop forMode:(NSString *)mode;\n- (void)setDelegate:(id)delegate;\n- (id)delegate;\n- (BOOL)setProperty:(id)property forKey:(NSString *)key;\n- (id)propertyForKey:(NSString *)key;\n- (NSError *)streamError;\n- (NSStreamStatus)streamStatus;\n- (BOOL)hasBytesAvailable;\n- (int)read:(uint8_t *)buffer maxLength:(unsigned int)len;\n@end\n\n@protocol OutputStream <NSObject>\n- (void)open;\n- (void)close;\n- (void)scheduleInRunLoop:(NSRunLoop *)aRunLoop forMode:(NSString *)mode;\n- (void)removeFromRunLoop:(NSRunLoop *)aRunLoop forMode:(NSString *)mode;\n- (void)setDelegate:(id)delegate;\n- (id)delegate;\n- (BOOL)setProperty:(id)property forKey:(NSString *)key;\n- (id)propertyForKey:(NSString *)key;\n- (NSError *)streamError;\n- (NSStreamStatus)streamStatus;\n- (BOOL) hasSpaceAvailable;\n\n- (int)write:(const uint8_t *)buffer maxLength:(unsigned int)len;\n@end\n"
  },
  {
    "path": "ConnectionKit/CKS3Connection.h",
    "content": "/*\n Copyright (c) 2004-2006, Greg Hulands <ghulands@mac.com>\n All rights reserved.\n \n Redistribution and use in source and binary forms, with or without modification, \n are permitted provided that the following conditions are met:\n \n Redistributions of source code must retain the above copyright notice, this list \n of conditions and the following disclaimer.\n \n Redistributions in binary form must reproduce the above copyright notice, this \n list of conditions and the following disclaimer in the documentation and/or other \n materials provided with the distribution.\n \n Neither the name of Greg Hulands nor the names of its contributors may be used to \n endorse or promote products derived from this software without specific prior \n written permission.\n \n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY \n EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES \n OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT \n SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, \n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED \n TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR \n BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY \n WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n#import \"CKHTTPConnection.h\"\n\n\n@interface CKS3Connection : CKHTTPConnection \n{\n\t//When we receive a directory listing that is truncated, we keep around the contents in here until we've received all the directory's contents to return the delegate.\n\tNSMutableArray *incompleteDirectoryContents; \n\tNSMutableArray *incompleteKeyNames;\n\t\n\tNSString *myCurrentDirectory;\n\tunsigned long long\tbytesTransferred;\n\tunsigned long long\tbytesToTransfer;\n\tunsigned long long\ttransferHeaderLength;\n\tunsigned int myLastPercent;\n\tNSFileHandle *myDownloadHandle;\n    \n@private\n    // Authentication\n    NSURLCredential                 *_credential;\n    //NSURLAuthenticationChallenge    *_currentAuthenticationChallenge;\n}\n\n@end\n\nextern NSString *S3StorageClassKey; // file attribute extension keys\n\nextern NSString *S3ErrorDomain;\n\nenum { S3DownloadFileExists = 100 };\n"
  },
  {
    "path": "ConnectionKit/CKS3Connection.m",
    "content": "/*\n Copyright (c) 2004-2006, Greg Hulands <ghulands@mac.com>\n All rights reserved.\n \n Redistribution and use in source and binary forms, with or without modification, \n are permitted provided that the following conditions are met:\n \n Redistributions of source code must retain the above copyright notice, this list \n of conditions and the following disclaimer.\n \n Redistributions in binary form must reproduce the above copyright notice, this \n list of conditions and the following disclaimer in the documentation and/or other \n materials provided with the distribution.\n \n Neither the name of Greg Hulands nor the names of its contributors may be used to \n endorse or promote products derived from this software without specific prior \n written permission.\n \n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY \n EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES \n OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT \n SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, \n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED \n TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR \n BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY \n WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n#import \"CKS3Connection.h\"\n#import \"CKHTTPRequest.h\"\n#import \"NSData+Connection.h\"\n#import \"NSString+Connection.h\"\n#import \"NSCalendarDate+Connection.h\"\n#import \"CKHTTPPutRequest.h\"\n#import \"CKHTTPFileDownloadRequest.h\"\n#import \"CKHTTPResponse.h\"\n#import \"CKInternalTransferRecord.h\"\n#import \"CKTransferRecord.h\"\n#import \"NSFileManager+Connection.h\"\n#import \"CKConnectionProtocol.h\"\n\n\nNSString *S3ErrorDomain = @\"S3ErrorDomain\";\nNSString *S3StorageClassKey = @\"S3StorageClassKey\";\nNSString *S3PathSeparator = @\":\"; //@\"0xKhTmLbOuNdArY\";\n\n\n@implementation CKS3Connection\n\n+ (void)load\t// registration of this class\n{\n\tNSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];\n\t[[CKConnectionRegistry sharedConnectionRegistry] registerClass:self forName:[self name] URLScheme:@\"s3\"];\n    [pool release];\n}\n\n+ (NSString *)name\n{\n\treturn @\"Amazon S3\";\n}\n\n+ (NSArray *)URLSchemes { return [NSArray arrayWithObjects:@\"s3\", @\"http\", nil]; }\n\n#pragma mark init methods\n\n- (id)initWithRequest:(NSURLRequest *)request delegate:(id)delegate\n{     \n    // allow for subdomains of s3\n\tif ([[[request URL] host] rangeOfString:@\"s3.amazonaws.com\"].location == NSNotFound)\n\t{\n\t\tNSURL *URL = [[NSURL alloc] initWithScheme:@\"http\" host:@\"s3.amazonaws.com\" path:nil];\n        NSMutableURLRequest *newRequest = [request mutableCopy];\n        [newRequest setURL:URL];\n        [URL release];\n        \n        self = [super initWithRequest:newRequest];\n        [newRequest release];\n\t}\n    else\n    {\n        self = [super initWithRequest:request];\n    }\n\t\n    \n\tif (self)\n\t{\n\t\tincompleteDirectoryContents = [[NSMutableArray array] retain];\n\t\tincompleteKeyNames = [[NSMutableArray array] retain];\n\t\tmyCurrentDirectory = @\"/\";\n\t}\n    \n    \n\treturn self;\n}\n\n- (void)dealloc\n{\n\t[incompleteDirectoryContents release];\n\t[incompleteKeyNames release];\n\t[myCurrentDirectory release];\n\t[myDownloadHandle release];\n    [_credential release];\n\t[_currentAuthenticationChallenge release];\n    \n\t[super dealloc];\n}\n\n- (NSString *)standardizePath:(NSString *)unstandardPath\n{\n\tif (![unstandardPath hasPrefix:@\"/\"])\n\t\tunstandardPath = [@\"/\" stringByAppendingString:unstandardPath];\n\treturn unstandardPath;\n}\n- (NSString *)fixPathToBeDirectoryPath:(NSString *)dirPath\n{\n\tif (![dirPath hasSuffix:@\"/\"])\n\t\tdirPath = [dirPath stringByAppendingString:@\"/\"];\n\treturn [self standardizePath:dirPath];\n}\n- (NSString *)fixPathToBeFilePath:(NSString *)filePath\n{\n\tif ([filePath hasSuffix:@\"/\"])\n\t\tfilePath = [filePath substringToIndex:[filePath length] - 1];\n\treturn [self standardizePath:filePath];\n}\n\n#pragma mark -\n#pragma mark HTTP Overrides\n\n- (void)setAuthenticationWithRequest:(CKHTTPRequest *)request\n{\n\t// S3 needs decent credentials to operate\n    NSAssert(_credential, @\"S3 requires credentials to operate\");\n    NSAssert([_credential user], @\"S3 connection has no access key ID\");\n    NSAssert([_credential persistence] == NSURLCredentialPersistenceNone, @\"S3 passwords cannot be persisted\");\n    NSAssert([_credential password], @\"S3 connection has no secret key\");\n    \n    \n    NSString *method = [request method];\n\tNSString *md5 = @\"\"; //[[request content] length] > 0 ? [[[request content] md5Digest] base64Encoding] : @\"\";\n\tNSString *ct = [request headerForKey:@\"Content-Type\"];\n\tNSString *date = [request headerForKey:@\"Date\"];\n\t\t[request setHeader:date forKey:@\"Date\"];\n\t\n\tNSMutableString *auth = [NSMutableString stringWithFormat:@\"%@\\n%@\\n%@\\n%@\\n\", method, md5, ct ? ct : @\"\", date];\n\tNSEnumerator *e = [[[[request headers] allKeys] sortedArrayUsingSelector:@selector(compare:)] objectEnumerator];\n\tNSString *key;\n\t\n\twhile ((key = [e nextObject]))\n\t{\n\t\tif ([[key lowercaseString] hasPrefix:@\"x-amz\"])\n\t\t{\n\t\t\t[auth appendFormat:@\"%@:%@\\n\", [key lowercaseString], [request headerForKey:key]];\n\t\t}\n\t}\n\tNSString *uri = [request uri];\n\tNSRange r = [uri rangeOfString:@\"?\"];\n\tif (r.location != NSNotFound)\n\t{\n\t\turi = [uri substringToIndex:r.location];\n\t}\n\t[auth appendString:[uri encodeLegally]];\n\t\n\tNSString *sha1 = [[[auth dataUsingEncoding:NSUTF8StringEncoding] sha1HMacWithKey:[_credential password]] base64Encoding];\n\t[request setHeader:[NSString stringWithFormat:@\"AWS %@:%@\", [_credential user], sha1] forKey:@\"Authorization\"];\n}\n\n- (void)processResponse:(CKHTTPResponse *)response\n{\n\tNSError *error = nil;\n\tif ([response code] >= 400 && [response code] < 500)\n\t{\n\t\tNSXMLDocument *doc = [[NSXMLDocument alloc] initWithData:[response content] \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t options:NSXMLDocumentTidyXML\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t   error:&error];\n\t\tNSString *desc = [[[[doc rootElement] nodesForXPath:@\"//Error/Message\" error:&error] objectAtIndex:0] stringValue];\n\t\tNSString *code = [[[[doc rootElement] nodesForXPath:@\"//Error/Code\" error:&error] objectAtIndex:0] stringValue];\n\t\t[doc release];\n\t\t\n\t\tif ([code isEqualToString:@\"SignatureDoesNotMatch\"])\n\t\t{\n\t\t\t// TODO: Send a fresh authentication request and try again\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (desc)\n\t\t\t\terror = [NSError errorWithDomain:S3ErrorDomain code:1 userInfo:[NSDictionary dictionaryWithObject:desc forKey:NSLocalizedDescriptionKey]];\n\t\t\telse\n\t\t\t\tKTLog(S3ErrorDomain, KTLogError, @\"An unknown error occurred:\\n%@\", response);\n\t\t}\n\t}\n\t\n\tswitch (GET_STATE)\n\t{\n\t\tcase CKConnectionAwaitingDirectoryContentsState: \n\t\t{\n\t\t\tif ([response code] / 100 == 2)\n\t\t\t{\n\t\t\t\tNSError *error = nil;\n\t\t\t\tNSXMLDocument *doc = [[[NSXMLDocument alloc] initWithData:[response content] \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t options:NSXMLDocumentTidyXML\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   error:&error] autorelease];\n\t\t\t\tKTLog(CKProtocolDomain, KTLogDebug, @\"\\n%@\", [doc XMLStringWithOptions:NSXMLNodePrettyPrint]);\n\t\t\t\t\n\t\t\t\t//do the buckets first\n\t\t\t\tNSXMLElement *cur;\n\t\t\t\tNSEnumerator *e;\n\t\t\t\tNSMutableArray *contents = [NSMutableArray array];\n\t\t\t\t\n\t\t\t\tBOOL isTruncated = NO;\n\t\t\t\tNSArray *isTruncatedNodes = [[doc rootElement] nodesForXPath:@\"//IsTruncated\" error:&error];\n\t\t\t\tif ([isTruncatedNodes count] > 0)\n\t\t\t\t{\n\t\t\t\t\tNSXMLNode *isTruncatedNode = [isTruncatedNodes objectAtIndex:0];\n\t\t\t\t\tNSString *isTruncatedValue = [isTruncatedNode stringValue];\n\t\t\t\t\tisTruncated = [isTruncatedValue isEqualToString:@\"true\"];\n\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\tif ([myCurrentDirectory isEqualToString:@\"/\"])\n\t\t\t\t{\n\t\t\t\t\tNSArray *buckets = [[doc rootElement] nodesForXPath:@\"//Bucket\" error:&error];\n\t\t\t\t\te = [buckets objectEnumerator];\n\t\t\t\t\t\n\t\t\t\t\twhile ((cur = [e nextObject]))\n\t\t\t\t\t{\n\t\t\t\t\t\tNSString *name = [[[cur elementsForName:@\"Name\"] objectAtIndex:0] stringValue];\n\t\t\t\t\t\tNSString *date = [[[cur elementsForName:@\"CreationDate\"] objectAtIndex:0] stringValue];\n\t\t\t\t\t\t\n\t\t\t\t\t\tNSMutableDictionary *d = [NSMutableDictionary dictionary];\n\t\t\t\t\t\t[d setObject:name forKey:cxFilenameKey];\n\t\t\t\t\t\t[d setObject:[NSCalendarDate calendarDateWithZuluFormat:date] forKey:NSFileCreationDate];\n\t\t\t\t\t\t[d setObject:NSFileTypeDirectory forKey:NSFileType];\n\t\t\t\t\t\t[contents addObject:d];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t// contents inside a bucket\n\t\t\t\tNSArray *bucketContents = [[doc rootElement] nodesForXPath:@\"//Contents\" error:&error];\n\t\t\t\te = [bucketContents objectEnumerator];\n\t\t\t\t\n\t\t\t\tNSString *currentPath = [myCurrentDirectory stringByDeletingFirstPathComponent];\n\t\t\t\t\n\t\t\t\tNSMutableArray *keyNames = [NSMutableArray arrayWithArray:incompleteKeyNames];\n\t\t\t\twhile ((cur = [e nextObject]))\n\t\t\t\t{\n\t\t\t\t\tNSString *rawKeyName = [[[cur elementsForName:@\"Key\"] objectAtIndex:0] stringValue];\n\t\t\t\t\tNSString *name = [self standardizePath:rawKeyName];\n\n\t\t\t\t\tif ([name length] < [currentPath length]) continue; // this is a record from a parent folder\n\t\t\t\t\tif ([name rangeOfString:currentPath].location == NSNotFound) continue; // this is an element in a different folder\n\t\t\t\t\t\n\t\t\t\t\tif ([name hasPrefix:currentPath])\n\t\t\t\t\t\tname = [name substringFromIndex:[currentPath length]];\n\t\t\t\t\t\n\t\t\t\t\t/*We receive _all_ directory contents at once, so even when we ask for /brianamerige, we get /brianamerige/wp-admin/page.php, for example. Consequently, when currentpath is /wp-admin, we are only looking for things immediately inside /wp-admin. To achieve this, we only keep _one_ of each of the same first path components.\n\t\t\t\t\t */\n\t\t\t\t\tif ([keyNames containsObject:[name firstPathComponent]])\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t[keyNames addObject:[name firstPathComponent]];\n\t\t\t\t\t\n\t\t\t\t\tif (![[name firstPathComponent] isEqualToString:[name lastPathComponent]])\n\t\t\t\t\t{\n\t\t\t\t\t\t//We have /wp-admin/page.php while we're only trying to list /wp-admin\n\t\t\t\t\t\tname = [[name firstPathComponent] stringByAppendingString:@\"/\"];\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tNSString *date = [[[cur elementsForName:@\"LastModified\"] objectAtIndex:0] stringValue];\n\t\t\t\t\tNSString *size = [[[cur elementsForName:@\"Size\"] objectAtIndex:0] stringValue];\n\t\t\t\t\tNSString *class = [[[cur elementsForName:@\"StorageClass\"] objectAtIndex:0] stringValue];\n\t\t\t\t\t\n\t\t\t\t\tNSMutableDictionary *d = [NSMutableDictionary dictionary];\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\tif ([name hasSuffix:@\"/\"])\n\t\t\t\t\t{\n\t\t\t\t\t\tname = [name substringToIndex:[name length] - 1];\n\t\t\t\t\t\t[d setObject:NSFileTypeDirectory forKey:NSFileType];\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t[d setObject:NSFileTypeRegular forKey:NSFileType];\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif ([name isEqualToString:@\"\"]) continue; // skip current path name that is returned in results\n\t\t\t\t\t\n\t\t\t\t\t[d setObject:name forKey:cxFilenameKey];\n\t\t\t\t\t[d setObject:[NSCalendarDate calendarDateWithZuluFormat:date] forKey:NSFileModificationDate];\n\t\t\t\t\t[d setObject:class forKey:S3StorageClassKey];\n\t\t\t\t\tNSScanner *scanner = [NSScanner scannerWithString:size];\n\t\t\t\t\tlong long filesize;\n\t\t\t\t\t[scanner scanLongLong:&filesize];\n\t\t\t\t\t[d setObject:[NSNumber numberWithLongLong:filesize] forKey:NSFileSize];\n\t\t\t\t\t[contents addObject:d];\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (isTruncated)\n\t\t\t\t{\n\t\t\t\t\t//Keep the contents for the next time around\n\t\t\t\t\t[incompleteDirectoryContents addObjectsFromArray:contents];\n\t\t\t\t\t[incompleteKeyNames addObjectsFromArray:keyNames];\n\t\t\t\t\t\n\t\t\t\t\t//We aren't done yet. There are more keys to be listed in this 'directory'\n\t\t\t\t\tNSString *bucketName = [myCurrentDirectory firstPathComponent];\n\t\t\t\t\tNSString *prefixString = @\"\";\n\t\t\t\t\tif ([bucketName length] > 1)\n\t\t\t\t\t{\n\t\t\t\t\t\tNSString *subpath = [myCurrentDirectory substringFromIndex:[bucketName length] + 2];\n\t\t\t\t\t\tif ([subpath length] > 0)\n\t\t\t\t\t\t\tprefixString = [NSString stringWithFormat:@\"?prefix=%@\", subpath];\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif ([prefixString length] == 0)\n\t\t\t\t\t\tprefixString = @\"?\"; //If we have no prefix, we need the ? to be /brianamerige?marker=bleh\n\t\t\t\t\telse\n\t\t\t\t\t\tprefixString = [prefixString stringByAppendingString:@\"&\"]; //If we do have a prefix, we need the & to be /brianameige?prefix=dir/&marker=bleh\n\t\t\t\t\t\n\t\t\t\t\tNSString *lastKeyName = [[[[bucketContents lastObject] elementsForName:@\"Key\"] objectAtIndex:0] stringValue];\n\t\t\t\t\tNSString *markerString = [NSString stringWithFormat:@\"marker=%@\", lastKeyName];\n\t\t\t\t\t\n\t\t\t\t\tNSString *uri = [NSString stringWithFormat:@\"/%@%@%@\", bucketName, prefixString, markerString];\n\t\t\t\t\tCKHTTPRequest *request = [[CKHTTPRequest alloc] initWithMethod:@\"GET\" uri:[uri encodeLegallyForS3]];\n\t\t\t\t\t[myCurrentRequest autorelease];\n\t\t\t\t\tmyCurrentRequest = request;\n\t\t\t\t\t[self sendCommand:request];\t\t\t\t\t\n\t\t\t\t\treturn; //Don't break. We are not idle yet, so we can't set CKConnectionIdleState as we do at the bottom of the method.\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t[contents addObjectsFromArray:incompleteDirectoryContents];\n\t\t\t\t[incompleteDirectoryContents removeAllObjects];\n\t\t\t\t[incompleteKeyNames removeAllObjects];\n\t\t\t\t\n\t\t\t\t[self cacheDirectory:myCurrentDirectory withContents:contents];\n\t\t\t\t\n\t\t\t\t//We use fixPathToBeFilePath to strip the / from the end –– we don't traditionally have this in the last path component externally.\n\t\t\t\t[[self client] connectionDidReceiveContents:contents ofDirectory:[self fixPathToBeFilePath:myCurrentDirectory] error:error];\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tcase CKConnectionUploadingFileState:\n\t\t{\n\t\t\tCKInternalTransferRecord *upload = [[self currentUpload] retain];\n\t\t\t[self dequeueUpload];\n\t\t\t\n\t\t\t[[self client] uploadDidFinish:[upload remotePath] error:error];\n            \n\t\t\tif ([upload delegateRespondsToTransferDidFinish])\n\t\t\t\t[[upload delegate] transferDidFinish:[upload delegate] error:error];\n\t\t\t\n\t\t\t[upload release];\n\t\t\t\n\t\t\tbreak;\n\t\t}\n\t\tcase CKConnectionDeleteFileState:\n\t\t{\n\t\t\t[[self client] connectionDidDeleteFile:[self currentDeletion] error:error];\n\t\t\t\n\t\t\t[self dequeueDeletion];\n\t\t\tbreak;\n\t\t}\n\t\tcase CKConnectionDeleteDirectoryState:\n\t\t{\n\t\t\t[[self client] connectionDidDeleteDirectory:[self currentDeletion] error:error];\n\t\t\t[self dequeueDeletion];\n\t\t\tbreak;\n\t\t}\n\t\tcase CKConnectionCreateDirectoryState:\n\t\t{\n\t\t\t[[self client] connectionDidCreateDirectory:[self fixPathToBeDirectoryPath:[[response request] uri]] error:error];\n\t\t\tbreak;\n\t\t}\n\t\tcase CKConnectionAwaitingRenameState:\n\t\t{\n\t\t\t[[self client] connectionDidRename:[_fileRenames objectAtIndex:0] to:[_fileRenames objectAtIndex:1] error:error];\n\t\t\t[_fileRenames removeObjectAtIndex:0];\n\t\t\t[_fileRenames removeObjectAtIndex:0];\t\t\t\n\t\t\tbreak;\n\t\t}\n\t\tcase CKConnectionRenameFromState:\n\t\t{\n\t\t\t[self setState:CKConnectionRenameToState];\n\t\t\treturn;\n\t\t}\n\t\tdefault: break;\n\t}\n\t[self setState:CKConnectionIdleState];\n}\n\n- (BOOL)processBufferWithNewData:(NSData *)data\n{\n\tif (GET_STATE == CKConnectionDownloadingFileState)\n\t{\n\t\tif (bytesToTransfer == 0)\n\t\t{\n\t\t\tNSDictionary *headers = [CKHTTPResponse headersWithData:myResponseBuffer];\n\t\t\tNSString *length = [headers objectForKey:@\"Content-Length\"];\n\t\t\tif (length > 0)\n\t\t\t{\n\t\t\t\tNSScanner *scanner = [NSScanner scannerWithString:length];\n\t\t\t\tlong long daBytes = 0;\n\t\t\t\t[scanner scanLongLong:&daBytes];\n\t\t\t\tbytesToTransfer = daBytes;\n\t\t\t\t\n\t\t\t\tCKTransferRecord *record = (CKTransferRecord *)[[self currentDownload] userInfo];\n\t\t\t\tNSFileManager *fm = [NSFileManager defaultManager];\n\t\t\t\tBOOL isDir;\n\t\t\t\tif ([fm fileExistsAtPath:[record propertyForKey:CKQueueDownloadDestinationFileKey] isDirectory:&isDir] && !isDir)\n\t\t\t\t{\n\t\t\t\t\t[fm removeFileAtPath:[record propertyForKey:CKQueueDownloadDestinationFileKey] handler:nil];\n\t\t\t\t}\n\t\t\t\t[fm createFileAtPath:[record propertyForKey:CKQueueDownloadDestinationFileKey]\n\t\t\t\t\t\t\tcontents:nil\n\t\t\t\t\t\t  attributes:nil];\n\t\t\t\t[myDownloadHandle release];\n\t\t\t\tmyDownloadHandle = [[NSFileHandle fileHandleForWritingAtPath:[record propertyForKey:CKQueueDownloadDestinationFileKey]] retain];\n\t\t\t\t\n\t\t\t\t// file data starts after the header\n\t\t\t\tNSRange headerRange = [myResponseBuffer rangeOfData:[[NSString stringWithString:@\"\\r\\n\\r\\n\"] dataUsingEncoding:NSUTF8StringEncoding]];\n\t\t\t\tNSString *header = [[myResponseBuffer subdataWithRange:NSMakeRange(0, headerRange.location)] descriptionAsUTF8String];\n\t\t\t\t\n\t\t\t\t[[self client] appendString:header toTranscript:CKTranscriptReceived];\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tunsigned start = headerRange.location + headerRange.length;\n\t\t\t\tunsigned len = [myResponseBuffer length] - start;\n\t\t\t\tNSData *fileData = [myResponseBuffer subdataWithRange:NSMakeRange(start,len)];\n\t\t\t\t[myDownloadHandle writeData:fileData];\n\t\t\t\t[myResponseBuffer setLength:0];\n\t\t\t\t\n\t\t\t\tbytesTransferred += [fileData length];\n\t\t\t\t\n\t\t\t\t[[self client] download:[record propertyForKey:CKQueueDownloadRemoteFileKey] didReceiveDataOfLength:[fileData length]];\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tNSInteger percent = (bytesToTransfer == 0) ? 0 : (100 * bytesTransferred) / bytesToTransfer;\n\t\t\t\t[[self client] download:[record propertyForKey:CKQueueDownloadRemoteFileKey] didProgressToPercent:[NSNumber numberWithInteger:percent]];\n\t\t\t}\n\t\t}\n\t\telse  //add the data at the end of the file\n\t\t{\n\t\t\t[myDownloadHandle writeData:data];\n\t\t\t[myResponseBuffer setLength:0]; \n\t\t\tbytesTransferred += [data length];\n\t\t\t\n\t\t\tCKInternalTransferRecord *downloadInfo = [self currentDownload];\n\t\t\tCKTransferRecord *record = (CKTransferRecord *)[downloadInfo userInfo];\n\t\t\t\n\t\t\t[[self client] download:[record propertyForKey:CKQueueDownloadRemoteFileKey] didReceiveDataOfLength:[data length]];\n\t\t\t\n\t\t\tif ([downloadInfo delegateRespondsToTransferTransferredData])\n\t\t\t{\n\t\t\t\t[[downloadInfo delegate] transfer:record transferredDataOfLength:[data length]];\n\t\t\t}\n\t\t\t\n            NSInteger percent = (100 * bytesTransferred) / bytesToTransfer;\n\t\t\t[[self client] download:[record propertyForKey:CKQueueDownloadRemoteFileKey] didProgressToPercent:[NSNumber numberWithInteger:percent]];\n\t\t\t\n\t\t\tif ([downloadInfo delegateRespondsToTransferProgressedTo])\n\t\t\t{\n\t\t\t\tNSInteger percent = (100 * bytesTransferred) / bytesToTransfer;\n\t\t\t\t[[downloadInfo delegate] transfer:record progressedTo:[NSNumber numberWithInteger:percent]];\n\t\t\t}\n\t\t}\n\t\t\n\t\t//check for completion, if the file is really small, then the transfer might be complete on the first pass\n\t\t//through this method, so check for completion everytime\n\t\t//\n\t\tif (bytesTransferred >= bytesToTransfer)  //sometimes more data is received than required (i assume on small size file)\n\t\t{\n\t\t\t[myDownloadHandle closeFile];\n\t\t\t[myDownloadHandle release];\n\t\t\tmyDownloadHandle = nil;\n\t\t\t\n\t\t\tCKInternalTransferRecord *downloadInfo = [[self currentDownload] retain];\n\t\t\t[self dequeueDownload];\n\t\t\t\n\t\t\tCKTransferRecord *record = (CKTransferRecord *)[downloadInfo userInfo];\n\t\t\t[[self client] downloadDidFinish:[record propertyForKey:CKQueueDownloadRemoteFileKey] error:nil];\n\t\t\t\n\t\t\tif ([downloadInfo delegateRespondsToTransferDidFinish])\n\t\t\t\t[[downloadInfo delegate] transferDidFinish:[downloadInfo userInfo] error:nil];\n\t\t\t\n\t\t\t[myCurrentRequest release];\n\t\t\tmyCurrentRequest = nil;\n\t\t\t[downloadInfo release];\n\t\t\t[self setState:CKConnectionIdleState];\n\t\t}\n\t\treturn NO;\n\t}\n\treturn YES;\n}\n\n- (void)initiatingNewRequest:(CKHTTPRequest *)req withPacket:(NSData *)packet\n{\n\t// if we are uploading or downloading set up the transfer sizes\n\tif (GET_STATE == CKConnectionUploadingFileState)\n\t{\n\t\ttransferHeaderLength = [req headerLength];\n\t\tbytesToTransfer = [packet length] - transferHeaderLength;\n\t\tbytesTransferred = 0;\n\t\t\n\t\tCKInternalTransferRecord *upload = [self currentUpload];\n\t\t\n\t\t[[self client] uploadDidBegin:[upload remotePath]];\n\t\t\n\t\tif ([upload delegateRespondsToTransferDidBegin])\n\t\t{\n\t\t\t[[upload delegate] transferDidBegin:[upload delegate]];\n\t\t}\n\t}\n\tif (GET_STATE == CKConnectionDownloadingFileState)\n\t{\n\t\tbytesToTransfer = 0;\n\t\tbytesTransferred = 0;\n\t\t\n\t\tCKInternalTransferRecord *download = [self currentDownload];\n\t\t\n\t\t[[self client] downloadDidBegin:[download remotePath]];\n\t\t\n\t\tif ([download delegateRespondsToTransferDidBegin])\n\t\t{\n\t\t\t[[download delegate] transferDidBegin:[download delegate]];\n\t\t}\n\t}\n}\n\n- (void)stream:(id<OutputStream>)stream sentBytesOfLength:(unsigned)length\n{\n\t[super stream:stream sentBytesOfLength:length]; // call http\n\tif (length == 0) return;\n\tif (GET_STATE == CKConnectionUploadingFileState)\n\t{\n\t\tCKInternalTransferRecord *upload = [self currentUpload];\n\t\t\n\t\tif (transferHeaderLength > 0)\n\t\t{\n\t\t\tif (length <= transferHeaderLength)\n\t\t\t{\n\t\t\t\ttransferHeaderLength -= length;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tlength -= transferHeaderLength;\n\t\t\t\ttransferHeaderLength = 0;\n\t\t\t\tbytesTransferred += length;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tbytesTransferred += length;\n\t\t}\n\n\t\tif (bytesToTransfer > 0)\n\t\t{\n\t\t\tNSInteger percent = (100 * bytesTransferred) / bytesToTransfer;\n\t\t\t\n\t\t\tif (percent != myLastPercent)\n\t\t\t{\n\t\t\t\t[[self client] upload:[upload remotePath] didProgressToPercent:[NSNumber numberWithInteger:percent]];\n                \n\t\t\t\tif ([upload delegateRespondsToTransferProgressedTo])\n\t\t\t\t{\n\t\t\t\t\t[[upload delegate] transfer:[upload delegate] progressedTo:[NSNumber numberWithInteger:percent]];\n\t\t\t\t}\n\t\t\t\tmyLastPercent = percent;\n\t\t\t}\n\t\t}\n\t\t\n        [[self client] upload:[upload remotePath] didSendDataOfLength:length];\n\t\t\n\t\tif ([upload delegateRespondsToTransferTransferredData])\n\t\t{\n\t\t\t[[upload delegate] transfer:[upload delegate] transferredDataOfLength:length];\n\t\t}\n\t}\n}\n\n\n#pragma mark -\n#pragma mark Connection Overrides\n\n- (void)s3DidChangeToDirectory:(NSString *)dirPath\n{\n\tif (![dirPath hasSuffix:@\"/\"])\n\t{\n\t\tdirPath = [dirPath stringByAppendingString:@\"/\"];\n\t}\n\t\n\t[myCurrentDirectory autorelease];\n\tmyCurrentDirectory = [dirPath copy];\n\t\n\t[[self client] connectionDidChangeToDirectory:dirPath error:nil];\n\t\n\t[myCurrentRequest release];\n\tmyCurrentRequest = nil;\n\t[self setState:CKConnectionIdleState];\n}\n\n- (void)changeToDirectory:(NSString *)dirPath\n{\n\tNSInvocation *inv = [NSInvocation invocationWithSelector:@selector(s3DidChangeToDirectory:)\n\t\t\t\t\t\t\t\t\t\t\t\t\t  target:self\n\t\t\t\t\t\t\t\t\t\t\t\t   arguments:[NSArray arrayWithObjects: dirPath, nil]];\n\tCKConnectionCommand *cmd = [CKConnectionCommand command:inv\n\t\t\t\t\t\t\t\t\t\t\t awaitState:CKConnectionIdleState\n\t\t\t\t\t\t\t\t\t\t\t  sentState:CKConnectionChangedDirectoryState\n\t\t\t\t\t\t\t\t\t\t\t  dependant:nil\n\t\t\t\t\t\t\t\t\t\t\t   userInfo:nil];\n\t[self queueCommand:cmd];\n}\n\n- (NSString *)currentDirectory\n{\n\t//We use fixPathToBeFilePath to strip the / from the end –– we don't traditionally have this in the last path component externally.\n\treturn [self fixPathToBeFilePath:myCurrentDirectory];\n}\n\n- (NSString *)rootDirectory\n{\n\treturn @\"/\";\n}\n\n- (void)createDirectory:(NSString *)dirPath\n{\n\tNSAssert(dirPath && ![dirPath isEqualToString:@\"\"], @\"no directory specified\");\n\tif (![dirPath hasSuffix:@\"/\"])\n\t\tdirPath = [dirPath stringByAppendingString:@\"/\"]; //Trailing slash indicates it's a directory.\n\t\n\tif ([[dirPath componentsSeparatedByString:@\"/\"] count] < 3)\n\t{\n\t\t// we are creating a bucket, so remove the trailing /\n\t\tdirPath = [dirPath substringToIndex:[dirPath length] - 1];\n\t}\n\t\t\n\tCKHTTPRequest *req = [[CKHTTPRequest alloc] initWithMethod:@\"PUT\" uri:[dirPath encodeLegallyForS3]];\n\tCKConnectionCommand *cmd = [CKConnectionCommand command:req\n\t\t\t\t\t\t\t\t\t\t\t awaitState:CKConnectionIdleState\n\t\t\t\t\t\t\t\t\t\t\t  sentState:CKConnectionCreateDirectoryState\n\t\t\t\t\t\t\t\t\t\t\t  dependant:nil\n\t\t\t\t\t\t\t\t\t\t\t   userInfo:nil];\n\t[req release];\n\t[self queueCommand:cmd];\n}\n\n- (void)createDirectory:(NSString *)dirPath permissions:(unsigned long)permissions\n{\n\t//we don't support setting permissions\n\t[self createDirectory:dirPath];\n}\n- (void)rename:(NSString *)fromPath to:(NSString *)toPath\n{\n\tNSAssert(fromPath && ![fromPath isEqualToString:@\"\"], @\"fromPath is nil!\");\n    NSAssert(toPath && ![toPath isEqualToString:@\"\"], @\"toPath is nil!\");\n\t\n\t/* \n\t IMPORTANT NOTES ABOUT RENAMING/MOVING ON S3:\n\t Renaming (Moving) in the sense that we have in FTP/SFTP/WebDAV is not possible with Amazon S3 at the moment. This current implementation is a temporary workaround until a RENAME or MOVE command is implemented into the API by Amazon.\n\t \n\t What we're doing here is really copying the fromPath to the toPath (with the COPY command), and then deleting fromPath. \n\t \n\t Worth noting, if you're intending on renaming a directory, you must call -recursivelyRenameS3Directory:to: which is implemented and handled by StreamBasedConnection. You need to do this because renaming a directory in the fashion this method implements will not bring the directory's children over with it. You have been warned!\n\t */\n\t\n\tCKHTTPRequest *copyRequest = [CKHTTPRequest requestWithMethod:@\"PUT\" uri:[toPath encodeLegallyForS3]];\n\t[copyRequest setHeader:[fromPath encodeLegallyForS3] forKey:@\"x-amz-copy-source\"];\n\tCKConnectionCommand *copyCommand = [CKConnectionCommand command:copyRequest\n\t\t\t\t\t\t\t\t\t\t\t awaitState:CKConnectionIdleState\n\t\t\t\t\t\t\t\t\t\t\t  sentState:CKConnectionRenameFromState\n\t\t\t\t\t\t\t\t\t\t\t  dependant:nil\n\t\t\t\t\t\t\t\t\t\t\t   userInfo:nil];\n\tCKHTTPRequest *deleteRequest = [CKHTTPRequest requestWithMethod:@\"DELETE\" uri:[fromPath encodeLegallyForS3]];\n\tCKConnectionCommand *deleteCommand = [CKConnectionCommand command:deleteRequest\n\t\t\t\t\t\t\t\t\t\t\t\t\t   awaitState:CKConnectionRenameToState\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsentState:CKConnectionAwaitingRenameState\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdependant:copyCommand\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t userInfo:nil];\n\t[self queueRename:fromPath];\n\t[self queueRename:toPath];\n\t[self queueCommand:copyCommand];\t\n\t[self queueCommand:deleteCommand];\n}\n\n- (void)deleteFile:(NSString *)path\n{\n\tNSAssert(path && ![path isEqualToString:@\"\"], @\"path is nil!\");\n\t\t\n\tCKHTTPRequest *req = [[[CKHTTPRequest alloc] initWithMethod:@\"DELETE\" \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\turi:[[self fixPathToBeFilePath:path] encodeLegallyForS3]] autorelease];\n\tCKConnectionCommand *cmd = [CKConnectionCommand command:req\n\t\t\t\t\t\t\t\t\t\t\t awaitState:CKConnectionIdleState\n\t\t\t\t\t\t\t\t\t\t\t  sentState:CKConnectionDeleteFileState\n\t\t\t\t\t\t\t\t\t\t\t  dependant:nil\n\t\t\t\t\t\t\t\t\t\t\t   userInfo:nil];\n\t[self queueDeletion:path];\n\t[self queueCommand:cmd];\n}\n\n- (void)deleteDirectory:(NSString *)dirPath\n{\n\tNSAssert(dirPath && ![dirPath isEqualToString:@\"\"], @\"dirPath is nil!\");\n\t\n\tCKHTTPRequest *req = [[[CKHTTPRequest alloc] initWithMethod:@\"DELETE\" \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\turi:[[self fixPathToBeDirectoryPath:dirPath] encodeLegallyForS3]] autorelease];\n\tCKConnectionCommand *cmd = [CKConnectionCommand command:req\n\t\t\t\t\t\t\t\t\t\t\t awaitState:CKConnectionIdleState\n\t\t\t\t\t\t\t\t\t\t\t  sentState:CKConnectionDeleteDirectoryState\n\t\t\t\t\t\t\t\t\t\t\t  dependant:nil\n\t\t\t\t\t\t\t\t\t\t\t   userInfo:nil];\n\t[self queueDeletion:dirPath];\n\t[self queueCommand:cmd];\n}\n\n- (CKTransferRecord *)uploadFile:(NSString *)localPath \n\t\t\t\t\t\t  toFile:(NSString *)remotePath \n\t\t\tcheckRemoteExistence:(BOOL)flag \n\t\t\t\t\t\tdelegate:(id)delegate\n{\n\tCKTransferRecord *rec = [CKTransferRecord recordWithName:remotePath size:[[NSFileManager defaultManager] sizeOfPath:localPath]];\n\tCKHTTPPutRequest *req = [CKHTTPPutRequest putRequestWithContentsOfFile:localPath \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   uri:[[self fixPathToBeFilePath:remotePath] encodeLegallyForS3]];\n\t[req setHeader:@\"public-read\" forKey:@\"x-amz-acl\"];\n\t\n\tCKConnectionCommand *cmd = [CKConnectionCommand command:req\n\t\t\t\t\t\t\t\t\t\t\t awaitState:CKConnectionIdleState\n\t\t\t\t\t\t\t\t\t\t\t  sentState:CKConnectionUploadingFileState\n\t\t\t\t\t\t\t\t\t\t\t  dependant:nil\n\t\t\t\t\t\t\t\t\t\t\t   userInfo:nil];\n\t\n\tCKInternalTransferRecord *upload = [CKInternalTransferRecord recordWithLocal:localPath\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata:nil\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  offset:0\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  remote:remotePath\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdelegate:(delegate) ? delegate : rec\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tuserInfo:nil];\n\t[rec setUpload:YES];\n\t\n\t[self queueUpload:upload];\n\t[self queueCommand:cmd];\n\t\n\treturn rec;\n}\n\n- (void)uploadFromData:(NSData *)data toFile:(NSString *)remotePath\n{\n\tremotePath = [self fixPathToBeFilePath:remotePath];\n\tCKHTTPPutRequest *req = [CKHTTPPutRequest putRequestWithData:data filename:[remotePath lastPathComponent] uri:[remotePath encodeLegallyForS3]];\n\tCKConnectionCommand *cmd = [CKConnectionCommand command:req\n\t\t\t\t\t\t\t\t\t\t\t awaitState:CKConnectionIdleState\n\t\t\t\t\t\t\t\t\t\t\t  sentState:CKConnectionUploadingFileState\n\t\t\t\t\t\t\t\t\t\t\t  dependant:nil\n\t\t\t\t\t\t\t\t\t\t\t   userInfo:nil];\n\t\n\tCKInternalTransferRecord *upload = [CKInternalTransferRecord recordWithLocal:nil \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata:data\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  offset:0\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  remote:remotePath\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdelegate:nil\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tuserInfo:nil];\n\t\n\t[self queueUpload:upload];\t\n\t[self queueCommand:cmd];\n}\n\n- (CKTransferRecord *)downloadFile:(NSString *)remotePath \n\t\t\t\t\t   toDirectory:(NSString *)dirPath \n\t\t\t\t\t\t overwrite:(BOOL)flag\n\t\t\t\t\t\t  delegate:(id)delegate\n{\n\tNSString *fixedRemotePath = [self fixPathToBeFilePath:remotePath];\n\tNSString *localPath = [dirPath stringByAppendingPathComponent:[fixedRemotePath lastPathComponent]];\n\t\n\tif (!flag && [[NSFileManager defaultManager] fileExistsAtPath:localPath])\n\t{\n        NSDictionary *userInfo = [NSDictionary dictionaryWithObjectsAndKeys:\n                                  LocalizedStringInConnectionKitBundle(@\"Local File already exists\", @\"FTP download error\"), NSLocalizedDescriptionKey,\n                                  remotePath, NSFilePathErrorKey, nil];\n        NSError *error = [NSError errorWithDomain:S3ErrorDomain code:S3DownloadFileExists userInfo:userInfo];\n        [[self client] connectionDidReceiveError:error];\n\t\t\n\t\treturn nil;\n\t}\n\t\n\tCKTransferRecord *record = [CKTransferRecord recordWithName:fixedRemotePath size:0];\n\tCKInternalTransferRecord *download = [CKInternalTransferRecord recordWithLocal:localPath\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  data:nil\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toffset:0\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tremote:fixedRemotePath\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  delegate:(delegate) ? delegate : record\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  userInfo:record];\n\t[record setProperty:fixedRemotePath forKey:CKQueueDownloadRemoteFileKey];\n\t[record setProperty:localPath forKey:CKQueueDownloadDestinationFileKey];\n\t[record setProperty:[NSNumber numberWithInt:0] forKey:CKQueueDownloadTransferPercentReceived];\n\t[self queueDownload:download];\n\t\n\tCKHTTPFileDownloadRequest *r = [CKHTTPFileDownloadRequest downloadRemotePath:fixedRemotePath to:dirPath];\n\tCKConnectionCommand *cmd = [CKConnectionCommand command:r\n\t\t\t\t\t\t\t\t\t\t\t awaitState:CKConnectionIdleState\n\t\t\t\t\t\t\t\t\t\t\t  sentState:CKConnectionDownloadingFileState\n\t\t\t\t\t\t\t\t\t\t\t  dependant:nil\n\t\t\t\t\t\t\t\t\t\t\t   userInfo:nil];\n\t[self queueCommand:cmd];\n\treturn record;\n}\n\n- (void)s3DirectoryContents:(NSString *)dir\n{\n\tNSString *theDir = dir != nil ? dir : myCurrentDirectory;\n\t\n\tNSString *bucketName = [theDir firstPathComponent];\n\tNSString *prefixString = @\"\";\n\tif ([bucketName length] > 1)\n\t{\n\t\tNSString *subpath = [theDir substringFromIndex:[bucketName length] + 2];\n\t\tif ([subpath length] > 0)\n\t\t\tprefixString = [NSString stringWithFormat:@\"?prefix=%@\", subpath];\n\t}\n\n\tNSString *uri = [NSString stringWithFormat:@\"/%@%@\", bucketName, prefixString];\n\tCKHTTPRequest *r = [[CKHTTPRequest alloc] initWithMethod:@\"GET\" uri:[uri encodeLegallyForS3]];\n\t[myCurrentRequest autorelease];\n\tmyCurrentRequest = r;\n\t[self sendCommand:r];\n}\n\n- (void)directoryContents\n{\n\tNSInvocation *inv = [NSInvocation invocationWithSelector:@selector(s3DirectoryContents:)\n\t\t\t\t\t\t\t\t\t\t\t\t\t  target:self\n\t\t\t\t\t\t\t\t\t\t\t\t   arguments:[NSArray array]];\n\tCKConnectionCommand *cmd = [CKConnectionCommand command:inv \n\t\t\t\t\t\t\t\t\t\t\t awaitState:CKConnectionIdleState\n\t\t\t\t\t\t\t\t\t\t\t  sentState:CKConnectionAwaitingDirectoryContentsState\n\t\t\t\t\t\t\t\t\t\t\t  dependant:nil\n\t\t\t\t\t\t\t\t\t\t\t   userInfo:nil];\n\t[self queueCommand:cmd];\n}\n\n- (void)contentsOfDirectory:(NSString *)dirPath\n{\n\tNSAssert(dirPath && ![dirPath isEqualToString:@\"\"], @\"no dirPath\");\n\t\n\tNSArray *cachedContents = [self cachedContentsWithDirectory:dirPath];\n\tif (cachedContents)\n\t{\n\t\t[[self client] connectionDidReceiveContents:cachedContents ofDirectory:[self standardizePath:dirPath] error:nil];\n\t\tif ([[NSUserDefaults standardUserDefaults] boolForKey:@\"CKDoesNotRefreshCachedListings\"])\n\t\t{\n\t\t\treturn;\n\t\t}\t\t\n\t}\t\t\n\t\n\tNSInvocation *inv = [NSInvocation invocationWithSelector:@selector(s3DirectoryContents:)\n\t\t\t\t\t\t\t\t\t\t\t\t\t  target:self\n\t\t\t\t\t\t\t\t\t\t\t\t   arguments:[NSArray arrayWithObject:[self fixPathToBeDirectoryPath:dirPath]]];\n\tCKConnectionCommand *cmd = [CKConnectionCommand command:inv \n\t\t\t\t\t\t\t\t\t\t\t awaitState:CKConnectionIdleState\n\t\t\t\t\t\t\t\t\t\t\t  sentState:CKConnectionAwaitingDirectoryContentsState\n\t\t\t\t\t\t\t\t\t\t\t  dependant:nil\n\t\t\t\t\t\t\t\t\t\t\t   userInfo:nil];\n\t[self queueCommand:cmd];\n}\n\n#pragma mark -\n#pragma mark Authentication\n\n- (void)connect\n{\n    if (_isConnecting || [self isConnected]) return;\n\t\n\t\n\t_isConnecting = YES;\n\t\n\t// Request authentication before connecting\n    _currentAuthenticationChallenge = [[NSURLAuthenticationChallenge alloc] initWithProtectionSpace:nil\n                                                                                 proposedCredential:nil\n                                                                               previousFailureCount:0\n                                                                                    failureResponse:nil\n                                                                                              error:nil\n                                                                                             sender:self];\n    \n    [[self client] connectionDidReceiveAuthenticationChallenge:_currentAuthenticationChallenge];\n}\n\n/*  CKHTTPConnection implements the -cancel and -continueWithCredential methods for us in a perfectly\n *  decent manner, so don't bother overriding them.\n */\n\n- (void)useCredential:(NSURLCredential *)credential forAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge\n{\n    if (challenge != _currentAuthenticationChallenge)\treturn;\n\t[_currentAuthenticationChallenge release];  _currentAuthenticationChallenge = nil;\n    \n    _credential = [credential retain];\n    \n    // Continue on with connecting\n    [super connect];\n}\n\n@end\n\n"
  },
  {
    "path": "ConnectionKit/CKTransferProgressCell.h",
    "content": "/*\n Copyright (c) 2006, Greg Hulands <ghulands@mac.com>\n All rights reserved.\n \n Redistribution and use in source and binary forms, with or without modification, \n are permitted provided that the following conditions are met:\n \n Redistributions of source code must retain the above copyright notice, this list \n of conditions and the following disclaimer.\n \n Redistributions in binary form must reproduce the above copyright notice, this \n list of conditions and the following disclaimer in the documentation and/or other \n materials provided with the distribution.\n \n Neither the name of Greg Hulands nor the names of its contributors may be used to \n endorse or promote products derived from this software without specific prior \n written permission.\n \n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY \n EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES \n OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT \n SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, \n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED \n TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR \n BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY \n WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n\n#import <Cocoa/Cocoa.h>\n\n/*\n\tTo set the name and progress, set the object value with a dictionary\n\tand have the keys progress and name\n */\n\n@interface CKTransferProgressCell : NSCell\n{\n\tNSInteger myProgress;\n    BOOL        _finished;\n}\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CKTransferProgressCell.m",
    "content": "/*\n Copyright (c) 2006, Greg Hulands <ghulands@mac.com>\n All rights reserved.\n \n Redistribution and use in source and binary forms, with or without modification, \n are permitted provided that the following conditions are met:\n \n Redistributions of source code must retain the above copyright notice, this list \n of conditions and the following disclaimer.\n \n Redistributions in binary form must reproduce the above copyright notice, this \n list of conditions and the following disclaimer in the documentation and/or other \n materials provided with the distribution.\n \n Neither the name of Greg Hulands nor the names of its contributors may be used to \n endorse or promote products derived from this software without specific prior \n written permission.\n \n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY \n EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES \n OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT \n SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, \n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED \n TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR \n BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY \n WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n#import \"CKTransferProgressCell.h\"\n\nstatic NSColor *sProgressColor = nil;\nstatic NSImage *sErrorImage = nil;\nstatic NSImage *sFinishedImage = nil;\nstatic NSMutableParagraphStyle *sStyle = nil;\n\nNSSize CKLimitMaxWidthHeight(NSSize ofSize, CGFloat toMaxDimension);\n\n@implementation CKTransferProgressCell\n\n+ (void)initialize\n{\n\tNSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];\n\t\n\tsProgressColor = [[NSColor colorForControlTint:NSDefaultControlTint] retain];\n\t\n\tNSBundle *b = [NSBundle bundleForClass:[self class]];\n\tNSString *path = [b pathForResource:@\"error\" ofType:@\"png\"];\n\tsErrorImage = [[NSImage alloc] initWithContentsOfFile:path];\n\tpath = [b pathForResource:@\"finished\" ofType:@\"png\"];\n\tsFinishedImage = [[NSImage alloc] initWithContentsOfFile:path];\n\t\n\tsStyle = [[NSMutableParagraphStyle alloc] init];\n\t[sStyle setLineBreakMode:NSLineBreakByTruncatingTail];\n\t\n\t[pool release];\n}\n\n- (void)setObjectValue:(id)value\n{\n\tif ([value isKindOfClass:[NSDictionary class]])\n\t{\n\t\tmyProgress = [[value objectForKey:@\"progress\"] intValue];\n        \n        _finished = [[value objectForKey:@\"finished\"] boolValue];\n        if (_finished) myProgress = 100;\n        \n        NSError *error = [value objectForKey:@\"error\"];\n        if (error && !(error.code == NSURLErrorCancelled && [error.domain isEqualToString:NSURLErrorDomain])) myProgress = -1;\n        \n\t\t[super setObjectValue:[value objectForKey:@\"name\"]];\n\t}\n\telse if ([value isKindOfClass:[NSNumber class]])\n\t{\n\t\tmyProgress = [value integerValue];\n\t}\n}\n\n#define PADDING 5\n\n- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView\n{\t\n\tNSRect imageRect = NSMakeRect(NSMinX(cellFrame), NSMinY(cellFrame), NSHeight(cellFrame), NSHeight(cellFrame));\n\timageRect = NSOffsetRect(imageRect, PADDING, 0);\n\t\n\t// from omni\n\tNSMutableAttributedString *label = [[NSMutableAttributedString alloc] initWithAttributedString:[self attributedStringValue]];\n\tNSRange labelRange = NSMakeRange(0, [label length]);\n\tif ([NSColor respondsToSelector:@selector(alternateSelectedControlColor)]) \n\t{\n\t\tNSColor *highlightColor = [self highlightColorWithFrame:cellFrame inView:controlView];\n\t\tBOOL highlighted = [self isHighlighted];\n\t\t\n\t\tif (highlighted && [highlightColor isEqual:[NSColor alternateSelectedControlColor]]) \n\t\t{\n            // add the alternate text color attribute.\n\t\t\t[label addAttribute:NSForegroundColorAttributeName value:[NSColor alternateSelectedControlTextColor] range:labelRange];\n\t\t}\n\t}\n\t\n\t[label addAttribute:NSParagraphStyleAttributeName value:sStyle range:labelRange];\n\tNSSize labelSize = [label size];\n\tNSRect labelRect = NSMakeRect(NSMaxX(imageRect) + PADDING,  \n\t\t\t\t\t\t\t\t  NSMidY(cellFrame) - (labelSize.height / 2),\n\t\t\t\t\t\t\t\t  NSWidth(cellFrame) - NSWidth(imageRect) - PADDING,\n\t\t\t\t\t\t\t\t  labelSize.height);\n\t[label drawInRect:labelRect];\n\t[label release];\n\t\n\t// draw the image or progress pie\n\tif (myProgress < 0)\n\t{\n\t\tNSSize s = CKLimitMaxWidthHeight([sErrorImage size], NSHeight(cellFrame));\n\t\tNSRect centered = NSMakeRect(NSMidX(imageRect) - (s.width / 2), \n\t\t\t\t\t\t\t\t\t NSMidY(imageRect) - (s.height / 2),\n\t\t\t\t\t\t\t\t\t s.width,\n\t\t\t\t\t\t\t\t\t s.height);\n\n        [sErrorImage drawInRect:centered\n\t\t\t\t\t   fromRect:NSZeroRect\n\t\t\t\t\t  operation:NSCompositeSourceOver\n\t\t\t\t\t   fraction:1.0\n                 respectFlipped:YES\n                          hints:nil];\n\t}\n\telse if (myProgress >= 0 && !_finished)\n\t{\n\t\tNSAffineTransform *flip = nil;\n\t\tif ([controlView isFlipped]) \n\t\t{\n\t\t\t[[NSGraphicsContext currentContext] saveGraphicsState];\n\t\t\tflip = [NSAffineTransform transform];\n\t\t\t[flip translateXBy:0 yBy:NSMaxY(imageRect)];\n\t\t\t[flip scaleXBy:1 yBy:-1];\n\t\t\t[flip concat];\n\t\t\timageRect.origin.y = 0;\n\t\t}\n\t\t\n\t\tNSBezierPath *circle = [NSBezierPath bezierPathWithOvalInRect:imageRect];\n\t\tNSPoint cp = NSMakePoint(NSMidX(imageRect), NSMidY(imageRect));\n\t\tNSBezierPath *pie = [NSBezierPath bezierPath];\n\t\tCGFloat degrees = (myProgress / 100.0) * 360.0;\n\t\t\n\t\t[pie moveToPoint:cp];\n\t\t[pie lineToPoint:NSMakePoint(NSMidX(imageRect), NSMaxY(imageRect))];\n\t\t\n\t\tint i;\n\t\tCGFloat radius = floor(NSMaxY(imageRect) - NSMidY(imageRect));\n\t\tCGFloat x, y;\n\t\tfor (i = 0; i <= floor(degrees); i++) {\n\t\t\tCGFloat rad = i * (M_PI / 180.0);\n\t\t\tx = sinf(rad) * radius;\n\t\t\ty = cosf(rad) * radius;\n\t\t\t[pie lineToPoint:NSMakePoint(cp.x + x, cp.y + y)];\n\t\t}\n\t\t[pie lineToPoint:cp];\n\t\t[pie closePath];\n\t\t\n\t\t[[NSColor whiteColor] set];\n\t\t[circle fill];\n\t\t[[sProgressColor colorWithAlphaComponent:0.5] set];\n\t\t[pie fill];\n\t\t[sProgressColor set];\n\t\t[pie setLineWidth:1.0];\n\t\t[pie stroke];\n\t\t[sProgressColor set];\n\t\t[circle setLineWidth:1.0];\n\t\t[circle stroke];\n\t\t\n\t\tif ([controlView isFlipped]) \n\t\t{\n\t\t\t[flip invert];\n\t\t\t[flip concat];\n\t\t\t[[NSGraphicsContext currentContext] restoreGraphicsState];\n\t\t}\n\t\t\n\t}\n\telse\n\t{\n\t\t// we are finished\n\t\tNSSize s = CKLimitMaxWidthHeight([sFinishedImage size], NSHeight(cellFrame));\n\t\tNSRect centered = NSMakeRect(NSMidX(imageRect) - (s.width / 2), \n\t\t\t\t\t\t\t\t\t NSMidY(imageRect) - (s.height / 2),\n\t\t\t\t\t\t\t\t\t s.width,\n\t\t\t\t\t\t\t\t\t s.height);\n        \n\t\t[sFinishedImage drawInRect:centered\n\t\t\t\t\t\t  fromRect:NSZeroRect\n\t\t\t\t\t\t operation:NSCompositeSourceOver\n\t\t\t\t\t\t  fraction:1.0\n                    respectFlipped:YES\n                             hints:nil];\n\t}\n}\n\n@end\n\nNSSize CKLimitMaxWidthHeight(NSSize ofSize, CGFloat toMaxDimension)\n{\n\tCGFloat max = fmax(ofSize.width, ofSize.height);\n\tif (max <= toMaxDimension)\n\t\treturn ofSize;\n\t\n\tif (ofSize.width >= ofSize.height)\n\t{\n\t\tofSize.width = toMaxDimension;\n\t\tofSize.height *= toMaxDimension / max;\n\t}\n\telse\n\t{\n\t\tofSize.height = toMaxDimension;\n\t\tofSize.width *= toMaxDimension / max;\n\t}\n\t\n\treturn ofSize;\n}\n"
  },
  {
    "path": "ConnectionKit/CKTransferRecord.h",
    "content": "/*\n Copyright (c) 2006, Greg Hulands <ghulands@mac.com>\n All rights reserved.\n \n Redistribution and use in source and binary forms, with or without modification, \n are permitted provided that the following conditions are met:\n \n Redistributions of source code must retain the above copyright notice, this list \n of conditions and the following disclaimer.\n \n Redistributions in binary form must reproduce the above copyright notice, this \n list of conditions and the following disclaimer in the documentation and/or other \n materials provided with the distribution.\n \n Neither the name of Greg Hulands nor the names of its contributors may be used to \n endorse or promote products derived from this software without specific prior \n written permission.\n \n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY \n EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES \n OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT \n SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, \n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED \n TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR \n BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY \n WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n\n#import <Foundation/Foundation.h>\n\n\n@class CK2FileOperation;\n@interface CKTransferRecord : NSObject\n{\n\tNSString *_name;\n    CK2FileOperation    *_operation;\n    int64_t             _size;\n\tNSTimeInterval _lastTransferTime;\n\tNSTimeInterval _transferStartTime;\n\tNSTimeInterval _lastDirectorySpeedUpdate;\n\tCGFloat _speed;\n\tNSMutableArray *_contents;\n    BOOL            _contentsComplete;\n\tCKTransferRecord *_parent; //not retained\n\tNSMutableDictionary *_properties;\n\t    \n    void *_observationInfo;\n}\n\n- (NSString *)name;\n- (void)setName:(NSString *)name;\n\n@property(readonly) int64_t size;\n\n- (CGFloat)speed;\n- (void)setSpeed:(CGFloat)speed;\t// TODO: Switch to CGFloat\n\n- (BOOL)isFinished;\n- (NSError *)error;\n\n- (CKTransferRecord *)parent;\n\n+ (instancetype)recordWithName:(NSString *)name uploadOperation:(CK2FileOperation *)operation;\n- (id)initWithName:(NSString *)name uploadOperation:(CK2FileOperation *)operation;\n\n@property(nonatomic, retain, readonly) CK2FileOperation *uploadOperation;\n\n- (BOOL)isDirectory;\n- (unsigned long long)transferred;\n\n/**\n Between 0 and 100.\n */\n@property(readonly) CGFloat progress;\n\n- (NSDictionary *)nameWithProgressAndFileSize;\n\n#pragma mark Contents\n\n- (void)addContent:(CKTransferRecord *)record;\n- (NSArray *)contents;\n\n/**\n Whether there is the possiblity of any more content being added.\n \n Used to know whether directories should be drawn with a tick mark or not, once\n their contents have finished uploading. If contents are not yet complete, once\n all descendant uploads have finished, a pie chart is still drawn, in case new\n contents arrive.\n */\n@property(nonatomic, readonly) BOOL contentsAreComplete;\n\n/**\n Marks the receiver as not expecting any more records to be added to `contents`.\n \n The receiver recurses down and marks all its contents as being complete to so\n you can mark off whole sections of the hierarchy.\n \n See `contentsAreComplete` for details.\n */\n- (void)markContentsAsComplete;\n\n#pragma mark\n\n- (CKTransferRecord *)root;\n- (NSString *)path; \n\n- (void)setProperty:(id)property forKey:(NSString *)key __attribute((nonnull(2)));\n- (id)propertyForKey:(NSString *)key;\n\n/* backward compatibility with NSDictionary */\n- (void)setObject:(id)object forKey:(id)key;\n- (id)objectForKey:(id)key;\n\n// Helper methods for working with the recursive data structure\n\n+ (CKTransferRecord *)rootRecordWithPath:(NSString *)path;\n\n// If the path is absolute, searches from root of tree, otherwise searches from receiver\n- (CKTransferRecord *)recordForPath:(NSString *)path;\n\n- (BOOL)problemsTransferringCountingErrors:(NSInteger *)outErrors successes:(NSInteger *)outSuccesses;\n\n@end\n\nextern NSString *CKTransferRecordTransferDidBeginNotification;\nextern NSString *CKTransferRecordTransferDidFinishNotification;\n\n\n#pragma mark -\n\n\n@interface NSObject (CKConnectionTransferDelegate)\n- (void)transferDidBegin:(CKTransferRecord *)transfer;\n- (void)transfer:(CKTransferRecord *)transfer transferredDataOfLength:(unsigned long long)length;\n- (void)transfer:(CKTransferRecord *)transfer receivedError:(NSError *)error;\n- (void)transferDidFinish:(CKTransferRecord *)transfer error:(NSError *)error;\n@end\n\n\n#pragma mark -\n\n\n@interface CKTransferRecord (Private)\n- (void)setSpeed:(double)bps;\n- (void)setUpload:(BOOL)flag;\n- (BOOL)isLeaf;\n@end\n"
  },
  {
    "path": "ConnectionKit/CKTransferRecord.m",
    "content": "/*\n Copyright (c) 2006, Greg Hulands <ghulands@mac.com>\n All rights reserved.\n \n Redistribution and use in source and binary forms, with or without modification, \n are permitted provided that the following conditions are met:\n \n Redistributions of source code must retain the above copyright notice, this list \n of conditions and the following disclaimer.\n \n Redistributions in binary form must reproduce the above copyright notice, this \n list of conditions and the following disclaimer in the documentation and/or other \n materials provided with the distribution.\n \n Neither the name of Greg Hulands nor the names of its contributors may be used to \n endorse or promote products derived from this software without specific prior \n written permission.\n \n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY \n EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES \n OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT \n SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, \n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED \n TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR \n BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY \n WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n#import \"CKTransferRecord.h\"\n\n#import \"CK2FileOperation.h\"\n\n#import <AppKit/AppKit.h>   // for NSColor\n\n\nNSString *CKTransferRecordTransferDidBeginNotification = @\"CKTransferRecordTransferDidBeginNotification\";\nNSString *CKTransferRecordTransferDidFinishNotification = @\"CKTransferRecordTransferDidFinishNotification\";\n\n@interface CKTransferRecord ()\n@property(nonatomic, readwrite) BOOL contentsAreComplete;\n@end\n\n@implementation CKTransferRecord\n\n- (NSString *)name { return _name; }\n\n- (void)setName:(NSString *)name\n{\n\tif (_name != name)\n\t{\n\t\t[self willChangeValueForKey:@\"name\"];\n\t\tname = [name copy];\n\t\t[_name release];\n\t\t_name = name;\n\t\t[self didChangeValueForKey:@\"name\"];\n\t}\n}\n\n@synthesize uploadOperation = _operation;\n\n- (BOOL)isFinished;\n{\n    CK2FileOperation *operation = self.uploadOperation;\n    if (operation) return (operation.state == CK2FileOperationStateCompleted);\n    \n    // Can't be finished until all contents are present\n    if (!self.contentsAreComplete) return NO;\n    \n    for (CKTransferRecord *aRecord in self.contents)\n    {\n        if (!aRecord.isFinished) return NO;\n    }\n    \n    return YES;\n}\n\n- (NSError *)error\n{\n    CK2FileOperation *operation = self.uploadOperation;\n    if (operation) return operation.error;\n    \n    NSError *result = nil;\n    for (CKTransferRecord *aRecord in self.contents)\n    {\n        result = aRecord.error;\n        if (result) break;\n    }\n    \n    return result;\n}\n\n- (CKTransferRecord *)parent { return _parent; }\n\n+ (instancetype)recordWithName:(NSString *)name uploadOperation:(CK2FileOperation *)operation;\n{\n\treturn [[[CKTransferRecord alloc] initWithName:name uploadOperation:operation] autorelease];\n}\n\n- (id)initWithName:(NSString *)name uploadOperation:(CK2FileOperation *)operation;\n{\n\tif ((self = [super init])) \n\t{\n\t\t_name = [name copy];\n        _operation = [operation retain];\n\t\t_contents = [[NSMutableArray array] retain];\n\t\t_properties = [[NSMutableDictionary dictionary] retain];\n        \n        // Cache initial size estimate. Don't want it to change if request needs retransmitting\n        _size = operation.countOfBytesExpectedToWrite;\n\t}\n\treturn self;\n}\n\n- (void)dealloc\n{\n\t[_name release];\n    [_operation release];\n\t[_contents makeObjectsPerformSelector:@selector(setParent:) withObject:nil];\n\t[_contents release];\n\t[_properties release];\n\n\t[super dealloc];\n}\n\n- (int64_t)size\n{\n\t// Calculate our size including our children\n\tint64_t result = _size;\n\t\n    for (CKTransferRecord *aRecord in self.contents)\n    {\n        result += [aRecord size];\n    }\n\t\n\treturn result;\n}\n\n- (unsigned long long)transferred\n{\n\tint64_t result = self.uploadOperation.countOfBytesWritten;\n    \n    for (CKTransferRecord *aRecord in _contents)    // -contents is too slow as copies the internal storage\n    {\n        result += aRecord.transferred;\n    }\n    \n\treturn result;\n}\n\n- (CGFloat)speed\n{\n\tif ([self isDirectory]) \n\t{\n\t\tif (_transferStartTime == 0.0)\n\t\t{\n\t\t\t_transferStartTime = [NSDate timeIntervalSinceReferenceDate];\n\t\t}\n\t\tNSTimeInterval now = [NSDate timeIntervalSinceReferenceDate];\n\t\tif (_lastDirectorySpeedUpdate == 0.0 || now - _lastDirectorySpeedUpdate >= 1.0)\n\t\t{\n\t\t\t_lastDirectorySpeedUpdate = now;\n\t\t\tNSTimeInterval elapsedTime = now - _transferStartTime;\n\n\t\t\t[self willChangeValueForKey:@\"speed\"];\n\t\t\tif (elapsedTime == 0.0)\n\t\t\t{\n\t\t\t\t//If we don't catch this, we are effectively dividing by zero below. This would leave _speed as NaN.\n\t\t\t\t_speed = 0.0;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tunsigned long long transferred = [self transferred];\n\t\t\t\t_speed = transferred / elapsedTime;\n\t\t\t}\n\t\t\t[self didChangeValueForKey:@\"speed\"];\n\t\t}\n\t}\n\treturn _speed;\n}\n\n- (void)setSpeed:(CGFloat)speed\n{\n\tif (speed != _speed)\n\t{\n\t\t[self willChangeValueForKey:@\"speed\"];\n\t\t_speed = speed;\n\t\t[self didChangeValueForKey:@\"speed\"];\n\t}\n}\n\n- (CGFloat)progress\n{\n    CK2FileOperation *op = self.uploadOperation;\n    __block int64_t totalWritten = op.countOfBytesWritten;\n    \n    __block int64_t totalExpected = op.countOfBytesExpectedToWrite;\n    if (totalWritten > totalExpected) totalExpected = totalWritten;\n    \n    [self enumerateTransferRecordsRecursively:YES usingBlock:^(CKTransferRecord *record) {\n        \n        CK2FileOperation *op = record.uploadOperation;\n        int64_t written = op.countOfBytesWritten;\n        \n        int64_t expected = op.countOfBytesExpectedToWrite;\n        if (written > expected) expected = written;\n        \n        totalWritten += written;\n        totalExpected += expected;\n    }];\n    \n    if (!totalExpected) return 0;\n    return (100 * totalWritten) / totalExpected;\n}\n\n- (void)enumerateTransferRecordsRecursively:(BOOL)recursive usingBlock:(void (^)(CKTransferRecord *record))block;\n{\n    [self.contents enumerateObjectsUsingBlock:^(CKTransferRecord *record, NSUInteger idx, BOOL *stop) {\n        \n        block(record);\n        if (recursive) [record enumerateTransferRecordsRecursively:recursive usingBlock:block];\n    }];\n}\n\n- (BOOL)problemsTransferringCountingErrors:(NSInteger *)outErrors successes:(NSInteger *)outSuccesses\n{\n\tif ([self isLeaf])\n\t{\n\t\tif (self.error)\n\t\t{\n\t\t\t(*outErrors)++;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t(*outSuccesses)++;\n\t\t}\n\t}\n\telse\n\t{\n\t\t// check children for errors\n\t\tNSEnumerator *e = [[self contents] objectEnumerator];\n\t\tCKTransferRecord *cur;\n\t\t\n\t\twhile ((cur = [e nextObject]))\n\t\t{\n\t\t\t(void) [cur problemsTransferringCountingErrors:outErrors successes:outSuccesses];\n\t\t}\n\t}\n\treturn (*outErrors > 0);\t// return if there were any problems\n}\n\n- (void)setParent:(CKTransferRecord *)parent\n{\n\t_parent = parent;\n}\n\n- (BOOL)isDirectory\n{\n\treturn [_contents count] > 0;\n}\n\n#pragma mark KVO\n\n- (void)willChangeValueForKey:(NSString *)key\n{\n\t//We override this because we need to call the same on the record's parents to update any bindings on them as well. This traverses all the way up the parental hierarchy.\n\t[super willChangeValueForKey:key];\n\t\n\tif ([self parent])\n\t\t[[self parent] willChangeValueForKey:key];\n}\n\n- (void)didChangeValueForKey:(NSString *)key\n{\n\t//We override this because we need to call the same on the record's parents to update any bindings on them as well. This traverses all the way up the parental hierarchy.\n\t[super didChangeValueForKey:key];\n\t\n\tif ([self parent])\n\t\t[[self parent] didChangeValueForKey:key];\n}\n\n- (void *)observationInfo; { return _observationInfo; }\n- (void)setObservationInfo:(void *)observationInfo; { _observationInfo = observationInfo; }\n\n#pragma mark\n\n- (CKTransferRecord *)root\n{\n\tif (_parent)\n\t{\n\t\treturn [_parent root];\n\t}\n\treturn self;\n}\n\n- (NSString *)path\n{\n\tif ([self parent])\n    {\n        return [[_parent path] stringByAppendingPathComponent:[self name]];\t// Old code was @\"%@/%@\" but it broke if _parent was just /\n    }\n    else\n    {\n\t\treturn [self name];\n\t}\n}\n\n#pragma mark Contents\n\n- (void)addContent:(CKTransferRecord *)record\n{\n\tNSParameterAssert(record);\n    \n    NSIndexSet *indexes = [NSIndexSet indexSetWithIndex:[_contents count]];\n    [self willChange:NSKeyValueChangeInsertion valuesAtIndexes:indexes forKey:@\"contents\"];\n    {{\n        [_contents addObject:record];\n        [record setParent:self];\n    }}\n\t[self didChange:NSKeyValueChangeInsertion valuesAtIndexes:indexes forKey:@\"contents\"];\n}\n\n- (NSArray *)contents\n{\n\treturn [[_contents copy] autorelease];\n}\n\n@synthesize contentsAreComplete = _contentsComplete;\n\n- (void)markContentsAsComplete;\n{\n    self.contentsAreComplete = YES;\n    [self.contents makeObjectsPerformSelector:_cmd];    // recurse down\n}\n\n#pragma mark\n\n- (void)appendToDescription:(NSMutableString *)str indentation:(unsigned)indent\n{\n\tNSInteger i;\n\tfor (i = 0; i < indent; i++)\n\t{\n\t\t[str appendString:@\"\\t\"];\n\t}\t\n\t[str appendFormat:@\"\\t%@\", _name];\n\tif ([self isDirectory])\n\t{\n\t\t[str appendString:@\"/\"];\n\t}\n\t[str appendFormat:@\"\\t(%lld of %lld bytes - %li%%)\\n\", [self transferred], [self size], (long) [self progress]];\n\n\tNSEnumerator *e = [[self contents] objectEnumerator];\n\tCKTransferRecord *cur;\n\t\n\twhile ((cur = [e nextObject]))\n\t{\n\t\t[cur appendToDescription:str indentation:indent+1];\n\t}\n}\n\n- (NSString *)description\n{\n\tNSMutableString *str = [NSMutableString stringWithString:@\"\\n\"];\n\t[self appendToDescription:str indentation:0];\n\treturn str;\n}\n\n- (void)setProperty:(id)property forKey:(NSString *)key\n{\n\t[_properties setObject:property forKey:key];\n}\n\n- (id)propertyForKey:(NSString *)key\n{\n\treturn [_properties objectForKey:key];\n}\n\n// keep NSDictionary accessor compatible so we can move over internal use of this class\n\n- (void)setObject:(id)object forKey:(id)key\n{\n\t[self setProperty:object forKey:key];\n}\n\n- (id)objectForKey:(id)key\n{\n\treturn [self propertyForKey:key];\n}\n\n#pragma mark -\n#pragma mark Connection Transfer Delegate\n\n- (void)transferDidBegin:(CKTransferRecord *)transfer\n{\n\t_lastTransferTime = [NSDate timeIntervalSinceReferenceDate];\n\t[[NSNotificationCenter defaultCenter] postNotificationName:CKTransferRecordTransferDidBeginNotification object:self];\n}\n\n- (void)transfer:(CKTransferRecord *)transfer transferredDataOfLength:(unsigned long long)length\n{\n\tNSTimeInterval now = [NSDate timeIntervalSinceReferenceDate];\n\tNSTimeInterval difference = now - _lastTransferTime;\n\t\n\tif (difference > 2.0 || self.transferred == self.size)\n\t{\n\t\t[self willChangeValueForKey:@\"speed\"];\n\t\tif (self.transferred == self.size)\n\t\t{\n\t\t\t[self setSpeed:0.0];\n\t\t}\n\t\telse\n\t\t{\n\t\t\t[self setSpeed:((double)self.transferred) / difference];\n\t\t}\n\t\t_lastTransferTime = now;\n\t\t[self didChangeValueForKey:@\"speed\"];\n\t}\n}\n\n- (void)transfer:(CKTransferRecord *)transfer receivedError:(NSError *)error\n{\n\t//If we get _any_ error while we're uploading, we're \"finished\" albeit with an error. Handle it as such.\n\t[self transferDidFinish:transfer error:error];\n}\n\n- (void)transferDidFinish:(CKTransferRecord *)transfer error:(NSError *)error\n{\n\t_lastTransferTime = [NSDate timeIntervalSinceReferenceDate];\n\n\t[[NSNotificationCenter defaultCenter] postNotificationName:CKTransferRecordTransferDidFinishNotification object:self];\n\t\n\t//If parent is finished, they need notifications too.\n\tCKTransferRecord *parent = [self parent];\n\tif (parent && [parent transferred] == [parent size])\n\t\t[parent transferDidFinish:parent error:error];\n}\n\n#pragma mark -\n#pragma mark Recursive File Transfer Methods\n\n+ (CKTransferRecord *)rootRecordWithPath:(NSString *)path\n{\n\tCKTransferRecord *result = [CKTransferRecord recordWithName:@\"\" uploadOperation:nil];\n    \n\tNSArray *pathComponents = [path pathComponents];\n\tif ([pathComponents count] > 0)\n    {\n        [result setName:[[path pathComponents] objectAtIndex:0]];  // -firstPathComponent ignores the root dir for absolute paths\n        CKTransferRecord *thisNode, *subNode = result;\n        \n        for (NSUInteger i = 1; i < [pathComponents count]; i++)\n        {\n            thisNode = [CKTransferRecord recordWithName:[pathComponents objectAtIndex:i] uploadOperation:nil];\n            [subNode addContent:thisNode];\n            subNode = thisNode;\n        }\n\t}\n    \n\treturn result;\n}\n\n- (CKTransferRecord *)recordForPath:(NSString *)path;\n{\n    NSParameterAssert(path);\n    \n    if ([path length] == 0) return self;\n    \n    if ([path isAbsolutePath])\n    {\n        path = [path substringFromIndex:1]; // should make it relative, if not we'll go round again\n        return [[self root] recordForPath:path];\n    }\n    \n    \n    NSArray *components = [path pathComponents];\n    NSString *name = [components objectAtIndex:0];\n    \n    for (CKTransferRecord *aRecord in [self contents]) \n    {\n        if ([[aRecord name] isEqualToString:name])\n        {\n            NSString *newPath = [NSString pathWithComponents:\n                                 [components subarrayWithRange:NSMakeRange(1, [components count]-1)]];\n            \n            return [aRecord recordForPath:newPath];\n        }\n    }\n\t\n    return nil;\n}\n\n#pragma mark -\n#pragma mark NSTreeController support\n\n- (BOOL)isLeaf\n{\n\treturn [_contents count] == 0;\n}\n\n- (NSDictionary *)nameWithProgress\n{\n\treturn [NSDictionary dictionaryWithObjectsAndKeys:\n            @(self.progress), @\"progress\",\n            self.name, @\"name\",\n            @(self.isFinished && !self.error), @\"finished\",\n            self.error, @\"error\",\n            nil];\n}\n+ (NSSet *)keyPathsForValuesAffectingNameWithProgress;\n{\n    return [NSSet setWithObject:@\"progress\"];\n}\n\n- (void)setNameWithProgress:(id)notused\n{\n\t; // just for KVO bindings\n}\n\n/*  The same as -nameWithProgress, but also includes the file size in brackets if appropriate\n */\n- (NSDictionary *)nameWithProgressAndFileSize\n{\n    NSDictionary *result = [self nameWithProgress];\n    \n    // Directories should not display their size info\n    if (self.uploadOperation && [[self contents] count] == 0)\n    {\n        // Calculate the size of the transfer in a user-friendly manner\n        NSString *fileSize = [self.class formattedFileSize:(double)[self size]];\n        NSString *unattributedDescription = [[NSString alloc] initWithFormat:@\"%@ (%@)\", [self name], fileSize];\n        \n        NSDictionary *attributes = [NSDictionary dictionaryWithObject:[NSFont systemFontOfSize:[NSFont systemFontSizeForControlSize:NSRegularControlSize]]\n                                                               forKey:NSFontAttributeName];\n        \n        NSMutableAttributedString *description = [[NSMutableAttributedString alloc] initWithString:unattributedDescription attributes:attributes];\n        [unattributedDescription release];\n        \n        // Make the size info in grey\n        [description addAttribute:NSForegroundColorAttributeName\n                            value:[NSColor grayColor]\n                            range:NSMakeRange([[self name] length] + 1, [fileSize length] + 2)];\n        \n        NSMutableDictionary *mutable = [result mutableCopy];\n        [mutable setObject:description forKey:@\"name\"];\n        result = [mutable autorelease];\n        \n        [description release];\n    }\n    \n    return result;\n}\n+ (NSSet *)keyPathsForValuesAffectingNameWithProgressAndFileSize\n{\n    return [NSSet setWithObjects:@\"progress\", @\"name\", @\"size\", nil];\n}\n\n+ (NSString *)formattedFileSize:(double)size\n{\n\tif (size == 0) return [NSString stringWithFormat:@\"0 %@\", LocalizedStringInConnectionKitBundle(@\"bytes\", @\"filesize: bytes\")];\n\tNSString *suffix[] = {\n\t\tLocalizedStringInConnectionKitBundle(@\"bytes\", @\"filesize: bytes\"),\n\t\tLocalizedStringInConnectionKitBundle(@\"KB\", @\"filesize: kilobytes\"),\n\t\tLocalizedStringInConnectionKitBundle(@\"MB\", @\"filesize: megabytes\"),\n\t\tLocalizedStringInConnectionKitBundle(@\"GB\", @\"filesize: gigabytes\"),\n\t\tLocalizedStringInConnectionKitBundle(@\"TB\", @\"filesize: terabytes\"),\n\t\tLocalizedStringInConnectionKitBundle(@\"PB\", @\"filesize: petabytes\"),\n\t\tLocalizedStringInConnectionKitBundle(@\"EB\", @\"filesize: exabytes\")\n\t};\n\t\n\tint power = floor(log(size) / log(1024));\n\tif (power > 1)\n\t{\n\t\treturn [NSString stringWithFormat:@\"%01.02lf %@\", size / pow(1024, power), suffix[power]];\n\t}\n\telse\n\t{\n\t\treturn [NSString stringWithFormat:@\"%01.0lf %@\", size / pow(1024, power), suffix[power]];\n\t}\n}\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CKUploader.h",
    "content": "//\n//  CKUploader.h\n//  Connection\n//\n//  Created by Mike Abdullah on 14/11/2011.\n//  Copyright (c) 2011 Karelia Software. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n\n#import \"CK2FileManager.h\"\n#import \"CKTransferRecord.h\"\n\n\nenum {\n    CKUploadingDeleteExistingFileFirst = 1 << 0,\n    CKUploadingDryRun = 1 << 1,\n    \n    /**\n     Normally we rely on servers to respect the opening permissions we ask for. But some servers\n     choose not to (e.g. a handful of SFTP setups). Or some server types (FTP, mainly) have no concept\n     of opening permissions, so just do whatever is the OS default.\n     In those cases, we need to followup an upload with setting permissions explicitly.\n     `CKUploadingSetFilePermissionsAfterWriting` does just that.\n     */\n    CKUploadingSetFilePermissionsAfterWriting = 1 << 2,\n};\ntypedef NSUInteger CKUploadingOptions;\n\n\n@protocol CKUploaderDelegate;\n\n\n@interface CKUploader : NSObject <CK2FileManagerDelegate>\n{\n  @private\n\tNSURLRequest        *_request;\n    CKUploadingOptions  _options;\n    \n    CK2FileManager      *_fileManager;\n    NSMutableArray      *_queue;\n    NSMutableDictionary *_recordsByOperation;\n    \n    CKTransferRecord    *_rootRecord;\n    CKTransferRecord    *_baseRecord;\n    \n    BOOL    _invalidated;\n    BOOL    _suspended;\n    \n    id <CKUploaderDelegate> _delegate;\n}\n\n/**\n File permissions are supplied by curl_curl_newFilePermissions. Supply a\n non-`nil` value if you want something different, or override\n `-posixPermissionsForPath:isDirectory:`\n */\n+ (CKUploader *)uploaderWithRequest:(NSURLRequest *)request\n                            options:(CKUploadingOptions)options\n                           delegate:(id <CKUploaderDelegate>)delegate;\n\n@property (nonatomic, copy, readonly) NSURLRequest *baseRequest;\n@property (nonatomic, assign, readonly) CKUploadingOptions options;\n@property (nonatomic, retain, readonly) id <CKUploaderDelegate> delegate; // retained until invalidated\n\n/**\n @param url Must not contain any `.` or `..` path components; the uploader will choke on those at present.\n */\n- (CKTransferRecord *)uploadToURL:(NSURL *)url fromFile:(NSURL *)fileURL;\n\n/**\n @param url Must not contain any `.` or `..` path components; the uploader will choke on those at present.\n */\n- (CKTransferRecord *)uploadToURL:(NSURL *)url fromData:(NSData *)data;\n\n- (void)removeItemAtURL:(NSURL *)url completionHandler:(void (^)(NSError *))handler __attribute((nonnull(1)));\n\n/**\n The underlying `CK2FileOperation`s that are in the queue.\n */\n- (NSArray *)operations;\n\n@property (nonatomic, retain, readonly) CKTransferRecord *rootTransferRecord;\n@property (nonatomic, retain, readonly) CKTransferRecord *baseTransferRecord;\n\n- (void)finishOperationsAndInvalidate;    // will disconnect once all files are uploaded\n- (void)invalidateAndCancel;             // bails out as quickly as possible\n\n\n#pragma mark Suspending Operations\n@property (nonatomic, getter=isSuspended) BOOL suspended;\n\n\n#pragma mark Permissions\n// The permissions given to uploaded files\n- (NSNumber *)posixPermissionsForPath:(NSString *)path isDirectory:(BOOL)directory;\n\n\n@end\n\n\n@protocol CKUploaderDelegate <NSObject>\n\n- (void)uploader:(CKUploader *)uploader didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(CK2AuthChallengeDisposition, NSURLCredential *))completionHandler;\n\n@optional\n- (void)uploader:(CKUploader *)uploader didAddTransferRecord:(CKTransferRecord *)record;\n@required\n- (void)uploader:(CKUploader *)uploader didBeginUploadToPath:(NSString *)path;\n\n- (void)uploader:(CKUploader *)uploader appendString:(NSString *)string toTranscript:(CK2TranscriptType)transcript;\n\n@optional\n- (void)uploader:(CKUploader *)uploader didBeginRemovingItemAtURL:(NSURL *)url;\n\n- (void)uploader:(CKUploader *)uploader transferRecord:(CKTransferRecord *)record\n                                      didWriteBodyData:(int64_t)bytesSent\n                                     totalBytesWritten:(int64_t)totalBytesSent\n                             totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToSend;\n\n- (void)uploader:(CKUploader *)uploader transferRecord:(CKTransferRecord *)record\n                                  didCompleteWithError:(NSError *)error;\n\n- (void)uploaderDidBecomeInvalid:(CKUploader *)uploader;\n\n- (void)uploader:(CKUploader *)uploader didFailWithError:(NSError *)error;  // never called any more\n\n@end\n"
  },
  {
    "path": "ConnectionKit/CKUploader.m",
    "content": "//\n//  CKUploader.m\n//  Connection\n//\n//  Created by Mike Abdullah on 14/11/2011.\n//  Copyright (c) 2011 Karelia Software. All rights reserved.\n//\n\n#import \"CKUploader.h\"\n\n#import \"CK2FileOperation.h\"\n\n#import <CURLHandle/CURLHandle.h>\n\n\n@implementation CKUploader\n\n#pragma mark Lifecycle\n\n- (id)initWithRequest:(NSURLRequest *)request options:(CKUploadingOptions)options delegate:(id<CKUploaderDelegate>)delegate;\n{\n    if (self = [self init])\n    {\n        _request = [request copy];\n        _options = options;\n        _delegate = [delegate retain];\n        _suspended = NO;\n        \n        if (!(_options & CKUploadingDryRun))\n        {\n            // Marshall all callbacks onto main queue, primarily for historical reasons, but also serialisation\n            _fileManager = [CK2FileManager fileManagerWithDelegate:self\n                                                     delegateQueue:[NSOperationQueue mainQueue]];\n            [_fileManager retain];\n        }\n        \n        // Keep alive until invalidated. Hopefully one day CK2FileManager will do this for us.\n        [self retain];\n        \n        _queue = [[NSMutableArray alloc] init];\n        _recordsByOperation = [[NSMutableDictionary alloc] init];\n        _rootRecord = [[CKTransferRecord rootRecordWithPath:[[request URL] path]] retain];\n        _baseRecord = [_rootRecord retain];\n    }\n    return self;\n}\n\n+ (CKUploader *)uploaderWithRequest:(NSURLRequest *)request options:(CKUploadingOptions)options delegate:(id<CKUploaderDelegate>)delegate;\n{\n    NSParameterAssert(request);\n\n    return [[[self alloc] initWithRequest:request options:options delegate:delegate] autorelease];\n}\n\n- (void)didBecomeInvalid;\n{\n    id <CKUploaderDelegate> delegate = self.delegate;\n    if ([delegate respondsToSelector:@selector(uploaderDidBecomeInvalid:)])\n    {\n        [self.delegate uploaderDidBecomeInvalid:self];\n    }\n    \n    [_delegate release]; _delegate = nil;\n    [self release]; // balance out the retain during -init…\n}\n\n- (void)dealloc\n{\n    NSAssert(_queue.count == 0, @\"%@ is being deallocated while there are still queued operations\", self);\n    [_fileManager setDelegate:nil];\n    \n    [_request release];\n    [_fileManager release];\n    [_rootRecord release];\n    [_baseRecord release];\n    [_recordsByOperation release];\n    \n    [super dealloc];\n}\n\n#pragma mark Properties\n\n@synthesize delegate = _delegate;\n@synthesize baseRequest = _request;\n@synthesize options = _options;\n@synthesize rootTransferRecord = _rootRecord;\n@synthesize baseTransferRecord = _baseRecord;\n\n- (NSNumber *)posixPermissionsForPath:(NSString *)path isDirectory:(BOOL)directory;\n{\n    NSNumber *result = (directory ?\n                        self.baseRequest.curl_newDirectoryPermissions :\n                        self.baseRequest.curl_newFilePermissions);\n    return result;\n}\n\n#pragma mark Publishing\n\n- (void)removeItemAtURL:(NSURL *)url completionHandler:(void (^)(NSError *))handler;\n{\n    [self removeItemAtURL:url transferRecord:nil completionHandler:handler];\n}\n\n- (void)removeItemAtURL:(NSURL *)url transferRecord:(CKTransferRecord *)record completionHandler:(void (^)(NSError *))handler;\n{\n    CK2FileOperation *op = [_fileManager removeOperationWithURL:url completionHandler:handler];\n    [self addOperation:op transferRecord:record];\n}\n\n- (CKTransferRecord *)uploadToURL:(NSURL *)url fromData:(NSData *)data;\n{\n    NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:\n                                [self posixPermissionsForPath:[_fileManager.class pathOfURL:url] isDirectory:NO],\n                                NSFilePosixPermissions,\n                                nil];\n    \n    CK2FileOperation *op = [_fileManager createFileOperationWithURL:url\n                                                           fromData:data\n                                        withIntermediateDirectories:YES\n                                                  openingAttributes:attributes\n                                                  completionHandler:NULL];\n    \n    return [self uploadUsingOperation:op attributes:attributes];\n}\n\n- (CKTransferRecord *)uploadToURL:(NSURL *)url fromFile:(NSURL *)fileURL;\n{\n    NSNumber *size;\n    if (![fileURL getResourceValue:&size forKey:NSURLFileSizeKey error:NULL]) size = nil;\n    \n    NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:\n                                [self posixPermissionsForPath:[_fileManager.class pathOfURL:url] isDirectory:NO],\n                                NSFilePosixPermissions,\n                                nil];\n    \n    CK2FileOperation *op = [_fileManager createFileOperationWithURL:url\n                                                           fromFile:fileURL\n                                        withIntermediateDirectories:YES\n                                                  openingAttributes:attributes\n                                                  completionHandler:NULL];\n    \n    return [self uploadUsingOperation:op attributes:attributes];\n}\n\nstatic void *sOperationStateObservationContext = &sOperationStateObservationContext;\n\n- (CKTransferRecord *)uploadUsingOperation:(CK2FileOperation *)operation attributes:(NSDictionary *)attributes;\n{\n    NSParameterAssert(operation);\n    \n    // Create transfer record\n    CKTransferRecord *result = [self makeTransferRecordForOperation:operation];\n    \n    \n    // Delete first if requested\n    if (_options & CKUploadingDeleteExistingFileFirst)\n\t{\n        [self removeItemAtURL:operation.originalURL\n               transferRecord:nil // don't want failure to be reported\n            completionHandler:NULL];\n\t}\n    \n    \n    // Enqueue upload\n    [self addOperation:operation transferRecord:result];\n    \n    \n    // Notify delegate\n    [self didAddTransferRecord:result];\n    \n    \n    // Set permissions after if requested\n    if (self.options & CKUploadingSetFilePermissionsAfterWriting) {\n        CK2FileOperation *op = [_fileManager setAttributesOperationWithURL:operation.originalURL\n                                                                attributes:attributes\n                                                         completionHandler:NULL];   // nothing really to do; don't care if fails\n        \n        [self addOperation:op\n            transferRecord:nil];  // ignore failures\n    }\n    \n    return result;\n}\n\n- (void)didAddTransferRecord:(CKTransferRecord *)record;\n{\n    id <CKUploaderDelegate> delegate = self.delegate;\n    if ([delegate respondsToSelector:@selector(uploader:didAddTransferRecord:)])\n    {\n        [delegate uploader:self didAddTransferRecord:record];\n    }\n}\n\n- (void)finishOperationsAndInvalidate;\n{\n    if (_invalidated) return;\n    _invalidated = YES;\n    \n    // Now transfer records have all their content\n    [self.rootTransferRecord markContentsAsComplete];\n    \n    if (!_queue.count)\n    {\n        // Slightly delay delivery so it's similar to if there were operations\n        // in the queue\n        [_fileManager.delegateQueue addOperationWithBlock:^{\n            [self didBecomeInvalid];\n        }];\n    }\n}\n\n- (void)invalidateAndCancel;\n{\n    [self.operations makeObjectsPerformSelector:@selector(cancel)];\n    [self finishOperationsAndInvalidate];\n}\n\n#pragma mark Queue\n\n- (NSArray *)operations; { return [[_queue copy] autorelease]; }\n\n- (CK2FileOperation *)currentOperation; { return [_queue firstObject]; }\n\n- (void)addOperation:(CK2FileOperation *)operation transferRecord:(CKTransferRecord *)record;\n{\n    NSAssert([NSThread isMainThread], @\"-addOperation: is only safe to call on the main thread\");\n    \n    // No more operations can go on once finishing up\n    if (_invalidated) [NSException raise:NSInvalidArgumentException format:@\"%@ has been invalidated\", self];\n    \n    // Note the transfer record this op corresponds to\n    if (record) [_recordsByOperation setObject:record forKey:operation];\n    \n    // Watch for it to complete\n    [operation addObserver:self forKeyPath:@\"state\" options:NSKeyValueObservingOptionNew context:sOperationStateObservationContext];\n    \n    // Add to the queue\n    [_queue addObject:operation];\n    if (_queue.count == 1)\n    {\n        [self startNextOperationIfNotSuspended];\n    }\n}\n\n- (void)removeOperationAndStartNextIfAppropriate:(CK2FileOperation *)operation;\n{\n    NSParameterAssert(operation);\n    NSAssert([NSThread isMainThread], @\"-%@ is only safe to call on the main thread\", NSStringFromSelector(_cmd));\n    \n    // We assume the operation is only in the queue the once, and most likely near the front\n    NSUInteger index = [_queue indexOfObject:operation];\n    if (index != NSNotFound) [_queue removeObjectAtIndex:index];\n    \n    // If was the current op, time to start the next\n    if (index == 0) [self startNextOperationIfNotSuspended];\n}\n\n- (void)startNextOperationIfNotSuspended;\n{\n    if (self.suspended) return;\n    \n    if (_queue.count)\n    {\n        // We don't actually know what state the operation is in at this point. Normally, it should\n        // be suspended, waiting for us to start it. Ideally, nothing outside of CKUploader should\n        // start the operation itself (similar contract as to NSOperationQueue).\n        // But if operations are being bulk-canceled (e.g. `invalidateAndCancel`), many of them may\n        // have moved on from the suspended state to be cancelling, or completed. We trust that\n        // we'll receive a KVO notification for each operation as it finishes cancelling (i.e. completes)\n        // and remove it from the queue in due course, until there's nothing left and we become\n        // invalid.\n        CK2FileOperation *operation = [_queue objectAtIndex:0];\n        [operation resume];\n    }\n    else if (_invalidated)\n    {\n        [self didBecomeInvalid];\n    }\n}\n\n- (void)operation:(CK2FileOperation *)operation didFinish:(NSError *)error;\n{\n    NSAssert([NSThread isMainThread], @\"Operation broke threading contract\");\n    NSParameterAssert(operation);\n    \n        // Tell the record & delegate it's finished\n        CKTransferRecord *record = [_recordsByOperation objectForKey:operation];\n        [record transferDidFinish:record error:error];\n        \n        id <CKUploaderDelegate> delegate = self.delegate;\n        \n        if (record && [delegate respondsToSelector:@selector(uploader:transferRecord:didCompleteWithError:)])\n        {\n            [delegate uploader:self transferRecord:record didCompleteWithError:error];\n        }\n        \n        [self removeOperationAndStartNextIfAppropriate:operation];\n}\n\n#pragma mark Transfer Records\n\n- (CKTransferRecord *)makeTransferRecordForOperation:(CK2FileOperation *)operation;\n{\n    NSURL *url = operation.originalURL;\n    NSString *path = [CK2FileManager pathOfURL:url];\n    \n    CKTransferRecord *result = [CKTransferRecord recordWithName:path.lastPathComponent\n                                                uploadOperation:operation];\n    \n#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_7\n    NSURL *parentURL = [url URLByDeletingLastPathComponent];\n#else\n    // 10.6's -URLByDeletingLastPathComponent can't handle double slashes should it encounter them\n    NSURL *parentURL = [CK2FileManager URLWithPath:[path stringByDeletingLastPathComponent] isDirectory:YES hostURL:url];\n#endif\n    \n    CKTransferRecord *parent = [self directoryTransferRecordWithURL:parentURL];\n    [parent addContent:result];\n    \n    return result;\n}\n\n- (CKTransferRecord *)directoryTransferRecordWithURL:(NSURL *)url;\n{\n    NSParameterAssert(url);\n    NSAssert([NSThread isMainThread], @\"CKUploader can only be used on main thread\");\n    \n    \n    NSString *path = [CK2FileManager pathOfURL:url];\n    if ([path isEqualToString:@\"/\"] || path.length == 0) // the root for absolute and relative paths\n    {\n        return [self rootTransferRecord];\n    }\n    \n    \n    // Recursively find a record we do have!\n    NSURL *parentDirectoryURL = [url URLByDeletingLastPathComponent];\n    // need a sanity check to hunt down URLs being passed in like ftp://example.com//./\n    NSAssert(parentDirectoryURL.absoluteString.length < url.absoluteString.length, @\"URLByDeletingLastPathComponent for %@ gives a longer result: %@\", url.absoluteString, parentDirectoryURL.absoluteString);\n    \n    CKTransferRecord *parent = [self directoryTransferRecordWithURL:parentDirectoryURL];\n    \n    \n    // Create the record if it hasn't been already\n    CKTransferRecord *result = nil;\n    for (CKTransferRecord *aRecord in [parent contents])\n    {\n        if ([[aRecord name] isEqualToString:[path lastPathComponent]])\n        {\n            result = aRecord;\n            break;\n        }\n    }\n    \n    if (!result)\n    {\n        result = [CKTransferRecord recordWithName:[path lastPathComponent] uploadOperation:nil];\n        [parent addContent:result];\n        [self didAddTransferRecord:result];\n    }\n    \n    return result;\n}\n\n#pragma mark Suspending Operations\n\n@synthesize suspended = _suspended;\n- (void)setSuspended:(BOOL)suspended;\n{\n    if (suspended == _suspended) return;\n    _suspended = suspended;\n    \n    if (!suspended)\n    {\n        CK2FileOperation *firstOp = _queue.firstObject;\n        if (firstOp.state == CK2FileOperationStateSuspended)\n        {\n            [self startNextOperationIfNotSuspended];\n        }\n    }\n}\n\n#pragma mark KVO\n\n- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context;\n{\n    if (context == sOperationStateObservationContext)\n    {\n        CK2FileOperation *op = object;\n        CK2FileOperationState state = [[change objectForKey:NSKeyValueChangeNewKey] integerValue];\n        \n        if (state == CK2FileOperationStateCompleted)\n        {\n            [op removeObserver:self forKeyPath:keyPath];\n            [self operation:op didFinish:op.error];\n        }\n        else if (state == CK2FileOperationStateRunning)\n        {\n            NSAssert([NSThread isMainThread], @\"Only want to notify delegate on the main thread\");\n            \n            CKTransferRecord *record = [_recordsByOperation objectForKey:op];\n            [record transferDidBegin:record];\n            if (record)\n            {\n                [self.delegate uploader:self didBeginUploadToPath:record.path];\n            }\n            else\n            {\n                // Assume record-less operations are for deleting items\n                id <CKUploaderDelegate> delegate = self.delegate;\n                if ([delegate respondsToSelector:@selector(uploader:didBeginRemovingItemAtURL:)])\n                {\n                    [delegate uploader:self didBeginRemovingItemAtURL:op.originalURL];\n                }\n            }\n        }\n    }\n    else\n    {\n        [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];\n    }\n}\n\n#pragma mark CK2FileManager Delegate\n\n- (void)fileManager:(CK2FileManager *)manager operation:(CK2FileOperation *)operation willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLRequest *))completionHandler;\n{\n    // Apply any customisations\n    // Only allow SSL security to be *up*graded\n    NSURLRequest *base = self.baseRequest;\n    NSMutableURLRequest *customized = [request mutableCopy];\n    \n    [base.allHTTPHeaderFields enumerateKeysAndObjectsUsingBlock:^(NSString *aField, NSString *aValue, BOOL *stop) {\n        \n        if (![customized valueForHTTPHeaderField:aField])\n        {\n            [customized setValue:aValue forHTTPHeaderField:aField];\n        }\n    }];\n    \n    curl_usessl level = base.curl_desiredSSLLevel;\n    if (level > customized.curl_desiredSSLLevel) [customized curl_setDesiredSSLLevel:level];\n    \n    completionHandler(customized);\n    [customized release];\n}\n\n- (void)fileManager:(CK2FileManager *)manager operation:(CK2FileOperation *)operation didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(CK2AuthChallengeDisposition, NSURLCredential *))completionHandler;\n{\n    // Hand off to the delegate for auth\n    id <CKUploaderDelegate> delegate = [self delegate];\n    if (delegate)\n    {\n        [delegate uploader:self didReceiveChallenge:challenge completionHandler:completionHandler];\n    }\n    else\n    {\n        completionHandler(CK2AuthChallengePerformDefaultHandling, nil);\n    }\n}\n\n- (void)fileManager:(CK2FileManager *)manager operation:(CK2FileOperation *)operation didWriteBodyData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesSent totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToSend;\n{\n        CKTransferRecord *record = [_recordsByOperation objectForKey:operation];\n        NSAssert(record, @\"Unknown operation\");\n        [record transfer:record transferredDataOfLength:bytesWritten];\n        \n        if ([self.delegate respondsToSelector:@selector(uploader:transferRecord:didWriteBodyData:totalBytesWritten:totalBytesExpectedToWrite:)])\n        {\n            [self.delegate uploader:self\n                     transferRecord:record\n                   didWriteBodyData:bytesWritten\n                  totalBytesWritten:totalBytesSent\n          totalBytesExpectedToWrite:totalBytesExpectedToSend];\n        }\n}\n\n- (void)fileManager:(CK2FileManager *)manager appendString:(NSString *)info toTranscript:(CK2TranscriptType)transcript;\n{\n    [[self delegate] uploader:self appendString:info toTranscript:transcript];\n}\n\n@end\n\n"
  },
  {
    "path": "ConnectionKit/ConnectionKit.h",
    "content": "/*\n Copyright (c) 2006, Greg Hulands <ghulands@mac.com>\n All rights reserved.\n \n Redistribution and use in source and binary forms, with or without modification, \n are permitted provided that the following conditions are met:\n \n Redistributions of source code must retain the above copyright notice, this list \n of conditions and the following disclaimer.\n \n Redistributions in binary form must reproduce the above copyright notice, this \n list of conditions and the following disclaimer in the documentation and/or other \n materials provided with the distribution.\n \n Neither the name of Greg Hulands nor the names of its contributors may be used to \n endorse or promote products derived from this software without specific prior \n written permission.\n \n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY \n EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES \n OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT \n SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, \n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED \n TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR \n BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY \n WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n\n#import <ConnectionKit/CK2FileManager.h>\n#import <ConnectionKit/CK2Authentication.h>\n#import <ConnectionKit/CK2FileOperation.h>\n\n// Legacy\n#import <ConnectionKit/CKUploader.h>\n#import <ConnectionKit/CKTransferRecord.h>\n#import <ConnectionKit/CKTransferProgressCell.h>\n\n"
  },
  {
    "path": "ConnectionKit/ConnectionTest.h",
    "content": "//\n//  ConnectionTest.h\n//  Marvel\n//\n//  Created by Dan Wood on 11/29/04.\n//  Copyright (c) 2004 Biophony, LLC. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n\n\n@interface ConnectionTest : NSObject {\n\n\tNSMutableDictionary *myCallbackDictionary;\n\tunsigned long \t\tmyUniqueNumber;\n\t\n\tNSThread\t\t\t*myMainThread;\t// not retained.  Just for diagnostics.\n\n\tNSString *myCurrentDirectory;\n\t\n}\n\n- (NSMutableDictionary *)callbackDictionary;\n- (void)setCallbackDictionary:(NSMutableDictionary *)aCallbackDictionary;\n\n- (NSString *)currentDirectory;\n- (void)setCurrentDirectory:(NSString *)aCurrentDirectory;\n\n\n@end\n"
  },
  {
    "path": "ConnectionKit/ConnectionTest.m",
    "content": "//\n//  ConnectionTest.m\n//  Marvel\n//\n//  Created by Dan Wood on 11/29/04.\n//  Copyright (c) 2004 Biophony, LLC. All rights reserved.\n//\n\n#import \"ConnectionTest.h\"\n#import \"FTPConnection.h\"\n#import \"FileConnection.h\"\n\n/* AVAILABLE MACROS\n\nUKPass()\t\t\t\t\t\tPass always\nUKFail()\t\t\t\t\t\tFail always\nUKTrue(condition)\t\t\t\tPass if condition is true\nUKFalse(condition)\t\t\t\tPass if condition is false\nUKNil(ref)\t\t\t\t\t\tPass if ref is nil\nUKNotNil(ref)\t\t\t\t\tPass if ref is not nil\nUKIntsEqual(a, b)\t\t\t\tPass if a == b\nUKIntsNotEqual(a, b)\t\t\tPass if a != b\nUKFloatsEqual(a, b, d)\t\t\tPass if a == b\nUKFloatsNotEqual(a, b, d)\t\tPass if a != b\nUKObjectsEqual(a, b)\t\t\tPass if a isEqualTo: b\nUKObjectsNotEqual(a, b)\t\t\tPass if NOT a isEqualTo: b\nUKObjectsSame(a, b)\t\t\t\tPass if a (address) == b (address)\nUKObjectsNotSame(a, b)\t\t\tPass if a (address) != b (address)\nUKStringsEqual(a, b)\t\t\tPass if a isEqualToString: b\nUKStringsNotEqual(a, b)\t\t\tPass if a NOT isEqualToString: b\nUKStringContains(a, b)\t\t\tPass if a contains b\nUKStringDoesNotContain(a, b)\tPass if a does NOT contain b\nUKRaisesException(exp)\t\t\tPass if exp raises an exception\nUKDoesNotRaiseException(exp)\tPass if exp does NOT raise an exception\nUKRaisesExceptionNamed(exp, b)\tPass if exp raises an exception named b\t\nUKRaisesExceptionClass(exp, b)\tPass if exp does NOT raise an exception named b\n\n*/\n\n@implementation ConnectionTest\n\n- (id)init\n{\n\tif (self = [super init])\n\t{\n\t\tmyUniqueNumber = (unsigned long) [NSDate timeIntervalSinceReferenceDate];\n\t\t[self setCallbackDictionary:[NSMutableDictionary dictionary]];\n\t}\n\treturn self;\n}\n\n- (void)dealloc\n{\n\t[self setCallbackDictionary:nil];\n\t[super dealloc];\n}\n\n\n- (NSString *)currentDirectory\n{\n    return myCurrentDirectory; \n}\n- (void)setCurrentDirectory:(NSString *)aCurrentDirectory\n{\n    [aCurrentDirectory retain];\n    [myCurrentDirectory release];\n    myCurrentDirectory = aCurrentDirectory;\n}\n\n\n/*\n \n For all the connection methods, run a standard suite of tests.  Test the following methods:\n \n (Need to hook up a delegate to self, somehow put it into a state of what is expected, so we'll know if it's called.  If we expect it to be called and it's not, we can have it set an ivar and we'll check.)\n \n What will be tricky will be that this is async.  We may need to queue up a bunch of operations, and then wait somehow until they have completed.  Maybe make a runloop?\n \n \n Making connection\n \n changing to directory (good/bad)\n getting directory (as expected?)\n making directory (good/bad)\n making directory with certain permissions\n setting permissions (try a couple of times to make sure they actually change)  (success/fail)\n rename\n delete\n delete directory\n upload file (some known file, like /etc/hosts, or make a new /tmp file with UUID)\n\t.... to directory\n resume upload file at offset (supported for all?)\n download file\n resumeDownload file\n cancel transfer\n get directory contents\n \n */\n#pragma mark -\n#pragma mark Callbacks\n\n/*!\tThese callbacks work by adding their method name to the dictionary so we can tell what has been run.\n\tTemporarily scrunched to one line per method, to make it easy to count and sort.\n\n*/\n\n- (void)connection:(id <AbstractConnectionProtocol>)con didChangeToDirectory:(NSString *)dirPath { [self setCurrentDirectory:dirPath]; NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:dirPath forKey:NSStringFromSelector(_cmd)]; }\n- (void)connection:(id <AbstractConnectionProtocol>)con didConnectToHost:(NSString *)host { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:host forKey:NSStringFromSelector(_cmd)]; }\n- (void)connection:(id <AbstractConnectionProtocol>)con didCreateDirectory:(NSString *)dirPath { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:dirPath forKey:NSStringFromSelector(_cmd)]; }\n- (void)connection:(id <AbstractConnectionProtocol>)con didDeleteDirectory:(NSString *)dirPath { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:dirPath forKey:NSStringFromSelector(_cmd)]; }\n- (void)connection:(id <AbstractConnectionProtocol>)con didDeleteFile:(NSString *)path { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:path forKey:NSStringFromSelector(_cmd)]; }\n- (void)connection:(id <AbstractConnectionProtocol>)con didDisconnectFromHost:(NSString *)host { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:host forKey:NSStringFromSelector(_cmd)]; }\n- (void)connection:(id <AbstractConnectionProtocol>)con didReceiveContents:(NSArray *)contents ofDirectory:(NSString *)dirPath { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:contents forKey:NSStringFromSelector(_cmd)]; }\n- (void)connection:(id <AbstractConnectionProtocol>)con didReceiveError:(NSError *)error { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:error forKey:NSStringFromSelector(_cmd)]; }\n- (void)connection:(id <AbstractConnectionProtocol>)con didRename:(NSString *)fromPath to:(NSString *)toPath { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:[NSString stringWithFormat:@\"%@ -> %@\",fromPath,toPath]  forKey:NSStringFromSelector(_cmd)]; }\n- (void)connection:(id <AbstractConnectionProtocol>)con didSetPermissionsForFile:(NSString *)path { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:path forKey:NSStringFromSelector(_cmd)]; }\n- (void)connection:(id <AbstractConnectionProtocol>)con download:(NSString *)path progressedTo:(NSNumber *)percent { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:[NSString stringWithFormat:@\"%@: %@%%\",path,percent]  forKey:NSStringFromSelector(_cmd)]; }\n- (void)connection:(id <AbstractConnectionProtocol>)con download:(NSString *)path receivedDataOfLength:(int)length { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:[NSString stringWithFormat:@\"%@: %d bytes\",path,length]  forKey:NSStringFromSelector(_cmd)]; }\n- (void)connection:(id <AbstractConnectionProtocol>)con downloadDidBegin:(NSString *)remotePath { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:remotePath forKey:NSStringFromSelector(_cmd)]; }\n- (void)connection:(id <AbstractConnectionProtocol>)con downloadDidFinish:(NSString *)remotePath { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:remotePath forKey:NSStringFromSelector(_cmd)]; }\n- (NSString *)connection:(id <AbstractConnectionProtocol>)con needsAccountForUsername:(NSString *)username { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:username forKey:NSStringFromSelector(_cmd)]; return @\"foo\"; }\n- (void)connection:(id <AbstractConnectionProtocol>)con upload:(NSString *)remotePath progressedTo:(NSNumber *)percent { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:[NSString stringWithFormat:@\"%@: %@%%\",remotePath,percent]  forKey:NSStringFromSelector(_cmd)]; }\n- (void)connection:(id <AbstractConnectionProtocol>)con upload:(NSString *)remotePath sentDataOfLength:(int)length { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:[NSString stringWithFormat:@\"%@: %d bytes\",remotePath,length]  forKey:NSStringFromSelector(_cmd)]; }\n- (void)connection:(id <AbstractConnectionProtocol>)con uploadDidBegin:(NSString *)remotePath { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:remotePath forKey:NSStringFromSelector(_cmd)]; }\n- (void)connection:(id <AbstractConnectionProtocol>)con uploadDidFinish:(NSString *)remotePath { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:remotePath forKey:NSStringFromSelector(_cmd)]; }\n- (void)connectionDidCancelTransfer:(id <AbstractConnectionProtocol>)con { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:[NSNumber numberWithBool:YES] forKey:NSStringFromSelector(_cmd)]; }\n- (void)connectionDidSendBadPassword:(id <AbstractConnectionProtocol>)con { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:[NSNumber numberWithBool:YES] forKey:NSStringFromSelector(_cmd)]; }\n\n\n\n#pragma mark -\n#pragma mark Main Test Suite\n\n\n/*!\tDo a full test suite\n*/\n- (void)runTestSuiteWithConnection:(id <AbstractConnectionProtocol>)aConn expectingFailure:(BOOL) inExpectConnectionFailure\n{\n\t\n\t[aConn setDelegate:self];\n\t\n\tBOOL done = NO;\n\tNSString *initialDirectory = nil;\n\n\tNSDate *dropDeadDate = [NSDate dateWithTimeIntervalSinceNow:120.0];\n\n\t[aConn connect];\n\n\twhile (!done && NSOrderedAscending == [((NSDate *)[NSDate date]) compare:(NSDate *)dropDeadDate])\n\t{\n\t\tif ([((NSObject *)aConn) isKindOfClass:[FTPConnection class]])\n\t\t{\n\t\t\tNSLog(@\"========= TEST: top of loop, state = %d, queue= %@\", [((FTPConnection *)aConn) state], [((FTPConnection *)aConn) queueDescription]);\n\t\t}\n\t\t\n\t\tif (0 == [myCallbackDictionary count])\t// We don't have any callbacks from the previous iteration\n\t\t{\n\t\t\tNSLog(@\"========= TEST: will run NSRunLoop\");\n\t\t\tBOOL found = [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:30.0]];\n\t\t\t//[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:20.0]];\n\t\t\t//[[NSRunLoop currentRunLoop] run];\n\t\t\tNSLog(@\"========= TEST: did  run NSRunLoop, found = %d dict = %@\", found, [[myCallbackDictionary allKeys] description]);\n\t\t\tif (!found)\n\t\t\t{\n\t\t\t\tdone = true;\t\t// nothing found after waiting this long, so we're done.\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tid value;\n\t\tNSDictionary *lastCallbackDictionary = [[myCallbackDictionary copy] autorelease];\n\t\t[myCallbackDictionary removeAllObjects];\t// clean out the original dict for the next pass\n\t\t\n\t\tif (nil != (value = [lastCallbackDictionary objectForKey:@\"connection:didReceiveError:\"]) )\n\t\t{\n\t\t\tNSLog(@\"========= TEST: Error message: %@\", value);\n\t\t\tUKTrue (inExpectConnectionFailure);\t// pass if we did expect an error!\n\t\t\tdone = YES;\t// we're done anyhow.\n\t\t}\n\t\telse if (nil != (value = [lastCallbackDictionary objectForKey:@\"connectionDidSendBadPassword:\"]) )\n\t\t{\n\t\t\tUKTrue (inExpectConnectionFailure);\t// pass if we did expect an error!\n\t\t\tdone = YES;\t// we're done anyhow.\n\t\t}\n\t\telse if (nil != (value = [lastCallbackDictionary objectForKey:@\"connection:didConnectToHost:\"]) )\n\t\t{\n\t\t\tNSLog(@\"========= TEST: Connected to host: %@\", value);\n\t\t\tUKFalse (inExpectConnectionFailure);\t// pass if we did not expect an error\n\t\t\t\n\t\t\t// NEXT TASK: MAKE A NEW DIRECTORY\n\t\t\t[aConn createDirectory:[NSString stringWithFormat:@\"d%ld\", myUniqueNumber]];\n\t\t}\n\t\telse if (nil != (value = [lastCallbackDictionary objectForKey:@\"connection:didCreateDirectory:\"]) )\n\t\t{\n\t\t\tNSLog(@\"========= TEST: Created directory called %@\", [NSString stringWithFormat:@\"d%ld\", myUniqueNumber]);\n\t\t\tUKPass(); // Got our directory\n\t\t\t\n\t\t\t// NEXT TASK: Get the contents of the current directory\n\t\t\t[aConn directoryContents];\n\t\t}\n\t\telse if (nil != (value = [lastCallbackDictionary objectForKey:@\"connection:didReceiveContents:ofDirectory:\"]) )\n\t\t{\n\t\t\tNSLog(@\"========= TEST: Got directory contents %@\", [value description]);\n\t\t\tUKPass(); // Got our directory ... REALY OUGHT TO VERIFY THAT OUR FILE IS IN THERE.\n\t\t\t\n\t\t\t// NEXT TASK: Change to that new directory\n\t\t\t[aConn changeToDirectory:[NSString stringWithFormat:@\"d%ld\", myUniqueNumber]];\n\t\t}\n\t\telse if (nil != (value = [lastCallbackDictionary objectForKey:@\"connection:didChangeToDirectory:\"]) )\n\t\t{\n\t\t\tif (nil == initialDirectory)\n\t\t\t{\n\t\t\t\tinitialDirectory = [self currentDirectory];\t// this will depend on what connection we have\n\t\t\t\tUKPass(); // Got our directory ... REALY OUGHT TO VERIFY THAT OUR FILE IS IN THERE.\n\t\t\t}\n\t\t\telse\t// second change; make sure we are within initial directory\n\t\t\t{\n\t\t\t\tNSString *expectedNewDirectory = [initialDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@\"d%ld\", myUniqueNumber]];\n\t\t\t\tUKStringsEqual([self currentDirectory], expectedNewDirectory);\n\t\t\t}\n\n\t\t\tNSLog(@\"========= TEST: Changed to directory %@\", [value description]);\n\t\t\t\t\t\t\n\t\t\t// NEXT TASK: Upload a file\n\t\t\t[aConn uploadFile:@\"/etc/hosts\"];\n\t\t}\n\t\telse if (nil != (value = [lastCallbackDictionary objectForKey:@\"connection:uploadDidFinish:\"]) )\n\t\t{\n\t\t\t\n\t\t\t\n\t\t\tNSLog(@\"========= TEST: Done uploading  %@\", [value description]);\n\t\t\tUKPass(); // Got our directory ... REALY OUGHT TO VERIFY THAT OUR FILE IS IN THERE.\n\t\t\t\n\t\t\tdone = YES;\t\t// done for now ... we don't have any more tests.\n\t\t\t\n\t\t}\n\t\t\n\n\t\t\t\n\t\t\t\n\t\t\n\t\t\t\t/*\n\t\t\t\t changing to directory (good/bad)\n\t\t\t\t getting directory (as expected?)\n\t\t\t\t making directory (good/bad)\n\t\t\t\t making directory with certain permissions\n\t\t\t\t setting permissions (try a couple of times to make sure they actually change)  (success/fail)\n\t\t\t\t rename\n\t\t\t\t delete\n\t\t\t\t delete directory\n\t\t\t\t upload file (some known file, like /etc/hosts, or make a new /tmp file with UUID)\n\t\t\t\t .... to directory\n\t\t\t\t resume upload file at offset (supported for all?)\n\t\t\t\t download file\n\t\t\t\t resumeDownload file\n\t\t\t\t cancel transfer\n\t\t\t\t get directory contents\n*/\n\n\t}\n\t\n\t[aConn disconnect];\n\tNSLog(@\"========= TEST: Disconnected.\");\n\t \n\tif (! (NSOrderedAscending == [((NSDate *)[NSDate date]) compare:dropDeadDate]) )\n\t{\n\t\tUKFail();\t// Ran out of time!\n\t}\n}\n\n#pragma mark -\n#pragma mark File tests\n\n/*!\tTest a file connection.  Since there is no connection, we can't test for a bad file connection\n*/\n\n\n- (void)testFileConnection\n{\n\tFileConnection *fc = [FileConnection connection];\n\t\n\t[self runTestSuiteWithConnection:fc expectingFailure:NO];\n}\n\n\n#pragma mark -\n#pragma mark FTP tests\n\n\n\n- (void)testRealFTPConnection\n{\n\tNSDictionary *environment = [[NSProcessInfo processInfo] environment];\n\tNSString *password = [environment objectForKey:@\"biophonyTestPassword\"];\n\t\t\n\tFTPConnection *c = [FTPConnection connectionToHost:@\"test.biophony.com\" port:nil username:@\"test\" password:password];\n\t\n\t[self runTestSuiteWithConnection:c expectingFailure:NO];\n}\n\n\n- (void) testQuotesScan\n{\n\tFTPConnection *c = [FTPConnection connectionToHost:@\"bogus\" port:nil username:@\"test\" password:@\"nothing\"];\n\t\n\tUKNil([c scanBetweenQuotes:@\"hey there we're the monkeys\"]);\n\tUKNil([c scanBetweenQuotes:@\"This has one \\\" quote mark\"]);\n\tUKStringsEqual([c scanBetweenQuotes:@\"empty \\\"\\\" quoted string\"], @\"\");\n\tUKStringsEqual([c scanBetweenQuotes:@\"257 \\\"/somethingee\\\" created\"], @\"/somethingee\");\n\tUKStringsEqual([c scanBetweenQuotes:@\"257 \\\"/he said \\\"\\\"yo\\\"\\\" to me\\\" created\"], @\"/he said \\\"yo\\\" to me\");\n}\n\n/*\n \n- (void)testBadAccountFTPConnection\n{\n\tFTPConnection *c = [FTPConnection connectionToHost:@\"test.biophony.com\" port:nil username:@\"somebodyelse\" password:@\"mypassword\"];\n\t\n\t[self runTestSuiteWithConnection:c expectingFailure:YES];\n}\n\n- (void)testConnectionRefusedFTPConnection\n{\n\tFTPConnection *c = [FTPConnection connectionToHost:@\"vorlon.karelia.com\" port:nil username:@\"somebodyelse\" password:@\"mypassword\"];\n\t\n\t[self runTestSuiteWithConnection:c expectingFailure:YES];\n}\n\n- (void)testHangingFTPConnection\n{\n\tFTPConnection *c = [FTPConnection connectionToHost:@\"ftp.zocalo.net\" port:nil username:@\"somebodyelse\" password:@\"mypassword\"];\n\t\n\t[self runTestSuiteWithConnection:c expectingFailure:YES];\n}\n\n- (void)testNoHostFTPConnection\n{\n\tFTPConnection *c = [FTPConnection connectionToHost:@\"fdjskalrejwfje.com\" port:nil username:@\"somebodyelse\" password:@\"mypassword\"];\n\t\n\t[self runTestSuiteWithConnection:c expectingFailure:YES];\n}\n*/\n\n#pragma mark -\n#pragma mark Private Support\n\n\n- (NSMutableDictionary *)callbackDictionary\n{\n    return myCallbackDictionary; \n}\n- (void)setCallbackDictionary:(NSMutableDictionary *)aCallbackDictionary\n{\n    [aCallbackDictionary retain];\n    [myCallbackDictionary release];\n    myCallbackDictionary = aCallbackDictionary;\n}\n\n\n\n@end\n"
  },
  {
    "path": "ConnectionKit/Connection_Prefix.pch",
    "content": "\n#define LocalizedStringInConnectionKitBundle(key, comment) \\\n[[NSBundle bundleForClass:[self class]] localizedStringForKey:(key) value:@\"\" table:nil]\n\n#ifndef CK2WebDAVLog\n#define CK2WebDAVLog(...)\n#endif"
  },
  {
    "path": "ConnectionKit/NSImage+CK2OpenPanel.h",
    "content": "//\n//  NSImage+NSImage_CK2OpenPanel.h\n//  Connection\n//\n//  Created by Paul Kim on 1/27/13.\n//\n// Redistribution and use in source and binary forms, with or without modification,\n// are permitted provided that the following conditions are met:\n//\n// Redistributions of source code must retain the above copyright notice, this list\n// of conditions and the following disclaimer.\n//\n// Redistributions in binary form must reproduce the above copyright notice, this\n// list of conditions and the following disclaimer in the documentation and/or other\n// materials provided with the distribution.\n//\n// Neither the name of Karelia Software nor the names of its contributors may be used to\n// endorse or promote products derived from this software without specific prior\n// written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\n// SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\n// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY\n// WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n#import <Cocoa/Cocoa.h>\n\n@interface NSImage (CK2OpenPanel)\n\n- (NSImage *)ck2_imageWithBadgeImage:(NSImage *)image;\n\n@end\n"
  },
  {
    "path": "ConnectionKit/NSImage+CK2OpenPanel.m",
    "content": "//\n//  NSImage+NSImage_CK2OpenPanel.m\n//  Connection\n//\n//  Created by Paul Kim on 1/27/13.\n//\n// Redistribution and use in source and binary forms, with or without modification,\n// are permitted provided that the following conditions are met:\n//\n// Redistributions of source code must retain the above copyright notice, this list\n// of conditions and the following disclaimer.\n//\n// Redistributions in binary form must reproduce the above copyright notice, this\n// list of conditions and the following disclaimer in the documentation and/or other\n// materials provided with the distribution.\n//\n// Neither the name of Karelia Software nor the names of its contributors may be used to\n// endorse or promote products derived from this software without specific prior\n// written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\n// SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\n// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY\n// WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n\n#import \"NSImage+CK2OpenPanel.h\"\n\n@class CK2BlockImageRep;\n\n@interface CK2BlockImageRep : NSImageRep\n{\n    void           (^_drawBlock)(CK2BlockImageRep *);\n}\n\n@property (readwrite, copy) void    (^drawBlock)(CK2BlockImageRep *rep);\n\n+ (id)imageRepWithDrawBlock:(void (^)(CK2BlockImageRep *))block;\n\n- (id)initWithDrawBlock:(void (^)(CK2BlockImageRep *))block;\n\n@end\n\n\n@implementation CK2BlockImageRep\n\n@synthesize drawBlock = _drawBlock;\n\n+ (id)imageRepWithDrawBlock:(void (^)(CK2BlockImageRep *))block\n{\n    return [[[[self class] alloc] initWithDrawBlock:block] autorelease];\n}\n\n- (id)initWithDrawBlock:(void (^)(CK2BlockImageRep *))block\n{\n    if ((self = [super init]) != nil)\n    {\n        [self setDrawBlock:block];\n    }\n    return self;\n}\n\n#pragma mark NSCopying method\n\n- (id)copyWithZone:(NSZone *)zone\n{\n\tCK2BlockImageRep\t*copy;\n    \n\tcopy = [super copyWithZone:zone];\n    \n    // NSImageRep uses NSCopyObject so we have to force a copy here (which actually\n    // just retains the object in this case).\n    copy->_drawBlock = [_drawBlock copy];\n\t\n\treturn copy;\n}\n\n- (void)dealloc\n{\n    [self setDrawBlock:nil];\n    \n    [super dealloc];\n}\n\n#pragma mark NSImageRep methods\n\n- (BOOL)draw\n{\n    if (_drawBlock != NULL)\n    {\n        _drawBlock(self);\n        \n        return YES;\n    }\n    return NO;\n}\n\n@end\n\n\n@implementation NSImage (CK2OpenPanel)\n\n+ (id)ck2_imageWithSize:(NSSize)size usingDrawBlock:(void (^)(CK2BlockImageRep *))block\n{\n    return [[[[self class] alloc] initCK2WithSize:size usingDrawBlock:block] autorelease];\n}\n\n// Using the CK2 prefix for -init methods confuses the static analyzer so it's buried within the method name here\n- (id)initCK2WithSize:(NSSize)size usingDrawBlock:(void (^)(CK2BlockImageRep *))block\n{\n    if ((self = [self initWithSize:size]) != nil)\n    {\n        CK2BlockImageRep        *rep;\n        \n        rep = [CK2BlockImageRep imageRepWithDrawBlock:block];\n        [rep setSize:size];\n        [self addRepresentation:rep];\n    }\n    return self;\n}\n\n- (NSImage *)ck2_imageWithBadgeImage:(NSImage *)badgeImage\n{\n    NSImage                 *image;\n\t\n    image = [[self copy] autorelease];\n    \n    return [NSImage ck2_imageWithSize:[self size] usingDrawBlock:\n            ^(CK2BlockImageRep *blockRep)\n            {\n                NSRect  rect;\n                \n                [image drawAtPoint:NSZeroPoint fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0];\n               \n                rect.origin = NSZeroPoint;\n                rect.size = [blockRep size];\n                [badgeImage drawInRect:rect fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0];\n            }];\n}\n\n\n\n@end\n\n"
  },
  {
    "path": "ConnectionKit/NSURL+CK2OpenPanel.h",
    "content": "//\n//  NSURL+CKRemote.h\n//  ConnectionKit\n//\n//  Created by Paul Kim on 12/15/12.\n//  Copyright (c) 2012 Paul Kim. All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without modification,\n// are permitted provided that the following conditions are met:\n//\n// Redistributions of source code must retain the above copyright notice, this list\n// of conditions and the following disclaimer.\n//\n// Redistributions in binary form must reproduce the above copyright notice, this\n// list of conditions and the following disclaimer in the documentation and/or other\n// materials provided with the distribution.\n//\n// Neither the name of Karelia Software nor the names of its contributors may be used to\n// endorse or promote products derived from this software without specific prior\n// written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\n// SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\n// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY\n// WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n#import <AppKit/AppKit.h>\n\n@interface NSURL (CK2OpenPanel)\n\n+ (NSURL *)ck2_loadingURL;\n+ (NSURL *)ck2_errorURL;\n+ (NSURL *)ck2_errorURLWithMessage:(NSString *)message;\n\n/**\n @return    A comparator to compare the last component of URLs alphabetically.\n */\n+ (NSComparator)ck2_displayComparator;\n\n- (BOOL)ck2_isPlaceholder;\n\n- (NSString *)ck2_displayName;\n- (NSImage *)ck2_icon;\n- (NSNumber *)ck2_size;\n- (NSDate *)ck2_dateModified;\n- (NSString *)ck2_kind;\n- (BOOL)ck2_isDirectory;\n- (BOOL)ck2_isPackage;\n- (BOOL)ck2_isHidden;\n\n- (NSURL *)ck2_root;\n- (NSURL *)ck2_parentURL;\n\n/**\n Will return YES if receiver and given url are the same.\n \n @return    Whether the receiver represents an ancestory directory of the given url.\n */\n- (BOOL)ck2_isAncestorOfURL:(NSURL *)url;\n\n- (NSURL *)ck2_URLByDeletingTrailingSlash;\n\n@end\n"
  },
  {
    "path": "ConnectionKit/NSURL+CK2OpenPanel.m",
    "content": "//\n//  NSURL+CKRemote.m\n//  ConnectionKit\n//\n//  Created by Paul Kim on 12/15/12.\n//  Copyright (c) 2012 Paul Kim. All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without modification,\n// are permitted provided that the following conditions are met:\n//\n// Redistributions of source code must retain the above copyright notice, this list\n// of conditions and the following disclaimer.\n//\n// Redistributions in binary form must reproduce the above copyright notice, this\n// list of conditions and the following disclaimer in the documentation and/or other\n// materials provided with the distribution.\n//\n// Neither the name of Karelia Software nor the names of its contributors may be used to\n// endorse or promote products derived from this software without specific prior\n// written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\n// SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\n// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY\n// WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n#import \"NSURL+CK2OpenPanel.h\"\n#import \"CK2FileManager.h\"\n#import \"NSImage+CK2OpenPanel.h\"\n#import <dispatch/dispatch.h>\n\n@interface CK2PlaceholderURL : NSURL\n@end\n\n\n@implementation NSURL (CK2OpenPanel)\n\n+ (NSURL *)ck2_loadingURL\n{\n    return [[[CK2PlaceholderURL alloc] initWithString:[NSLocalizedStringFromTableInBundle(@\"Loading…\", nil, [NSBundle bundleForClass:[self class]], @\"Loading placeholder\")stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]] autorelease];\n}\n\n+ (NSURL *)ck2_errorURL\n{\n    return [[[CK2PlaceholderURL alloc] initWithString:[NSLocalizedStringFromTableInBundle(@\"Error\", nil, [NSBundle bundleForClass:[self class]], @\"Error placedholer\")stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]] autorelease];\n}\n\n+ (NSURL *)ck2_errorURLWithMessage:(NSString *)message\n{\n    return [[[CK2PlaceholderURL alloc] initWithString:[message stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]] autorelease];\n}\n\n\n+ (NSComparator)ck2_displayComparator\n{\n    return [[^NSComparisonResult(id obj1, id obj2)\n             {\n                  return [[obj1 lastPathComponent] caseInsensitiveCompare:[obj2 lastPathComponent]];\n             } copy] autorelease];\n}\n\n\n- (BOOL)ck2_isPlaceholder\n{\n    return NO;\n}\n\n- (NSString *)ck2_displayName\n{\n    id          value;\n    NSError     *error;\n    \n    if ([self getResourceValue:&value forKey:NSURLLocalizedNameKey error:&error])\n    {\n        return value;\n    }\n    else\n    {\n        NSLog(@\"Error getting name for URL %@: %@\", [self absoluteString], error);\n    }\n    return @\"\";\n}\n\n- (NSImage *)ck2_icon\n{\n    id          value;\n    NSError     *error;\n        \n    if ([self getResourceValue:&value forKey:NSURLEffectiveIconKey error:&error])\n    {\n        NSImage     *image;\n        NSURL       *actualURL;\n\n        image = nil;\n        actualURL = [self ck2_destinationURL];\n        \n        if (value == nil)\n        {\n            // Value may not be set (i.e. we created this URL instead of having it returned from CK2FileManager). We\n            // provide some default images in this case.\n            if ([actualURL ck2_isDirectory] && ![actualURL ck2_isPackage])\n            {\n                image = [NSImage imageNamed:NSImageNameFolder];\n            }\n            else\n            {\n                image = [[NSWorkspace sharedWorkspace] iconForFileType: NSFileTypeForHFSTypeCode(kGenericDocumentIcon)];\n            }\n        }\n        else if ([value isKindOfClass:[NSImage class]])\n        {\n            image = value;\n        }\n        else\n        {\n            NSLog(@\"Received unexpected type for icon: %@\", [value class]);\n            return nil;\n        }\n        \n        if (![self isEqual:actualURL])\n        {\n            image = [image ck2_imageWithBadgeImage:[[NSWorkspace sharedWorkspace] iconForFileType:NSFileTypeForHFSTypeCode(kAliasBadgeIcon)]];\n        }\n        \n        return image;\n    }\n    else\n    {\n        NSLog(@\"Error getting icon for URL %@: %@\", [self absoluteString], error);\n    }\n\n    return nil;\n}\n\n- (NSDate *)ck2_dateModified\n{\n    id          value;\n    NSError     *error;\n    \n    if ([self getResourceValue:&value forKey:NSURLContentModificationDateKey error:&error])\n    {\n        return value;\n    }\n    else\n    {\n        NSLog(@\"Error getting date modified for URL %@: %@\", [self absoluteString], error);\n    }\n    return nil;\n}\n\n- (NSString *)ck2_kind\n{\n    if ([self isFileURL])\n    {\n        id          value;\n        NSError     *error;\n        \n        if ([self getResourceValue:&value forKey:NSURLLocalizedTypeDescriptionKey error:&error])\n        {\n            return value;\n        }\n        else\n        {\n            NSLog(@\"Error getting kind for URL %@: %@\", [self absoluteString], error);\n        }\n    }\n    else\n    {\n        NSString        *type;\n        OSStatus        status;\n        CFStringRef     kindString;\n\n        if ([self ck2_isDirectory] && ![self ck2_isPackage])\n        {\n            return @\"Folder\";\n        }\n        else if ([self ck2_isSymbolicLink])\n        {\n            return @\"Alias\";\n        }\n\n        type = [self pathExtension];\n        status = LSCopyKindStringForTypeInfo(kLSUnknownType, kLSUnknownCreator, (CFStringRef)type, &kindString);\n        \n        if (status == noErr)\n        {\n            return [(NSString *)kindString autorelease];\n        }\n        else\n        {\n            NSLog(@\"Error getting kind for URL %@: %s\", [self absoluteString], GetMacOSStatusCommentString(status));\n        }\n    }\n    return @\"\";\n}\n\n- (NSNumber *)ck2_size\n{\n    id          value;\n    NSError     *error;\n    \n    if ([self getResourceValue:&value forKey:NSURLFileSizeKey error:&error])\n    {\n        return value;\n    }\n    else\n    {\n        NSLog(@\"Error getting size for URL %@: %@\", [self absoluteString], error);\n    }\n    return nil;\n}\n\n- (BOOL)ck2_isDirectory\n{\n    id          value;\n    NSError     *error;\n    NSURL       *actualURL;\n    \n    actualURL = [self ck2_destinationURL];\n    \n    if ([actualURL getResourceValue:&value forKey:NSURLIsDirectoryKey error:&error])\n    {\n        if (value == nil)\n        {\n            // Info is not filled out. We will default to YES to force a directory listing\n            return YES;\n        }\n        \n        return [value boolValue];\n    }\n    else\n    {\n        NSLog(@\"Error getting isDirectory for URL %@: %@\", [self absoluteString], error);\n    }\n    return NO;\n}\n\n- (BOOL)ck2_isPackage\n{\n    id          value;\n    NSError     *error;\n        \n    if ([self getResourceValue:&value forKey:NSURLIsPackageKey error:&error])\n    {\n        return [value boolValue];\n    }\n    else\n    {\n        NSLog(@\"Error getting isPackage for URL %@: %@\", [self absoluteString], error);\n    }\n    return NO;\n}\n\n- (BOOL)ck2_isHidden\n{\n    id          value;\n    NSError     *error;\n    \n    if ([self getResourceValue:&value forKey:NSURLIsHiddenKey error:&error])\n    {\n        return [value boolValue];\n    }\n    else\n    {\n        NSLog(@\"Error getting isHidden for URL %@: %@\", [self absoluteString], error);\n    }\n    return NO;\n}\n\n\n- (BOOL)ck2_isSymbolicLink\n{\n    id      value;\n    NSError *error;\n    \n    error = nil;\n    if ([self getResourceValue:&value forKey:NSURLIsSymbolicLinkKey error:&error])\n    {\n        return [value boolValue];\n    }\n    else\n    {\n        NSLog(@\"Error determining if symbolic link for url %@: %@\", self, error);\n    }\n    return NO;\n}\n\n- (NSURL *)ck2_destinationURL\n{\n    id      value;\n    NSError *error;\n\n    error = nil;\n    \n    // Not sure if CK2URLSymbolicLinkDestinationKey implies this but doing it just to be safe\n    if ([self ck2_isSymbolicLink])\n    {\n        if ([self getResourceValue:&value forKey:CK2URLSymbolicLinkDestinationKey error:&error])\n        {\n            return value;\n        }\n        else\n        {\n            NSLog(@\"Error getting destination link for url %@: %@\", self, error);\n        }\n    }\n\n    return self;\n}\n\n- (NSURL *)ck2_root\n{\n    return [[CK2FileManager URLWithPath:@\"/\" isDirectory:YES hostURL:self] absoluteURL];\n}\n\n- (NSURL *)ck2_parentURL\n{\n    id          value;\n    NSError     *error;\n    \n    if ([self getResourceValue:&value forKey:NSURLParentDirectoryURLKey error:&error])\n    {\n        if ((value == nil) || [value isKindOfClass:[NSURL class]])\n        {\n            return value;\n        }\n        else\n        {\n            NSLog(@\"Parent of URL %@ is not an URL type: %@\", self, [value class]);\n        }\n    }\n    else\n    {\n        NSLog(@\"Error getting parent URL for URL %@: %@\", self, error);\n    }\n    return nil;\n}\n\n\n- (BOOL)ck2_isAncestorOfURL:(NSURL *)url\n{\n    NSURL   *tempURL;\n    \n    tempURL = url;\n    \n    while (![tempURL isEqual:self])\n    {\n        if (tempURL == nil)\n        {\n            return NO;\n        }\n        tempURL = [tempURL ck2_parentURL];\n    }\n    return YES;\n}\n\n- (NSURL *)ck2_URLByDeletingTrailingSlash\n{\n    NSString    *path;\n    NSUInteger  startIndex, endIndex;\n    \n    path = [self path];\n    startIndex = 0;\n    endIndex = [path length];\n    if ([path hasPrefix:@\"//\"])\n    {\n        startIndex++;\n    }\n    if ([path hasSuffix:@\"/\"])\n    {\n        endIndex--;\n    }\n    path = [path substringWithRange:NSMakeRange(startIndex, endIndex - startIndex)];\n    \n    // Quite the rigamarole just to get an URL without the trailing slash\n    return [[CK2FileManager URLWithPath:path relativeToURL:[self ck2_root]] absoluteURL];\n}\n\n@end\n\n\n@implementation CK2PlaceholderURL\n\n- (BOOL)ck2_isPlaceholder\n{\n    return YES;\n}\n\n- (NSString *)ck2_displayName\n{\n    return [[self absoluteString] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];\n}\n\n- (NSImage *)ck2_icon\n{\n    return nil;\n}\n\n- (NSDate *)ck2_dateModified\n{\n    return nil;\n}\n\n- (NSString *)ck2_kind\n{\n    return @\"\";\n}\n\n- (NSString *)sizeString\n{\n    return @\"\";\n}\n\n- (BOOL)ck2_isDirectory\n{\n    return NO;\n}\n\n- (BOOL)ck2_canHazChildren\n{\n    return NO;\n}\n- (BOOL)isEqual:(id)object\n{\n    return self == object;\n}\n\n- (NSUInteger)hash\n{\n    return (NSUInteger)self;\n}\n\n- (id)copyWithZone:(NSZone *)zone\n{\n    return [self retain];\n}\n\n@end\n\n\n"
  },
  {
    "path": "ConnectionKit/en.lproj/CK2FilePreview.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<archive type=\"com.apple.InterfaceBuilder3.Cocoa.XIB\" version=\"8.00\">\n\t<data>\n\t\t<int key=\"IBDocument.SystemTarget\">1060</int>\n\t\t<string key=\"IBDocument.SystemVersion\">11G63</string>\n\t\t<string key=\"IBDocument.InterfaceBuilderVersion\">2844</string>\n\t\t<string key=\"IBDocument.AppKitVersion\">1138.51</string>\n\t\t<string key=\"IBDocument.HIToolboxVersion\">569.00</string>\n\t\t<object class=\"NSMutableDictionary\" key=\"IBDocument.PluginVersions\">\n\t\t\t<string key=\"NS.key.0\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t<string key=\"NS.object.0\">2844</string>\n\t\t</object>\n\t\t<array key=\"IBDocument.IntegratedClassDependencies\">\n\t\t\t<string>NSCustomObject</string>\n\t\t\t<string>NSCustomView</string>\n\t\t\t<string>NSDateFormatter</string>\n\t\t\t<string>NSImageCell</string>\n\t\t\t<string>NSImageView</string>\n\t\t\t<string>NSNumberFormatter</string>\n\t\t\t<string>NSTextField</string>\n\t\t\t<string>NSTextFieldCell</string>\n\t\t</array>\n\t\t<array key=\"IBDocument.PluginDependencies\">\n\t\t\t<string>com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t</array>\n\t\t<object class=\"NSMutableDictionary\" key=\"IBDocument.Metadata\">\n\t\t\t<string key=\"NS.key.0\">PluginDependencyRecalculationVersion</string>\n\t\t\t<integer value=\"1\" key=\"NS.object.0\"/>\n\t\t</object>\n\t\t<array class=\"NSMutableArray\" key=\"IBDocument.RootObjects\" id=\"1000\">\n\t\t\t<object class=\"NSCustomObject\" id=\"1001\">\n\t\t\t\t<string key=\"NSClassName\">CK2BrowserPreviewController</string>\n\t\t\t</object>\n\t\t\t<object class=\"NSCustomObject\" id=\"1003\">\n\t\t\t\t<string key=\"NSClassName\">FirstResponder</string>\n\t\t\t</object>\n\t\t\t<object class=\"NSCustomObject\" id=\"1004\">\n\t\t\t\t<string key=\"NSClassName\">NSApplication</string>\n\t\t\t</object>\n\t\t\t<object class=\"NSCustomView\" id=\"1005\">\n\t\t\t\t<reference key=\"NSNextResponder\"/>\n\t\t\t\t<int key=\"NSvFlags\">18</int>\n\t\t\t\t<array class=\"NSMutableArray\" key=\"NSSubviews\">\n\t\t\t\t\t<object class=\"NSTextField\" id=\"84804186\">\n\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"1005\"/>\n\t\t\t\t\t\t<int key=\"NSvFlags\">290</int>\n\t\t\t\t\t\t<string key=\"NSFrame\">{{69, 16}, {128, 17}}</string>\n\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"1005\"/>\n\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t<reference key=\"NSNextKeyView\"/>\n\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:1535</string>\n\t\t\t\t\t\t<bool key=\"NSEnabled\">YES</bool>\n\t\t\t\t\t\t<object class=\"NSTextFieldCell\" key=\"NSCell\" id=\"885416351\">\n\t\t\t\t\t\t\t<int key=\"NSCellFlags\">69206081</int>\n\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">-1874851840</int>\n\t\t\t\t\t\t\t<string key=\"NSContents\">Today, 3:30 PM</string>\n\t\t\t\t\t\t\t<object class=\"NSFont\" key=\"NSSupport\" id=\"26\">\n\t\t\t\t\t\t\t\t<string key=\"NSName\">LucidaGrande</string>\n\t\t\t\t\t\t\t\t<double key=\"NSSize\">11</double>\n\t\t\t\t\t\t\t\t<int key=\"NSfFlags\">3100</int>\n\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t<object class=\"NSDateFormatter\" key=\"NSFormatter\" id=\"390421244\">\n\t\t\t\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"NS.attributes\">\n\t\t\t\t\t\t\t\t\t<integer value=\"1\" key=\"dateStyle\"/>\n\t\t\t\t\t\t\t\t\t<boolean value=\"YES\" key=\"doesRelativeDateFormatting\"/>\n\t\t\t\t\t\t\t\t\t<integer value=\"1040\" key=\"formatterBehavior\"/>\n\t\t\t\t\t\t\t\t\t<integer value=\"1\" key=\"timeStyle\"/>\n\t\t\t\t\t\t\t\t</dictionary>\n\t\t\t\t\t\t\t\t<string key=\"NS.format\">M/d/yy h:mm a</string>\n\t\t\t\t\t\t\t\t<bool key=\"NS.natural\">NO</bool>\n\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t<string key=\"NSCellIdentifier\">_NS:1535</string>\n\t\t\t\t\t\t\t<reference key=\"NSControlView\" ref=\"84804186\"/>\n\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"NSBackgroundColor\" id=\"549923708\">\n\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">6</int>\n\t\t\t\t\t\t\t\t<string key=\"NSCatalogName\">System</string>\n\t\t\t\t\t\t\t\t<string key=\"NSColorName\">controlColor</string>\n\t\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"NSColor\">\n\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">3</int>\n\t\t\t\t\t\t\t\t\t<bytes key=\"NSWhite\">MC42NjY2NjY2NjY3AA</bytes>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"NSTextColor\" id=\"400679941\">\n\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">6</int>\n\t\t\t\t\t\t\t\t<string key=\"NSCatalogName\">System</string>\n\t\t\t\t\t\t\t\t<string key=\"NSColorName\">controlTextColor</string>\n\t\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"NSColor\">\n\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">3</int>\n\t\t\t\t\t\t\t\t\t<bytes key=\"NSWhite\">MAA</bytes>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSTextField\" id=\"135966580\">\n\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"1005\"/>\n\t\t\t\t\t\t<int key=\"NSvFlags\">292</int>\n\t\t\t\t\t\t<string key=\"NSFrame\">{{15, 52}, {49, 17}}</string>\n\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"1005\"/>\n\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"1006551107\"/>\n\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:1535</string>\n\t\t\t\t\t\t<bool key=\"NSEnabled\">YES</bool>\n\t\t\t\t\t\t<object class=\"NSTextFieldCell\" key=\"NSCell\" id=\"421865053\">\n\t\t\t\t\t\t\t<int key=\"NSCellFlags\">605028416</int>\n\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">71336960</int>\n\t\t\t\t\t\t\t<string key=\"NSContents\">Kind</string>\n\t\t\t\t\t\t\t<reference key=\"NSSupport\" ref=\"26\"/>\n\t\t\t\t\t\t\t<string key=\"NSCellIdentifier\">_NS:1535</string>\n\t\t\t\t\t\t\t<reference key=\"NSControlView\" ref=\"135966580\"/>\n\t\t\t\t\t\t\t<reference key=\"NSBackgroundColor\" ref=\"549923708\"/>\n\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"NSTextColor\" id=\"417163196\">\n\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">6</int>\n\t\t\t\t\t\t\t\t<string key=\"NSCatalogName\">System</string>\n\t\t\t\t\t\t\t\t<string key=\"NSColorName\">disabledControlTextColor</string>\n\t\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"NSColor\">\n\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">3</int>\n\t\t\t\t\t\t\t\t\t<bytes key=\"NSWhite\">MC4zMzMzMzMzMzMzAA</bytes>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSTextField\" id=\"1006551107\">\n\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"1005\"/>\n\t\t\t\t\t\t<int key=\"NSvFlags\">290</int>\n\t\t\t\t\t\t<string key=\"NSFrame\">{{69, 52}, {125, 17}}</string>\n\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"1005\"/>\n\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"597191952\"/>\n\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:1535</string>\n\t\t\t\t\t\t<bool key=\"NSEnabled\">YES</bool>\n\t\t\t\t\t\t<object class=\"NSTextFieldCell\" key=\"NSCell\" id=\"82533156\">\n\t\t\t\t\t\t\t<int key=\"NSCellFlags\">69206081</int>\n\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">272631808</int>\n\t\t\t\t\t\t\t<string key=\"NSContents\">Application</string>\n\t\t\t\t\t\t\t<reference key=\"NSSupport\" ref=\"26\"/>\n\t\t\t\t\t\t\t<string key=\"NSCellIdentifier\">_NS:1535</string>\n\t\t\t\t\t\t\t<reference key=\"NSControlView\" ref=\"1006551107\"/>\n\t\t\t\t\t\t\t<reference key=\"NSBackgroundColor\" ref=\"549923708\"/>\n\t\t\t\t\t\t\t<reference key=\"NSTextColor\" ref=\"400679941\"/>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSTextField\" id=\"856410762\">\n\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"1005\"/>\n\t\t\t\t\t\t<int key=\"NSvFlags\">290</int>\n\t\t\t\t\t\t<string key=\"NSFrame\">{{69, 34}, {128, 17}}</string>\n\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"1005\"/>\n\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"551721855\"/>\n\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:1535</string>\n\t\t\t\t\t\t<bool key=\"NSEnabled\">YES</bool>\n\t\t\t\t\t\t<object class=\"NSTextFieldCell\" key=\"NSCell\" id=\"586442479\">\n\t\t\t\t\t\t\t<int key=\"NSCellFlags\">69206081</int>\n\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">-1874851840</int>\n\t\t\t\t\t\t\t<string key=\"NSContents\">0 B</string>\n\t\t\t\t\t\t\t<reference key=\"NSSupport\" ref=\"26\"/>\n\t\t\t\t\t\t\t<object class=\"NSNumberFormatter\" key=\"NSFormatter\" id=\"413931809\">\n\t\t\t\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"NS.attributes\">\n\t\t\t\t\t\t\t\t\t<boolean value=\"YES\" key=\"allowsFloats\"/>\n\t\t\t\t\t\t\t\t\t<integer value=\"1040\" key=\"formatterBehavior\"/>\n\t\t\t\t\t\t\t\t\t<object class=\"NSLocale\" key=\"locale\">\n\t\t\t\t\t\t\t\t\t\t<string key=\"NS.identifier\"/>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t<integer value=\"1\" key=\"maximumFractionDigits\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"negativeInfinitySymbol\">-∞</string>\n\t\t\t\t\t\t\t\t\t<string key=\"nilSymbol\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"positiveInfinitySymbol\">+∞</string>\n\t\t\t\t\t\t\t\t</dictionary>\n\t\t\t\t\t\t\t\t<string key=\"NS.positiveformat\">#.#</string>\n\t\t\t\t\t\t\t\t<string key=\"NS.negativeformat\">#.#</string>\n\t\t\t\t\t\t\t\t<nil key=\"NS.positiveattrs\"/>\n\t\t\t\t\t\t\t\t<nil key=\"NS.negativeattrs\"/>\n\t\t\t\t\t\t\t\t<nil key=\"NS.zero\"/>\n\t\t\t\t\t\t\t\t<object class=\"NSAttributedString\" key=\"NS.nil\">\n\t\t\t\t\t\t\t\t\t<string key=\"NSString\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSAttributedString\" key=\"NS.nan\">\n\t\t\t\t\t\t\t\t\t<string key=\"NSString\">NaN</string>\n\t\t\t\t\t\t\t\t\t<dictionary key=\"NSAttributes\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSDecimalNumberPlaceholder\" key=\"NS.min\" id=\"281711084\">\n\t\t\t\t\t\t\t\t\t<int key=\"NS.exponent\">0</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NS.length\">0</int>\n\t\t\t\t\t\t\t\t\t<bool key=\"NS.negative\">YES</bool>\n\t\t\t\t\t\t\t\t\t<bool key=\"NS.compact\">NO</bool>\n\t\t\t\t\t\t\t\t\t<int key=\"NS.mantissa.bo\">1</int>\n\t\t\t\t\t\t\t\t\t<bytes key=\"NS.mantissa\">AAAAAAAAAAAAAAAAAAAAAA</bytes>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<reference key=\"NS.max\" ref=\"281711084\"/>\n\t\t\t\t\t\t\t\t<object class=\"NSDecimalNumberHandler\" key=\"NS.rounding\">\n\t\t\t\t\t\t\t\t\t<int key=\"NS.roundingmode\">3</int>\n\t\t\t\t\t\t\t\t\t<bool key=\"NS.raise.overflow\">YES</bool>\n\t\t\t\t\t\t\t\t\t<bool key=\"NS.raise.underflow\">YES</bool>\n\t\t\t\t\t\t\t\t\t<bool key=\"NS.raise.dividebyzero\">YES</bool>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<string key=\"NS.decimal\">.</string>\n\t\t\t\t\t\t\t\t<string key=\"NS.thousand\">,</string>\n\t\t\t\t\t\t\t\t<bool key=\"NS.hasthousands\">NO</bool>\n\t\t\t\t\t\t\t\t<bool key=\"NS.localized\">NO</bool>\n\t\t\t\t\t\t\t\t<bool key=\"NS.allowsfloats\">YES</bool>\n\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t<string key=\"NSCellIdentifier\">_NS:1535</string>\n\t\t\t\t\t\t\t<reference key=\"NSControlView\" ref=\"856410762\"/>\n\t\t\t\t\t\t\t<reference key=\"NSBackgroundColor\" ref=\"549923708\"/>\n\t\t\t\t\t\t\t<reference key=\"NSTextColor\" ref=\"400679941\"/>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSTextField\" id=\"597191952\">\n\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"1005\"/>\n\t\t\t\t\t\t<int key=\"NSvFlags\">292</int>\n\t\t\t\t\t\t<string key=\"NSFrame\">{{13, 34}, {51, 17}}</string>\n\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"1005\"/>\n\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"856410762\"/>\n\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:1535</string>\n\t\t\t\t\t\t<bool key=\"NSEnabled\">YES</bool>\n\t\t\t\t\t\t<object class=\"NSTextFieldCell\" key=\"NSCell\" id=\"521528717\">\n\t\t\t\t\t\t\t<int key=\"NSCellFlags\">605028416</int>\n\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">71336960</int>\n\t\t\t\t\t\t\t<string key=\"NSContents\">Size</string>\n\t\t\t\t\t\t\t<reference key=\"NSSupport\" ref=\"26\"/>\n\t\t\t\t\t\t\t<string key=\"NSCellIdentifier\">_NS:1535</string>\n\t\t\t\t\t\t\t<reference key=\"NSControlView\" ref=\"597191952\"/>\n\t\t\t\t\t\t\t<reference key=\"NSBackgroundColor\" ref=\"549923708\"/>\n\t\t\t\t\t\t\t<reference key=\"NSTextColor\" ref=\"417163196\"/>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSTextField\" id=\"551721855\">\n\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"1005\"/>\n\t\t\t\t\t\t<int key=\"NSvFlags\">292</int>\n\t\t\t\t\t\t<string key=\"NSFrame\">{{13, 19}, {51, 14}}</string>\n\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"1005\"/>\n\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"84804186\"/>\n\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:1535</string>\n\t\t\t\t\t\t<bool key=\"NSEnabled\">YES</bool>\n\t\t\t\t\t\t<object class=\"NSTextFieldCell\" key=\"NSCell\" id=\"420053265\">\n\t\t\t\t\t\t\t<int key=\"NSCellFlags\">605028416</int>\n\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">71336960</int>\n\t\t\t\t\t\t\t<string key=\"NSContents\">Modified</string>\n\t\t\t\t\t\t\t<reference key=\"NSSupport\" ref=\"26\"/>\n\t\t\t\t\t\t\t<string key=\"NSCellIdentifier\">_NS:1535</string>\n\t\t\t\t\t\t\t<reference key=\"NSControlView\" ref=\"551721855\"/>\n\t\t\t\t\t\t\t<reference key=\"NSBackgroundColor\" ref=\"549923708\"/>\n\t\t\t\t\t\t\t<reference key=\"NSTextColor\" ref=\"417163196\"/>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSTextField\" id=\"742555641\">\n\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"1005\"/>\n\t\t\t\t\t\t<int key=\"NSvFlags\">292</int>\n\t\t\t\t\t\t<string key=\"NSFrame\">{{13, 70}, {51, 17}}</string>\n\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"1005\"/>\n\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"558826524\"/>\n\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:1535</string>\n\t\t\t\t\t\t<bool key=\"NSEnabled\">YES</bool>\n\t\t\t\t\t\t<object class=\"NSTextFieldCell\" key=\"NSCell\" id=\"97601274\">\n\t\t\t\t\t\t\t<int key=\"NSCellFlags\">605028416</int>\n\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">71336960</int>\n\t\t\t\t\t\t\t<string key=\"NSContents\">Name</string>\n\t\t\t\t\t\t\t<reference key=\"NSSupport\" ref=\"26\"/>\n\t\t\t\t\t\t\t<string key=\"NSCellIdentifier\">_NS:1535</string>\n\t\t\t\t\t\t\t<reference key=\"NSControlView\" ref=\"742555641\"/>\n\t\t\t\t\t\t\t<reference key=\"NSBackgroundColor\" ref=\"549923708\"/>\n\t\t\t\t\t\t\t<reference key=\"NSTextColor\" ref=\"417163196\"/>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSTextField\" id=\"558826524\">\n\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"1005\"/>\n\t\t\t\t\t\t<int key=\"NSvFlags\">290</int>\n\t\t\t\t\t\t<string key=\"NSFrame\">{{69, 70}, {125, 17}}</string>\n\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"1005\"/>\n\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"135966580\"/>\n\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:1535</string>\n\t\t\t\t\t\t<bool key=\"NSEnabled\">YES</bool>\n\t\t\t\t\t\t<object class=\"NSTextFieldCell\" key=\"NSCell\" id=\"388212156\">\n\t\t\t\t\t\t\t<int key=\"NSCellFlags\">69206017</int>\n\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">272629760</int>\n\t\t\t\t\t\t\t<string key=\"NSContents\">Name</string>\n\t\t\t\t\t\t\t<reference key=\"NSSupport\" ref=\"26\"/>\n\t\t\t\t\t\t\t<string key=\"NSCellIdentifier\">_NS:1535</string>\n\t\t\t\t\t\t\t<reference key=\"NSControlView\" ref=\"558826524\"/>\n\t\t\t\t\t\t\t<reference key=\"NSBackgroundColor\" ref=\"549923708\"/>\n\t\t\t\t\t\t\t<reference key=\"NSTextColor\" ref=\"400679941\"/>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSImageView\" id=\"317149280\">\n\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"1005\"/>\n\t\t\t\t\t\t<int key=\"NSvFlags\">282</int>\n\t\t\t\t\t\t<set class=\"NSMutableSet\" key=\"NSDragTypes\">\n\t\t\t\t\t\t\t<string>Apple PDF pasteboard type</string>\n\t\t\t\t\t\t\t<string>Apple PICT pasteboard type</string>\n\t\t\t\t\t\t\t<string>Apple PNG pasteboard type</string>\n\t\t\t\t\t\t\t<string>NSFilenamesPboardType</string>\n\t\t\t\t\t\t\t<string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>\n\t\t\t\t\t\t\t<string>NeXT TIFF v4.0 pasteboard type</string>\n\t\t\t\t\t\t</set>\n\t\t\t\t\t\t<string key=\"NSFrame\">{{12, 149}, {186, 194}}</string>\n\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"1005\"/>\n\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"742555641\"/>\n\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t\t\t<bool key=\"NSEnabled\">YES</bool>\n\t\t\t\t\t\t<object class=\"NSImageCell\" key=\"NSCell\" id=\"598340168\">\n\t\t\t\t\t\t\t<int key=\"NSCellFlags\">134217728</int>\n\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">33554432</int>\n\t\t\t\t\t\t\t<object class=\"NSCustomResource\" key=\"NSContents\">\n\t\t\t\t\t\t\t\t<string key=\"NSClassName\">NSImage</string>\n\t\t\t\t\t\t\t\t<string key=\"NSResourceName\">NSApplicationIcon</string>\n\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t<string key=\"NSCellIdentifier\">_NS:9</string>\n\t\t\t\t\t\t\t<int key=\"NSAlign\">0</int>\n\t\t\t\t\t\t\t<int key=\"NSScale\">3</int>\n\t\t\t\t\t\t\t<int key=\"NSStyle\">0</int>\n\t\t\t\t\t\t\t<bool key=\"NSAnimates\">NO</bool>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<bool key=\"NSEditable\">YES</bool>\n\t\t\t\t\t</object>\n\t\t\t\t</array>\n\t\t\t\t<string key=\"NSFrameSize\">{210, 363}</string>\n\t\t\t\t<reference key=\"NSSuperview\"/>\n\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"317149280\"/>\n\t\t\t\t<string key=\"NSClassName\">CK2BrowserPreviewView</string>\n\t\t\t</object>\n\t\t</array>\n\t\t<object class=\"IBObjectContainer\" key=\"IBDocument.Objects\">\n\t\t\t<array class=\"NSMutableArray\" key=\"connectionRecords\">\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">view</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"1005\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">55</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_iconView</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"317149280\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">56</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_nameField</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"558826524\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">57</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_sizeField</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"856410762\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">59</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_kindField</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"1006551107\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">58</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_dateModifiedField</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"84804186\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">60</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_iconView</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1005\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"317149280\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">64</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_nameField</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1005\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"558826524\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">65</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_nameLabel</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1005\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"742555641\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">100</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_dateModifiedLabel</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1005\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"551721855\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">103</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_sizeLabel</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1005\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"597191952\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">102</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_sizeField</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1005\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"856410762\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">69</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_kindField</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1005\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"1006551107\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">68</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_kindLabel</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1005\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"135966580\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">101</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_dateModifiedField</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1005\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"84804186\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">70</int>\n\t\t\t\t</object>\n\t\t\t</array>\n\t\t\t<object class=\"IBMutableOrderedSet\" key=\"objectRecords\">\n\t\t\t\t<array key=\"orderedObjects\">\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">0</int>\n\t\t\t\t\t\t<array key=\"object\" id=\"0\"/>\n\t\t\t\t\t\t<reference key=\"children\" ref=\"1000\"/>\n\t\t\t\t\t\t<nil key=\"parent\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">-2</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t\t<string key=\"objectName\">File's Owner</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">-1</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1003\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t\t<string key=\"objectName\">First Responder</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">-3</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1004\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t\t<string key=\"objectName\">Application</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">1</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1005\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"317149280\"/>\n\t\t\t\t\t\t\t<reference ref=\"84804186\"/>\n\t\t\t\t\t\t\t<reference ref=\"135966580\"/>\n\t\t\t\t\t\t\t<reference ref=\"1006551107\"/>\n\t\t\t\t\t\t\t<reference ref=\"856410762\"/>\n\t\t\t\t\t\t\t<reference ref=\"597191952\"/>\n\t\t\t\t\t\t\t<reference ref=\"551721855\"/>\n\t\t\t\t\t\t\t<reference ref=\"742555641\"/>\n\t\t\t\t\t\t\t<reference ref=\"558826524\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">2</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"317149280\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"598340168\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1005\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">3</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"598340168\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"317149280\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">40</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"558826524\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"388212156\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1005\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">41</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"388212156\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"558826524\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">38</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"742555641\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"97601274\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1005\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">39</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"97601274\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"742555641\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">46</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"551721855\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"420053265\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1005\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">47</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"420053265\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"551721855\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">44</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"597191952\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"521528717\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1005\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">45</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"521528717\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"597191952\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">51</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"856410762\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"586442479\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1005\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">52</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"586442479\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"413931809\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"856410762\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">49</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1006551107\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"82533156\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1005\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">50</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"82533156\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1006551107\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">42</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"135966580\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"421865053\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1005\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">43</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"421865053\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"135966580\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">53</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"84804186\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"885416351\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1005\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">54</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"885416351\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"390421244\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"84804186\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">71</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"390421244\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"885416351\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">104</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"413931809\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"586442479\"/>\n\t\t\t\t\t</object>\n\t\t\t\t</array>\n\t\t\t</object>\n\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"flattenedProperties\">\n\t\t\t\t<string key=\"-1.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"-2.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"-3.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"1.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"104.CustomClassName\">CK2FileSizeFormatter</string>\n\t\t\t\t<integer value=\"1040\" key=\"104.IBNumberFormatterBehaviorMetadataKey\"/>\n\t\t\t\t<boolean value=\"YES\" key=\"104.IBNumberFormatterLocalizesFormatMetadataKey\"/>\n\t\t\t\t<string key=\"104.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"2.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"3.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"38.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"39.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"40.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"41.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"42.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"43.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"44.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"45.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"46.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"47.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"49.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"50.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"51.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"52.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"53.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"54.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<integer value=\"1\" key=\"71.IBDateFormatterBehaviorMetadataKey\"/>\n\t\t\t\t<string key=\"71.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t</dictionary>\n\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"unlocalizedProperties\"/>\n\t\t\t<nil key=\"activeLocalization\"/>\n\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"localizations\"/>\n\t\t\t<nil key=\"sourceID\"/>\n\t\t\t<int key=\"maxID\">104</int>\n\t\t</object>\n\t\t<object class=\"IBClassDescriber\" key=\"IBDocument.Classes\">\n\t\t\t<array class=\"NSMutableArray\" key=\"referencedPartialClassDescriptions\">\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">CK2BrowserPreviewController</string>\n\t\t\t\t\t<string key=\"superclassName\">NSViewController</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/CK2BrowserPreviewController.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">CK2BrowserPreviewView</string>\n\t\t\t\t\t<string key=\"superclassName\">NSView</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"_dateModifiedField\">NSTextField</string>\n\t\t\t\t\t\t<string key=\"_dateModifiedLabel\">NSTextField</string>\n\t\t\t\t\t\t<string key=\"_iconView\">NSImageView</string>\n\t\t\t\t\t\t<string key=\"_kindField\">NSTextField</string>\n\t\t\t\t\t\t<string key=\"_kindLabel\">NSTextField</string>\n\t\t\t\t\t\t<string key=\"_nameField\">NSTextField</string>\n\t\t\t\t\t\t<string key=\"_nameLabel\">NSTextField</string>\n\t\t\t\t\t\t<string key=\"_sizeField\">NSTextField</string>\n\t\t\t\t\t\t<string key=\"_sizeLabel\">NSTextField</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_dateModifiedField\">\n\t\t\t\t\t\t\t<string key=\"name\">_dateModifiedField</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSTextField</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_dateModifiedLabel\">\n\t\t\t\t\t\t\t<string key=\"name\">_dateModifiedLabel</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSTextField</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_iconView\">\n\t\t\t\t\t\t\t<string key=\"name\">_iconView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSImageView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_kindField\">\n\t\t\t\t\t\t\t<string key=\"name\">_kindField</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSTextField</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_kindLabel\">\n\t\t\t\t\t\t\t<string key=\"name\">_kindLabel</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSTextField</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_nameField\">\n\t\t\t\t\t\t\t<string key=\"name\">_nameField</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSTextField</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_nameLabel\">\n\t\t\t\t\t\t\t<string key=\"name\">_nameLabel</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSTextField</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_sizeField\">\n\t\t\t\t\t\t\t<string key=\"name\">_sizeField</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSTextField</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_sizeLabel\">\n\t\t\t\t\t\t\t<string key=\"name\">_sizeLabel</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSTextField</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/CK2BrowserPreviewView.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">CK2FileSizeFormatter</string>\n\t\t\t\t\t<string key=\"superclassName\">NSNumberFormatter</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/CK2FileSizeFormatter.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t</array>\n\t\t</object>\n\t\t<int key=\"IBDocument.localizationMode\">0</int>\n\t\t<string key=\"IBDocument.TargetRuntimeIdentifier\">IBCocoaFramework</string>\n\t\t<object class=\"NSMutableDictionary\" key=\"IBDocument.PluginDeclaredDependencies\">\n\t\t\t<string key=\"NS.key.0\">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>\n\t\t\t<real value=\"1060\" key=\"NS.object.0\"/>\n\t\t</object>\n\t\t<bool key=\"IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion\">YES</bool>\n\t\t<int key=\"IBDocument.defaultPropertyAccessControl\">3</int>\n\t\t<object class=\"NSMutableDictionary\" key=\"IBDocument.LastKnownImageSizes\">\n\t\t\t<string key=\"NS.key.0\">NSApplicationIcon</string>\n\t\t\t<string key=\"NS.object.0\">{128, 128}</string>\n\t\t</object>\n\t</data>\n</archive>\n"
  },
  {
    "path": "ConnectionKit/en.lproj/CK2NewFolderWindow.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<archive type=\"com.apple.InterfaceBuilder3.Cocoa.XIB\" version=\"8.00\">\n\t<data>\n\t\t<int key=\"IBDocument.SystemTarget\">1060</int>\n\t\t<string key=\"IBDocument.SystemVersion\">11G63</string>\n\t\t<string key=\"IBDocument.InterfaceBuilderVersion\">2844</string>\n\t\t<string key=\"IBDocument.AppKitVersion\">1138.51</string>\n\t\t<string key=\"IBDocument.HIToolboxVersion\">569.00</string>\n\t\t<object class=\"NSMutableDictionary\" key=\"IBDocument.PluginVersions\">\n\t\t\t<string key=\"NS.key.0\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t<string key=\"NS.object.0\">2844</string>\n\t\t</object>\n\t\t<array key=\"IBDocument.IntegratedClassDependencies\">\n\t\t\t<string>NSButton</string>\n\t\t\t<string>NSButtonCell</string>\n\t\t\t<string>NSCustomObject</string>\n\t\t\t<string>NSProgressIndicator</string>\n\t\t\t<string>NSTextField</string>\n\t\t\t<string>NSTextFieldCell</string>\n\t\t\t<string>NSView</string>\n\t\t\t<string>NSWindowTemplate</string>\n\t\t</array>\n\t\t<array key=\"IBDocument.PluginDependencies\">\n\t\t\t<string>com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t</array>\n\t\t<object class=\"NSMutableDictionary\" key=\"IBDocument.Metadata\">\n\t\t\t<string key=\"NS.key.0\">PluginDependencyRecalculationVersion</string>\n\t\t\t<integer value=\"1\" key=\"NS.object.0\"/>\n\t\t</object>\n\t\t<array class=\"NSMutableArray\" key=\"IBDocument.RootObjects\" id=\"1000\">\n\t\t\t<object class=\"NSCustomObject\" id=\"1001\">\n\t\t\t\t<string key=\"NSClassName\">CK2NewFolderWindowController</string>\n\t\t\t</object>\n\t\t\t<object class=\"NSCustomObject\" id=\"1003\">\n\t\t\t\t<string key=\"NSClassName\">FirstResponder</string>\n\t\t\t</object>\n\t\t\t<object class=\"NSCustomObject\" id=\"1004\">\n\t\t\t\t<string key=\"NSClassName\">NSApplication</string>\n\t\t\t</object>\n\t\t\t<object class=\"NSWindowTemplate\" id=\"1005\">\n\t\t\t\t<int key=\"NSWindowStyleMask\">1</int>\n\t\t\t\t<int key=\"NSWindowBacking\">2</int>\n\t\t\t\t<string key=\"NSWindowRect\">{{196, 240}, {286, 137}}</string>\n\t\t\t\t<int key=\"NSWTFlags\">813173760</int>\n\t\t\t\t<string key=\"NSWindowTitle\">New Folder</string>\n\t\t\t\t<string key=\"NSWindowClass\">NSWindow</string>\n\t\t\t\t<nil key=\"NSViewClass\"/>\n\t\t\t\t<nil key=\"NSUserInterfaceItemIdentifier\"/>\n\t\t\t\t<object class=\"NSView\" key=\"NSWindowView\" id=\"1006\">\n\t\t\t\t\t<reference key=\"NSNextResponder\"/>\n\t\t\t\t\t<int key=\"NSvFlags\">256</int>\n\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSSubviews\">\n\t\t\t\t\t\t<object class=\"NSTextField\" id=\"841205750\">\n\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"1006\"/>\n\t\t\t\t\t\t\t<int key=\"NSvFlags\">268</int>\n\t\t\t\t\t\t\t<string key=\"NSFrame\">{{17, 100}, {132, 17}}</string>\n\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"1006\"/>\n\t\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"510197841\"/>\n\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:1535</string>\n\t\t\t\t\t\t\t<bool key=\"NSEnabled\">YES</bool>\n\t\t\t\t\t\t\t<object class=\"NSTextFieldCell\" key=\"NSCell\" id=\"208622466\">\n\t\t\t\t\t\t\t\t<int key=\"NSCellFlags\">68157504</int>\n\t\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">272630784</int>\n\t\t\t\t\t\t\t\t<string key=\"NSContents\">Name of new folder:</string>\n\t\t\t\t\t\t\t\t<object class=\"NSFont\" key=\"NSSupport\" id=\"1001981385\">\n\t\t\t\t\t\t\t\t\t<string key=\"NSName\">LucidaGrande</string>\n\t\t\t\t\t\t\t\t\t<double key=\"NSSize\">13</double>\n\t\t\t\t\t\t\t\t\t<int key=\"NSfFlags\">1044</int>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<string key=\"NSCellIdentifier\">_NS:1535</string>\n\t\t\t\t\t\t\t\t<reference key=\"NSControlView\" ref=\"841205750\"/>\n\t\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"NSBackgroundColor\" id=\"866014036\">\n\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">6</int>\n\t\t\t\t\t\t\t\t\t<string key=\"NSCatalogName\">System</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSColorName\">controlColor</string>\n\t\t\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"NSColor\">\n\t\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">3</int>\n\t\t\t\t\t\t\t\t\t\t<bytes key=\"NSWhite\">MC42NjY2NjY2NjY3AA</bytes>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"NSTextColor\" id=\"85672501\">\n\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">6</int>\n\t\t\t\t\t\t\t\t\t<string key=\"NSCatalogName\">System</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSColorName\">controlTextColor</string>\n\t\t\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"NSColor\" id=\"386908727\">\n\t\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">3</int>\n\t\t\t\t\t\t\t\t\t\t<bytes key=\"NSWhite\">MAA</bytes>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"NSTextField\" id=\"510197841\">\n\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"1006\"/>\n\t\t\t\t\t\t\t<int key=\"NSvFlags\">266</int>\n\t\t\t\t\t\t\t<string key=\"NSFrame\">{{20, 70}, {246, 22}}</string>\n\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"1006\"/>\n\t\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"888941402\"/>\n\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t\t\t\t<bool key=\"NSEnabled\">YES</bool>\n\t\t\t\t\t\t\t<object class=\"NSTextFieldCell\" key=\"NSCell\" id=\"902382382\">\n\t\t\t\t\t\t\t\t<int key=\"NSCellFlags\">-1804599231</int>\n\t\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">272630784</int>\n\t\t\t\t\t\t\t\t<string key=\"NSContents\">untitled folder</string>\n\t\t\t\t\t\t\t\t<reference key=\"NSSupport\" ref=\"1001981385\"/>\n\t\t\t\t\t\t\t\t<string key=\"NSCellIdentifier\">_NS:9</string>\n\t\t\t\t\t\t\t\t<reference key=\"NSControlView\" ref=\"510197841\"/>\n\t\t\t\t\t\t\t\t<bool key=\"NSDrawsBackground\">YES</bool>\n\t\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"NSBackgroundColor\">\n\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">6</int>\n\t\t\t\t\t\t\t\t\t<string key=\"NSCatalogName\">System</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSColorName\">textBackgroundColor</string>\n\t\t\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"NSColor\">\n\t\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">3</int>\n\t\t\t\t\t\t\t\t\t\t<bytes key=\"NSWhite\">MQA</bytes>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"NSTextColor\">\n\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">6</int>\n\t\t\t\t\t\t\t\t\t<string key=\"NSCatalogName\">System</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSColorName\">textColor</string>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSColor\" ref=\"386908727\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"NSButton\" id=\"435147664\">\n\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"1006\"/>\n\t\t\t\t\t\t\t<int key=\"NSvFlags\">289</int>\n\t\t\t\t\t\t\t<string key=\"NSFrame\">{{191, 12}, {81, 32}}</string>\n\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"1006\"/>\n\t\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t\t\t\t<bool key=\"NSEnabled\">YES</bool>\n\t\t\t\t\t\t\t<object class=\"NSButtonCell\" key=\"NSCell\" id=\"841929317\">\n\t\t\t\t\t\t\t\t<int key=\"NSCellFlags\">67108864</int>\n\t\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">134217728</int>\n\t\t\t\t\t\t\t\t<string key=\"NSContents\">Create</string>\n\t\t\t\t\t\t\t\t<reference key=\"NSSupport\" ref=\"1001981385\"/>\n\t\t\t\t\t\t\t\t<string key=\"NSCellIdentifier\">_NS:9</string>\n\t\t\t\t\t\t\t\t<reference key=\"NSControlView\" ref=\"435147664\"/>\n\t\t\t\t\t\t\t\t<int key=\"NSButtonFlags\">-2038284288</int>\n\t\t\t\t\t\t\t\t<int key=\"NSButtonFlags2\">129</int>\n\t\t\t\t\t\t\t\t<string key=\"NSAlternateContents\"/>\n\t\t\t\t\t\t\t\t<string type=\"base64-UTF8\" key=\"NSKeyEquivalent\">DQ</string>\n\t\t\t\t\t\t\t\t<int key=\"NSPeriodicDelay\">200</int>\n\t\t\t\t\t\t\t\t<int key=\"NSPeriodicInterval\">25</int>\n\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"NSButton\" id=\"888941402\">\n\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"1006\"/>\n\t\t\t\t\t\t\t<int key=\"NSvFlags\">289</int>\n\t\t\t\t\t\t\t<string key=\"NSFrame\">{{109, 12}, {82, 32}}</string>\n\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"1006\"/>\n\t\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"435147664\"/>\n\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t\t\t\t<bool key=\"NSEnabled\">YES</bool>\n\t\t\t\t\t\t\t<object class=\"NSButtonCell\" key=\"NSCell\" id=\"756020436\">\n\t\t\t\t\t\t\t\t<int key=\"NSCellFlags\">67108864</int>\n\t\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">134217728</int>\n\t\t\t\t\t\t\t\t<string key=\"NSContents\">Cancel</string>\n\t\t\t\t\t\t\t\t<reference key=\"NSSupport\" ref=\"1001981385\"/>\n\t\t\t\t\t\t\t\t<string key=\"NSCellIdentifier\">_NS:9</string>\n\t\t\t\t\t\t\t\t<reference key=\"NSControlView\" ref=\"888941402\"/>\n\t\t\t\t\t\t\t\t<int key=\"NSButtonFlags\">-2038284288</int>\n\t\t\t\t\t\t\t\t<int key=\"NSButtonFlags2\">129</int>\n\t\t\t\t\t\t\t\t<string key=\"NSAlternateContents\"/>\n\t\t\t\t\t\t\t\t<string type=\"base64-UTF8\" key=\"NSKeyEquivalent\">Gw</string>\n\t\t\t\t\t\t\t\t<int key=\"NSPeriodicDelay\">200</int>\n\t\t\t\t\t\t\t\t<int key=\"NSPeriodicInterval\">25</int>\n\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"NSTextField\" id=\"757507464\">\n\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"1006\"/>\n\t\t\t\t\t\t\t<int key=\"NSvFlags\">-2147483380</int>\n\t\t\t\t\t\t\t<string key=\"NSFrame\">{{17, 48}, {252, 14}}</string>\n\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"1006\"/>\n\t\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:1535</string>\n\t\t\t\t\t\t\t<bool key=\"NSEnabled\">YES</bool>\n\t\t\t\t\t\t\t<object class=\"NSTextFieldCell\" key=\"NSCell\" id=\"996063321\">\n\t\t\t\t\t\t\t\t<int key=\"NSCellFlags\">68157504</int>\n\t\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">138544128</int>\n\t\t\t\t\t\t\t\t<string key=\"NSContents\">This name is already taken.</string>\n\t\t\t\t\t\t\t\t<object class=\"NSFont\" key=\"NSSupport\">\n\t\t\t\t\t\t\t\t\t<string key=\"NSName\">LucidaGrande</string>\n\t\t\t\t\t\t\t\t\t<double key=\"NSSize\">11</double>\n\t\t\t\t\t\t\t\t\t<int key=\"NSfFlags\">3100</int>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<string key=\"NSCellIdentifier\">_NS:1535</string>\n\t\t\t\t\t\t\t\t<reference key=\"NSControlView\" ref=\"757507464\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSBackgroundColor\" ref=\"866014036\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSTextColor\" ref=\"85672501\"/>\n\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"NSProgressIndicator\" id=\"959700846\">\n\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"1006\"/>\n\t\t\t\t\t\t\t<int key=\"NSvFlags\">268</int>\n\t\t\t\t\t\t\t<string key=\"NSFrame\">{{250, 100}, {16, 16}}</string>\n\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"1006\"/>\n\t\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:945</string>\n\t\t\t\t\t\t\t<int key=\"NSpiFlags\">28938</int>\n\t\t\t\t\t\t\t<double key=\"NSMaxValue\">100</double>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</array>\n\t\t\t\t\t<string key=\"NSFrameSize\">{286, 137}</string>\n\t\t\t\t\t<reference key=\"NSSuperview\"/>\n\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"841205750\"/>\n\t\t\t\t</object>\n\t\t\t\t<string key=\"NSScreenRect\">{{0, 0}, {1920, 1178}}</string>\n\t\t\t\t<string key=\"NSMaxSize\">{10000000000000, 10000000000000}</string>\n\t\t\t\t<bool key=\"NSWindowIsRestorable\">NO</bool>\n\t\t\t</object>\n\t\t</array>\n\t\t<object class=\"IBObjectContainer\" key=\"IBDocument.Objects\">\n\t\t\t<array class=\"NSMutableArray\" key=\"connectionRecords\">\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">window</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"1005\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">3</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_okButton</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"435147664\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">25</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">ok:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"435147664\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">26</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">cancel:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"888941402\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">27</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_nameField</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"510197841\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">28</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_statusField</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"757507464\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">31</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_progressIndicator</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"959700846\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">33</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">delegate</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1005\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"1001\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">4</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">delegate</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"510197841\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"1001\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">24</int>\n\t\t\t\t</object>\n\t\t\t</array>\n\t\t\t<object class=\"IBMutableOrderedSet\" key=\"objectRecords\">\n\t\t\t\t<array key=\"orderedObjects\">\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">0</int>\n\t\t\t\t\t\t<array key=\"object\" id=\"0\"/>\n\t\t\t\t\t\t<reference key=\"children\" ref=\"1000\"/>\n\t\t\t\t\t\t<nil key=\"parent\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">-2</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t\t<string key=\"objectName\">File's Owner</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">-1</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1003\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t\t<string key=\"objectName\">First Responder</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">-3</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1004\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t\t<string key=\"objectName\">Application</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">1</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1005\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"1006\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">2</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1006\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"841205750\"/>\n\t\t\t\t\t\t\t<reference ref=\"510197841\"/>\n\t\t\t\t\t\t\t<reference ref=\"435147664\"/>\n\t\t\t\t\t\t\t<reference ref=\"888941402\"/>\n\t\t\t\t\t\t\t<reference ref=\"757507464\"/>\n\t\t\t\t\t\t\t<reference ref=\"959700846\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1005\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">5</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"841205750\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"208622466\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1006\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">6</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"208622466\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"841205750\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">11</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"510197841\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"902382382\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1006\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">12</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"902382382\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"510197841\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">18</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"435147664\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"841929317\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1006\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">19</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"841929317\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"435147664\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">20</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"888941402\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"756020436\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1006\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">21</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"756020436\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"888941402\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">29</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"757507464\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"996063321\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1006\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">30</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"996063321\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"757507464\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">32</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"959700846\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1006\"/>\n\t\t\t\t\t</object>\n\t\t\t\t</array>\n\t\t\t</object>\n\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"flattenedProperties\">\n\t\t\t\t<string key=\"-1.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"-2.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"-3.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"1.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"1.IBWindowTemplateEditedContentRect\">{{357, 418}, {480, 270}}</string>\n\t\t\t\t<boolean value=\"NO\" key=\"1.NSWindowTemplate.visibleAtLaunch\"/>\n\t\t\t\t<string key=\"11.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"12.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"18.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"19.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"2.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"20.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"21.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"29.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"30.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"32.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"5.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"6.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t</dictionary>\n\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"unlocalizedProperties\"/>\n\t\t\t<nil key=\"activeLocalization\"/>\n\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"localizations\"/>\n\t\t\t<nil key=\"sourceID\"/>\n\t\t\t<int key=\"maxID\">33</int>\n\t\t</object>\n\t\t<object class=\"IBClassDescriber\" key=\"IBDocument.Classes\">\n\t\t\t<array class=\"NSMutableArray\" key=\"referencedPartialClassDescriptions\">\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">CK2NewFolderWindowController</string>\n\t\t\t\t\t<string key=\"superclassName\">NSWindowController</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"cancel:\">id</string>\n\t\t\t\t\t\t<string key=\"ok:\">id</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"cancel:\">\n\t\t\t\t\t\t\t<string key=\"name\">cancel:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"ok:\">\n\t\t\t\t\t\t\t<string key=\"name\">ok:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"_nameField\">NSTextField</string>\n\t\t\t\t\t\t<string key=\"_okButton\">NSButton</string>\n\t\t\t\t\t\t<string key=\"_progressIndicator\">NSProgressIndicator</string>\n\t\t\t\t\t\t<string key=\"_statusField\">NSTextField</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_nameField\">\n\t\t\t\t\t\t\t<string key=\"name\">_nameField</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSTextField</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_okButton\">\n\t\t\t\t\t\t\t<string key=\"name\">_okButton</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSButton</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_progressIndicator\">\n\t\t\t\t\t\t\t<string key=\"name\">_progressIndicator</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSProgressIndicator</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_statusField\">\n\t\t\t\t\t\t\t<string key=\"name\">_statusField</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSTextField</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/CK2NewFolderWindowController.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t</array>\n\t\t</object>\n\t\t<int key=\"IBDocument.localizationMode\">0</int>\n\t\t<string key=\"IBDocument.TargetRuntimeIdentifier\">IBCocoaFramework</string>\n\t\t<object class=\"NSMutableDictionary\" key=\"IBDocument.PluginDeclaredDependencies\">\n\t\t\t<string key=\"NS.key.0\">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>\n\t\t\t<real value=\"1060\" key=\"NS.object.0\"/>\n\t\t</object>\n\t\t<bool key=\"IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion\">YES</bool>\n\t\t<int key=\"IBDocument.defaultPropertyAccessControl\">3</int>\n\t</data>\n</archive>\n"
  },
  {
    "path": "ConnectionKit/en.lproj/CK2OpenPanel.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<archive type=\"com.apple.InterfaceBuilder3.Cocoa.XIB\" version=\"8.00\">\n\t<data>\n\t\t<int key=\"IBDocument.SystemTarget\">1060</int>\n\t\t<string key=\"IBDocument.SystemVersion\">12F45</string>\n\t\t<string key=\"IBDocument.InterfaceBuilderVersion\">4510</string>\n\t\t<string key=\"IBDocument.AppKitVersion\">1187.40</string>\n\t\t<string key=\"IBDocument.HIToolboxVersion\">626.00</string>\n\t\t<object class=\"NSMutableDictionary\" key=\"IBDocument.PluginVersions\">\n\t\t\t<string key=\"NS.key.0\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t<string key=\"NS.object.0\">4510</string>\n\t\t</object>\n\t\t<array key=\"IBDocument.IntegratedClassDependencies\">\n\t\t\t<string>NSBox</string>\n\t\t\t<string>NSBrowser</string>\n\t\t\t<string>NSButton</string>\n\t\t\t<string>NSButtonCell</string>\n\t\t\t<string>NSCollectionView</string>\n\t\t\t<string>NSCollectionViewItem</string>\n\t\t\t<string>NSCustomObject</string>\n\t\t\t<string>NSCustomView</string>\n\t\t\t<string>NSDateFormatter</string>\n\t\t\t<string>NSImageCell</string>\n\t\t\t<string>NSImageView</string>\n\t\t\t<string>NSMenu</string>\n\t\t\t<string>NSMenuItem</string>\n\t\t\t<string>NSNumberFormatter</string>\n\t\t\t<string>NSOutlineView</string>\n\t\t\t<string>NSPopUpButton</string>\n\t\t\t<string>NSPopUpButtonCell</string>\n\t\t\t<string>NSProgressIndicator</string>\n\t\t\t<string>NSScrollView</string>\n\t\t\t<string>NSScroller</string>\n\t\t\t<string>NSSegmentedCell</string>\n\t\t\t<string>NSSegmentedControl</string>\n\t\t\t<string>NSTabView</string>\n\t\t\t<string>NSTabViewItem</string>\n\t\t\t<string>NSTableColumn</string>\n\t\t\t<string>NSTableHeaderView</string>\n\t\t\t<string>NSTextField</string>\n\t\t\t<string>NSTextFieldCell</string>\n\t\t\t<string>NSView</string>\n\t\t\t<string>NSViewController</string>\n\t\t</array>\n\t\t<array key=\"IBDocument.PluginDependencies\">\n\t\t\t<string>com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t</array>\n\t\t<object class=\"NSMutableDictionary\" key=\"IBDocument.Metadata\">\n\t\t\t<string key=\"NS.key.0\">PluginDependencyRecalculationVersion</string>\n\t\t\t<integer value=\"1\" key=\"NS.object.0\"/>\n\t\t</object>\n\t\t<array class=\"NSMutableArray\" key=\"IBDocument.RootObjects\" id=\"1000\">\n\t\t\t<object class=\"NSCustomObject\" id=\"1001\">\n\t\t\t\t<string key=\"NSClassName\">CK2OpenPanelController</string>\n\t\t\t</object>\n\t\t\t<object class=\"NSCustomObject\" id=\"1003\">\n\t\t\t\t<string key=\"NSClassName\">FirstResponder</string>\n\t\t\t</object>\n\t\t\t<object class=\"NSCustomObject\" id=\"1004\">\n\t\t\t\t<string key=\"NSClassName\">NSApplication</string>\n\t\t\t</object>\n\t\t\t<object class=\"NSView\" id=\"1067146949\">\n\t\t\t\t<reference key=\"NSNextResponder\"/>\n\t\t\t\t<int key=\"NSvFlags\">292</int>\n\t\t\t\t<array class=\"NSMutableArray\" key=\"NSSubviews\">\n\t\t\t\t\t<object class=\"NSCustomView\" id=\"155461220\">\n\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"1067146949\"/>\n\t\t\t\t\t\t<int key=\"NSvFlags\">266</int>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSSubviews\">\n\t\t\t\t\t\t\t<object class=\"NSImageView\" id=\"1047945002\">\n\t\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"155461220\"/>\n\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">268</int>\n\t\t\t\t\t\t\t\t<set class=\"NSMutableSet\" key=\"NSDragTypes\">\n\t\t\t\t\t\t\t\t\t<string>Apple PDF pasteboard type</string>\n\t\t\t\t\t\t\t\t\t<string>Apple PICT pasteboard type</string>\n\t\t\t\t\t\t\t\t\t<string>Apple PNG pasteboard type</string>\n\t\t\t\t\t\t\t\t\t<string>NSFilenamesPboardType</string>\n\t\t\t\t\t\t\t\t\t<string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>\n\t\t\t\t\t\t\t\t\t<string>NeXT TIFF v4.0 pasteboard type</string>\n\t\t\t\t\t\t\t\t</set>\n\t\t\t\t\t\t\t\t<string key=\"NSFrame\">{{20, 17}, {48, 48}}</string>\n\t\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"155461220\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"738467673\"/>\n\t\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t\t\t\t\t<bool key=\"NSEnabled\">YES</bool>\n\t\t\t\t\t\t\t\t<object class=\"NSImageCell\" key=\"NSCell\" id=\"1017110008\">\n\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags\">134217728</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">33554432</int>\n\t\t\t\t\t\t\t\t\t<object class=\"NSCustomResource\" key=\"NSContents\">\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSClassName\">NSImage</string>\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSResourceName\">NSNetwork</string>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t<string key=\"NSCellIdentifier\">_NS:9</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSAlign\">0</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSScale\">3</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSStyle\">0</int>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSAnimates\">NO</bool>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<bool key=\"NSAllowsLogicalLayoutDirection\">NO</bool>\n\t\t\t\t\t\t\t\t<bool key=\"NSEditable\">YES</bool>\n\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t<object class=\"NSTextField\" id=\"738467673\">\n\t\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"155461220\"/>\n\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">266</int>\n\t\t\t\t\t\t\t\t<string key=\"NSFrame\">{{73, 29}, {426, 22}}</string>\n\t\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"155461220\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"863147072\"/>\n\t\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:1535</string>\n\t\t\t\t\t\t\t\t<bool key=\"NSEnabled\">YES</bool>\n\t\t\t\t\t\t\t\t<object class=\"NSTextFieldCell\" key=\"NSCell\" id=\"600161736\">\n\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags\">68157504</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">272630784</int>\n\t\t\t\t\t\t\t\t\t<string key=\"NSContents\">localhost</string>\n\t\t\t\t\t\t\t\t\t<object class=\"NSFont\" key=\"NSSupport\">\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSName\">LucidaGrande</string>\n\t\t\t\t\t\t\t\t\t\t<double key=\"NSSize\">16</double>\n\t\t\t\t\t\t\t\t\t\t<int key=\"NSfFlags\">16</int>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t<string key=\"NSCellIdentifier\">_NS:1535</string>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSControlView\" ref=\"738467673\"/>\n\t\t\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"NSBackgroundColor\" id=\"594929633\">\n\t\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">6</int>\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSCatalogName\">System</string>\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSColorName\">controlColor</string>\n\t\t\t\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"NSColor\" id=\"66571528\">\n\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">3</int>\n\t\t\t\t\t\t\t\t\t\t\t<bytes key=\"NSWhite\">MC42NjY2NjY2NjY3AA</bytes>\n\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"NSTextColor\" id=\"128669735\">\n\t\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">6</int>\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSCatalogName\">System</string>\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSColorName\">controlTextColor</string>\n\t\t\t\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"NSColor\" id=\"79456019\">\n\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">3</int>\n\t\t\t\t\t\t\t\t\t\t\t<bytes key=\"NSWhite\">MAA</bytes>\n\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<bool key=\"NSAllowsLogicalLayoutDirection\">NO</bool>\n\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t<object class=\"NSBox\" id=\"863147072\">\n\t\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"155461220\"/>\n\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">10</int>\n\t\t\t\t\t\t\t\t<string key=\"NSFrame\">{{-1, -1}, {518, 5}}</string>\n\t\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"155461220\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"801803888\"/>\n\t\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t\t\t\t\t<string key=\"NSOffsets\">{0, 0}</string>\n\t\t\t\t\t\t\t\t<object class=\"NSTextFieldCell\" key=\"NSTitleCell\">\n\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags\">67108864</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">0</int>\n\t\t\t\t\t\t\t\t\t<string key=\"NSContents\">Box</string>\n\t\t\t\t\t\t\t\t\t<object class=\"NSFont\" key=\"NSSupport\" id=\"126613079\">\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSName\">LucidaGrande</string>\n\t\t\t\t\t\t\t\t\t\t<double key=\"NSSize\">13</double>\n\t\t\t\t\t\t\t\t\t\t<int key=\"NSfFlags\">1044</int>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"NSBackgroundColor\" id=\"479335689\">\n\t\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">6</int>\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSCatalogName\">System</string>\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSColorName\">textBackgroundColor</string>\n\t\t\t\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"NSColor\" id=\"858027022\">\n\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">3</int>\n\t\t\t\t\t\t\t\t\t\t\t<bytes key=\"NSWhite\">MQA</bytes>\n\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"NSTextColor\">\n\t\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">3</int>\n\t\t\t\t\t\t\t\t\t\t<bytes key=\"NSWhite\">MCAwLjgwMDAwMDAxMTkAA</bytes>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<int key=\"NSBorderType\">3</int>\n\t\t\t\t\t\t\t\t<int key=\"NSBoxType\">2</int>\n\t\t\t\t\t\t\t\t<int key=\"NSTitlePosition\">0</int>\n\t\t\t\t\t\t\t\t<bool key=\"NSTransparent\">NO</bool>\n\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<string key=\"NSFrame\">{{-1, 418}, {516, 85}}</string>\n\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"1067146949\"/>\n\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"1047945002\"/>\n\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t\t\t<string key=\"NSClassName\">NSView</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSCustomView\" id=\"801803888\">\n\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"1067146949\"/>\n\t\t\t\t\t\t<int key=\"NSvFlags\">266</int>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSSubviews\">\n\t\t\t\t\t\t\t<object class=\"NSButton\" id=\"319667558\">\n\t\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"801803888\"/>\n\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">265</int>\n\t\t\t\t\t\t\t\t<string key=\"NSFrame\">{{478, 9}, {27, 25}}</string>\n\t\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"801803888\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"894084665\"/>\n\t\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t\t\t\t\t<bool key=\"NSEnabled\">YES</bool>\n\t\t\t\t\t\t\t\t<object class=\"NSButtonCell\" key=\"NSCell\" id=\"685057230\">\n\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags\">67108864</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">134217728</int>\n\t\t\t\t\t\t\t\t\t<string key=\"NSContents\">Refresh</string>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSSupport\" ref=\"126613079\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSCellIdentifier\">_NS:9</string>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSControlView\" ref=\"319667558\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSButtonFlags\">105136128</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSButtonFlags2\">163</int>\n\t\t\t\t\t\t\t\t\t<object class=\"NSCustomResource\" key=\"NSNormalImage\">\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSClassName\">NSImage</string>\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSResourceName\">NSRefreshTemplate</string>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t<string key=\"NSAlternateContents\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquivalent\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSPeriodicDelay\">200</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSPeriodicInterval\">25</int>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<bool key=\"NSAllowsLogicalLayoutDirection\">NO</bool>\n\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t<object class=\"NSProgressIndicator\" id=\"894084665\">\n\t\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"801803888\"/>\n\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">-2147483383</int>\n\t\t\t\t\t\t\t\t<string key=\"NSFrame\">{{485, 12}, {16, 16}}</string>\n\t\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"801803888\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"901858583\"/>\n\t\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:945</string>\n\t\t\t\t\t\t\t\t<int key=\"NSpiFlags\">28938</int>\n\t\t\t\t\t\t\t\t<double key=\"NSMaxValue\">100</double>\n\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t<object class=\"NSPopUpButton\" id=\"554248224\">\n\t\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"801803888\"/>\n\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">268</int>\n\t\t\t\t\t\t\t\t<string key=\"NSFrame\">{{233, 8}, {205, 26}}</string>\n\t\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"801803888\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"319667558\"/>\n\t\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t\t\t\t\t<bool key=\"NSEnabled\">YES</bool>\n\t\t\t\t\t\t\t\t<object class=\"NSPopUpButtonCell\" key=\"NSCell\" id=\"614721080\">\n\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags\">-2076180416</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">2048</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSSupport\" ref=\"126613079\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSCellIdentifier\">_NS:9</string>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSControlView\" ref=\"554248224\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSButtonFlags\">112869376</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSButtonFlags2\">129</int>\n\t\t\t\t\t\t\t\t\t<string key=\"NSAlternateContents\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquivalent\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSPeriodicDelay\">400</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSPeriodicInterval\">75</int>\n\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" key=\"NSMenuItem\" id=\"116971137\">\n\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"810032253\"/>\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t<int key=\"NSState\">1</int>\n\t\t\t\t\t\t\t\t\t\t<object class=\"NSCustomResource\" key=\"NSOnImage\" id=\"625516125\">\n\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSClassName\">NSImage</string>\n\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSResourceName\">NSMenuCheckmark</string>\n\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t<object class=\"NSCustomResource\" key=\"NSMixedImage\" id=\"586661498\">\n\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSClassName\">NSImage</string>\n\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSResourceName\">NSMenuMixedState</string>\n\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSAction\">_popUpItemAction:</string>\n\t\t\t\t\t\t\t\t\t\t<reference key=\"NSTarget\" ref=\"614721080\"/>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSMenuItemRespectAlignment\">YES</bool>\n\t\t\t\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSMenu\" id=\"810032253\">\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">OtherViews</string>\n\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t\t\t\t<reference ref=\"116971137\"/>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"202231990\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"810032253\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"625516125\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"586661498\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSAction\">_popUpItemAction:</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSTarget\" ref=\"614721080\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"47722192\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"810032253\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"625516125\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"586661498\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSAction\">_popUpItemAction:</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSTarget\" ref=\"614721080\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenuFont\" ref=\"126613079\"/>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t<int key=\"NSSelectedIndex\">-1</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSPreferredEdge\">1</int>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSUsesItemFromMenu\">YES</bool>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSAltersState\">YES</bool>\n\t\t\t\t\t\t\t\t\t<int key=\"NSArrowPosition\">2</int>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<bool key=\"NSAllowsLogicalLayoutDirection\">NO</bool>\n\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t<object class=\"NSSegmentedControl\" id=\"25517991\">\n\t\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"801803888\"/>\n\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">268</int>\n\t\t\t\t\t\t\t\t<string key=\"NSFrame\">{{124, 8}, {104, 25}}</string>\n\t\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"801803888\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"554248224\"/>\n\t\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t\t\t\t\t<bool key=\"NSEnabled\">YES</bool>\n\t\t\t\t\t\t\t\t<object class=\"NSSegmentedCell\" key=\"NSCell\" id=\"37032405\">\n\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags\">67108864</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">0</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSSupport\" ref=\"126613079\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSCellIdentifier\">_NS:9</string>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSControlView\" ref=\"25517991\"/>\n\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSSegmentImages\">\n\t\t\t\t\t\t\t\t\t\t<object class=\"NSSegmentItem\">\n\t\t\t\t\t\t\t\t\t\t\t<double key=\"NSSegmentItemWidth\">32</double>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSCustomResource\" key=\"NSSegmentItemImage\">\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSClassName\">NSImage</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSResourceName\">NSIconViewTemplate</string>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSSegmentItemImageScaling\">0</int>\n\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t<object class=\"NSSegmentItem\">\n\t\t\t\t\t\t\t\t\t\t\t<double key=\"NSSegmentItemWidth\">32</double>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSCustomResource\" key=\"NSSegmentItemImage\">\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSClassName\">NSImage</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSResourceName\">NSListViewTemplate</string>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSSegmentItemTag\">1</int>\n\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSSegmentItemImageScaling\">0</int>\n\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t<object class=\"NSSegmentItem\">\n\t\t\t\t\t\t\t\t\t\t\t<double key=\"NSSegmentItemWidth\">32</double>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSCustomResource\" key=\"NSSegmentItemImage\">\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSClassName\">NSImage</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSResourceName\">NSColumnViewTemplate</string>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSSegmentItemSelected\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSSegmentItemImageScaling\">0</int>\n\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t<int key=\"NSSelectedSegment\">2</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSSegmentStyle\">2</int>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<bool key=\"NSAllowsLogicalLayoutDirection\">NO</bool>\n\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t<object class=\"NSSegmentedControl\" id=\"696197941\">\n\t\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"801803888\"/>\n\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">268</int>\n\t\t\t\t\t\t\t\t<string key=\"NSFrame\">{{80, 8}, {38, 25}}</string>\n\t\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"801803888\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"25517991\"/>\n\t\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t\t\t\t\t<bool key=\"NSEnabled\">YES</bool>\n\t\t\t\t\t\t\t\t<object class=\"NSSegmentedCell\" key=\"NSCell\" id=\"1017682029\">\n\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags\">67108864</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">0</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSSupport\" ref=\"126613079\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSCellIdentifier\">_NS:9</string>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSControlView\" ref=\"696197941\"/>\n\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSSegmentImages\">\n\t\t\t\t\t\t\t\t\t\t<object class=\"NSSegmentItem\">\n\t\t\t\t\t\t\t\t\t\t\t<double key=\"NSSegmentItemWidth\">32</double>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSCustomResource\" key=\"NSSegmentItemImage\">\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSClassName\">NSImage</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSResourceName\">NSHomeTemplate</string>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSSegmentItemLabel\"/>\n\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSSegmentItemImageScaling\">2</int>\n\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t<int key=\"NSSelectedSegment\">-1</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSTrackingMode\">2</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSSegmentStyle\">2</int>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<bool key=\"NSAllowsLogicalLayoutDirection\">NO</bool>\n\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t<object class=\"NSSegmentedControl\" id=\"744857666\">\n\t\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"801803888\"/>\n\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">268</int>\n\t\t\t\t\t\t\t\t<string key=\"NSFrame\">{{21, 8}, {53, 25}}</string>\n\t\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"801803888\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"696197941\"/>\n\t\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t\t\t\t\t<bool key=\"NSEnabled\">YES</bool>\n\t\t\t\t\t\t\t\t<object class=\"NSSegmentedCell\" key=\"NSCell\" id=\"635263763\">\n\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags\">67108864</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">0</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSSupport\" ref=\"126613079\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSCellIdentifier\">_NS:9</string>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSControlView\" ref=\"744857666\"/>\n\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSSegmentImages\">\n\t\t\t\t\t\t\t\t\t\t<object class=\"NSSegmentItem\">\n\t\t\t\t\t\t\t\t\t\t\t<double key=\"NSSegmentItemWidth\">23</double>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSCustomResource\" key=\"NSSegmentItemImage\">\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSClassName\">NSImage</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSResourceName\">NSGoLeftTemplate</string>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSSegmentItemImageScaling\">0</int>\n\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t<object class=\"NSSegmentItem\">\n\t\t\t\t\t\t\t\t\t\t\t<double key=\"NSSegmentItemWidth\">23</double>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSCustomResource\" key=\"NSSegmentItemImage\">\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSClassName\">NSImage</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSResourceName\">NSGoRightTemplate</string>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSSegmentItemTag\">1</int>\n\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSSegmentItemImageScaling\">0</int>\n\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t<int key=\"NSSelectedSegment\">1</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSTrackingMode\">2</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSSegmentStyle\">2</int>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<bool key=\"NSAllowsLogicalLayoutDirection\">NO</bool>\n\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<string key=\"NSFrame\">{{-1, 378}, {517, 42}}</string>\n\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"1067146949\"/>\n\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"744857666\"/>\n\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t\t\t<string key=\"NSClassName\">NSView</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSCustomView\" id=\"1022982886\">\n\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"1067146949\"/>\n\t\t\t\t\t\t<int key=\"NSvFlags\">290</int>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSSubviews\">\n\t\t\t\t\t\t\t<object class=\"NSButton\" id=\"415155764\">\n\t\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"1022982886\"/>\n\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">289</int>\n\t\t\t\t\t\t\t\t<string key=\"NSFrame\">{{416, 6}, {82, 32}}</string>\n\t\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"1022982886\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t\t\t\t\t<bool key=\"NSEnabled\">YES</bool>\n\t\t\t\t\t\t\t\t<object class=\"NSButtonCell\" key=\"NSCell\" id=\"890432645\">\n\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags\">67108864</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">134217728</int>\n\t\t\t\t\t\t\t\t\t<string key=\"NSContents\">Open</string>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSSupport\" ref=\"126613079\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSCellIdentifier\">_NS:9</string>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSControlView\" ref=\"415155764\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSButtonFlags\">-2038284288</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSButtonFlags2\">129</int>\n\t\t\t\t\t\t\t\t\t<string key=\"NSAlternateContents\"/>\n\t\t\t\t\t\t\t\t\t<string type=\"base64-UTF8\" key=\"NSKeyEquivalent\">DQ</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSPeriodicDelay\">200</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSPeriodicInterval\">25</int>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<bool key=\"NSAllowsLogicalLayoutDirection\">NO</bool>\n\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t<object class=\"NSButton\" id=\"990363493\">\n\t\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"1022982886\"/>\n\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">289</int>\n\t\t\t\t\t\t\t\t<string key=\"NSFrame\">{{332, 6}, {82, 32}}</string>\n\t\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"1022982886\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"415155764\"/>\n\t\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t\t\t\t\t<bool key=\"NSEnabled\">YES</bool>\n\t\t\t\t\t\t\t\t<object class=\"NSButtonCell\" key=\"NSCell\" id=\"502331850\">\n\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags\">67108864</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">134217728</int>\n\t\t\t\t\t\t\t\t\t<string key=\"NSContents\">Cancel</string>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSSupport\" ref=\"126613079\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSCellIdentifier\">_NS:9</string>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSControlView\" ref=\"990363493\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSButtonFlags\">-2038284288</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSButtonFlags2\">129</int>\n\t\t\t\t\t\t\t\t\t<string key=\"NSAlternateContents\"/>\n\t\t\t\t\t\t\t\t\t<string type=\"base64-UTF8\" key=\"NSKeyEquivalent\">Gw</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSPeriodicDelay\">200</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSPeriodicInterval\">25</int>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<bool key=\"NSAllowsLogicalLayoutDirection\">NO</bool>\n\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t<object class=\"NSButton\" id=\"526771398\">\n\t\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"1022982886\"/>\n\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">268</int>\n\t\t\t\t\t\t\t\t<string key=\"NSFrame\">{{19, 6}, {111, 32}}</string>\n\t\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"1022982886\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"990363493\"/>\n\t\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t\t\t\t\t<bool key=\"NSEnabled\">YES</bool>\n\t\t\t\t\t\t\t\t<object class=\"NSButtonCell\" key=\"NSCell\" id=\"1005204993\">\n\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags\">67108864</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">134217728</int>\n\t\t\t\t\t\t\t\t\t<string key=\"NSContents\">New Folder</string>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSSupport\" ref=\"126613079\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSCellIdentifier\">_NS:9</string>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSControlView\" ref=\"526771398\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSButtonFlags\">-2038284288</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSButtonFlags2\">268435585</int>\n\t\t\t\t\t\t\t\t\t<string key=\"NSAlternateContents\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquivalent\">N</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSPeriodicDelay\">200</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSPeriodicInterval\">25</int>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<bool key=\"NSAllowsLogicalLayoutDirection\">NO</bool>\n\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<string key=\"NSFrame\">{{-1, -1}, {516, 48}}</string>\n\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"1067146949\"/>\n\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"526771398\"/>\n\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t\t\t<string key=\"NSClassName\">NSView</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSCustomView\" id=\"901858583\">\n\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"1067146949\"/>\n\t\t\t\t\t\t<int key=\"NSvFlags\">274</int>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSSubviews\">\n\t\t\t\t\t\t\t<object class=\"NSBox\" id=\"416172757\">\n\t\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"901858583\"/>\n\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">34</int>\n\t\t\t\t\t\t\t\t<string key=\"NSFrame\">{{0, -1}, {518, 5}}</string>\n\t\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"901858583\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"1022982886\"/>\n\t\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t\t\t\t\t<string key=\"NSOffsets\">{0, 0}</string>\n\t\t\t\t\t\t\t\t<object class=\"NSTextFieldCell\" key=\"NSTitleCell\">\n\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags\">67108864</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">0</int>\n\t\t\t\t\t\t\t\t\t<string key=\"NSContents\">Box</string>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSSupport\" ref=\"126613079\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSBackgroundColor\" ref=\"479335689\"/>\n\t\t\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"NSTextColor\">\n\t\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">3</int>\n\t\t\t\t\t\t\t\t\t\t<bytes key=\"NSWhite\">MCAwLjgwMDAwMDAxMTkAA</bytes>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<int key=\"NSBorderType\">3</int>\n\t\t\t\t\t\t\t\t<int key=\"NSBoxType\">2</int>\n\t\t\t\t\t\t\t\t<int key=\"NSTitlePosition\">0</int>\n\t\t\t\t\t\t\t\t<bool key=\"NSTransparent\">NO</bool>\n\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t<object class=\"NSTabView\" id=\"818515513\">\n\t\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"901858583\"/>\n\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">274</int>\n\t\t\t\t\t\t\t\t<string key=\"NSFrame\">{{0, 1}, {516, 332}}</string>\n\t\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"901858583\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"159793629\"/>\n\t\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSTabViewItems\">\n\t\t\t\t\t\t\t\t\t<object class=\"NSTabViewItem\" id=\"332855024\">\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSIdentifier\">icon</string>\n\t\t\t\t\t\t\t\t\t\t<object class=\"NSView\" key=\"NSView\" id=\"159793629\">\n\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"818515513\"/>\n\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">274</int>\n\t\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSSubviews\">\n\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSScrollView\" id=\"143272352\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"159793629\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">274</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSSubviews\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSClipView\" id=\"918126831\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"143272352\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">2322</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSSubviews\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSCollectionView\" id=\"488503891\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"918126831\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">4370</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSFrameSize\">{515, 331}</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"918126831\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"224021751\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:80</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSMinGridSize\">{0, 0}</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSMaxGridSize\">{0, 0}</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMaxNumberOfGridRows\">0</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMaxNumberOfGridColumns\">0</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<array key=\"NSBackgroundColors\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSColor\" id=\"708940091\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">6</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSCatalogName\">System</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSColorName\">controlBackgroundColor</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSColor\" ref=\"66571528\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSSelectable\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSDraggingSourceMaskForLocal\">-1</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSDraggingSourceMaskForNonLocal\">0</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSFrame\">{{1, 1}, {515, 331}}</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"143272352\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"488503891\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:78</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSDocView\" ref=\"488503891\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSBGColor\" ref=\"594929633\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NScvFlags\">4</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSScroller\" id=\"224021751\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"143272352\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">-2147483392</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSFrame\">{{499, 1}, {15, 332}}</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"143272352\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"818515513\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:82</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSAllowsLogicalLayoutDirection\">NO</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSTarget\" ref=\"143272352\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSAction\">_doScroller:</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<double key=\"NSCurValue\">1</double>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<double key=\"NSPercent\">0.89655172824859619</double>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSScroller\" id=\"407291080\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"143272352\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">-2147483392</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSFrame\">{{-100, -100}, {498, 15}}</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"143272352\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"918126831\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:91</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSAllowsLogicalLayoutDirection\">NO</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSsFlags\">1</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSTarget\" ref=\"143272352\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSAction\">_doScroller:</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<double key=\"NSPercent\">0.63157892227172852</double>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSFrameSize\">{517, 333}</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"159793629\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"407291080\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:76</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSsFlags\">133650</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSVScroller\" ref=\"224021751\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSHScroller\" ref=\"407291080\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSContentView\" ref=\"918126831\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<double key=\"NSMinMagnification\">0.25</double>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<double key=\"NSMaxMagnification\">4</double>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<double key=\"NSMagnification\">1</double>\n\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSFrameSize\">{516, 332}</string>\n\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"818515513\"/>\n\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"143272352\"/>\n\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:11</string>\n\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSLabel\">Icon View</string>\n\t\t\t\t\t\t\t\t\t\t<reference key=\"NSColor\" ref=\"594929633\"/>\n\t\t\t\t\t\t\t\t\t\t<reference key=\"NSTabView\" ref=\"818515513\"/>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t<object class=\"NSTabViewItem\" id=\"87796090\">\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSIdentifier\">list</string>\n\t\t\t\t\t\t\t\t\t\t<object class=\"NSView\" key=\"NSView\" id=\"403468407\">\n\t\t\t\t\t\t\t\t\t\t\t<nil key=\"NSNextResponder\"/>\n\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">274</int>\n\t\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSSubviews\">\n\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSScrollView\" id=\"654578631\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"403468407\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">274</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSSubviews\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSClipView\" id=\"1058804079\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"654578631\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">2322</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSSubviews\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSOutlineView\" id=\"813318904\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"1058804079\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">4352</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSFrameSize\">{612, 315}</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"1058804079\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"614193710\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:13</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSEnabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSAllowsLogicalLayoutDirection\">NO</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSControlAllowsExpansionToolTips\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSTableHeaderView\" key=\"NSHeaderView\" id=\"719759231\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"614193710\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">256</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSFrameSize\">{612, 17}</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"614193710\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"1058804079\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:16</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSTableView\" ref=\"813318904\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"_NSCornerView\" key=\"NSCornerView\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<nil key=\"NSNextResponder\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">-2147483392</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSFrame\">{{224, 0}, {16, 17}}</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"1058804079\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:18</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSTableColumns\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSTableColumn\" id=\"983483088\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSIdentifier\">Name</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<double key=\"NSWidth\">250</double>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<double key=\"NSMinWidth\">16</double>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<double key=\"NSMaxWidth\">1000</double>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSTableHeaderCell\" key=\"NSHeaderCell\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags\">75497536</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">2048</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSContents\">Name</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSSupport\" ref=\"126613079\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"NSBackgroundColor\" id=\"696925514\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">3</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bytes key=\"NSWhite\">MC4zMzMzMzI5ODU2AA</bytes>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"NSTextColor\" id=\"749821289\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">6</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSCatalogName\">System</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSColorName\">headerTextColor</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSColor\" ref=\"79456019\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSTextFieldCell\" key=\"NSDataCell\" id=\"1010418586\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags\">337641536</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">2048</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSContents\">Text Cell</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSFont\" key=\"NSSupport\" id=\"375906573\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSName\">LucidaGrande</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<double key=\"NSSize\">12</double>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSfFlags\">16</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSControlView\" ref=\"813318904\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSBackgroundColor\" ref=\"708940091\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSTextColor\" ref=\"128669735\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSResizingMask\">3</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsResizeable\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSTableView\" ref=\"813318904\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSTableColumn\" id=\"837641237\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSIdentifier\">Date Modified</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<double key=\"NSWidth\">175</double>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<double key=\"NSMinWidth\">40</double>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<double key=\"NSMaxWidth\">1000</double>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSTableHeaderCell\" key=\"NSHeaderCell\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags\">75497536</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">2048</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSContents\">Date Modified</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSSupport\" ref=\"126613079\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSBackgroundColor\" ref=\"696925514\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSTextColor\" ref=\"749821289\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSTextFieldCell\" key=\"NSDataCell\" id=\"943592824\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags\">337641536</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">-2147481600</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSContents\">Text Cell</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSSupport\" ref=\"375906573\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSDateFormatter\" key=\"NSFormatter\" id=\"565579715\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"NS.attributes\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<integer value=\"2\" key=\"dateStyle\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<boolean value=\"YES\" key=\"doesRelativeDateFormatting\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<integer value=\"1040\" key=\"formatterBehavior\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<integer value=\"1\" key=\"timeStyle\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</dictionary>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NS.format\">d MMM y HH:mm</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NS.natural\">NO</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSControlView\" ref=\"813318904\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSBackgroundColor\" ref=\"708940091\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSTextColor\" ref=\"128669735\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSResizingMask\">3</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsResizeable\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSTableView\" ref=\"813318904\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSTableColumn\" id=\"444278038\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSIdentifier\">Size</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<double key=\"NSWidth\">75</double>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<double key=\"NSMinWidth\">10</double>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<double key=\"NSMaxWidth\">3.4028234663852886e+38</double>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSTableHeaderCell\" key=\"NSHeaderCell\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags\">75497536</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">67110912</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSContents\">Size</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSSupport\" ref=\"126613079\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"NSBackgroundColor\" id=\"80174298\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">6</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSCatalogName\">System</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSColorName\">headerColor</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSColor\" ref=\"858027022\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSTextColor\" ref=\"749821289\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSTextFieldCell\" key=\"NSDataCell\" id=\"580519459\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags\">337641536</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">67110912</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSSupport\" ref=\"375906573\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSNumberFormatter\" key=\"NSFormatter\" id=\"524427632\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"NS.attributes\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<boolean value=\"YES\" key=\"allowsFloats\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<integer value=\"1040\" key=\"formatterBehavior\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSLocale\" key=\"locale\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NS.identifier\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<integer value=\"1\" key=\"maximumFractionDigits\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"negativeInfinitySymbol\">-∞</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"nilSymbol\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<integer value=\"1\" key=\"numberStyle\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"positiveInfinitySymbol\">+∞</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</dictionary>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NS.positiveformat\">#,##0.#</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NS.negativeformat\">#,##0.#</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<nil key=\"NS.positiveattrs\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<nil key=\"NS.negativeattrs\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<nil key=\"NS.zero\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSAttributedString\" key=\"NS.nil\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSString\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSAttributedString\" key=\"NS.nan\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSString\">NaN</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<dictionary key=\"NSAttributes\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSDecimalNumberPlaceholder\" key=\"NS.min\" id=\"952516625\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NS.exponent\">0</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NS.length\">0</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NS.negative\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NS.compact\">NO</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NS.mantissa.bo\">1</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bytes key=\"NS.mantissa\">AAAAAAAAAAAAAAAAAAAAAA</bytes>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NS.max\" ref=\"952516625\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSDecimalNumberHandler\" key=\"NS.rounding\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NS.roundingmode\">3</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NS.raise.overflow\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NS.raise.underflow\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NS.raise.dividebyzero\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NS.decimal\">.</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NS.thousand\">,</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NS.hasthousands\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NS.localized\">NO</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NS.allowsfloats\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSControlView\" ref=\"813318904\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSBackgroundColor\" ref=\"708940091\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSTextColor\" ref=\"128669735\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSResizingMask\">3</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsResizeable\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSTableView\" ref=\"813318904\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSTableColumn\" id=\"739755454\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSIdentifier\">Kind</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<double key=\"NSWidth\">100</double>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<double key=\"NSMinWidth\">10</double>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<double key=\"NSMaxWidth\">3.4028234663852886e+38</double>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSTableHeaderCell\" key=\"NSHeaderCell\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags\">75497536</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">2048</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSContents\">Kind</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSSupport\" ref=\"126613079\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSBackgroundColor\" ref=\"80174298\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSTextColor\" ref=\"749821289\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSTextFieldCell\" key=\"NSDataCell\" id=\"424095555\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags\">337641536</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">2048</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSContents\">Text Cell</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSSupport\" ref=\"375906573\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSControlView\" ref=\"813318904\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSBackgroundColor\" ref=\"708940091\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSTextColor\" ref=\"128669735\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSResizingMask\">3</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsResizeable\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSTableView\" ref=\"813318904\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<double key=\"NSIntercellSpacingWidth\">3</double>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<double key=\"NSIntercellSpacingHeight\">2</double>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSBackgroundColor\" ref=\"858027022\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"NSGridColor\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">6</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSCatalogName\">System</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSColorName\">gridColor</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"NSColor\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">3</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bytes key=\"NSWhite\">MC41AA</bytes>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<double key=\"NSRowHeight\">17</double>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSTvFlags\">-757071872</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSDelegate\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSDataSource\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSAutosaveName\">CK2OpenPanelOutlineState</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSColumnAutoresizingStyle\">4</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSDraggingSourceMaskForLocal\">15</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSDraggingSourceMaskForNonLocal\">0</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSAllowsTypeSelect\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSTableViewDraggingDestinationStyle\">0</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSTableViewGroupRowStyle\">1</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSOutlineViewAutoresizesOutlineColumnKey\">NO</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSOutlineViewAutosaveExpandedItemsKey\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSFrame\">{{1, 17}, {515, 315}}</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSBounds\">{{78, 0}, {515, 315}}</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"654578631\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"813318904\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:11</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSDocView\" ref=\"813318904\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSBGColor\" ref=\"708940091\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NScvFlags\">4</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSScroller\" id=\"901995093\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"654578631\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">-2147483392</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSFrame\">{{224, 17}, {15, 102}}</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"654578631\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"462737862\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:58</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSAllowsLogicalLayoutDirection\">NO</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSTarget\" ref=\"654578631\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSAction\">_doScroller:</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<double key=\"NSPercent\">0.95253164556962022</double>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSScroller\" id=\"462737862\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"654578631\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">256</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSFrame\">{{1, 316}, {515, 16}}</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"654578631\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"818515513\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:60</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSEnabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSAllowsLogicalLayoutDirection\">NO</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSsFlags\">1</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSTarget\" ref=\"654578631\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSAction\">_doScroller:</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<double key=\"NSCurValue\">0.80412371134020622</double>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<double key=\"NSPercent\">0.84150326797385622</double>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSClipView\" id=\"614193710\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"654578631\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">2304</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSSubviews\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference ref=\"719759231\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSFrame\">{{1, 0}, {515, 17}}</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSBounds\">{{78, 0}, {515, 17}}</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"654578631\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"719759231\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:15</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSDocView\" ref=\"719759231\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSBGColor\" ref=\"708940091\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NScvFlags\">4</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSFrameSize\">{517, 333}</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"403468407\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"1058804079\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSsFlags\">133810</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSVScroller\" ref=\"901995093\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSHScroller\" ref=\"462737862\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSContentView\" ref=\"1058804079\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSHeaderClipView\" ref=\"614193710\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<bytes key=\"NSScrollAmts\">QSAAAEEgAABBmAAAQZgAAA</bytes>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<double key=\"NSMinMagnification\">0.25</double>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<double key=\"NSMaxMagnification\">4</double>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<double key=\"NSMagnification\">1</double>\n\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSFrameSize\">{516, 332}</string>\n\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"654578631\"/>\n\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:28</string>\n\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSLabel\">List View</string>\n\t\t\t\t\t\t\t\t\t\t<reference key=\"NSColor\" ref=\"594929633\"/>\n\t\t\t\t\t\t\t\t\t\t<reference key=\"NSTabView\" ref=\"818515513\"/>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t<object class=\"NSTabViewItem\" id=\"733401580\">\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSIdentifier\">column</string>\n\t\t\t\t\t\t\t\t\t\t<object class=\"NSView\" key=\"NSView\" id=\"160686083\">\n\t\t\t\t\t\t\t\t\t\t\t<nil key=\"NSNextResponder\"/>\n\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">274</int>\n\t\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSSubviews\">\n\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSBrowser\" id=\"590587330\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"160686083\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">4370</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSFrameSize\">{517, 333}</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"160686083\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"818515513\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSEnabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSAllowsLogicalLayoutDirection\">NO</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSControlAllowsExpansionToolTips\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSBrowserCell\" key=\"NSCellPrototype\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags\">67108928</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">2048</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string type=\"base64-UTF8\" key=\"NSContents\">IA</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSSupport\" ref=\"375906573\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSPathSeparator\">/</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMinColumnWidth\">210</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSNumberOfVisibleColumns\">2</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSColumnResizingType\">2</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSColumnsAutosaveName\">CK2OpenPanelBrowserState</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<double key=\"NSPreferedColumnWidth\">262</double>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSAllowsTypeSelect\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSBrFlags\">1208041472</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<double key=\"NSBrowserRowHeight\">17</double>\n\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSFrameSize\">{516, 332}</string>\n\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"590587330\"/>\n\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSLabel\">Column View</string>\n\t\t\t\t\t\t\t\t\t\t<reference key=\"NSColor\" ref=\"594929633\"/>\n\t\t\t\t\t\t\t\t\t\t<reference key=\"NSTabView\" ref=\"818515513\"/>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t<object class=\"NSTabViewItem\" id=\"196980164\">\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSIdentifier\">blank</string>\n\t\t\t\t\t\t\t\t\t\t<object class=\"NSView\" key=\"NSView\" id=\"246602118\">\n\t\t\t\t\t\t\t\t\t\t\t<nil key=\"NSNextResponder\"/>\n\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">256</int>\n\t\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSSubviews\">\n\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSBox\" id=\"866693516\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"246602118\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">18</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSSubviews\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSView\" id=\"4187707\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"866693516\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">274</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSFrameSize\">{516, 334}</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"866693516\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:11</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSFrameSize\">{516, 334}</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"246602118\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"4187707\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSOffsets\">{0, 0}</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSTextFieldCell\" key=\"NSTitleCell\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags\">67108864</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">0</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSContents\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSFont\" key=\"NSSupport\" id=\"26\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSName\">LucidaGrande</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<double key=\"NSSize\">11</double>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSfFlags\">3100</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSBackgroundColor\" ref=\"479335689\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"NSTextColor\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">3</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bytes key=\"NSWhite\">MCAwLjgwMDAwMDAxMTkAA</bytes>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSContentView\" ref=\"4187707\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSBorderType\">0</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSBoxType\">4</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSTitlePosition\">0</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSTransparent\">NO</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"NSBorderColor2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">3</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bytes key=\"NSWhite\">MCAwAA</bytes>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"NSFillColor2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">3</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bytes key=\"NSWhite\">MQA</bytes>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSColorSpace\" key=\"NSCustomColorSpace\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSID\">2</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSFrameSize\">{516, 334}</string>\n\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"866693516\"/>\n\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t<reference key=\"NSColor\" ref=\"594929633\"/>\n\t\t\t\t\t\t\t\t\t\t<reference key=\"NSTabView\" ref=\"818515513\"/>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t<reference key=\"NSSelectedTabViewItem\" ref=\"332855024\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSFont\" ref=\"126613079\"/>\n\t\t\t\t\t\t\t\t<int key=\"NSTvFlags\">6</int>\n\t\t\t\t\t\t\t\t<bool key=\"NSAllowTruncatedLabels\">YES</bool>\n\t\t\t\t\t\t\t\t<bool key=\"NSDrawsBackground\">YES</bool>\n\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSSubviews\">\n\t\t\t\t\t\t\t\t\t<reference ref=\"159793629\"/>\n\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t<object class=\"NSBox\" id=\"91171779\">\n\t\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"901858583\"/>\n\t\t\t\t\t\t\t\t<int key=\"NSvFlags\">10</int>\n\t\t\t\t\t\t\t\t<string key=\"NSFrame\">{{0, 331}, {516, 5}}</string>\n\t\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"901858583\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"818515513\"/>\n\t\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t\t\t\t\t<string key=\"NSOffsets\">{0, 0}</string>\n\t\t\t\t\t\t\t\t<object class=\"NSTextFieldCell\" key=\"NSTitleCell\">\n\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags\">67108864</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">0</int>\n\t\t\t\t\t\t\t\t\t<string key=\"NSContents\">Box</string>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSSupport\" ref=\"126613079\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSBackgroundColor\" ref=\"479335689\"/>\n\t\t\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"NSTextColor\">\n\t\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">3</int>\n\t\t\t\t\t\t\t\t\t\t<bytes key=\"NSWhite\">MCAwLjgwMDAwMDAxMTkAA</bytes>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<int key=\"NSBorderType\">3</int>\n\t\t\t\t\t\t\t\t<int key=\"NSBoxType\">2</int>\n\t\t\t\t\t\t\t\t<int key=\"NSTitlePosition\">0</int>\n\t\t\t\t\t\t\t\t<bool key=\"NSTransparent\">NO</bool>\n\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<string key=\"NSFrame\">{{-1, 46}, {517, 334}}</string>\n\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"1067146949\"/>\n\t\t\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"91171779\"/>\n\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t\t\t<string key=\"NSClassName\">NSView</string>\n\t\t\t\t\t</object>\n\t\t\t\t</array>\n\t\t\t\t<string key=\"NSFrameSize\">{515, 501}</string>\n\t\t\t\t<reference key=\"NSSuperview\"/>\n\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"155461220\"/>\n\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:21</string>\n\t\t\t</object>\n\t\t\t<object class=\"NSTextField\" id=\"109339335\">\n\t\t\t\t<reference key=\"NSNextResponder\"/>\n\t\t\t\t<int key=\"NSvFlags\">266</int>\n\t\t\t\t<string key=\"NSFrameSize\">{496, 14}</string>\n\t\t\t\t<reference key=\"NSSuperview\"/>\n\t\t\t\t<reference key=\"NSWindow\"/>\n\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:1535</string>\n\t\t\t\t<bool key=\"NSEnabled\">YES</bool>\n\t\t\t\t<object class=\"NSTextFieldCell\" key=\"NSCell\" id=\"85037651\">\n\t\t\t\t\t<int key=\"NSCellFlags\">67108928</int>\n\t\t\t\t\t<int key=\"NSCellFlags2\">138545152</int>\n\t\t\t\t\t<string key=\"NSContents\">Label</string>\n\t\t\t\t\t<reference key=\"NSSupport\" ref=\"26\"/>\n\t\t\t\t\t<string key=\"NSCellIdentifier\">_NS:1535</string>\n\t\t\t\t\t<reference key=\"NSControlView\" ref=\"109339335\"/>\n\t\t\t\t\t<reference key=\"NSBackgroundColor\" ref=\"594929633\"/>\n\t\t\t\t\t<reference key=\"NSTextColor\" ref=\"128669735\"/>\n\t\t\t\t</object>\n\t\t\t\t<bool key=\"NSAllowsLogicalLayoutDirection\">NO</bool>\n\t\t\t</object>\n\t\t\t<object class=\"NSViewController\" id=\"329332245\"/>\n\t\t\t<object class=\"NSViewController\" id=\"90794117\"/>\n\t\t\t<object class=\"NSViewController\" id=\"576824129\"/>\n\t\t\t<object class=\"NSCollectionViewItem\" id=\"700265320\"/>\n\t\t\t<object class=\"NSCustomView\" id=\"687293973\">\n\t\t\t\t<nil key=\"NSNextResponder\"/>\n\t\t\t\t<int key=\"NSvFlags\">268</int>\n\t\t\t\t<string key=\"NSFrameSize\">{125, 122}</string>\n\t\t\t\t<string key=\"NSClassName\">CK2IconItemView</string>\n\t\t\t</object>\n\t\t\t<object class=\"NSBox\" id=\"1028213455\">\n\t\t\t\t<nil key=\"NSNextResponder\"/>\n\t\t\t\t<int key=\"NSvFlags\">34</int>\n\t\t\t\t<array class=\"NSMutableArray\" key=\"NSSubviews\">\n\t\t\t\t\t<object class=\"NSView\" id=\"240670495\">\n\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"1028213455\"/>\n\t\t\t\t\t\t<int key=\"NSvFlags\">274</int>\n\t\t\t\t\t\t<string key=\"NSFrame\">{{54, 3}, {69, 108}}</string>\n\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"1028213455\"/>\n\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:11</string>\n\t\t\t\t\t</object>\n\t\t\t\t</array>\n\t\t\t\t<string key=\"NSFrameSize\">{177, 114}</string>\n\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"240670495\"/>\n\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t<string key=\"NSOffsets\">{53, 2}</string>\n\t\t\t\t<object class=\"NSTextFieldCell\" key=\"NSTitleCell\">\n\t\t\t\t\t<int key=\"NSCellFlags\">67108864</int>\n\t\t\t\t\t<int key=\"NSCellFlags2\">0</int>\n\t\t\t\t\t<string key=\"NSContents\"/>\n\t\t\t\t\t<reference key=\"NSSupport\" ref=\"26\"/>\n\t\t\t\t\t<reference key=\"NSBackgroundColor\" ref=\"479335689\"/>\n\t\t\t\t\t<object class=\"NSColor\" key=\"NSTextColor\">\n\t\t\t\t\t\t<int key=\"NSColorSpace\">3</int>\n\t\t\t\t\t\t<bytes key=\"NSWhite\">MCAwLjgwMDAwMDAxMTkAA</bytes>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<reference key=\"NSContentView\" ref=\"240670495\"/>\n\t\t\t\t<int key=\"NSBorderType\">1</int>\n\t\t\t\t<int key=\"NSBoxType\">0</int>\n\t\t\t\t<int key=\"NSTitlePosition\">0</int>\n\t\t\t\t<bool key=\"NSTransparent\">NO</bool>\n\t\t\t</object>\n\t\t</array>\n\t\t<object class=\"IBObjectContainer\" key=\"IBDocument.Objects\">\n\t\t\t<bool key=\"usesAutoincrementingIDs\">NO</bool>\n\t\t\t<array class=\"NSMutableArray\" key=\"connectionRecords\">\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_topView</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"1067146949\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">317</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">view</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"1067146949\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">321</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_listViewController</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"90794117\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">452</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_browserController</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"576824129\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">453</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_iconViewController</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"329332245\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">460</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_hostField</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"738467673\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">320</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">changeHistory:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"744857666\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">377</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_historyButtons</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"744857666\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">376</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_homeButton</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"696197941\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">410</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">home:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"696197941\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">412</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_viewPicker</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"25517991\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">311</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_pathControl</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"554248224\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">420</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">pathControlItemSelected:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"554248224\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">421</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_progressIndicator</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"894084665\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">316</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_newFolderButton</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"526771398\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">381</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_cancelButton</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"990363493\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">373</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">cancel:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"990363493\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">375</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">ok:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"415155764\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">374</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_okButton</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"415155764\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">372</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_topSection</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"155461220\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">490</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_buttonSection</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"801803888\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">491</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_bottomSection</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"1022982886\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">492</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_accessoryContainer</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"1028213455\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">493</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_tabView</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"818515513\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">331</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_middleSection</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"901858583\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">495</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_messageLabel</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"109339335\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">496</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">newFolder:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"526771398\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">497</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">refresh:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"319667558\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">501</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_refreshButton</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"319667558\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">502</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">delegate</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"818515513\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"1001\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">349</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">takeSelectedTabViewItemFromSender:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"818515513\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"25517991\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">304</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">initialFirstResponder</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"332855024\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"488503891\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">360</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">initialFirstResponder</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"87796090\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"813318904\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">478</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">initialFirstResponder</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"733401580\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"590587330\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">479</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">itemPrototype</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"488503891\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"700265320\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">398</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_target</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"700265320\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"329332245\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">472</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">view</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"700265320\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"687293973\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">473</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">delegate</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"590587330\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"576824129\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">428</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_controller</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"576824129\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"1001\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">424</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_browser</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"576824129\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"590587330\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">425</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">view</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"576824129\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"590587330\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">426</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">itemSelected:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"576824129\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"590587330\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">469</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">dataSource</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"813318904\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"90794117\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">447</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">delegate</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"813318904\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"90794117\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">446</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_controller</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"90794117\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"1001\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">448</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">view</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"90794117\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"813318904\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">449</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">itemSelected:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"90794117\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"813318904\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">468</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_outlineView</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"90794117\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"813318904\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">450</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_controller</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"329332245\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"1001\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">459</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">view</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"329332245\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"488503891\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">457</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_iconView</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"329332245\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"488503891\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">456</string>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_item</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"687293973\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"700265320\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<string key=\"id\">474</string>\n\t\t\t\t</object>\n\t\t\t</array>\n\t\t\t<object class=\"IBMutableOrderedSet\" key=\"objectRecords\">\n\t\t\t\t<array key=\"orderedObjects\">\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">0</string>\n\t\t\t\t\t\t<array key=\"object\" id=\"0\"/>\n\t\t\t\t\t\t<reference key=\"children\" ref=\"1000\"/>\n\t\t\t\t\t\t<nil key=\"parent\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">-2</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t\t<string key=\"objectName\">File's Owner</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">-1</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1003\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t\t<string key=\"objectName\">First Responder</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">-3</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1004\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t\t<string key=\"objectName\">Application</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">256</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1067146949\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"155461220\"/>\n\t\t\t\t\t\t\t<reference ref=\"801803888\"/>\n\t\t\t\t\t\t\t<reference ref=\"1022982886\"/>\n\t\t\t\t\t\t\t<reference ref=\"901858583\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">397</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"700265320\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">423</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"576824129\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t\t<string key=\"objectName\">Column View Controller</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">444</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"90794117\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t\t<string key=\"objectName\">List View Controller</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">455</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"329332245\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t\t<string key=\"objectName\">Icon View Controller</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">470</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"687293973\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">483</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"109339335\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"85037651\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t\t<string key=\"objectName\">Message Label</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">484</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"85037651\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"109339335\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">485</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1028213455\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t\t<string key=\"objectName\">Accessory Box</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">486</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"155461220\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"1047945002\"/>\n\t\t\t\t\t\t\t<reference ref=\"738467673\"/>\n\t\t\t\t\t\t\t<reference ref=\"863147072\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1067146949\"/>\n\t\t\t\t\t\t<string key=\"objectName\">Top Section</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">262</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"863147072\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"155461220\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">260</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"738467673\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"600161736\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"155461220\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">301</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"600161736\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"738467673\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">261</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1047945002\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"1017110008\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"155461220\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">300</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1017110008\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1047945002\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">487</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"801803888\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"894084665\"/>\n\t\t\t\t\t\t\t<reference ref=\"554248224\"/>\n\t\t\t\t\t\t\t<reference ref=\"25517991\"/>\n\t\t\t\t\t\t\t<reference ref=\"696197941\"/>\n\t\t\t\t\t\t\t<reference ref=\"744857666\"/>\n\t\t\t\t\t\t\t<reference ref=\"319667558\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1067146949\"/>\n\t\t\t\t\t\t<string key=\"objectName\">Button Bar</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">266</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"744857666\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"635263763\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"801803888\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">271</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"635263763\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"744857666\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">408</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"696197941\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"1017682029\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"801803888\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">409</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1017682029\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"696197941\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">267</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"25517991\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"37032405\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"801803888\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">270</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"37032405\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"25517991\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">414</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"554248224\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"614721080\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"801803888\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">415</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"614721080\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"810032253\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"554248224\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">416</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"810032253\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"47722192\"/>\n\t\t\t\t\t\t\t<reference ref=\"202231990\"/>\n\t\t\t\t\t\t\t<reference ref=\"116971137\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"614721080\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">419</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"47722192\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"810032253\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">418</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"202231990\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"810032253\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">417</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"116971137\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"810032253\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">259</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"894084665\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"801803888\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">489</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1022982886\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"415155764\"/>\n\t\t\t\t\t\t\t<reference ref=\"990363493\"/>\n\t\t\t\t\t\t\t<reference ref=\"526771398\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1067146949\"/>\n\t\t\t\t\t\t<string key=\"objectName\">Bottom Section</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">378</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"526771398\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"1005204993\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1022982886\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">379</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1005204993\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"526771398\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">370</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"990363493\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"502331850\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1022982886\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">371</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"502331850\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"990363493\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">368</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"415155764\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"890432645\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1022982886\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">369</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"890432645\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"415155764\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">494</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"901858583\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"416172757\"/>\n\t\t\t\t\t\t\t<reference ref=\"818515513\"/>\n\t\t\t\t\t\t\t<reference ref=\"91171779\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1067146949\"/>\n\t\t\t\t\t\t<string key=\"objectName\">Middle Section</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">264</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"818515513\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"196980164\"/>\n\t\t\t\t\t\t\t<reference ref=\"733401580\"/>\n\t\t\t\t\t\t\t<reference ref=\"87796090\"/>\n\t\t\t\t\t\t\t<reference ref=\"332855024\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"901858583\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">475</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"196980164\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"246602118\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"818515513\"/>\n\t\t\t\t\t\t<string key=\"objectName\">Tab View Item - Blank</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">279</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"733401580\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"160686083\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"818515513\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">278</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"87796090\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"403468407\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"818515513\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">277</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"332855024\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"159793629\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"818515513\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">292</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"159793629\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"143272352\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"332855024\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">293</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"143272352\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"224021751\"/>\n\t\t\t\t\t\t\t<reference ref=\"407291080\"/>\n\t\t\t\t\t\t\t<reference ref=\"488503891\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"159793629\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">296</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"224021751\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"143272352\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">295</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"407291080\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"143272352\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">282</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"403468407\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"654578631\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"87796090\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">429</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"654578631\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"901995093\"/>\n\t\t\t\t\t\t\t<reference ref=\"719759231\"/>\n\t\t\t\t\t\t\t<reference ref=\"462737862\"/>\n\t\t\t\t\t\t\t<reference ref=\"813318904\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"403468407\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">433</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"901995093\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"654578631\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">432</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"719759231\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"654578631\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">431</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"462737862\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"654578631\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">280</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"160686083\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"590587330\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"733401580\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">422</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"590587330\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"160686083\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">476</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"246602118\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"866693516\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"196980164\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">477</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"866693516\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"246602118\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">499</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"319667558\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"685057230\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"801803888\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">500</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"685057230\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"319667558\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">294</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"488503891\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"143272352\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">430</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"813318904\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"739755454\"/>\n\t\t\t\t\t\t\t<reference ref=\"444278038\"/>\n\t\t\t\t\t\t\t<reference ref=\"837641237\"/>\n\t\t\t\t\t\t\t<reference ref=\"983483088\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"654578631\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">437</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"739755454\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"424095555\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"813318904\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">436</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"444278038\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"580519459\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"813318904\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">435</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"837641237\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"943592824\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"813318904\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">434</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"983483088\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"1010418586\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"813318904\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">443</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1010418586\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"983483088\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">441</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"943592824\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"565579715\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"837641237\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">442</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"565579715\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"943592824\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">439</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"580519459\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"524427632\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"444278038\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">440</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"524427632\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"580519459\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">438</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"424095555\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"739755454\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">353</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"91171779\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"901858583\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<string key=\"id\">354</string>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"416172757\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"901858583\"/>\n\t\t\t\t\t</object>\n\t\t\t\t</array>\n\t\t\t</object>\n\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"flattenedProperties\">\n\t\t\t\t<string key=\"-1.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"-2.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"-3.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"256.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"259.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"260.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"261.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"262.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"264.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"266.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"267.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<integer value=\"2\" key=\"270.IBNSSegmentedControlInspectorSelectedSegmentMetadataKey\"/>\n\t\t\t\t<string key=\"270.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<integer value=\"1\" key=\"271.IBNSSegmentedControlInspectorSelectedSegmentMetadataKey\"/>\n\t\t\t\t<string key=\"271.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"277.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"278.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"279.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"280.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"282.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"292.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"293.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"294.CustomClassName\">CK2IconView</string>\n\t\t\t\t<string key=\"294.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"295.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"296.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"300.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"301.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"353.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"354.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"368.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"369.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"370.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"371.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"378.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"379.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"397.CustomClassName\">CK2IconViewItem</string>\n\t\t\t\t<string key=\"397.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"408.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<integer value=\"0\" key=\"409.IBNSSegmentedControlInspectorSelectedSegmentMetadataKey\"/>\n\t\t\t\t<string key=\"409.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"414.CustomClassName\">CK2PathControl</string>\n\t\t\t\t<string key=\"414.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"415.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"416.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"417.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"418.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"419.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"422.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"423.CustomClassName\">CK2OpenPanelColumnViewController</string>\n\t\t\t\t<string key=\"423.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"429.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"430.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"431.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"432.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"433.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"434.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"435.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"436.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"437.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"438.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"439.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"440.CustomClassName\">CK2FileSizeFormatter</string>\n\t\t\t\t<integer value=\"1040\" key=\"440.IBNumberFormatterBehaviorMetadataKey\"/>\n\t\t\t\t<boolean value=\"YES\" key=\"440.IBNumberFormatterLocalizesFormatMetadataKey\"/>\n\t\t\t\t<string key=\"440.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"441.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<integer value=\"1\" key=\"442.IBDateFormatterBehaviorMetadataKey\"/>\n\t\t\t\t<string key=\"442.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"443.CustomClassName\">CK2FileCell</string>\n\t\t\t\t<string key=\"443.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"444.CustomClassName\">CK2OpenPanelListViewController</string>\n\t\t\t\t<string key=\"444.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"455.CustomClassName\">CK2OpenPanelIconViewController</string>\n\t\t\t\t<string key=\"455.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"470.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"475.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"476.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"477.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"483.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"484.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"485.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"486.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"487.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"489.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"494.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"499.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"500.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t</dictionary>\n\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"unlocalizedProperties\"/>\n\t\t\t<nil key=\"activeLocalization\"/>\n\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"localizations\"/>\n\t\t\t<nil key=\"sourceID\"/>\n\t\t</object>\n\t\t<object class=\"IBClassDescriber\" key=\"IBDocument.Classes\">\n\t\t\t<array class=\"NSMutableArray\" key=\"referencedPartialClassDescriptions\">\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">CK2FileCell</string>\n\t\t\t\t\t<string key=\"superclassName\">NSTextFieldCell</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/CK2FileCell.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">CK2FileSizeFormatter</string>\n\t\t\t\t\t<string key=\"superclassName\">NSNumberFormatter</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/CK2FileSizeFormatter.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">CK2IconItemView</string>\n\t\t\t\t\t<string key=\"superclassName\">NSView</string>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">_item</string>\n\t\t\t\t\t\t<string key=\"NS.object.0\">CK2IconViewItem</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">_item</string>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"NS.object.0\">\n\t\t\t\t\t\t\t<string key=\"name\">_item</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">CK2IconViewItem</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/CK2IconItemView.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">CK2IconView</string>\n\t\t\t\t\t<string key=\"superclassName\">NSCollectionView</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/CK2IconView.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">CK2IconViewItem</string>\n\t\t\t\t\t<string key=\"superclassName\">NSCollectionViewItem</string>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">_target</string>\n\t\t\t\t\t\t<string key=\"NS.object.0\">id</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">_target</string>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"NS.object.0\">\n\t\t\t\t\t\t\t<string key=\"name\">_target</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/CK2IconViewItem.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">CK2OpenPanel</string>\n\t\t\t\t\t<string key=\"superclassName\">NSPanel</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"cancel:\">id</string>\n\t\t\t\t\t\t<string key=\"ok:\">id</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"cancel:\">\n\t\t\t\t\t\t\t<string key=\"name\">cancel:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"ok:\">\n\t\t\t\t\t\t\t<string key=\"name\">ok:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/CK2OpenPanel.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">CK2OpenPanelColumnViewController</string>\n\t\t\t\t\t<string key=\"superclassName\">CK2OpenPanelViewController</string>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">_browser</string>\n\t\t\t\t\t\t<string key=\"NS.object.0\">NSBrowser</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">_browser</string>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"NS.object.0\">\n\t\t\t\t\t\t\t<string key=\"name\">_browser</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSBrowser</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/CK2OpenPanelColumnViewController.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">CK2OpenPanelController</string>\n\t\t\t\t\t<string key=\"superclassName\">NSViewController</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"back:\">id</string>\n\t\t\t\t\t\t<string key=\"cancel:\">id</string>\n\t\t\t\t\t\t<string key=\"changeHistory:\">id</string>\n\t\t\t\t\t\t<string key=\"forward:\">id</string>\n\t\t\t\t\t\t<string key=\"home:\">id</string>\n\t\t\t\t\t\t<string key=\"newFolder:\">id</string>\n\t\t\t\t\t\t<string key=\"ok:\">id</string>\n\t\t\t\t\t\t<string key=\"pathControlItemSelected:\">id</string>\n\t\t\t\t\t\t<string key=\"refresh:\">id</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"back:\">\n\t\t\t\t\t\t\t<string key=\"name\">back:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"cancel:\">\n\t\t\t\t\t\t\t<string key=\"name\">cancel:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"changeHistory:\">\n\t\t\t\t\t\t\t<string key=\"name\">changeHistory:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"forward:\">\n\t\t\t\t\t\t\t<string key=\"name\">forward:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"home:\">\n\t\t\t\t\t\t\t<string key=\"name\">home:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"newFolder:\">\n\t\t\t\t\t\t\t<string key=\"name\">newFolder:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"ok:\">\n\t\t\t\t\t\t\t<string key=\"name\">ok:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"pathControlItemSelected:\">\n\t\t\t\t\t\t\t<string key=\"name\">pathControlItemSelected:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"refresh:\">\n\t\t\t\t\t\t\t<string key=\"name\">refresh:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"_accessoryContainer\">NSBox</string>\n\t\t\t\t\t\t<string key=\"_bottomSection\">NSView</string>\n\t\t\t\t\t\t<string key=\"_browserController\">CK2OpenPanelColumnViewController</string>\n\t\t\t\t\t\t<string key=\"_buttonSection\">NSView</string>\n\t\t\t\t\t\t<string key=\"_cancelButton\">NSButton</string>\n\t\t\t\t\t\t<string key=\"_historyButtons\">NSSegmentedControl</string>\n\t\t\t\t\t\t<string key=\"_homeButton\">NSSegmentedControl</string>\n\t\t\t\t\t\t<string key=\"_hostField\">NSTextField</string>\n\t\t\t\t\t\t<string key=\"_iconViewController\">CK2OpenPanelIconViewController</string>\n\t\t\t\t\t\t<string key=\"_listViewController\">CK2OpenPanelListViewController</string>\n\t\t\t\t\t\t<string key=\"_messageLabel\">NSTextField</string>\n\t\t\t\t\t\t<string key=\"_middleSection\">NSView</string>\n\t\t\t\t\t\t<string key=\"_newFolderButton\">NSButton</string>\n\t\t\t\t\t\t<string key=\"_okButton\">NSButton</string>\n\t\t\t\t\t\t<string key=\"_openPanel\">CK2OpenPanel</string>\n\t\t\t\t\t\t<string key=\"_pathControl\">CK2PathControl</string>\n\t\t\t\t\t\t<string key=\"_progressIndicator\">NSProgressIndicator</string>\n\t\t\t\t\t\t<string key=\"_refreshButton\">NSButton</string>\n\t\t\t\t\t\t<string key=\"_tabView\">NSTabView</string>\n\t\t\t\t\t\t<string key=\"_topSection\">NSView</string>\n\t\t\t\t\t\t<string key=\"_viewPicker\">NSSegmentedControl</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_accessoryContainer\">\n\t\t\t\t\t\t\t<string key=\"name\">_accessoryContainer</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSBox</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_bottomSection\">\n\t\t\t\t\t\t\t<string key=\"name\">_bottomSection</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_browserController\">\n\t\t\t\t\t\t\t<string key=\"name\">_browserController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">CK2OpenPanelColumnViewController</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_buttonSection\">\n\t\t\t\t\t\t\t<string key=\"name\">_buttonSection</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_cancelButton\">\n\t\t\t\t\t\t\t<string key=\"name\">_cancelButton</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSButton</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_historyButtons\">\n\t\t\t\t\t\t\t<string key=\"name\">_historyButtons</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSSegmentedControl</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_homeButton\">\n\t\t\t\t\t\t\t<string key=\"name\">_homeButton</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSSegmentedControl</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_hostField\">\n\t\t\t\t\t\t\t<string key=\"name\">_hostField</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSTextField</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_iconViewController\">\n\t\t\t\t\t\t\t<string key=\"name\">_iconViewController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">CK2OpenPanelIconViewController</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_listViewController\">\n\t\t\t\t\t\t\t<string key=\"name\">_listViewController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">CK2OpenPanelListViewController</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_messageLabel\">\n\t\t\t\t\t\t\t<string key=\"name\">_messageLabel</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSTextField</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_middleSection\">\n\t\t\t\t\t\t\t<string key=\"name\">_middleSection</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_newFolderButton\">\n\t\t\t\t\t\t\t<string key=\"name\">_newFolderButton</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSButton</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_okButton\">\n\t\t\t\t\t\t\t<string key=\"name\">_okButton</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSButton</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_openPanel\">\n\t\t\t\t\t\t\t<string key=\"name\">_openPanel</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">CK2OpenPanel</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_pathControl\">\n\t\t\t\t\t\t\t<string key=\"name\">_pathControl</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">CK2PathControl</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_progressIndicator\">\n\t\t\t\t\t\t\t<string key=\"name\">_progressIndicator</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSProgressIndicator</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_refreshButton\">\n\t\t\t\t\t\t\t<string key=\"name\">_refreshButton</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSButton</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_tabView\">\n\t\t\t\t\t\t\t<string key=\"name\">_tabView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSTabView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_topSection\">\n\t\t\t\t\t\t\t<string key=\"name\">_topSection</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_viewPicker\">\n\t\t\t\t\t\t\t<string key=\"name\">_viewPicker</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSSegmentedControl</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/CK2OpenPanelController.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">CK2OpenPanelIconViewController</string>\n\t\t\t\t\t<string key=\"superclassName\">CK2OpenPanelViewController</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"goToSelectedItem:\">id</string>\n\t\t\t\t\t\t<string key=\"itemDoubleClicked:\">id</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"goToSelectedItem:\">\n\t\t\t\t\t\t\t<string key=\"name\">goToSelectedItem:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"itemDoubleClicked:\">\n\t\t\t\t\t\t\t<string key=\"name\">itemDoubleClicked:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">_iconView</string>\n\t\t\t\t\t\t<string key=\"NS.object.0\">CK2IconView</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">_iconView</string>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"NS.object.0\">\n\t\t\t\t\t\t\t<string key=\"name\">_iconView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">CK2IconView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/CK2OpenPanelIconViewController.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">CK2OpenPanelListViewController</string>\n\t\t\t\t\t<string key=\"superclassName\">CK2OpenPanelViewController</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"goToSelectedItem:\">id</string>\n\t\t\t\t\t\t<string key=\"itemDoubleClicked:\">id</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"goToSelectedItem:\">\n\t\t\t\t\t\t\t<string key=\"name\">goToSelectedItem:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"itemDoubleClicked:\">\n\t\t\t\t\t\t\t<string key=\"name\">itemDoubleClicked:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">_outlineView</string>\n\t\t\t\t\t\t<string key=\"NS.object.0\">NSOutlineView</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">_outlineView</string>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"NS.object.0\">\n\t\t\t\t\t\t\t<string key=\"name\">_outlineView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSOutlineView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/CK2OpenPanelListViewController.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">CK2OpenPanelViewController</string>\n\t\t\t\t\t<string key=\"superclassName\">NSViewController</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"goToSelectedItem:\">id</string>\n\t\t\t\t\t\t<string key=\"itemDoubleClicked:\">id</string>\n\t\t\t\t\t\t<string key=\"itemSelected:\">id</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"goToSelectedItem:\">\n\t\t\t\t\t\t\t<string key=\"name\">goToSelectedItem:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"itemDoubleClicked:\">\n\t\t\t\t\t\t\t<string key=\"name\">itemDoubleClicked:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"itemSelected:\">\n\t\t\t\t\t\t\t<string key=\"name\">itemSelected:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">_controller</string>\n\t\t\t\t\t\t<string key=\"NS.object.0\">CK2OpenPanelController</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">_controller</string>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"NS.object.0\">\n\t\t\t\t\t\t\t<string key=\"name\">_controller</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">CK2OpenPanelController</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/CK2OpenPanelViewController.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">CK2PathControl</string>\n\t\t\t\t\t<string key=\"superclassName\">NSPopUpButton</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/CK2PathControl.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t</array>\n\t\t</object>\n\t\t<int key=\"IBDocument.localizationMode\">0</int>\n\t\t<string key=\"IBDocument.TargetRuntimeIdentifier\">IBCocoaFramework</string>\n\t\t<bool key=\"IBDocument.previouslyAttemptedUpgradeToXcode5\">YES</bool>\n\t\t<object class=\"NSMutableDictionary\" key=\"IBDocument.PluginDeclaredDependencies\">\n\t\t\t<string key=\"NS.key.0\">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>\n\t\t\t<real value=\"1060\" key=\"NS.object.0\"/>\n\t\t</object>\n\t\t<object class=\"NSMutableDictionary\" key=\"IBDocument.PluginDeclaredDependencyDefaults\">\n\t\t\t<string key=\"NS.key.0\">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>\n\t\t\t<real value=\"1060\" key=\"NS.object.0\"/>\n\t\t</object>\n\t\t<object class=\"NSMutableDictionary\" key=\"IBDocument.PluginDeclaredDevelopmentDependencies\">\n\t\t\t<string key=\"NS.key.0\">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>\n\t\t\t<integer value=\"4600\" key=\"NS.object.0\"/>\n\t\t</object>\n\t\t<bool key=\"IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion\">YES</bool>\n\t\t<int key=\"IBDocument.defaultPropertyAccessControl\">3</int>\n\t\t<dictionary class=\"NSMutableDictionary\" key=\"IBDocument.LastKnownImageSizes\">\n\t\t\t<string key=\"NSColumnViewTemplate\">{13, 10}</string>\n\t\t\t<string key=\"NSGoLeftTemplate\">{9, 9}</string>\n\t\t\t<string key=\"NSGoRightTemplate\">{9, 9}</string>\n\t\t\t<string key=\"NSHomeTemplate\">{14, 13}</string>\n\t\t\t<string key=\"NSIconViewTemplate\">{11, 10}</string>\n\t\t\t<string key=\"NSListViewTemplate\">{11, 10}</string>\n\t\t\t<string key=\"NSMenuCheckmark\">{11, 11}</string>\n\t\t\t<string key=\"NSMenuMixedState\">{10, 3}</string>\n\t\t\t<string key=\"NSNetwork\">{32, 32}</string>\n\t\t\t<string key=\"NSRefreshTemplate\">{10, 12}</string>\n\t\t</dictionary>\n\t</data>\n</archive>\n"
  },
  {
    "path": "ConnectionKit/en.lproj/CK2PathFieldWindow.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<archive type=\"com.apple.InterfaceBuilder3.Cocoa.XIB\" version=\"8.00\">\n\t<data>\n\t\t<int key=\"IBDocument.SystemTarget\">1060</int>\n\t\t<string key=\"IBDocument.SystemVersion\">11G63</string>\n\t\t<string key=\"IBDocument.InterfaceBuilderVersion\">3084</string>\n\t\t<string key=\"IBDocument.AppKitVersion\">1138.51</string>\n\t\t<string key=\"IBDocument.HIToolboxVersion\">569.00</string>\n\t\t<object class=\"NSMutableDictionary\" key=\"IBDocument.PluginVersions\">\n\t\t\t<string key=\"NS.key.0\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t<string key=\"NS.object.0\">3084</string>\n\t\t</object>\n\t\t<array key=\"IBDocument.IntegratedClassDependencies\">\n\t\t\t<string>NSButton</string>\n\t\t\t<string>NSButtonCell</string>\n\t\t\t<string>NSCustomObject</string>\n\t\t\t<string>NSTextField</string>\n\t\t\t<string>NSTextFieldCell</string>\n\t\t\t<string>NSView</string>\n\t\t\t<string>NSWindowTemplate</string>\n\t\t</array>\n\t\t<array key=\"IBDocument.PluginDependencies\">\n\t\t\t<string>com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t</array>\n\t\t<object class=\"NSMutableDictionary\" key=\"IBDocument.Metadata\">\n\t\t\t<string key=\"NS.key.0\">PluginDependencyRecalculationVersion</string>\n\t\t\t<integer value=\"1\" key=\"NS.object.0\"/>\n\t\t</object>\n\t\t<array class=\"NSMutableArray\" key=\"IBDocument.RootObjects\" id=\"1000\">\n\t\t\t<object class=\"NSCustomObject\" id=\"1001\">\n\t\t\t\t<string key=\"NSClassName\">CK2PathFieldWindowController</string>\n\t\t\t</object>\n\t\t\t<object class=\"NSCustomObject\" id=\"1003\">\n\t\t\t\t<string key=\"NSClassName\">FirstResponder</string>\n\t\t\t</object>\n\t\t\t<object class=\"NSCustomObject\" id=\"1004\">\n\t\t\t\t<string key=\"NSClassName\">NSApplication</string>\n\t\t\t</object>\n\t\t\t<object class=\"NSWindowTemplate\" id=\"1005\">\n\t\t\t\t<int key=\"NSWindowStyleMask\">1</int>\n\t\t\t\t<int key=\"NSWindowBacking\">2</int>\n\t\t\t\t<string key=\"NSWindowRect\">{{196, 240}, {430, 127}}</string>\n\t\t\t\t<int key=\"NSWTFlags\">1618478080</int>\n\t\t\t\t<string key=\"NSWindowTitle\">Go to folder</string>\n\t\t\t\t<string key=\"NSWindowClass\">NSWindow</string>\n\t\t\t\t<nil key=\"NSViewClass\"/>\n\t\t\t\t<nil key=\"NSUserInterfaceItemIdentifier\"/>\n\t\t\t\t<object class=\"NSView\" key=\"NSWindowView\" id=\"1006\">\n\t\t\t\t\t<reference key=\"NSNextResponder\"/>\n\t\t\t\t\t<int key=\"NSvFlags\">256</int>\n\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSSubviews\">\n\t\t\t\t\t\t<object class=\"NSTextField\" id=\"233813494\">\n\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"1006\"/>\n\t\t\t\t\t\t\t<int key=\"NSvFlags\">268</int>\n\t\t\t\t\t\t\t<string key=\"NSFrame\">{{17, 90}, {109, 17}}</string>\n\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"1006\"/>\n\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"766155985\"/>\n\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:1535</string>\n\t\t\t\t\t\t\t<bool key=\"NSEnabled\">YES</bool>\n\t\t\t\t\t\t\t<object class=\"NSTextFieldCell\" key=\"NSCell\" id=\"520220047\">\n\t\t\t\t\t\t\t\t<int key=\"NSCellFlags\">68157504</int>\n\t\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">272630784</int>\n\t\t\t\t\t\t\t\t<string key=\"NSContents\">Go to the folder:</string>\n\t\t\t\t\t\t\t\t<object class=\"NSFont\" key=\"NSSupport\" id=\"739876697\">\n\t\t\t\t\t\t\t\t\t<string key=\"NSName\">LucidaGrande</string>\n\t\t\t\t\t\t\t\t\t<double key=\"NSSize\">13</double>\n\t\t\t\t\t\t\t\t\t<int key=\"NSfFlags\">1044</int>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<string key=\"NSCellIdentifier\">_NS:1535</string>\n\t\t\t\t\t\t\t\t<reference key=\"NSControlView\" ref=\"233813494\"/>\n\t\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"NSBackgroundColor\">\n\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">6</int>\n\t\t\t\t\t\t\t\t\t<string key=\"NSCatalogName\">System</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSColorName\">controlColor</string>\n\t\t\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"NSColor\">\n\t\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">3</int>\n\t\t\t\t\t\t\t\t\t\t<bytes key=\"NSWhite\">MC42NjY2NjY2NjY3AA</bytes>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"NSTextColor\">\n\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">6</int>\n\t\t\t\t\t\t\t\t\t<string key=\"NSCatalogName\">System</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSColorName\">controlTextColor</string>\n\t\t\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"NSColor\" id=\"390508267\">\n\t\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">3</int>\n\t\t\t\t\t\t\t\t\t\t<bytes key=\"NSWhite\">MAA</bytes>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"NSTextField\" id=\"766155985\">\n\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"1006\"/>\n\t\t\t\t\t\t\t<int key=\"NSvFlags\">268</int>\n\t\t\t\t\t\t\t<string key=\"NSFrame\">{{20, 60}, {390, 22}}</string>\n\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"1006\"/>\n\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"250925408\"/>\n\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t\t\t\t<bool key=\"NSEnabled\">YES</bool>\n\t\t\t\t\t\t\t<object class=\"NSTextFieldCell\" key=\"NSCell\" id=\"465651237\">\n\t\t\t\t\t\t\t\t<int key=\"NSCellFlags\">-1804599231</int>\n\t\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">272630784</int>\n\t\t\t\t\t\t\t\t<string key=\"NSContents\"/>\n\t\t\t\t\t\t\t\t<reference key=\"NSSupport\" ref=\"739876697\"/>\n\t\t\t\t\t\t\t\t<string key=\"NSCellIdentifier\">_NS:9</string>\n\t\t\t\t\t\t\t\t<reference key=\"NSControlView\" ref=\"766155985\"/>\n\t\t\t\t\t\t\t\t<bool key=\"NSDrawsBackground\">YES</bool>\n\t\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"NSBackgroundColor\">\n\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">6</int>\n\t\t\t\t\t\t\t\t\t<string key=\"NSCatalogName\">System</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSColorName\">textBackgroundColor</string>\n\t\t\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"NSColor\">\n\t\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">3</int>\n\t\t\t\t\t\t\t\t\t\t<bytes key=\"NSWhite\">MQA</bytes>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSColor\" key=\"NSTextColor\">\n\t\t\t\t\t\t\t\t\t<int key=\"NSColorSpace\">6</int>\n\t\t\t\t\t\t\t\t\t<string key=\"NSCatalogName\">System</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSColorName\">textColor</string>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSColor\" ref=\"390508267\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"NSButton\" id=\"601885667\">\n\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"1006\"/>\n\t\t\t\t\t\t\t<int key=\"NSvFlags\">268</int>\n\t\t\t\t\t\t\t<string key=\"NSFrame\">{{324, 12}, {92, 32}}</string>\n\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"1006\"/>\n\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\"/>\n\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t\t\t\t<bool key=\"NSEnabled\">YES</bool>\n\t\t\t\t\t\t\t<object class=\"NSButtonCell\" key=\"NSCell\" id=\"468379084\">\n\t\t\t\t\t\t\t\t<int key=\"NSCellFlags\">67108864</int>\n\t\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">134217728</int>\n\t\t\t\t\t\t\t\t<string key=\"NSContents\">Go</string>\n\t\t\t\t\t\t\t\t<reference key=\"NSSupport\" ref=\"739876697\"/>\n\t\t\t\t\t\t\t\t<string key=\"NSCellIdentifier\">_NS:9</string>\n\t\t\t\t\t\t\t\t<reference key=\"NSControlView\" ref=\"601885667\"/>\n\t\t\t\t\t\t\t\t<int key=\"NSButtonFlags\">-2038284288</int>\n\t\t\t\t\t\t\t\t<int key=\"NSButtonFlags2\">129</int>\n\t\t\t\t\t\t\t\t<string key=\"NSAlternateContents\"/>\n\t\t\t\t\t\t\t\t<string type=\"base64-UTF8\" key=\"NSKeyEquivalent\">DQ</string>\n\t\t\t\t\t\t\t\t<int key=\"NSPeriodicDelay\">200</int>\n\t\t\t\t\t\t\t\t<int key=\"NSPeriodicInterval\">25</int>\n\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"NSButton\" id=\"250925408\">\n\t\t\t\t\t\t\t<reference key=\"NSNextResponder\" ref=\"1006\"/>\n\t\t\t\t\t\t\t<int key=\"NSvFlags\">268</int>\n\t\t\t\t\t\t\t<string key=\"NSFrame\">{{232, 12}, {92, 32}}</string>\n\t\t\t\t\t\t\t<reference key=\"NSSuperview\" ref=\"1006\"/>\n\t\t\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"601885667\"/>\n\t\t\t\t\t\t\t<string key=\"NSReuseIdentifierKey\">_NS:9</string>\n\t\t\t\t\t\t\t<bool key=\"NSEnabled\">YES</bool>\n\t\t\t\t\t\t\t<object class=\"NSButtonCell\" key=\"NSCell\" id=\"705695768\">\n\t\t\t\t\t\t\t\t<int key=\"NSCellFlags\">67108864</int>\n\t\t\t\t\t\t\t\t<int key=\"NSCellFlags2\">134217728</int>\n\t\t\t\t\t\t\t\t<string key=\"NSContents\">Cancel</string>\n\t\t\t\t\t\t\t\t<reference key=\"NSSupport\" ref=\"739876697\"/>\n\t\t\t\t\t\t\t\t<string key=\"NSCellIdentifier\">_NS:9</string>\n\t\t\t\t\t\t\t\t<reference key=\"NSControlView\" ref=\"250925408\"/>\n\t\t\t\t\t\t\t\t<int key=\"NSButtonFlags\">-2038284288</int>\n\t\t\t\t\t\t\t\t<int key=\"NSButtonFlags2\">129</int>\n\t\t\t\t\t\t\t\t<string key=\"NSAlternateContents\"/>\n\t\t\t\t\t\t\t\t<string type=\"base64-UTF8\" key=\"NSKeyEquivalent\">Gw</string>\n\t\t\t\t\t\t\t\t<int key=\"NSPeriodicDelay\">200</int>\n\t\t\t\t\t\t\t\t<int key=\"NSPeriodicInterval\">25</int>\n\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</array>\n\t\t\t\t\t<string key=\"NSFrameSize\">{430, 127}</string>\n\t\t\t\t\t<reference key=\"NSSuperview\"/>\n\t\t\t\t\t<reference key=\"NSNextKeyView\" ref=\"233813494\"/>\n\t\t\t\t</object>\n\t\t\t\t<string key=\"NSScreenRect\">{{0, 0}, {1920, 1178}}</string>\n\t\t\t\t<string key=\"NSMaxSize\">{10000000000000, 10000000000000}</string>\n\t\t\t\t<bool key=\"NSWindowIsRestorable\">YES</bool>\n\t\t\t</object>\n\t\t</array>\n\t\t<object class=\"IBObjectContainer\" key=\"IBDocument.Objects\">\n\t\t\t<array class=\"NSMutableArray\" key=\"connectionRecords\">\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">window</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"1005\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">3</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_field</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"766155985\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">70</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">_goButton</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"601885667\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">71</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">go:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"601885667\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">72</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">cancel:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"250925408\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">73</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">delegate</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1005\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"1001\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">4</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">delegate</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"766155985\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"1001\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">74</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">performClick:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"601885667\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"766155985\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">75</int>\n\t\t\t\t</object>\n\t\t\t</array>\n\t\t\t<object class=\"IBMutableOrderedSet\" key=\"objectRecords\">\n\t\t\t\t<array key=\"orderedObjects\">\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">0</int>\n\t\t\t\t\t\t<array key=\"object\" id=\"0\"/>\n\t\t\t\t\t\t<reference key=\"children\" ref=\"1000\"/>\n\t\t\t\t\t\t<nil key=\"parent\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">-2</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1001\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t\t<string key=\"objectName\">File's Owner</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">-1</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1003\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t\t<string key=\"objectName\">First Responder</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">-3</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1004\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t\t<string key=\"objectName\">Application</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">1</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1005\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"1006\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">2</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1006\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"233813494\"/>\n\t\t\t\t\t\t\t<reference ref=\"766155985\"/>\n\t\t\t\t\t\t\t<reference ref=\"601885667\"/>\n\t\t\t\t\t\t\t<reference ref=\"250925408\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1005\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">5</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"233813494\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"520220047\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1006\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">6</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"520220047\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"233813494\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">11</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"766155985\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"465651237\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1006\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">12</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"465651237\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"766155985\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">16</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"601885667\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"468379084\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1006\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">17</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"468379084\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"601885667\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">20</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"250925408\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"705695768\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1006\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">21</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"705695768\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"250925408\"/>\n\t\t\t\t\t</object>\n\t\t\t\t</array>\n\t\t\t</object>\n\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"flattenedProperties\">\n\t\t\t\t<string key=\"-1.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"-2.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"-3.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"1.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"1.IBWindowTemplateEditedContentRect\">{{357, 418}, {480, 270}}</string>\n\t\t\t\t<boolean value=\"NO\" key=\"1.NSWindowTemplate.visibleAtLaunch\"/>\n\t\t\t\t<string key=\"11.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"12.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"16.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"17.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"2.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"20.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"21.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"5.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"6.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t</dictionary>\n\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"unlocalizedProperties\"/>\n\t\t\t<nil key=\"activeLocalization\"/>\n\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"localizations\"/>\n\t\t\t<nil key=\"sourceID\"/>\n\t\t\t<int key=\"maxID\">75</int>\n\t\t</object>\n\t\t<object class=\"IBClassDescriber\" key=\"IBDocument.Classes\"/>\n\t\t<int key=\"IBDocument.localizationMode\">0</int>\n\t\t<string key=\"IBDocument.TargetRuntimeIdentifier\">IBCocoaFramework</string>\n\t\t<object class=\"NSMutableDictionary\" key=\"IBDocument.PluginDeclaredDependencies\">\n\t\t\t<string key=\"NS.key.0\">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>\n\t\t\t<real value=\"1060\" key=\"NS.object.0\"/>\n\t\t</object>\n\t\t<bool key=\"IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion\">YES</bool>\n\t\t<int key=\"IBDocument.defaultPropertyAccessControl\">3</int>\n\t</data>\n</archive>\n"
  },
  {
    "path": "ConnectionKit/main.m",
    "content": "//\n//  main.m\n//  FTPConnection\n//\n//  Created by Greg Hulands on 3/12/04.\n//  Copyright __MyCompanyName__ 2004. All rights reserved.\n//\n\n#import <Cocoa/Cocoa.h>\n\nint main(int argc, char *argv[])\n{\n    return NSApplicationMain(argc,  (const char **) argv);\n}\n"
  },
  {
    "path": "ConnectionKit 2.graffle",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>ActiveLayerIndex</key>\n\t<integer>0</integer>\n\t<key>ApplicationVersion</key>\n\t<array>\n\t\t<string>com.omnigroup.OmniGraffle</string>\n\t\t<string>129.18</string>\n\t</array>\n\t<key>AutoAdjust</key>\n\t<false/>\n\t<key>CanvasColor</key>\n\t<dict>\n\t\t<key>w</key>\n\t\t<string>1</string>\n\t</dict>\n\t<key>CanvasOrigin</key>\n\t<string>{0, 0}</string>\n\t<key>CanvasScale</key>\n\t<real>1</real>\n\t<key>ColumnAlign</key>\n\t<integer>1</integer>\n\t<key>ColumnSpacing</key>\n\t<real>36</real>\n\t<key>CreationDate</key>\n\t<string>2012-12-16 20:51:20 +0000</string>\n\t<key>Creator</key>\n\t<string>Mike</string>\n\t<key>DisplayScale</key>\n\t<string>1 cm = 1 cm</string>\n\t<key>FileType</key>\n\t<string>flat</string>\n\t<key>GraphDocumentVersion</key>\n\t<integer>5</integer>\n\t<key>GraphicsList</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>Class</key>\n\t\t\t<string>LineGraphic</string>\n\t\t\t<key>Head</key>\n\t\t\t<dict>\n\t\t\t\t<key>ID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>ID</key>\n\t\t\t<integer>33</integer>\n\t\t\t<key>Points</key>\n\t\t\t<array>\n\t\t\t\t<string>{366.2634, 303.48264}</string>\n\t\t\t\t<string>{384.2247, 310.21814}</string>\n\t\t\t</array>\n\t\t\t<key>Style</key>\n\t\t\t<dict>\n\t\t\t\t<key>stroke</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Color</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>a</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t\t<key>b</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t\t<key>g</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t\t<key>r</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<key>HeadArrow</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t\t<key>TailArrow</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>Tail</key>\n\t\t\t<dict>\n\t\t\t\t<key>ID</key>\n\t\t\t\t<integer>3</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>Class</key>\n\t\t\t<string>LineGraphic</string>\n\t\t\t<key>Head</key>\n\t\t\t<dict>\n\t\t\t\t<key>ID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>ID</key>\n\t\t\t<integer>32</integer>\n\t\t\t<key>Points</key>\n\t\t\t<array>\n\t\t\t\t<string>{373.7384, 275.28067}</string>\n\t\t\t\t<string>{384.30875, 284.08932}</string>\n\t\t\t</array>\n\t\t\t<key>Style</key>\n\t\t\t<dict>\n\t\t\t\t<key>stroke</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Color</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>a</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t\t<key>b</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t\t<key>g</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t\t<key>r</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<key>HeadArrow</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t\t<key>TailArrow</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>Tail</key>\n\t\t\t<dict>\n\t\t\t\t<key>ID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>Class</key>\n\t\t\t<string>LineGraphic</string>\n\t\t\t<key>ID</key>\n\t\t\t<integer>30</integer>\n\t\t\t<key>Points</key>\n\t\t\t<array>\n\t\t\t\t<string>{368.43951, 275.34518}</string>\n\t\t\t\t<string>{421.32031, 339.00391}</string>\n\t\t\t</array>\n\t\t\t<key>Style</key>\n\t\t\t<dict>\n\t\t\t\t<key>stroke</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Color</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>a</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t\t<key>b</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t\t<key>g</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t\t<key>r</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<key>HeadArrow</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t\t<key>TailArrow</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>Tail</key>\n\t\t\t<dict>\n\t\t\t\t<key>ID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>Class</key>\n\t\t\t<string>LineGraphic</string>\n\t\t\t<key>Head</key>\n\t\t\t<dict>\n\t\t\t\t<key>ID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>ID</key>\n\t\t\t<integer>28</integer>\n\t\t\t<key>Points</key>\n\t\t\t<array>\n\t\t\t\t<string>{396.50226, 275.12875}</string>\n\t\t\t\t<string>{497.60785, 311.23788}</string>\n\t\t\t</array>\n\t\t\t<key>Style</key>\n\t\t\t<dict>\n\t\t\t\t<key>stroke</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Color</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>a</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t\t<key>b</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t\t<key>g</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t\t<key>r</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<key>HeadArrow</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t\t<key>TailArrow</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>Tail</key>\n\t\t\t<dict>\n\t\t\t\t<key>ID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>Bounds</key>\n\t\t\t<string>{{498.07874, 274.96057}, {113.38577, 113.38593}}</string>\n\t\t\t<key>Class</key>\n\t\t\t<string>ShapedGraphic</string>\n\t\t\t<key>FontInfo</key>\n\t\t\t<dict>\n\t\t\t\t<key>Color</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>w</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t</dict>\n\t\t\t\t<key>Font</key>\n\t\t\t\t<string>Helvetica</string>\n\t\t\t\t<key>NSKern</key>\n\t\t\t\t<real>0.0</real>\n\t\t\t\t<key>Size</key>\n\t\t\t\t<real>12</real>\n\t\t\t</dict>\n\t\t\t<key>ID</key>\n\t\t\t<integer>27</integer>\n\t\t\t<key>Shape</key>\n\t\t\t<string>Rectangle</string>\n\t\t\t<key>Style</key>\n\t\t\t<dict>\n\t\t\t\t<key>fill</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>GradientColor</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>w</key>\n\t\t\t\t\t\t<string>0.666667</string>\n\t\t\t\t\t</dict>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>Text</key>\n\t\t\t<dict>\n\t\t\t\t<key>Text</key>\n\t\t\t\t<string>{\\rtf1\\ansi\\ansicpg1252\\cocoartf1138\\cocoasubrtf510\n{\\fonttbl\\f0\\fswiss\\fcharset0 Helvetica;}\n{\\colortbl;\\red255\\green255\\blue255;}\n\\pard\\tx560\\tx1120\\tx1680\\tx2240\\tx2800\\tx3360\\tx3920\\tx4480\\tx5040\\tx5600\\tx6160\\tx6720\\qc\n\n\\f0\\fs24 \\cf0 \\expnd0\\expndtw0\\kerning0\nNSFileManager}</string>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>Bounds</key>\n\t\t\t<string>{{328.00006, 331.65356}, {56.692913, 56.692902}}</string>\n\t\t\t<key>Class</key>\n\t\t\t<string>ShapedGraphic</string>\n\t\t\t<key>FontInfo</key>\n\t\t\t<dict>\n\t\t\t\t<key>Color</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>w</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t</dict>\n\t\t\t\t<key>Font</key>\n\t\t\t\t<string>Helvetica</string>\n\t\t\t\t<key>NSKern</key>\n\t\t\t\t<real>0.0</real>\n\t\t\t\t<key>Size</key>\n\t\t\t\t<real>12</real>\n\t\t\t</dict>\n\t\t\t<key>ID</key>\n\t\t\t<integer>26</integer>\n\t\t\t<key>Shape</key>\n\t\t\t<string>Rectangle</string>\n\t\t\t<key>Style</key>\n\t\t\t<dict>\n\t\t\t\t<key>fill</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>GradientColor</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>w</key>\n\t\t\t\t\t\t<string>0.666667</string>\n\t\t\t\t\t</dict>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>Text</key>\n\t\t\t<dict>\n\t\t\t\t<key>Text</key>\n\t\t\t\t<string>{\\rtf1\\ansi\\ansicpg1252\\cocoartf1138\\cocoasubrtf510\n{\\fonttbl\\f0\\fswiss\\fcharset0 Helvetica;}\n{\\colortbl;\\red255\\green255\\blue255;}\n\\pard\\tx560\\tx1120\\tx1680\\tx2240\\tx2800\\tx3360\\tx3920\\tx4480\\tx5040\\tx5600\\tx6160\\tx6720\\qc\n\n\\f0\\fs24 \\cf0 \\expnd0\\expndtw0\\kerning0\nlibcares}</string>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>Class</key>\n\t\t\t<string>LineGraphic</string>\n\t\t\t<key>Head</key>\n\t\t\t<dict>\n\t\t\t\t<key>ID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>ID</key>\n\t\t\t<integer>24</integer>\n\t\t\t<key>Points</key>\n\t\t\t<array>\n\t\t\t\t<string>{157.92131, 332.15356}</string>\n\t\t\t\t<string>{157.92136, 360.00006}</string>\n\t\t\t</array>\n\t\t\t<key>Style</key>\n\t\t\t<dict>\n\t\t\t\t<key>stroke</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Color</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>a</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t\t<key>b</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t\t<key>g</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t\t<key>r</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<key>HeadArrow</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t\t<key>TailArrow</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>Tail</key>\n\t\t\t<dict>\n\t\t\t\t<key>ID</key>\n\t\t\t\t<integer>18</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>Bounds</key>\n\t\t\t<string>{{101.22847, 331.65359}, {113.38577, 56.692902}}</string>\n\t\t\t<key>Class</key>\n\t\t\t<string>ShapedGraphic</string>\n\t\t\t<key>FontInfo</key>\n\t\t\t<dict>\n\t\t\t\t<key>Color</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>w</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t</dict>\n\t\t\t\t<key>Font</key>\n\t\t\t\t<string>Helvetica</string>\n\t\t\t\t<key>NSKern</key>\n\t\t\t\t<real>0.0</real>\n\t\t\t\t<key>Size</key>\n\t\t\t\t<real>12</real>\n\t\t\t</dict>\n\t\t\t<key>ID</key>\n\t\t\t<integer>23</integer>\n\t\t\t<key>Shape</key>\n\t\t\t<string>Rectangle</string>\n\t\t\t<key>Style</key>\n\t\t\t<dict>\n\t\t\t\t<key>fill</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>GradientColor</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>w</key>\n\t\t\t\t\t\t<string>0.666667</string>\n\t\t\t\t\t</dict>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>Text</key>\n\t\t\t<dict>\n\t\t\t\t<key>Text</key>\n\t\t\t\t<string>{\\rtf1\\ansi\\ansicpg1252\\cocoartf1138\\cocoasubrtf510\n{\\fonttbl\\f0\\fswiss\\fcharset0 Helvetica;}\n{\\colortbl;\\red255\\green255\\blue255;}\n\\pard\\tx560\\tx1120\\tx1680\\tx2240\\tx2800\\tx3360\\tx3920\\tx4480\\tx5040\\tx5600\\tx6160\\tx6720\\qc\n\n\\f0\\fs24 \\cf0 \\expnd0\\expndtw0\\kerning0\nCFNetwork}</string>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>Bounds</key>\n\t\t\t<string>{{271.30713, 360}, {56.692913, 28.346457}}</string>\n\t\t\t<key>Class</key>\n\t\t\t<string>ShapedGraphic</string>\n\t\t\t<key>FontInfo</key>\n\t\t\t<dict>\n\t\t\t\t<key>Color</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>w</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t</dict>\n\t\t\t\t<key>Font</key>\n\t\t\t\t<string>Helvetica</string>\n\t\t\t\t<key>NSKern</key>\n\t\t\t\t<real>0.0</real>\n\t\t\t\t<key>Size</key>\n\t\t\t\t<real>12</real>\n\t\t\t</dict>\n\t\t\t<key>ID</key>\n\t\t\t<integer>12</integer>\n\t\t\t<key>Shape</key>\n\t\t\t<string>Rectangle</string>\n\t\t\t<key>Style</key>\n\t\t\t<dict>\n\t\t\t\t<key>fill</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>GradientColor</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>w</key>\n\t\t\t\t\t\t<string>0.666667</string>\n\t\t\t\t\t</dict>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>Text</key>\n\t\t\t<dict>\n\t\t\t\t<key>Text</key>\n\t\t\t\t<string>{\\rtf1\\ansi\\ansicpg1252\\cocoartf1138\\cocoasubrtf510\n{\\fonttbl\\f0\\fswiss\\fcharset0 Helvetica;}\n{\\colortbl;\\red255\\green255\\blue255;}\n\\pard\\tx560\\tx1120\\tx1680\\tx2240\\tx2800\\tx3360\\tx3920\\tx4480\\tx5040\\tx5600\\tx6160\\tx6720\\qc\n\n\\f0\\fs24 \\cf0 \\expnd0\\expndtw0\\kerning0\nlibcrypto}</string>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>Bounds</key>\n\t\t\t<string>{{214.61424, 360}, {56.692913, 28.346457}}</string>\n\t\t\t<key>Class</key>\n\t\t\t<string>ShapedGraphic</string>\n\t\t\t<key>FontInfo</key>\n\t\t\t<dict>\n\t\t\t\t<key>Color</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>w</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t</dict>\n\t\t\t\t<key>Font</key>\n\t\t\t\t<string>Helvetica</string>\n\t\t\t\t<key>NSKern</key>\n\t\t\t\t<real>0.0</real>\n\t\t\t\t<key>Size</key>\n\t\t\t\t<real>12</real>\n\t\t\t</dict>\n\t\t\t<key>ID</key>\n\t\t\t<integer>10</integer>\n\t\t\t<key>Shape</key>\n\t\t\t<string>Rectangle</string>\n\t\t\t<key>Style</key>\n\t\t\t<dict>\n\t\t\t\t<key>fill</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>GradientColor</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>w</key>\n\t\t\t\t\t\t<string>0.666667</string>\n\t\t\t\t\t</dict>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>Text</key>\n\t\t\t<dict>\n\t\t\t\t<key>Text</key>\n\t\t\t\t<string>{\\rtf1\\ansi\\ansicpg1252\\cocoartf1138\\cocoasubrtf510\n{\\fonttbl\\f0\\fswiss\\fcharset0 Helvetica;}\n{\\colortbl;\\red255\\green255\\blue255;}\n\\pard\\tx560\\tx1120\\tx1680\\tx2240\\tx2800\\tx3360\\tx3920\\tx4480\\tx5040\\tx5600\\tx6160\\tx6720\\qc\n\n\\f0\\fs24 \\cf0 \\expnd0\\expndtw0\\kerning0\nlibssl}</string>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>Bounds</key>\n\t\t\t<string>{{214.61427, 331.65353}, {113.38577, 28.346457}}</string>\n\t\t\t<key>Class</key>\n\t\t\t<string>ShapedGraphic</string>\n\t\t\t<key>FontInfo</key>\n\t\t\t<dict>\n\t\t\t\t<key>Color</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>w</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t</dict>\n\t\t\t\t<key>Font</key>\n\t\t\t\t<string>Helvetica</string>\n\t\t\t\t<key>NSKern</key>\n\t\t\t\t<real>0.0</real>\n\t\t\t\t<key>Size</key>\n\t\t\t\t<real>12</real>\n\t\t\t</dict>\n\t\t\t<key>ID</key>\n\t\t\t<integer>5</integer>\n\t\t\t<key>Shape</key>\n\t\t\t<string>Rectangle</string>\n\t\t\t<key>Style</key>\n\t\t\t<dict>\n\t\t\t\t<key>fill</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>GradientColor</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>w</key>\n\t\t\t\t\t\t<string>0.666667</string>\n\t\t\t\t\t</dict>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>Text</key>\n\t\t\t<dict>\n\t\t\t\t<key>Text</key>\n\t\t\t\t<string>{\\rtf1\\ansi\\ansicpg1252\\cocoartf1138\\cocoasubrtf510\n{\\fonttbl\\f0\\fswiss\\fcharset0 Helvetica;}\n{\\colortbl;\\red255\\green255\\blue255;}\n\\pard\\tx560\\tx1120\\tx1680\\tx2240\\tx2800\\tx3360\\tx3920\\tx4480\\tx5040\\tx5600\\tx6160\\tx6720\\qc\n\n\\f0\\fs24 \\cf0 \\expnd0\\expndtw0\\kerning0\nlibssh2}</string>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>Bounds</key>\n\t\t\t<string>{{101.22841, 274.9606}, {113.38577, 28.346457}}</string>\n\t\t\t<key>Class</key>\n\t\t\t<string>ShapedGraphic</string>\n\t\t\t<key>FontInfo</key>\n\t\t\t<dict>\n\t\t\t\t<key>Color</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>w</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t</dict>\n\t\t\t\t<key>Font</key>\n\t\t\t\t<string>Helvetica</string>\n\t\t\t\t<key>NSKern</key>\n\t\t\t\t<real>0.0</real>\n\t\t\t\t<key>Size</key>\n\t\t\t\t<real>12</real>\n\t\t\t</dict>\n\t\t\t<key>ID</key>\n\t\t\t<integer>14</integer>\n\t\t\t<key>Shape</key>\n\t\t\t<string>Rectangle</string>\n\t\t\t<key>Style</key>\n\t\t\t<dict>\n\t\t\t\t<key>fill</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>GradientColor</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>w</key>\n\t\t\t\t\t\t<string>0.666667</string>\n\t\t\t\t\t</dict>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>Text</key>\n\t\t\t<dict>\n\t\t\t\t<key>Text</key>\n\t\t\t\t<string>{\\rtf1\\ansi\\ansicpg1252\\cocoartf1138\\cocoasubrtf510\n{\\fonttbl\\f0\\fswiss\\fcharset0 Helvetica;}\n{\\colortbl;\\red255\\green255\\blue255;}\n\\pard\\tx560\\tx1120\\tx1680\\tx2240\\tx2800\\tx3360\\tx3920\\tx4480\\tx5040\\tx5600\\tx6160\\tx6720\\qc\n\n\\f0\\fs24 \\cf0 \\expnd0\\expndtw0\\kerning0\nDAVKit}</string>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>Bounds</key>\n\t\t\t<string>{{214.61426, 274.9606}, {226.77147, 28.346457}}</string>\n\t\t\t<key>Class</key>\n\t\t\t<string>ShapedGraphic</string>\n\t\t\t<key>FontInfo</key>\n\t\t\t<dict>\n\t\t\t\t<key>Color</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>w</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t</dict>\n\t\t\t\t<key>Font</key>\n\t\t\t\t<string>Helvetica</string>\n\t\t\t\t<key>NSKern</key>\n\t\t\t\t<real>0.0</real>\n\t\t\t\t<key>Size</key>\n\t\t\t\t<real>12</real>\n\t\t\t</dict>\n\t\t\t<key>ID</key>\n\t\t\t<integer>3</integer>\n\t\t\t<key>Shape</key>\n\t\t\t<string>Rectangle</string>\n\t\t\t<key>Style</key>\n\t\t\t<dict>\n\t\t\t\t<key>fill</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>GradientColor</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>w</key>\n\t\t\t\t\t\t<string>0.666667</string>\n\t\t\t\t\t</dict>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>Text</key>\n\t\t\t<dict>\n\t\t\t\t<key>Text</key>\n\t\t\t\t<string>{\\rtf1\\ansi\\ansicpg1252\\cocoartf1138\\cocoasubrtf510\n{\\fonttbl\\f0\\fswiss\\fcharset0 Helvetica;}\n{\\colortbl;\\red255\\green255\\blue255;}\n\\pard\\tx560\\tx1120\\tx1680\\tx2240\\tx2800\\tx3360\\tx3920\\tx4480\\tx5040\\tx5600\\tx6160\\tx6720\\qc\n\n\\f0\\fs24 \\cf0 \\expnd0\\expndtw0\\kerning0\nCURLHandle}</string>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>Bounds</key>\n\t\t\t<string>{{101.22841, 303.3071}, {113.38577, 28.346466}}</string>\n\t\t\t<key>Class</key>\n\t\t\t<string>ShapedGraphic</string>\n\t\t\t<key>FontInfo</key>\n\t\t\t<dict>\n\t\t\t\t<key>Color</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>w</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t</dict>\n\t\t\t\t<key>Font</key>\n\t\t\t\t<string>Helvetica</string>\n\t\t\t\t<key>NSKern</key>\n\t\t\t\t<real>0.0</real>\n\t\t\t\t<key>Size</key>\n\t\t\t\t<real>12</real>\n\t\t\t</dict>\n\t\t\t<key>ID</key>\n\t\t\t<integer>18</integer>\n\t\t\t<key>Shape</key>\n\t\t\t<string>Rectangle</string>\n\t\t\t<key>Style</key>\n\t\t\t<dict>\n\t\t\t\t<key>fill</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>GradientColor</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>w</key>\n\t\t\t\t\t\t<string>0.666667</string>\n\t\t\t\t\t</dict>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>Text</key>\n\t\t\t<dict>\n\t\t\t\t<key>Text</key>\n\t\t\t\t<string>{\\rtf1\\ansi\\ansicpg1252\\cocoartf1138\\cocoasubrtf510\n{\\fonttbl\\f0\\fswiss\\fcharset0 Helvetica;}\n{\\colortbl;\\red255\\green255\\blue255;}\n\\pard\\tx560\\tx1120\\tx1680\\tx2240\\tx2800\\tx3360\\tx3920\\tx4480\\tx5040\\tx5600\\tx6160\\tx6720\\qc\n\n\\f0\\fs24 \\cf0 \\expnd0\\expndtw0\\kerning0\nNSURLConnection}</string>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>Bounds</key>\n\t\t\t<string>{{101.22845, 246.61412}, {510.23602, 28.346457}}</string>\n\t\t\t<key>Class</key>\n\t\t\t<string>ShapedGraphic</string>\n\t\t\t<key>FontInfo</key>\n\t\t\t<dict>\n\t\t\t\t<key>Color</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>w</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t</dict>\n\t\t\t\t<key>Font</key>\n\t\t\t\t<string>Helvetica</string>\n\t\t\t\t<key>NSKern</key>\n\t\t\t\t<real>0.0</real>\n\t\t\t\t<key>Size</key>\n\t\t\t\t<real>12</real>\n\t\t\t</dict>\n\t\t\t<key>ID</key>\n\t\t\t<integer>2</integer>\n\t\t\t<key>Shape</key>\n\t\t\t<string>Rectangle</string>\n\t\t\t<key>Style</key>\n\t\t\t<dict>\n\t\t\t\t<key>fill</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>GradientColor</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>w</key>\n\t\t\t\t\t\t<string>0.666667</string>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<key>MiddleColor</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>w</key>\n\t\t\t\t\t\t<string>0.333333</string>\n\t\t\t\t\t</dict>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>Text</key>\n\t\t\t<dict>\n\t\t\t\t<key>Text</key>\n\t\t\t\t<string>{\\rtf1\\ansi\\ansicpg1252\\cocoartf1138\\cocoasubrtf510\n{\\fonttbl\\f0\\fswiss\\fcharset0 Helvetica;}\n{\\colortbl;\\red255\\green255\\blue255;}\n\\pard\\tx560\\tx1120\\tx1680\\tx2240\\tx2800\\tx3360\\tx3920\\tx4480\\tx5040\\tx5600\\tx6160\\tx6720\\qc\n\n\\f0\\fs24 \\cf0 \\expnd0\\expndtw0\\kerning0\nConnectionKit 2}</string>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>Bounds</key>\n\t\t\t<string>{{214.61424, 303.30707}, {170.07864, 28.346457}}</string>\n\t\t\t<key>Class</key>\n\t\t\t<string>ShapedGraphic</string>\n\t\t\t<key>FontInfo</key>\n\t\t\t<dict>\n\t\t\t\t<key>Color</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>w</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t</dict>\n\t\t\t\t<key>Font</key>\n\t\t\t\t<string>Helvetica</string>\n\t\t\t\t<key>NSKern</key>\n\t\t\t\t<real>0.0</real>\n\t\t\t\t<key>Size</key>\n\t\t\t\t<real>12</real>\n\t\t\t</dict>\n\t\t\t<key>ID</key>\n\t\t\t<integer>4</integer>\n\t\t\t<key>Shape</key>\n\t\t\t<string>Rectangle</string>\n\t\t\t<key>Style</key>\n\t\t\t<dict>\n\t\t\t\t<key>fill</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>GradientColor</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>w</key>\n\t\t\t\t\t\t<string>0.666667</string>\n\t\t\t\t\t</dict>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>Text</key>\n\t\t\t<dict>\n\t\t\t\t<key>Text</key>\n\t\t\t\t<string>{\\rtf1\\ansi\\ansicpg1252\\cocoartf1138\\cocoasubrtf510\n{\\fonttbl\\f0\\fswiss\\fcharset0 Helvetica;}\n{\\colortbl;\\red255\\green255\\blue255;}\n\\pard\\tx560\\tx1120\\tx1680\\tx2240\\tx2800\\tx3360\\tx3920\\tx4480\\tx5040\\tx5600\\tx6160\\tx6720\\qc\n\n\\f0\\fs24 \\cf0 \\expnd0\\expndtw0\\kerning0\nlibcurl}</string>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>Class</key>\n\t\t\t<string>LineGraphic</string>\n\t\t\t<key>Head</key>\n\t\t\t<dict>\n\t\t\t\t<key>ID</key>\n\t\t\t\t<integer>3</integer>\n\t\t\t</dict>\n\t\t\t<key>ID</key>\n\t\t\t<integer>6</integer>\n\t\t\t<key>Points</key>\n\t\t\t<array>\n\t\t\t\t<string>{341.8197, 275.31412}</string>\n\t\t\t\t<string>{328, 289.13382}</string>\n\t\t\t</array>\n\t\t\t<key>Style</key>\n\t\t\t<dict>\n\t\t\t\t<key>stroke</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Color</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>a</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t\t<key>b</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t\t<key>g</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t\t<key>r</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<key>HeadArrow</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t\t<key>TailArrow</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>Tail</key>\n\t\t\t<dict>\n\t\t\t\t<key>ID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>Class</key>\n\t\t\t<string>LineGraphic</string>\n\t\t\t<key>Head</key>\n\t\t\t<dict>\n\t\t\t\t<key>ID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>ID</key>\n\t\t\t<integer>7</integer>\n\t\t\t<key>Points</key>\n\t\t\t<array>\n\t\t\t\t<string>{313.47324, 303.66058}</string>\n\t\t\t\t<string>{299.65356, 317.48029}</string>\n\t\t\t</array>\n\t\t\t<key>Style</key>\n\t\t\t<dict>\n\t\t\t\t<key>stroke</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Color</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>a</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t\t<key>b</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t\t<key>g</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t\t<key>r</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<key>HeadArrow</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t\t<key>TailArrow</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>Tail</key>\n\t\t\t<dict>\n\t\t\t\t<key>ID</key>\n\t\t\t\t<integer>3</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>Class</key>\n\t\t\t<string>LineGraphic</string>\n\t\t\t<key>Head</key>\n\t\t\t<dict>\n\t\t\t\t<key>ID</key>\n\t\t\t\t<integer>5</integer>\n\t\t\t</dict>\n\t\t\t<key>ID</key>\n\t\t\t<integer>8</integer>\n\t\t\t<key>Points</key>\n\t\t\t<array>\n\t\t\t\t<string>{285.12683, 332.00705}</string>\n\t\t\t\t<string>{271.30716, 345.82675}</string>\n\t\t\t</array>\n\t\t\t<key>Style</key>\n\t\t\t<dict>\n\t\t\t\t<key>stroke</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Color</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>a</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t\t<key>b</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t\t<key>g</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t\t<key>r</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<key>HeadArrow</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t\t<key>TailArrow</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>Tail</key>\n\t\t\t<dict>\n\t\t\t\t<key>ID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>Class</key>\n\t\t\t<string>LineGraphic</string>\n\t\t\t<key>Head</key>\n\t\t\t<dict>\n\t\t\t\t<key>ID</key>\n\t\t\t\t<integer>10</integer>\n\t\t\t</dict>\n\t\t\t<key>ID</key>\n\t\t\t<integer>21</integer>\n\t\t\t<key>Points</key>\n\t\t\t<array>\n\t\t\t\t<string>{256.78043, 360.35349}</string>\n\t\t\t\t<string>{242.96069, 374.17322}</string>\n\t\t\t</array>\n\t\t\t<key>Style</key>\n\t\t\t<dict>\n\t\t\t\t<key>stroke</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Color</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>a</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t\t<key>b</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t\t<key>g</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t\t<key>r</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<key>HeadArrow</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t\t<key>TailArrow</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>Tail</key>\n\t\t\t<dict>\n\t\t\t\t<key>ID</key>\n\t\t\t\t<integer>5</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>Class</key>\n\t\t\t<string>LineGraphic</string>\n\t\t\t<key>Head</key>\n\t\t\t<dict>\n\t\t\t\t<key>ID</key>\n\t\t\t\t<integer>12</integer>\n\t\t\t</dict>\n\t\t\t<key>ID</key>\n\t\t\t<integer>20</integer>\n\t\t\t<key>Points</key>\n\t\t\t<array>\n\t\t\t\t<string>{285.83389, 360.35349}</string>\n\t\t\t\t<string>{299.65359, 374.17322}</string>\n\t\t\t</array>\n\t\t\t<key>Style</key>\n\t\t\t<dict>\n\t\t\t\t<key>stroke</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Color</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>a</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t\t<key>b</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t\t<key>g</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t\t<key>r</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<key>HeadArrow</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t\t<key>TailArrow</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>Tail</key>\n\t\t\t<dict>\n\t\t\t\t<key>ID</key>\n\t\t\t\t<integer>5</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>Class</key>\n\t\t\t<string>LineGraphic</string>\n\t\t\t<key>Head</key>\n\t\t\t<dict>\n\t\t\t\t<key>ID</key>\n\t\t\t\t<integer>14</integer>\n\t\t\t</dict>\n\t\t\t<key>ID</key>\n\t\t\t<integer>17</integer>\n\t\t\t<key>Points</key>\n\t\t\t<array>\n\t\t\t\t<string>{256.63904, 275.03128}</string>\n\t\t\t\t<string>{215.10916, 280.96411}</string>\n\t\t\t</array>\n\t\t\t<key>Style</key>\n\t\t\t<dict>\n\t\t\t\t<key>stroke</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Color</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>a</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t\t<key>b</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t\t<key>g</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t\t<key>r</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<key>HeadArrow</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t\t<key>TailArrow</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>Tail</key>\n\t\t\t<dict>\n\t\t\t\t<key>ID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>Class</key>\n\t\t\t<string>LineGraphic</string>\n\t\t\t<key>Head</key>\n\t\t\t<dict>\n\t\t\t\t<key>ID</key>\n\t\t\t\t<integer>18</integer>\n\t\t\t</dict>\n\t\t\t<key>ID</key>\n\t\t\t<integer>19</integer>\n\t\t\t<key>Points</key>\n\t\t\t<array>\n\t\t\t\t<string>{157.9213, 303.80704}</string>\n\t\t\t\t<string>{157.9213, 317.48035}</string>\n\t\t\t</array>\n\t\t\t<key>Style</key>\n\t\t\t<dict>\n\t\t\t\t<key>stroke</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Color</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>a</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t\t<key>b</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t\t<key>g</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t\t<key>r</key>\n\t\t\t\t\t\t<string>0</string>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<key>HeadArrow</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t\t<key>TailArrow</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>Tail</key>\n\t\t\t<dict>\n\t\t\t\t<key>ID</key>\n\t\t\t\t<integer>14</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>Bounds</key>\n\t\t\t<string>{{384.69287, 274.9606}, {113.38577, 113.38593}}</string>\n\t\t\t<key>Class</key>\n\t\t\t<string>ShapedGraphic</string>\n\t\t\t<key>FontInfo</key>\n\t\t\t<dict>\n\t\t\t\t<key>Color</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>w</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t</dict>\n\t\t\t\t<key>Font</key>\n\t\t\t\t<string>Helvetica</string>\n\t\t\t\t<key>NSKern</key>\n\t\t\t\t<real>0.0</real>\n\t\t\t\t<key>Size</key>\n\t\t\t\t<real>12</real>\n\t\t\t</dict>\n\t\t\t<key>ID</key>\n\t\t\t<integer>31</integer>\n\t\t\t<key>Shape</key>\n\t\t\t<string>Rectangle</string>\n\t\t\t<key>Style</key>\n\t\t\t<dict>\n\t\t\t\t<key>fill</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>GradientColor</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>w</key>\n\t\t\t\t\t\t<string>0.666667</string>\n\t\t\t\t\t</dict>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>Text</key>\n\t\t\t<dict>\n\t\t\t\t<key>Text</key>\n\t\t\t\t<string>{\\rtf1\\ansi\\ansicpg1252\\cocoartf1138\\cocoasubrtf510\n{\\fonttbl\\f0\\fswiss\\fcharset0 Helvetica;}\n{\\colortbl;\\red255\\green255\\blue255;}\n\\pard\\tx560\\tx1120\\tx1680\\tx2240\\tx2800\\tx3360\\tx3920\\tx4480\\tx5040\\tx5600\\tx6160\\tx6720\\qc\n\n\\f0\\fs24 \\cf0 \\expnd0\\expndtw0\\kerning0\nGCD}</string>\n\t\t\t</dict>\n\t\t</dict>\n\t</array>\n\t<key>GridInfo</key>\n\t<dict>\n\t\t<key>GridSpacing</key>\n\t\t<real>14.17322826385498</real>\n\t\t<key>MajorGridSpacing</key>\n\t\t<integer>10</integer>\n\t</dict>\n\t<key>GuidesLocked</key>\n\t<string>NO</string>\n\t<key>GuidesVisible</key>\n\t<string>YES</string>\n\t<key>HPages</key>\n\t<integer>1</integer>\n\t<key>ImageCounter</key>\n\t<integer>1</integer>\n\t<key>IsPalette</key>\n\t<string>NO</string>\n\t<key>KeepToScale</key>\n\t<false/>\n\t<key>Layers</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>Lock</key>\n\t\t\t<string>NO</string>\n\t\t\t<key>Name</key>\n\t\t\t<string>Layer 1</string>\n\t\t\t<key>Print</key>\n\t\t\t<string>YES</string>\n\t\t\t<key>View</key>\n\t\t\t<string>YES</string>\n\t\t</dict>\n\t</array>\n\t<key>LayoutInfo</key>\n\t<dict>\n\t\t<key>HierarchicalOrientation</key>\n\t\t<integer>0</integer>\n\t</dict>\n\t<key>LinksVisible</key>\n\t<string>NO</string>\n\t<key>MagnetsVisible</key>\n\t<string>NO</string>\n\t<key>MasterSheet</key>\n\t<string>Master 1</string>\n\t<key>MasterSheets</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>ActiveLayerIndex</key>\n\t\t\t<integer>0</integer>\n\t\t\t<key>AutoAdjust</key>\n\t\t\t<false/>\n\t\t\t<key>CanvasColor</key>\n\t\t\t<dict>\n\t\t\t\t<key>w</key>\n\t\t\t\t<string>1</string>\n\t\t\t</dict>\n\t\t\t<key>CanvasOrigin</key>\n\t\t\t<string>{0, 0}</string>\n\t\t\t<key>CanvasScale</key>\n\t\t\t<real>1</real>\n\t\t\t<key>ColumnAlign</key>\n\t\t\t<integer>1</integer>\n\t\t\t<key>ColumnSpacing</key>\n\t\t\t<real>36</real>\n\t\t\t<key>DisplayScale</key>\n\t\t\t<string>1 cm = 1 cm</string>\n\t\t\t<key>GraphicsList</key>\n\t\t\t<array/>\n\t\t\t<key>GridInfo</key>\n\t\t\t<dict>\n\t\t\t\t<key>GridSpacing</key>\n\t\t\t\t<real>14.17322826385498</real>\n\t\t\t\t<key>MajorGridSpacing</key>\n\t\t\t\t<integer>10</integer>\n\t\t\t</dict>\n\t\t\t<key>HPages</key>\n\t\t\t<integer>1</integer>\n\t\t\t<key>IsPalette</key>\n\t\t\t<string>NO</string>\n\t\t\t<key>KeepToScale</key>\n\t\t\t<false/>\n\t\t\t<key>Layers</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Lock</key>\n\t\t\t\t\t<string>NO</string>\n\t\t\t\t\t<key>Name</key>\n\t\t\t\t\t<string>Layer 1</string>\n\t\t\t\t\t<key>Print</key>\n\t\t\t\t\t<string>YES</string>\n\t\t\t\t\t<key>View</key>\n\t\t\t\t\t<string>YES</string>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t\t<key>LayoutInfo</key>\n\t\t\t<dict/>\n\t\t\t<key>Orientation</key>\n\t\t\t<integer>2</integer>\n\t\t\t<key>OutlineStyle</key>\n\t\t\t<string>Basic</string>\n\t\t\t<key>RowAlign</key>\n\t\t\t<integer>1</integer>\n\t\t\t<key>RowSpacing</key>\n\t\t\t<real>36</real>\n\t\t\t<key>SheetTitle</key>\n\t\t\t<string>Master 1</string>\n\t\t\t<key>UniqueID</key>\n\t\t\t<integer>1</integer>\n\t\t\t<key>VPages</key>\n\t\t\t<integer>1</integer>\n\t\t</dict>\n\t</array>\n\t<key>ModificationDate</key>\n\t<string>2012-12-16 21:26:48 +0000</string>\n\t<key>Modifier</key>\n\t<string>Mike</string>\n\t<key>NotesVisible</key>\n\t<string>NO</string>\n\t<key>Orientation</key>\n\t<integer>2</integer>\n\t<key>OriginVisible</key>\n\t<string>NO</string>\n\t<key>OutlineStyle</key>\n\t<string>Basic</string>\n\t<key>PageBreaks</key>\n\t<string>YES</string>\n\t<key>PrintInfo</key>\n\t<dict>\n\t\t<key>NSBottomMargin</key>\n\t\t<array>\n\t\t\t<string>coded</string>\n\t\t\t<string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFklwCG</string>\n\t\t</array>\n\t\t<key>NSLeftMargin</key>\n\t\t<array>\n\t\t\t<string>coded</string>\n\t\t\t<string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFklwCG</string>\n\t\t</array>\n\t\t<key>NSOrientation</key>\n\t\t<array>\n\t\t\t<string>int</string>\n\t\t\t<string>1</string>\n\t\t</array>\n\t\t<key>NSPaperSize</key>\n\t\t<array>\n\t\t\t<string>size</string>\n\t\t\t<string>{842, 595}</string>\n\t\t</array>\n\t\t<key>NSRightMargin</key>\n\t\t<array>\n\t\t\t<string>coded</string>\n\t\t\t<string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFklwCG</string>\n\t\t</array>\n\t\t<key>NSTopMargin</key>\n\t\t<array>\n\t\t\t<string>coded</string>\n\t\t\t<string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFklwCG</string>\n\t\t</array>\n\t</dict>\n\t<key>ReadOnly</key>\n\t<string>NO</string>\n\t<key>RowAlign</key>\n\t<integer>1</integer>\n\t<key>RowSpacing</key>\n\t<real>36</real>\n\t<key>SheetTitle</key>\n\t<string>Canvas 1</string>\n\t<key>SmartAlignmentGuidesActive</key>\n\t<string>YES</string>\n\t<key>SmartDistanceGuidesActive</key>\n\t<string>YES</string>\n\t<key>UniqueID</key>\n\t<integer>1</integer>\n\t<key>UseEntirePage</key>\n\t<true/>\n\t<key>VPages</key>\n\t<integer>1</integer>\n\t<key>WindowInfo</key>\n\t<dict>\n\t\t<key>CurrentSheet</key>\n\t\t<integer>0</integer>\n\t\t<key>DrawerOpen</key>\n\t\t<true/>\n\t\t<key>DrawerTab</key>\n\t\t<string>Outline</string>\n\t\t<key>DrawerWidth</key>\n\t\t<real>209</real>\n\t\t<key>Frame</key>\n\t\t<string>{{228, 202}, {857, 676}}</string>\n\t\t<key>VisibleRegion</key>\n\t\t<string>{{-29, -9}, {842, 578}}</string>\n\t\t<key>Zoom</key>\n\t\t<real>1</real>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "ConnectionKit.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"group:Connection.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "ConnectionKit.xcworkspace/xcshareddata/ConnectionKit.xccheckout",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDESourceControlProjectFavoriteDictionaryKey</key>\n\t<false/>\n\t<key>IDESourceControlProjectIdentifier</key>\n\t<string>8FBC02BE-89A6-4E66-A86A-2F30763D8732</string>\n\t<key>IDESourceControlProjectName</key>\n\t<string>ConnectionKit</string>\n\t<key>IDESourceControlProjectOriginsDictionary</key>\n\t<dict>\n\t\t<key>196ECB9D-DC69-481A-BC41-10BC9371E262</key>\n\t\t<string>https://github.com/karelia/libssh2_sftp-Cocoa-wrapper.git</string>\n\t\t<key>30181585-7835-4792-AA71-78979C5DC7E4</key>\n\t\t<string>https://github.com/bagder/c-ares.git</string>\n\t\t<key>3D0A7752-D915-4708-BED7-84F5752E91D0</key>\n\t\t<string>https://github.com/karelia/curl.git</string>\n\t\t<key>55929339-0664-4A1B-8A28-A403FA1A187E</key>\n\t\t<string>https://github.com/karelia/ConnectionKit.git</string>\n\t\t<key>84801443-6FFF-4DB0-B4CE-0DA862E773E6</key>\n\t\t<string>https://github.com/karelia/CurlHandle.git</string>\n\t\t<key>966871D2-8C9C-44C2-BE6E-5FE45C4F558E</key>\n\t\t<string>https://github.com/karelia/DAVKit.git</string>\n\t\t<key>A83B07BE-C454-4AD2-884C-BC9377EDC056</key>\n\t\t<string>https://github.com/boredzo/iso-8601-date-formatter.git</string>\n\t\t<key>EEF81E40-A006-4B24-AC4D-3B4A9499A316</key>\n\t\t<string>https://github.com/karelia/iso-8601-date-formatter.git</string>\n\t\t<key>F057D5F2-EC7E-4CBA-9D9D-03960D2DC437</key>\n\t\t<string>https://github.com/karelia/MockServer.git</string>\n\t</dict>\n\t<key>IDESourceControlProjectPath</key>\n\t<string>ConnectionKit.xcworkspace</string>\n\t<key>IDESourceControlProjectRelativeInstallPathDictionary</key>\n\t<dict>\n\t\t<key>196ECB9D-DC69-481A-BC41-10BC9371E262</key>\n\t\t<string>../CurlHandle/SFTP</string>\n\t\t<key>30181585-7835-4792-AA71-78979C5DC7E4</key>\n\t\t<string>../CurlHandle/c-ares</string>\n\t\t<key>3D0A7752-D915-4708-BED7-84F5752E91D0</key>\n\t\t<string>../CurlHandle/curl</string>\n\t\t<key>55929339-0664-4A1B-8A28-A403FA1A187E</key>\n\t\t<string>..</string>\n\t\t<key>84801443-6FFF-4DB0-B4CE-0DA862E773E6</key>\n\t\t<string>../CurlHandle</string>\n\t\t<key>966871D2-8C9C-44C2-BE6E-5FE45C4F558E</key>\n\t\t<string>../DAVKit</string>\n\t\t<key>A83B07BE-C454-4AD2-884C-BC9377EDC056</key>\n\t\t<string>../DAVKit/iso-8601-date-formatter</string>\n\t\t<key>EEF81E40-A006-4B24-AC4D-3B4A9499A316</key>\n\t\t<string>../DAVKit/Sources/iso-8601-date-formatter</string>\n\t\t<key>F057D5F2-EC7E-4CBA-9D9D-03960D2DC437</key>\n\t\t<string>../CurlHandle/CURLHandleSource/Tests/MockServer</string>\n\t</dict>\n\t<key>IDESourceControlProjectURL</key>\n\t<string>https://github.com/karelia/ConnectionKit.git</string>\n\t<key>IDESourceControlProjectVersion</key>\n\t<integer>110</integer>\n\t<key>IDESourceControlProjectWCCIdentifier</key>\n\t<string>55929339-0664-4A1B-8A28-A403FA1A187E</string>\n\t<key>IDESourceControlProjectWCConfigurations</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>IDESourceControlRepositoryExtensionIdentifierKey</key>\n\t\t\t<string>public.vcs.git</string>\n\t\t\t<key>IDESourceControlWCCIdentifierKey</key>\n\t\t\t<string>30181585-7835-4792-AA71-78979C5DC7E4</string>\n\t\t\t<key>IDESourceControlWCCName</key>\n\t\t\t<string>c-ares</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>IDESourceControlRepositoryExtensionIdentifierKey</key>\n\t\t\t<string>public.vcs.git</string>\n\t\t\t<key>IDESourceControlWCCIdentifierKey</key>\n\t\t\t<string>55929339-0664-4A1B-8A28-A403FA1A187E</string>\n\t\t\t<key>IDESourceControlWCCName</key>\n\t\t\t<string>ConnectionKit</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>IDESourceControlRepositoryExtensionIdentifierKey</key>\n\t\t\t<string>public.vcs.git</string>\n\t\t\t<key>IDESourceControlWCCIdentifierKey</key>\n\t\t\t<string>3D0A7752-D915-4708-BED7-84F5752E91D0</string>\n\t\t\t<key>IDESourceControlWCCName</key>\n\t\t\t<string>curl</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>IDESourceControlRepositoryExtensionIdentifierKey</key>\n\t\t\t<string>public.vcs.git</string>\n\t\t\t<key>IDESourceControlWCCIdentifierKey</key>\n\t\t\t<string>84801443-6FFF-4DB0-B4CE-0DA862E773E6</string>\n\t\t\t<key>IDESourceControlWCCName</key>\n\t\t\t<string>CurlHandle</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>IDESourceControlRepositoryExtensionIdentifierKey</key>\n\t\t\t<string>public.vcs.git</string>\n\t\t\t<key>IDESourceControlWCCIdentifierKey</key>\n\t\t\t<string>966871D2-8C9C-44C2-BE6E-5FE45C4F558E</string>\n\t\t\t<key>IDESourceControlWCCName</key>\n\t\t\t<string>DAVKit</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>IDESourceControlRepositoryExtensionIdentifierKey</key>\n\t\t\t<string>public.vcs.git</string>\n\t\t\t<key>IDESourceControlWCCIdentifierKey</key>\n\t\t\t<string>A83B07BE-C454-4AD2-884C-BC9377EDC056</string>\n\t\t\t<key>IDESourceControlWCCName</key>\n\t\t\t<string>iso-8601-date-formatter</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>IDESourceControlRepositoryExtensionIdentifierKey</key>\n\t\t\t<string>public.vcs.git</string>\n\t\t\t<key>IDESourceControlWCCIdentifierKey</key>\n\t\t\t<string>EEF81E40-A006-4B24-AC4D-3B4A9499A316</string>\n\t\t\t<key>IDESourceControlWCCName</key>\n\t\t\t<string>iso-8601-date-formatter</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>IDESourceControlRepositoryExtensionIdentifierKey</key>\n\t\t\t<string>public.vcs.git</string>\n\t\t\t<key>IDESourceControlWCCIdentifierKey</key>\n\t\t\t<string>F057D5F2-EC7E-4CBA-9D9D-03960D2DC437</string>\n\t\t\t<key>IDESourceControlWCCName</key>\n\t\t\t<string>MockServer</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>IDESourceControlRepositoryExtensionIdentifierKey</key>\n\t\t\t<string>public.vcs.git</string>\n\t\t\t<key>IDESourceControlWCCIdentifierKey</key>\n\t\t\t<string>F057D5F2-EC7E-4CBA-9D9D-03960D2DC437</string>\n\t\t\t<key>IDESourceControlWCCName</key>\n\t\t\t<string>MockServer</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>IDESourceControlRepositoryExtensionIdentifierKey</key>\n\t\t\t<string>public.vcs.git</string>\n\t\t\t<key>IDESourceControlWCCIdentifierKey</key>\n\t\t\t<string>196ECB9D-DC69-481A-BC41-10BC9371E262</string>\n\t\t\t<key>IDESourceControlWCCName</key>\n\t\t\t<string>SFTP</string>\n\t\t</dict>\n\t</array>\n</dict>\n</plist>\n"
  },
  {
    "path": "ConnectionKitUI/ConnectionKitUI-Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>English</string>\n\t<key>CFBundleExecutable</key>\n\t<string>${EXECUTABLE_NAME}</string>\n\t<key>CFBundleIconFile</key>\n\t<string></string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>${PRODUCT_NAME}</string>\n\t<key>CFBundlePackageType</key>\n\t<string>FMWK</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n\t<key>NSPrincipalClass</key>\n\t<string></string>\n</dict>\n</plist>\n"
  },
  {
    "path": "ConnectionKitUI/ConnectionKitUI-Prefix.pch",
    "content": "//\n//  Prefix header\n//\n//  The contents of this file are implicitly included at the beginning of every source file.\n//\n\n#ifdef __OBJC__\n    #import <Cocoa/Cocoa.h>\n#endif\n"
  },
  {
    "path": "ConnectionKitUI/ConnectionKitUI.h",
    "content": "//\n//  ConnectionKitUI.h\n//  ConnectionKitUI\n//\n//  Created by Mike on 08/07/2013.\n//\n//\n\n#import <Foundation/Foundation.h>\n\n#import <ConnectionKitUI/CK2OpenPanel.h>\n"
  },
  {
    "path": "ConnectionKitUI/en.lproj/InfoPlist.strings",
    "content": "/* Localized versions of Info.plist keys */\n\n"
  },
  {
    "path": "Documentation/Standard Errors.md",
    "content": "Protocols have wildly differing implementations, and those implementation can return wildly different errors in a given situation.\n\nTo some extent this is an impossible problem to solve, since it's unrealistic for us to provide a universal translation of all potential errors into some known set.\n\nHowever, it is useful to be able to test for a few common errors, in specific situations, such as:\n\n- authentication has failed\n- we tried to make a directory but it was already there\n- we tried to delete a directory but it wasn't there\n- we tried to delete a file but it wasn't there\n\nIt's also helpful to wrap up all the other errors in some more generic catch-alls:\n\n- something went wrong with something that reads/lists files\n- something went wrong with writes/modifies/creates/destroys files\n\n\nAs a result, CK2Protocol defines some standard methods that protocol implementations can use to wrap up their own errors:\n\n    - (NSError*)standardCouldntWriteErrorWithUnderlyingError:(NSError*)error;\n    - (NSError*)standardCouldntReadErrorWithUnderlyingError:(NSError*)error;\n    - (NSError*)standardFileNotFoundErrorWithUnderlyingError:(NSError*)error;\n    - (NSError*)standardAuthenticationErrorWithUnderlyingError:(NSError*)error;\n\nThese methods will return, respectively:\n\n    standardCouldntWriteErrorWithUnderlyingError: NSCocoaErrorDomain - NSFileWriteUnknownError\n    standardCouldntReadErrorWithUnderlyingError: NSCocoaErrorDomain - NSFileNoSuchFileError\n    standardFileNotFoundErrorWithUnderlyingError: NSCocoaErrorDomain - NSURLErrorNoPermissionsToReadFile\n    standardAuthenticationErrorWithUnderlyingError: NSURLErrorDomain NSURLErrorUserAuthenticationRequired\n\nProtocol implementations should ensure that they use these errors in the following situations:\n\nUse standardAuthenticationErrorWithUnderlyingError to report any authentication problems (obviously).\n\nUse standardFileNotFoundErrorWithUnderlyingError if the protocol implementation is sure that the underlying problem is caused by the file being absent. For example when deleting a directory or file that doesn't exist - assuming that the underlying protocol error is specific enough to know that this is the reason for the failure.\n\nUse standardCouldntWriteErrorWithUnderlyingError when performing a createFile/createDirectory/removeFile/removeDirectory/setAttributes, if the protocol implementation's underlying error was too vague or definitely wasn't a file-not-found error.\n\nUse standardCouldntReadErrorWithUnderlyingError when performing a enumating operation, if the protocol implementation's underlying error was too vague or definitely wasn't a file-not-found error.\n\nOne of the side benefits of this plan is that it allows us to write some unit tests that work generically across all supported protocols, since they now have some (vaguely) predictable errors to check against in the situations where the test is deliberately engineering an error situation.\n\nHopefully, though, this will also allow client code that uses multiple protocols to do something vaguely sensible with the errors that it gets back.\n\n"
  },
  {
    "path": "Example/Connection-Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>${EXECUTABLE_NAME}</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>com.yourcompany.Connection</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundlePackageType</key>\n\t<string>FMWK</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1.0</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/ConnectionApp.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 42;\n\tobjects = {\n\n/* Begin PBXAggregateTarget section */\n\t\t7983E7E80B0C4F2200F5078E /* Build All */ = {\n\t\t\tisa = PBXAggregateTarget;\n\t\t\tbuildConfigurationList = 7983E7F00B0C4F6F00F5078E /* Build configuration list for PBXAggregateTarget \"Build All\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t7983E7EE0B0C4F5100F5078E /* ShellScript */,\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\t7983E7EA0B0C4F4200F5078E /* PBXTargetDependency */,\n\t\t\t\t7983E7EC0B0C4F4600F5078E /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = \"Build All\";\n\t\t\tproductName = \"Build All\";\n\t\t};\n/* End PBXAggregateTarget section */\n\n/* Begin PBXBuildFile section */\n\t\t09D6603A09FD37CD0000BA00 /* Connection.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79CFD12609F702BE00172CDD /* Connection.framework */; };\n\t\t790FF0D70ACCE4F2004B4021 /* ktlogviewer_main.m in Sources */ = {isa = PBXBuildFile; fileRef = 790FF0D60ACCE4F2004B4021 /* ktlogviewer_main.m */; };\n\t\t790FF0DD0ACCE8EA004B4021 /* KTLogViewer.nib in Resources */ = {isa = PBXBuildFile; fileRef = 790FF0DB0ACCE8EA004B4021 /* KTLogViewer.nib */; };\n\t\t790FF0E40ACCE966004B4021 /* KTLogController.m in Sources */ = {isa = PBXBuildFile; fileRef = 790FF0E30ACCE966004B4021 /* KTLogController.m */; };\n\t\t790FF23E0ACCEB46004B4021 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29B97324FDCFA39411CA2CEA /* AppKit.framework */; };\n\t\t790FF23F0ACCEB46004B4021 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29B97325FDCFA39411CA2CEA /* Foundation.framework */; };\n\t\t792E57860C8E2C2F00276AA2 /* symlink_folder.tif in Resources */ = {isa = PBXBuildFile; fileRef = 79CFD8F209F7076200172CDD /* symlink_folder.tif */; };\n\t\t792E57890C8E2C3300276AA2 /* symlink_file.tif in Resources */ = {isa = PBXBuildFile; fileRef = 79CFD8F109F7076200172CDD /* symlink_file.tif */; };\n\t\t794EFDD20A5CD6CA00913151 /* libcrypto.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 794EFDD10A5CD6CA00913151 /* libcrypto.dylib */; };\n\t\t794EFDD50A5CD6F900913151 /* libssl.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 794EFDD40A5CD6F900913151 /* libssl.dylib */; };\n\t\t795A010A0B116832006905FA /* edit.png in Resources */ = {isa = PBXBuildFile; fileRef = 795A01090B116832006905FA /* edit.png */; };\n\t\t795FF5020B0C018100EA9292 /* DropletMain.m in Sources */ = {isa = PBXBuildFile; fileRef = 795FF5010B0C018100EA9292 /* DropletMain.m */; };\n\t\t795FF5070B0C048700EA9292 /* Droplet.nib in Resources */ = {isa = PBXBuildFile; fileRef = 795FF5050B0C048700EA9292 /* Droplet.nib */; };\n\t\t795FF50E0B0C05F400EA9292 /* DropletController.m in Sources */ = {isa = PBXBuildFile; fileRef = 795FF50C0B0C05F400EA9292 /* DropletController.m */; };\n\t\t796DB30109F8BB1D0065897B /* SecurityInterface.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 796DB2F609F8BB1D0065897B /* SecurityInterface.framework */; };\n\t\t797CC8C709F861770063FF9B /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 797CC8C509F861770063FF9B /* Localizable.strings */; };\n\t\t798300070B0D4A2600F5078E /* DropletLauncher.nib in Resources */ = {isa = PBXBuildFile; fileRef = 798300050B0D4A2600F5078E /* DropletLauncher.nib */; };\n\t\t7983E0950B0C1A8500F5078E /* DropletOutlineView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7983E0940B0C1A8500F5078E /* DropletOutlineView.m */; };\n\t\t7983E2310B0C244700F5078E /* Connection.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79CFD12609F702BE00172CDD /* Connection.framework */; };\n\t\t7983E24B0B0C245100F5078E /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };\n\t\t7983E6CC0B0C4D8800F5078E /* DropletIcon.icns in Resources */ = {isa = PBXBuildFile; fileRef = 7983E6CB0B0C4D8800F5078E /* DropletIcon.icns */; };\n\t\t7983E6DE0B0C4E0000F5078E /* DropletLauncher.m in Sources */ = {isa = PBXBuildFile; fileRef = 7983E6730B0C41E300F5078E /* DropletLauncher.m */; };\n\t\t7983E7000B0C4E2800F5078E /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };\n\t\t7983E7050B0C4E4E00F5078E /* DropletLauncher in Resources */ = {isa = PBXBuildFile; fileRef = 7983E6D20B0C4DF000F5078E /* DropletLauncher */; };\n\t\t7983EDF90B0C802C00F5078E /* DropletIcon.icns in Resources */ = {isa = PBXBuildFile; fileRef = 7983E6CB0B0C4D8800F5078E /* DropletIcon.icns */; };\n\t\t7983F3EE0B0D1B8B00F5078E /* DropletPanel.m in Sources */ = {isa = PBXBuildFile; fileRef = 7983F3ED0B0D1B8B00F5078E /* DropletPanel.m */; };\n\t\t79CFD8D709F706F500172CDD /* Controller.m in Sources */ = {isa = PBXBuildFile; fileRef = 79CFD8CE09F706F500172CDD /* Controller.m */; };\n\t\t79CFD8D809F706F500172CDD /* FileTransfer.m in Sources */ = {isa = PBXBuildFile; fileRef = 79CFD8D009F706F500172CDD /* FileTransfer.m */; };\n\t\t79CFD8D909F706F500172CDD /* InputDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 79CFD8D209F706F500172CDD /* InputDialog.m */; };\n\t\t79CFD8DA09F706F500172CDD /* PermissionsController.m in Sources */ = {isa = PBXBuildFile; fileRef = 79CFD8D409F706F500172CDD /* PermissionsController.m */; };\n\t\t79CFD8DB09F706F500172CDD /* ProgressCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 79CFD8D609F706F500172CDD /* ProgressCell.m */; };\n\t\t79CFD8E009F7071400172CDD /* InputDialog.nib in Resources */ = {isa = PBXBuildFile; fileRef = 79CFD8DC09F7071400172CDD /* InputDialog.nib */; };\n\t\t79CFD8E109F7071400172CDD /* Permissions.nib in Resources */ = {isa = PBXBuildFile; fileRef = 79CFD8DE09F7071400172CDD /* Permissions.nib */; };\n\t\t79CFD8F409F7076200172CDD /* connect.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 79CFD8E809F7076200172CDD /* connect.tiff */; };\n\t\t79CFD8F509F7076200172CDD /* console.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 79CFD8E909F7076200172CDD /* console.tiff */; };\n\t\t79CFD8F609F7076200172CDD /* delete.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 79CFD8EA09F7076200172CDD /* delete.tiff */; };\n\t\t79CFD8F709F7076200172CDD /* download.tif in Resources */ = {isa = PBXBuildFile; fileRef = 79CFD8EB09F7076200172CDD /* download.tif */; };\n\t\t79CFD8F909F7076200172CDD /* home.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 79CFD8ED09F7076200172CDD /* home.tiff */; };\n\t\t79CFD8FA09F7076200172CDD /* icon.icns in Resources */ = {isa = PBXBuildFile; fileRef = 79CFD8EE09F7076200172CDD /* icon.icns */; };\n\t\t79CFD8FB09F7076200172CDD /* lock.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 79CFD8EF09F7076200172CDD /* lock.tiff */; };\n\t\t79CFD8FC09F7076200172CDD /* redo.tif in Resources */ = {isa = PBXBuildFile; fileRef = 79CFD8F009F7076200172CDD /* redo.tif */; };\n\t\t79CFD8FD09F7076200172CDD /* symlink_file.tif in Resources */ = {isa = PBXBuildFile; fileRef = 79CFD8F109F7076200172CDD /* symlink_file.tif */; };\n\t\t79CFD8FE09F7076200172CDD /* symlink_folder.tif in Resources */ = {isa = PBXBuildFile; fileRef = 79CFD8F209F7076200172CDD /* symlink_folder.tif */; };\n\t\t79CFD8FF09F7076200172CDD /* upload.tif in Resources */ = {isa = PBXBuildFile; fileRef = 79CFD8F309F7076200172CDD /* upload.tif */; };\n\t\t79CFD92F09F7080B00172CDD /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 79CFD92D09F7080B00172CDD /* libz.dylib */; };\n\t\t79CFD93709F7084000172CDD /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79CFD93609F7084000172CDD /* Security.framework */; };\n\t\t79CFD96B09F70A5C00172CDD /* Connection.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 79CFD12609F702BE00172CDD /* Connection.framework */; };\n\t\t79CFD97009F70A7E00172CDD /* Connection.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79CFD12609F702BE00172CDD /* Connection.framework */; };\n\t\t79CFD97C09F70AA700172CDD /* network_icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 79CFD97A09F70AA700172CDD /* network_icon.png */; };\n\t\t79CFD97D09F70AA700172CDD /* Stop.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 79CFD97B09F70AA700172CDD /* Stop.tiff */; };\n\t\t79F563FF0AC8C5F2006AD3E2 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79CFD93609F7084000172CDD /* Security.framework */; };\n\t\t79F9533D09FDC3A80041E345 /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79F9532B09FDC3A80041E345 /* ApplicationServices.framework */; };\n\t\t79FB807209F74185006E7D11 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79FB807109F74185006E7D11 /* Carbon.framework */; };\n\t\t79FB808A09F741D6006E7D11 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79FB807109F74185006E7D11 /* Carbon.framework */; };\n\t\t8D11072A0486CEB800E47090 /* MainMenu.nib in Resources */ = {isa = PBXBuildFile; fileRef = 29B97318FDCFA39411CA2CEA /* MainMenu.nib */; };\n\t\t8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; };\n\t\t8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; };\n\t\t8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };\n\t\tCE4F78E90B9C8F530083B946 /* Logs.icns in Resources */ = {isa = PBXBuildFile; fileRef = CE4F78E80B9C8F530083B946 /* Logs.icns */; };\n\t\tD3053AAD0DE60D6B008646CE /* libicucore.A.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = D3053AAC0DE60D6B008646CE /* libicucore.A.dylib */; };\n\t\tD3EEAE380D41B42700D43A7A /* LeopardFolder.tiff in Resources */ = {isa = PBXBuildFile; fileRef = D3F1D3020D3BFF72008F6C35 /* LeopardFolder.tiff */; };\n\t\tD3EEAE390D41B42B00D43A7A /* AquaFolder.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F1D2FF0D3BFF6A008F6C35 /* AquaFolder.png */; };\n\t\tD3F1D3000D3BFF6A008F6C35 /* AquaFolder.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F1D2FF0D3BFF6A008F6C35 /* AquaFolder.png */; };\n\t\tD3F1D3030D3BFF72008F6C35 /* LeopardFolder.tiff in Resources */ = {isa = PBXBuildFile; fileRef = D3F1D3020D3BFF72008F6C35 /* LeopardFolder.tiff */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXContainerItemProxy section */\n\t\t09D6604409FD37DD0000BA00 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 8D1107260486CEB800E47090;\n\t\t\tremoteInfo = Connection;\n\t\t};\n\t\t09D6604609FD37DD0000BA00 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 79CFD12509F702BE00172CDD;\n\t\t\tremoteInfo = Framework;\n\t\t};\n\t\t795FF4FB0B0C014B00EA9292 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 79CFD12509F702BE00172CDD;\n\t\t\tremoteInfo = Framework;\n\t\t};\n\t\t7983E7030B0C4E3300F5078E /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 7983E6D10B0C4DF000F5078E;\n\t\t\tremoteInfo = DropletLauncher;\n\t\t};\n\t\t7983E7E90B0C4F4200F5078E /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 79CFD12509F702BE00172CDD;\n\t\t\tremoteInfo = Framework;\n\t\t};\n\t\t7983E7EB0B0C4F4600F5078E /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 795FF4F00B0C013200EA9292;\n\t\t\tremoteInfo = DropletHelper;\n\t\t};\n\t\t7983E8360B0C5B9800F5078E /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 7983E7E80B0C4F2200F5078E;\n\t\t\tremoteInfo = \"Build All\";\n\t\t};\n/* End PBXContainerItemProxy section */\n\n/* Begin PBXCopyFilesBuildPhase section */\n\t\t79CFD96909F70A4D00172CDD /* CopyFiles */ = {\n\t\t\tisa = PBXCopyFilesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tdstPath = \"\";\n\t\t\tdstSubfolderSpec = 10;\n\t\t\tfiles = (\n\t\t\t\t79CFD96B09F70A5C00172CDD /* Connection.framework in CopyFiles */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXCopyFilesBuildPhase section */\n\n/* Begin PBXFileReference section */\n\t\t089C165DFE840E0CC02AAC07 /* en */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; lineEnding = 0; name = en; path = en.lproj/InfoPlist.strings; sourceTree = \"<group>\"; };\n\t\t09D6601D09FD37990000BA00 /* UnitTest.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = UnitTest.octest; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = \"<absolute>\"; };\n\t\t13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = \"<absolute>\"; };\n\t\t29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = \"<group>\"; };\n\t\t29B97319FDCFA39411CA2CEA /* en */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = en; path = en.lproj/MainMenu.nib; sourceTree = \"<group>\"; };\n\t\t29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = \"<absolute>\"; };\n\t\t29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = \"<absolute>\"; };\n\t\t32CA4F630368D1EE00C91783 /* Connection_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Connection_Prefix.pch; sourceTree = \"<group>\"; };\n\t\t3C2D8EC10A63FF31008FE1B0 /* zh_TW */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; lineEnding = 0; name = zh_TW; path = zh_TW.lproj/Localizable.strings; sourceTree = \"<group>\"; };\n\t\t3C2D8EC20A63FF3B008FE1B0 /* fr */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; lineEnding = 0; name = fr; path = fr.lproj/Localizable.strings; sourceTree = \"<group>\"; };\n\t\t3C2D8EC30A63FF41008FE1B0 /* da */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; lineEnding = 0; name = da; path = da.lproj/Localizable.strings; sourceTree = \"<group>\"; };\n\t\t790FF0CC0ACCE4B7004B4021 /* KTLog Viewer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = \"KTLog Viewer.app\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t790FF0CE0ACCE4B7004B4021 /* KTLog Viewer-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = \"KTLog Viewer-Info.plist\"; sourceTree = \"<group>\"; };\n\t\t790FF0D60ACCE4F2004B4021 /* ktlogviewer_main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ktlogviewer_main.m; sourceTree = \"<group>\"; };\n\t\t790FF0DC0ACCE8EA004B4021 /* en */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = en; path = en.lproj/KTLogViewer.nib; sourceTree = \"<group>\"; };\n\t\t790FF0E20ACCE966004B4021 /* KTLogController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = KTLogController.h; sourceTree = \"<group>\"; };\n\t\t790FF0E30ACCE966004B4021 /* KTLogController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = KTLogController.m; sourceTree = \"<group>\"; };\n\t\t794EFDD10A5CD6CA00913151 /* libcrypto.dylib */ = {isa = PBXFileReference; lastKnownFileType = \"compiled.mach-o.dylib\"; name = libcrypto.dylib; path = /usr/lib/libcrypto.dylib; sourceTree = \"<absolute>\"; };\n\t\t794EFDD40A5CD6F900913151 /* libssl.dylib */ = {isa = PBXFileReference; lastKnownFileType = \"compiled.mach-o.dylib\"; name = libssl.dylib; path = /usr/lib/libssl.dylib; sourceTree = \"<absolute>\"; };\n\t\t795A01090B116832006905FA /* edit.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = edit.png; sourceTree = \"<group>\"; };\n\t\t795FF4F10B0C013200EA9292 /* DropletHelper.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DropletHelper.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t795FF4F30B0C013200EA9292 /* DropletHelper-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = \"DropletHelper-Info.plist\"; sourceTree = \"<group>\"; };\n\t\t795FF5010B0C018100EA9292 /* DropletMain.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DropletMain.m; sourceTree = \"<group>\"; };\n\t\t795FF5060B0C048700EA9292 /* en */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = en; path = en.lproj/Droplet.nib; sourceTree = \"<group>\"; };\n\t\t795FF50C0B0C05F400EA9292 /* DropletController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = DropletController.m; sourceTree = \"<group>\"; };\n\t\t795FF50D0B0C05F400EA9292 /* DropletController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DropletController.h; sourceTree = \"<group>\"; };\n\t\t796DB2F609F8BB1D0065897B /* SecurityInterface.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SecurityInterface.framework; path = /System/Library/Frameworks/SecurityInterface.framework; sourceTree = \"<absolute>\"; };\n\t\t797CC8C609F861770063FF9B /* en */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; lineEnding = 0; name = en; path = en.lproj/Localizable.strings; sourceTree = \"<group>\"; };\n\t\t798300060B0D4A2600F5078E /* en */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = en; path = en.lproj/DropletLauncher.nib; sourceTree = \"<group>\"; };\n\t\t7983E0930B0C1A8500F5078E /* DropletOutlineView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DropletOutlineView.h; sourceTree = \"<group>\"; };\n\t\t7983E0940B0C1A8500F5078E /* DropletOutlineView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DropletOutlineView.m; sourceTree = \"<group>\"; };\n\t\t7983E6730B0C41E300F5078E /* DropletLauncher.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DropletLauncher.m; sourceTree = \"<group>\"; };\n\t\t7983E6CB0B0C4D8800F5078E /* DropletIcon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = DropletIcon.icns; sourceTree = \"<group>\"; };\n\t\t7983E6D20B0C4DF000F5078E /* DropletLauncher */ = {isa = PBXFileReference; explicitFileType = \"compiled.mach-o.executable\"; includeInIndex = 0; path = DropletLauncher; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t7983F3EC0B0D1B8B00F5078E /* DropletPanel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DropletPanel.h; sourceTree = \"<group>\"; };\n\t\t7983F3ED0B0D1B8B00F5078E /* DropletPanel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DropletPanel.m; sourceTree = \"<group>\"; };\n\t\t79CFD12609F702BE00172CDD /* Connection.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Connection.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t79CFD12709F702BE00172CDD /* Framework-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = \"Framework-Info.plist\"; sourceTree = \"<group>\"; };\n\t\t79CFD8CD09F706F500172CDD /* Controller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Controller.h; sourceTree = SOURCE_ROOT; };\n\t\t79CFD8CE09F706F500172CDD /* Controller.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Controller.m; sourceTree = SOURCE_ROOT; };\n\t\t79CFD8CF09F706F500172CDD /* FileTransfer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FileTransfer.h; sourceTree = SOURCE_ROOT; };\n\t\t79CFD8D009F706F500172CDD /* FileTransfer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FileTransfer.m; sourceTree = SOURCE_ROOT; };\n\t\t79CFD8D109F706F500172CDD /* InputDialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InputDialog.h; sourceTree = SOURCE_ROOT; };\n\t\t79CFD8D209F706F500172CDD /* InputDialog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InputDialog.m; sourceTree = SOURCE_ROOT; };\n\t\t79CFD8D309F706F500172CDD /* PermissionsController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PermissionsController.h; sourceTree = SOURCE_ROOT; };\n\t\t79CFD8D409F706F500172CDD /* PermissionsController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PermissionsController.m; sourceTree = SOURCE_ROOT; };\n\t\t79CFD8D509F706F500172CDD /* ProgressCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProgressCell.h; sourceTree = SOURCE_ROOT; };\n\t\t79CFD8D609F706F500172CDD /* ProgressCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ProgressCell.m; sourceTree = SOURCE_ROOT; };\n\t\t79CFD8DD09F7071400172CDD /* en */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = en; path = en.lproj/InputDialog.nib; sourceTree = \"<group>\"; };\n\t\t79CFD8DF09F7071400172CDD /* en */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = en; path = en.lproj/Permissions.nib; sourceTree = \"<group>\"; };\n\t\t79CFD8E809F7076200172CDD /* connect.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = connect.tiff; sourceTree = SOURCE_ROOT; };\n\t\t79CFD8E909F7076200172CDD /* console.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = console.tiff; sourceTree = SOURCE_ROOT; };\n\t\t79CFD8EA09F7076200172CDD /* delete.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = delete.tiff; sourceTree = SOURCE_ROOT; };\n\t\t79CFD8EB09F7076200172CDD /* download.tif */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = download.tif; sourceTree = SOURCE_ROOT; };\n\t\t79CFD8ED09F7076200172CDD /* home.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = home.tiff; sourceTree = SOURCE_ROOT; };\n\t\t79CFD8EE09F7076200172CDD /* icon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = icon.icns; sourceTree = SOURCE_ROOT; };\n\t\t79CFD8EF09F7076200172CDD /* lock.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = lock.tiff; sourceTree = SOURCE_ROOT; };\n\t\t79CFD8F009F7076200172CDD /* redo.tif */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = redo.tif; sourceTree = SOURCE_ROOT; };\n\t\t79CFD8F109F7076200172CDD /* symlink_file.tif */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = symlink_file.tif; sourceTree = SOURCE_ROOT; };\n\t\t79CFD8F209F7076200172CDD /* symlink_folder.tif */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = symlink_folder.tif; sourceTree = SOURCE_ROOT; };\n\t\t79CFD8F309F7076200172CDD /* upload.tif */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = upload.tif; sourceTree = SOURCE_ROOT; };\n\t\t79CFD92C09F7080B00172CDD /* libcurl.dylib */ = {isa = PBXFileReference; lastKnownFileType = \"compiled.mach-o.dylib\"; name = libcurl.dylib; path = /usr/lib/libcurl.dylib; sourceTree = \"<absolute>\"; };\n\t\t79CFD92D09F7080B00172CDD /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = \"compiled.mach-o.dylib\"; name = libz.dylib; path = /usr/lib/libz.dylib; sourceTree = \"<absolute>\"; };\n\t\t79CFD93609F7084000172CDD /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = /System/Library/Frameworks/Security.framework; sourceTree = \"<absolute>\"; };\n\t\t79CFD97A09F70AA700172CDD /* network_icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = network_icon.png; sourceTree = \"<group>\"; };\n\t\t79CFD97B09F70AA700172CDD /* Stop.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = Stop.tiff; sourceTree = \"<group>\"; };\n\t\t79F9532B09FDC3A80041E345 /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = \"<absolute>\"; };\n\t\t79FB807109F74185006E7D11 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = \"<absolute>\"; };\n\t\t8D1107320486CEB800E47090 /* Connection.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Connection.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tCE1AD3DF0A7E845A0083C01E /* it */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; lineEnding = 0; name = it; path = it.lproj/Localizable.strings; sourceTree = \"<group>\"; };\n\t\tCE4F78E80B9C8F530083B946 /* Logs.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = Logs.icns; sourceTree = \"<group>\"; };\n\t\tCE55A6620AD194740091C8AE /* zh_CN */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; lineEnding = 0; name = zh_CN; path = zh_CN.lproj/Localizable.strings; sourceTree = \"<group>\"; };\n\t\tCE9FC9550DF70F32002330B2 /* da */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/InfoPlist.strings; sourceTree = \"<group>\"; };\n\t\tCE9FC95B0DF70F3D002330B2 /* de */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InfoPlist.strings; sourceTree = \"<group>\"; };\n\t\tCE9FC95C0DF70F44002330B2 /* fr */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/InfoPlist.strings; sourceTree = \"<group>\"; };\n\t\tCE9FC95D0DF70F49002330B2 /* it */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/InfoPlist.strings; sourceTree = \"<group>\"; };\n\t\tCE9FC95E0DF70F50002330B2 /* ja */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/InfoPlist.strings; sourceTree = \"<group>\"; };\n\t\tCE9FC9610DF70F56002330B2 /* zh_CN */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = zh_CN; path = zh_CN.lproj/InfoPlist.strings; sourceTree = \"<group>\"; };\n\t\tCE9FC9620DF70F5C002330B2 /* zh_TW */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = zh_TW; path = zh_TW.lproj/InfoPlist.strings; sourceTree = \"<group>\"; };\n\t\tCEA9AFD30A64224100855897 /* ja */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; lineEnding = 0; name = ja; path = ja.lproj/Localizable.strings; sourceTree = \"<group>\"; };\n\t\tCEB563850A7AB7070081179A /* de */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; lineEnding = 0; name = de; path = de.lproj/Localizable.strings; sourceTree = \"<group>\"; };\n\t\tCEF894CF0BD72A45002886AA /* da */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = da; path = da.lproj/DropletLauncher.nib; sourceTree = \"<group>\"; };\n\t\tCEF894E90BD72A55002886AA /* de */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = de; path = de.lproj/DropletLauncher.nib; sourceTree = \"<group>\"; };\n\t\tCEF894EE0BD72A5C002886AA /* fr */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = fr; path = fr.lproj/DropletLauncher.nib; sourceTree = \"<group>\"; };\n\t\tCEF894F30BD72A62002886AA /* it */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = it; path = it.lproj/DropletLauncher.nib; sourceTree = \"<group>\"; };\n\t\tCEF894F80BD72A6A002886AA /* ja */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = ja; path = ja.lproj/DropletLauncher.nib; sourceTree = \"<group>\"; };\n\t\tCEF894FD0BD72A70002886AA /* zh_CN */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = zh_CN; path = zh_CN.lproj/DropletLauncher.nib; sourceTree = \"<group>\"; };\n\t\tCEF895020BD72A76002886AA /* zh_TW */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = zh_TW; path = zh_TW.lproj/DropletLauncher.nib; sourceTree = \"<group>\"; };\n\t\tD3053AAC0DE60D6B008646CE /* libicucore.A.dylib */ = {isa = PBXFileReference; lastKnownFileType = \"compiled.mach-o.dylib\"; name = libicucore.A.dylib; path = /usr/lib/libicucore.A.dylib; sourceTree = \"<absolute>\"; };\n\t\tD3F1D2FF0D3BFF6A008F6C35 /* AquaFolder.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = AquaFolder.png; sourceTree = \"<group>\"; };\n\t\tD3F1D3020D3BFF72008F6C35 /* LeopardFolder.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = LeopardFolder.tiff; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t09D6601A09FD37990000BA00 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t09D6603A09FD37CD0000BA00 /* Connection.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t790FF0CA0ACCE4B7004B4021 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t790FF23E0ACCEB46004B4021 /* AppKit.framework in Frameworks */,\n\t\t\t\t790FF23F0ACCEB46004B4021 /* Foundation.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t795FF4EF0B0C013200EA9292 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t7983E24B0B0C245100F5078E /* Cocoa.framework in Frameworks */,\n\t\t\t\t7983E2310B0C244700F5078E /* Connection.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t7983E6D00B0C4DF000F5078E /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t7983E7000B0C4E2800F5078E /* Cocoa.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t79CFD12409F702BE00172CDD /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t79CFD92F09F7080B00172CDD /* libz.dylib in Frameworks */,\n\t\t\t\t79CFD93709F7084000172CDD /* Security.framework in Frameworks */,\n\t\t\t\t79FB807209F74185006E7D11 /* Carbon.framework in Frameworks */,\n\t\t\t\t796DB30109F8BB1D0065897B /* SecurityInterface.framework in Frameworks */,\n\t\t\t\t79F9533D09FDC3A80041E345 /* ApplicationServices.framework in Frameworks */,\n\t\t\t\t794EFDD20A5CD6CA00913151 /* libcrypto.dylib in Frameworks */,\n\t\t\t\t794EFDD50A5CD6F900913151 /* libssl.dylib in Frameworks */,\n\t\t\t\tD3053AAD0DE60D6B008646CE /* libicucore.A.dylib in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t8D11072E0486CEB800E47090 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t79FB808A09F741D6006E7D11 /* Carbon.framework in Frameworks */,\n\t\t\t\t79F563FF0AC8C5F2006AD3E2 /* Security.framework in Frameworks */,\n\t\t\t\t79CFD97009F70A7E00172CDD /* Connection.framework in Frameworks */,\n\t\t\t\t8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tD3053AAC0DE60D6B008646CE /* libicucore.A.dylib */,\n\t\t\t\t794EFDD40A5CD6F900913151 /* libssl.dylib */,\n\t\t\t\t794EFDD10A5CD6CA00913151 /* libcrypto.dylib */,\n\t\t\t\t79F9532B09FDC3A80041E345 /* ApplicationServices.framework */,\n\t\t\t\t796DB2F609F8BB1D0065897B /* SecurityInterface.framework */,\n\t\t\t\t79FB807109F74185006E7D11 /* Carbon.framework */,\n\t\t\t\t79CFD93609F7084000172CDD /* Security.framework */,\n\t\t\t\t79CFD92C09F7080B00172CDD /* libcurl.dylib */,\n\t\t\t\t79CFD92D09F7080B00172CDD /* libz.dylib */,\n\t\t\t\t1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,\n\t\t\t);\n\t\t\tname = \"Linked Frameworks\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t29B97324FDCFA39411CA2CEA /* AppKit.framework */,\n\t\t\t\t13E42FB307B3F0F600E4EEF1 /* CoreData.framework */,\n\t\t\t\t29B97325FDCFA39411CA2CEA /* Foundation.framework */,\n\t\t\t);\n\t\t\tname = \"Other Frameworks\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t19C28FACFE9D520D11CA2CBB /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t8D1107320486CEB800E47090 /* Connection.app */,\n\t\t\t\t79CFD12609F702BE00172CDD /* Connection.framework */,\n\t\t\t\t09D6601D09FD37990000BA00 /* UnitTest.octest */,\n\t\t\t\t790FF0CC0ACCE4B7004B4021 /* KTLog Viewer.app */,\n\t\t\t\t795FF4F10B0C013200EA9292 /* DropletHelper.app */,\n\t\t\t\t7983E6D20B0C4DF000F5078E /* DropletLauncher */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t29B97314FDCFA39411CA2CEA /* Connection */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t790FF0C30ACCE483004B4021 /* KTLog Viewer */,\n\t\t\t\t795FF4EA0B0C00FF00EA9292 /* Droplet */,\n\t\t\t\t79CFD11709F7020500172CDD /* Test Application */,\n\t\t\t\t29B97315FDCFA39411CA2CEA /* Other Sources */,\n\t\t\t\t29B97317FDCFA39411CA2CEA /* Resources */,\n\t\t\t\t29B97323FDCFA39411CA2CEA /* Frameworks */,\n\t\t\t\t19C28FACFE9D520D11CA2CBB /* Products */,\n\t\t\t);\n\t\t\tname = Connection;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t29B97315FDCFA39411CA2CEA /* Other Sources */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t32CA4F630368D1EE00C91783 /* Connection_Prefix.pch */,\n\t\t\t\t29B97316FDCFA39411CA2CEA /* main.m */,\n\t\t\t);\n\t\t\tname = \"Other Sources\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t29B97317FDCFA39411CA2CEA /* Resources */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tCE4F78E80B9C8F530083B946 /* Logs.icns */,\n\t\t\t\t797CC8C509F861770063FF9B /* Localizable.strings */,\n\t\t\t\t79CFD8E709F7072100172CDD /* Interfaces */,\n\t\t\t\t79CFD8E409F7071E00172CDD /* Images */,\n\t\t\t\t79CFD12709F702BE00172CDD /* Framework-Info.plist */,\n\t\t\t\t089C165CFE840E0CC02AAC07 /* InfoPlist.strings */,\n\t\t\t);\n\t\t\tname = Resources;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t29B97323FDCFA39411CA2CEA /* Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */,\n\t\t\t\t1058C7A2FEA54F0111CA2CBB /* Other Frameworks */,\n\t\t\t);\n\t\t\tname = Frameworks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t790FF0C30ACCE483004B4021 /* KTLog Viewer */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t790FF0E20ACCE966004B4021 /* KTLogController.h */,\n\t\t\t\t790FF0E30ACCE966004B4021 /* KTLogController.m */,\n\t\t\t\t790FF0DB0ACCE8EA004B4021 /* KTLogViewer.nib */,\n\t\t\t\t790FF0D60ACCE4F2004B4021 /* ktlogviewer_main.m */,\n\t\t\t\t790FF0CE0ACCE4B7004B4021 /* KTLog Viewer-Info.plist */,\n\t\t\t);\n\t\t\tname = \"KTLog Viewer\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t795FF4EA0B0C00FF00EA9292 /* Droplet */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t7983E6CB0B0C4D8800F5078E /* DropletIcon.icns */,\n\t\t\t\t795FF50D0B0C05F400EA9292 /* DropletController.h */,\n\t\t\t\t795FF50C0B0C05F400EA9292 /* DropletController.m */,\n\t\t\t\t795FF5010B0C018100EA9292 /* DropletMain.m */,\n\t\t\t\t795FF4F30B0C013200EA9292 /* DropletHelper-Info.plist */,\n\t\t\t\t7983E0930B0C1A8500F5078E /* DropletOutlineView.h */,\n\t\t\t\t7983E0940B0C1A8500F5078E /* DropletOutlineView.m */,\n\t\t\t\t7983E6730B0C41E300F5078E /* DropletLauncher.m */,\n\t\t\t\t798300050B0D4A2600F5078E /* DropletLauncher.nib */,\n\t\t\t\t795FF5050B0C048700EA9292 /* Droplet.nib */,\n\t\t\t\t7983F3EC0B0D1B8B00F5078E /* DropletPanel.h */,\n\t\t\t\t7983F3ED0B0D1B8B00F5078E /* DropletPanel.m */,\n\t\t\t);\n\t\t\tname = Droplet;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t79CFD11709F7020500172CDD /* Test Application */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t79CFD8CD09F706F500172CDD /* Controller.h */,\n\t\t\t\t79CFD8CE09F706F500172CDD /* Controller.m */,\n\t\t\t\t79CFD8CF09F706F500172CDD /* FileTransfer.h */,\n\t\t\t\t79CFD8D009F706F500172CDD /* FileTransfer.m */,\n\t\t\t\t79CFD8D109F706F500172CDD /* InputDialog.h */,\n\t\t\t\t79CFD8D209F706F500172CDD /* InputDialog.m */,\n\t\t\t\t79CFD8D309F706F500172CDD /* PermissionsController.h */,\n\t\t\t\t79CFD8D409F706F500172CDD /* PermissionsController.m */,\n\t\t\t\t79CFD8D509F706F500172CDD /* ProgressCell.h */,\n\t\t\t\t79CFD8D609F706F500172CDD /* ProgressCell.m */,\n\t\t\t);\n\t\t\tname = \"Test Application\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t79CFD8E409F7071E00172CDD /* Images */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tD3F1D3020D3BFF72008F6C35 /* LeopardFolder.tiff */,\n\t\t\t\tD3F1D2FF0D3BFF6A008F6C35 /* AquaFolder.png */,\n\t\t\t\t795A01090B116832006905FA /* edit.png */,\n\t\t\t\t79CFD97A09F70AA700172CDD /* network_icon.png */,\n\t\t\t\t79CFD97B09F70AA700172CDD /* Stop.tiff */,\n\t\t\t\t79CFD8E809F7076200172CDD /* connect.tiff */,\n\t\t\t\t79CFD8E909F7076200172CDD /* console.tiff */,\n\t\t\t\t79CFD8EA09F7076200172CDD /* delete.tiff */,\n\t\t\t\t79CFD8EB09F7076200172CDD /* download.tif */,\n\t\t\t\t79CFD8ED09F7076200172CDD /* home.tiff */,\n\t\t\t\t79CFD8EE09F7076200172CDD /* icon.icns */,\n\t\t\t\t79CFD8EF09F7076200172CDD /* lock.tiff */,\n\t\t\t\t79CFD8F009F7076200172CDD /* redo.tif */,\n\t\t\t\t79CFD8F109F7076200172CDD /* symlink_file.tif */,\n\t\t\t\t79CFD8F209F7076200172CDD /* symlink_folder.tif */,\n\t\t\t\t79CFD8F309F7076200172CDD /* upload.tif */,\n\t\t\t);\n\t\t\tname = Images;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t79CFD8E709F7072100172CDD /* Interfaces */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t29B97318FDCFA39411CA2CEA /* MainMenu.nib */,\n\t\t\t\t79CFD8DC09F7071400172CDD /* InputDialog.nib */,\n\t\t\t\t79CFD8DE09F7071400172CDD /* Permissions.nib */,\n\t\t\t);\n\t\t\tname = Interfaces;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXHeadersBuildPhase section */\n\t\t79CFD12109F702BE00172CDD /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXHeadersBuildPhase section */\n\n/* Begin PBXNativeTarget section */\n\t\t09D6601C09FD37990000BA00 /* UnitTest */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 09D6602609FD379A0000BA00 /* Build configuration list for PBXNativeTarget \"UnitTest\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t09D6601809FD37990000BA00 /* Resources */,\n\t\t\t\t09D6601909FD37990000BA00 /* Sources */,\n\t\t\t\t09D6601A09FD37990000BA00 /* Frameworks */,\n\t\t\t\t09D6601B09FD37990000BA00 /* ShellScript */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\t09D6604509FD37DD0000BA00 /* PBXTargetDependency */,\n\t\t\t\t09D6604709FD37DD0000BA00 /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = UnitTest;\n\t\t\tproductName = UnitTest;\n\t\t\tproductReference = 09D6601D09FD37990000BA00 /* UnitTest.octest */;\n\t\t\tproductType = \"com.apple.product-type.bundle\";\n\t\t};\n\t\t790FF0CB0ACCE4B7004B4021 /* KTLog Viewer */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 790FF0CF0ACCE4B8004B4021 /* Build configuration list for PBXNativeTarget \"KTLog Viewer\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t790FF0C80ACCE4B7004B4021 /* Resources */,\n\t\t\t\t790FF0C90ACCE4B7004B4021 /* Sources */,\n\t\t\t\t790FF0CA0ACCE4B7004B4021 /* Frameworks */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"KTLog Viewer\";\n\t\t\tproductName = \"KTLog Viewer\";\n\t\t\tproductReference = 790FF0CC0ACCE4B7004B4021 /* KTLog Viewer.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n\t\t795FF4F00B0C013200EA9292 /* DropletHelper */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 795FF4F70B0C013300EA9292 /* Build configuration list for PBXNativeTarget \"DropletHelper\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t795FF4ED0B0C013200EA9292 /* Resources */,\n\t\t\t\t795FF4EE0B0C013200EA9292 /* Sources */,\n\t\t\t\t795FF4EF0B0C013200EA9292 /* Frameworks */,\n\t\t\t\t7983ED650B0C749800F5078E /* Reset Install Path */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\t795FF4FC0B0C014B00EA9292 /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = DropletHelper;\n\t\t\tproductName = DropletHelper;\n\t\t\tproductReference = 795FF4F10B0C013200EA9292 /* DropletHelper.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n\t\t7983E6D10B0C4DF000F5078E /* DropletLauncher */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 7983E6E20B0C4E1E00F5078E /* Build configuration list for PBXNativeTarget \"DropletLauncher\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t7983E6CF0B0C4DF000F5078E /* Sources */,\n\t\t\t\t7983E6D00B0C4DF000F5078E /* Frameworks */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = DropletLauncher;\n\t\t\tproductName = DropletLauncher;\n\t\t\tproductReference = 7983E6D20B0C4DF000F5078E /* DropletLauncher */;\n\t\t\tproductType = \"com.apple.product-type.tool\";\n\t\t};\n\t\t79CFD12509F702BE00172CDD /* Framework */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 79CFD12809F702BF00172CDD /* Build configuration list for PBXNativeTarget \"Framework\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t797CBBEB09F854B60063FF9B /* Generate Localizable.strings */,\n\t\t\t\t79CFD12309F702BE00172CDD /* Sources */,\n\t\t\t\t79CFD12409F702BE00172CDD /* Frameworks */,\n\t\t\t\t79CFD12109F702BE00172CDD /* Headers */,\n\t\t\t\t79CFD12209F702BE00172CDD /* Resources */,\n\t\t\t\t7931260F0B3684B2002FF80D /* Strip UKKQueue */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\t7983E7040B0C4E3300F5078E /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = Framework;\n\t\t\tproductName = Framework;\n\t\t\tproductReference = 79CFD12609F702BE00172CDD /* Connection.framework */;\n\t\t\tproductType = \"com.apple.product-type.framework\";\n\t\t};\n\t\t8D1107260486CEB800E47090 /* Connection */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget \"Connection\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t8D1107290486CEB800E47090 /* Resources */,\n\t\t\t\t8D11072C0486CEB800E47090 /* Sources */,\n\t\t\t\t8D11072E0486CEB800E47090 /* Frameworks */,\n\t\t\t\t79CFD96909F70A4D00172CDD /* CopyFiles */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\t7983E8370B0C5B9800F5078E /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = Connection;\n\t\t\tproductInstallPath = \"$(HOME)/Applications\";\n\t\t\tproductName = Connection;\n\t\t\tproductReference = 8D1107320486CEB800E47090 /* Connection.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t29B97313FDCFA39411CA2CEA /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tbuildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject \"ConnectionApp\" */;\n\t\t\tcompatibilityVersion = \"Xcode 2.4\";\n\t\t\thasScannedForEncodings = 1;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tja,\n\t\t\t\tfr,\n\t\t\t\tde,\n\t\t\t\tzh_TW,\n\t\t\t\tda,\n\t\t\t\tit,\n\t\t\t\tzh_CN,\n\t\t\t);\n\t\t\tmainGroup = 29B97314FDCFA39411CA2CEA /* Connection */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t7983E7E80B0C4F2200F5078E /* Build All */,\n\t\t\t\t8D1107260486CEB800E47090 /* Connection */,\n\t\t\t\t79CFD12509F702BE00172CDD /* Framework */,\n\t\t\t\t09D6601C09FD37990000BA00 /* UnitTest */,\n\t\t\t\t790FF0CB0ACCE4B7004B4021 /* KTLog Viewer */,\n\t\t\t\t795FF4F00B0C013200EA9292 /* DropletHelper */,\n\t\t\t\t7983E6D10B0C4DF000F5078E /* DropletLauncher */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t09D6601809FD37990000BA00 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t790FF0C80ACCE4B7004B4021 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t790FF0DD0ACCE8EA004B4021 /* KTLogViewer.nib in Resources */,\n\t\t\t\tCE4F78E90B9C8F530083B946 /* Logs.icns in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t795FF4ED0B0C013200EA9292 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t7983EDF90B0C802C00F5078E /* DropletIcon.icns in Resources */,\n\t\t\t\t795FF5070B0C048700EA9292 /* Droplet.nib in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t79CFD12209F702BE00172CDD /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t7983E7050B0C4E4E00F5078E /* DropletLauncher in Resources */,\n\t\t\t\t797CC8C709F861770063FF9B /* Localizable.strings in Resources */,\n\t\t\t\t7983E6CC0B0C4D8800F5078E /* DropletIcon.icns in Resources */,\n\t\t\t\t798300070B0D4A2600F5078E /* DropletLauncher.nib in Resources */,\n\t\t\t\t792E57860C8E2C2F00276AA2 /* symlink_folder.tif in Resources */,\n\t\t\t\t792E57890C8E2C3300276AA2 /* symlink_file.tif in Resources */,\n\t\t\t\tD3EEAE380D41B42700D43A7A /* LeopardFolder.tiff in Resources */,\n\t\t\t\tD3EEAE390D41B42B00D43A7A /* AquaFolder.png in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t8D1107290486CEB800E47090 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t8D11072A0486CEB800E47090 /* MainMenu.nib in Resources */,\n\t\t\t\t8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */,\n\t\t\t\t79CFD8E009F7071400172CDD /* InputDialog.nib in Resources */,\n\t\t\t\t79CFD8E109F7071400172CDD /* Permissions.nib in Resources */,\n\t\t\t\t79CFD8F409F7076200172CDD /* connect.tiff in Resources */,\n\t\t\t\t79CFD8F509F7076200172CDD /* console.tiff in Resources */,\n\t\t\t\t79CFD8F609F7076200172CDD /* delete.tiff in Resources */,\n\t\t\t\t79CFD8F709F7076200172CDD /* download.tif in Resources */,\n\t\t\t\t79CFD8F909F7076200172CDD /* home.tiff in Resources */,\n\t\t\t\t79CFD8FA09F7076200172CDD /* icon.icns in Resources */,\n\t\t\t\t79CFD8FB09F7076200172CDD /* lock.tiff in Resources */,\n\t\t\t\t79CFD8FC09F7076200172CDD /* redo.tif in Resources */,\n\t\t\t\t79CFD8FD09F7076200172CDD /* symlink_file.tif in Resources */,\n\t\t\t\t79CFD8FE09F7076200172CDD /* symlink_folder.tif in Resources */,\n\t\t\t\t79CFD8FF09F7076200172CDD /* upload.tif in Resources */,\n\t\t\t\t79CFD97C09F70AA700172CDD /* network_icon.png in Resources */,\n\t\t\t\t79CFD97D09F70AA700172CDD /* Stop.tiff in Resources */,\n\t\t\t\t795A010A0B116832006905FA /* edit.png in Resources */,\n\t\t\t\tD3F1D3000D3BFF6A008F6C35 /* AquaFolder.png in Resources */,\n\t\t\t\tD3F1D3030D3BFF72008F6C35 /* LeopardFolder.tiff in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXShellScriptBuildPhase section */\n\t\t09D6601B09FD37990000BA00 /* ShellScript */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"# Run the unit tests in this test bundle.\\n\\\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\\\"\\n\";\n\t\t};\n\t\t7931260F0B3684B2002FF80D /* Strip UKKQueue */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\tname = \"Strip UKKQueue\";\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"HAS_SYMBOLS=`nm ${BUILT_PRODUCTS_DIR}/${EXECUTABLE_PATH} |grep .objc_class_name_UKKQueue |grep -w A`\\necho $HAS_SYMBOLS\\nif [ \\\"$HAS_SYMBOLS\\\" == \\\"\\\" ]\\nthen\\n\\techo \\\"No need to strip symbols\\\"\\nelse\\n\\tnmedit -R \\\"${SOURCE_ROOT}/UKKQueue_Symbols\\\" \\\"${BUILT_PRODUCTS_DIR}/${EXECUTABLE_PATH}\\\"\\nfi\\n\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n\t\t797CBBEB09F854B60063FF9B /* Generate Localizable.strings */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 8;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\tname = \"Generate Localizable.strings\";\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 1;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"echo \\\"Generating Localizable.strings ...\\\"\\n\\ncd \\\"${SRCROOT}\\\"\\ngenstrings -littleEndian -q -u -s LocalizedStringInConnectionKitBundle -o en.lproj *.m\\n\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n\t\t7983E7EE0B0C4F5100F5078E /* ShellScript */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"#!/bin/sh\\n\\n# Copy the DropletHelper application into the Resources folder of the framework\\n\\nLAUNCHER_PATH=$CONFIGURATION_BUILD_DIR/DropletHelper.app\\nCK_FRAMEWORK_PATH=$CONFIGURATION_BUILD_DIR/Connection.framework/Versions/A/Resources\\n\\nrm -rf $CK_FRAMEWORK_PATH/DropletHelper.app\\n\\nmv $LAUNCHER_PATH $CK_FRAMEWORK_PATH\\n\";\n\t\t};\n\t\t7983ED650B0C749800F5078E /* Reset Install Path */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\tname = \"Reset Install Path\";\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"/Developer/usr/bin/install_name_tool -change @executable_path/../Frameworks/Connection.framework/Versions/A/Connection @executable_path/../../../../Connection $CONFIGURATION_BUILD_DIR/DropletHelper.app/Contents/MacOS/DropletHelper\";\n\t\t};\n/* End PBXShellScriptBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t09D6601909FD37990000BA00 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t790FF0C90ACCE4B7004B4021 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t790FF0D70ACCE4F2004B4021 /* ktlogviewer_main.m in Sources */,\n\t\t\t\t790FF0E40ACCE966004B4021 /* KTLogController.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t795FF4EE0B0C013200EA9292 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t795FF5020B0C018100EA9292 /* DropletMain.m in Sources */,\n\t\t\t\t795FF50E0B0C05F400EA9292 /* DropletController.m in Sources */,\n\t\t\t\t7983E0950B0C1A8500F5078E /* DropletOutlineView.m in Sources */,\n\t\t\t\t7983F3EE0B0D1B8B00F5078E /* DropletPanel.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t7983E6CF0B0C4DF000F5078E /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t7983E6DE0B0C4E0000F5078E /* DropletLauncher.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t79CFD12309F702BE00172CDD /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t8D11072C0486CEB800E47090 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t8D11072D0486CEB800E47090 /* main.m in Sources */,\n\t\t\t\t79CFD8D709F706F500172CDD /* Controller.m in Sources */,\n\t\t\t\t79CFD8D809F706F500172CDD /* FileTransfer.m in Sources */,\n\t\t\t\t79CFD8D909F706F500172CDD /* InputDialog.m in Sources */,\n\t\t\t\t79CFD8DA09F706F500172CDD /* PermissionsController.m in Sources */,\n\t\t\t\t79CFD8DB09F706F500172CDD /* ProgressCell.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXTargetDependency section */\n\t\t09D6604509FD37DD0000BA00 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = 8D1107260486CEB800E47090 /* Connection */;\n\t\t\ttargetProxy = 09D6604409FD37DD0000BA00 /* PBXContainerItemProxy */;\n\t\t};\n\t\t09D6604709FD37DD0000BA00 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = 79CFD12509F702BE00172CDD /* Framework */;\n\t\t\ttargetProxy = 09D6604609FD37DD0000BA00 /* PBXContainerItemProxy */;\n\t\t};\n\t\t795FF4FC0B0C014B00EA9292 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = 79CFD12509F702BE00172CDD /* Framework */;\n\t\t\ttargetProxy = 795FF4FB0B0C014B00EA9292 /* PBXContainerItemProxy */;\n\t\t};\n\t\t7983E7040B0C4E3300F5078E /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = 7983E6D10B0C4DF000F5078E /* DropletLauncher */;\n\t\t\ttargetProxy = 7983E7030B0C4E3300F5078E /* PBXContainerItemProxy */;\n\t\t};\n\t\t7983E7EA0B0C4F4200F5078E /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = 79CFD12509F702BE00172CDD /* Framework */;\n\t\t\ttargetProxy = 7983E7E90B0C4F4200F5078E /* PBXContainerItemProxy */;\n\t\t};\n\t\t7983E7EC0B0C4F4600F5078E /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = 795FF4F00B0C013200EA9292 /* DropletHelper */;\n\t\t\ttargetProxy = 7983E7EB0B0C4F4600F5078E /* PBXContainerItemProxy */;\n\t\t};\n\t\t7983E8370B0C5B9800F5078E /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = 7983E7E80B0C4F2200F5078E /* Build All */;\n\t\t\ttargetProxy = 7983E8360B0C5B9800F5078E /* PBXContainerItemProxy */;\n\t\t};\n/* End PBXTargetDependency section */\n\n/* Begin PBXVariantGroup section */\n\t\t089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t089C165DFE840E0CC02AAC07 /* en */,\n\t\t\t\tCE9FC9550DF70F32002330B2 /* da */,\n\t\t\t\tCE9FC95B0DF70F3D002330B2 /* de */,\n\t\t\t\tCE9FC95C0DF70F44002330B2 /* fr */,\n\t\t\t\tCE9FC95D0DF70F49002330B2 /* it */,\n\t\t\t\tCE9FC95E0DF70F50002330B2 /* ja */,\n\t\t\t\tCE9FC9610DF70F56002330B2 /* zh_CN */,\n\t\t\t\tCE9FC9620DF70F5C002330B2 /* zh_TW */,\n\t\t\t);\n\t\t\tname = InfoPlist.strings;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t29B97318FDCFA39411CA2CEA /* MainMenu.nib */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t29B97319FDCFA39411CA2CEA /* en */,\n\t\t\t);\n\t\t\tname = MainMenu.nib;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t790FF0DB0ACCE8EA004B4021 /* KTLogViewer.nib */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t790FF0DC0ACCE8EA004B4021 /* en */,\n\t\t\t);\n\t\t\tname = KTLogViewer.nib;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t795FF5050B0C048700EA9292 /* Droplet.nib */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t795FF5060B0C048700EA9292 /* en */,\n\t\t\t);\n\t\t\tname = Droplet.nib;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t797CC8C509F861770063FF9B /* Localizable.strings */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t797CC8C609F861770063FF9B /* en */,\n\t\t\t\t3C2D8EC10A63FF31008FE1B0 /* zh_TW */,\n\t\t\t\t3C2D8EC20A63FF3B008FE1B0 /* fr */,\n\t\t\t\t3C2D8EC30A63FF41008FE1B0 /* da */,\n\t\t\t\tCEA9AFD30A64224100855897 /* ja */,\n\t\t\t\tCEB563850A7AB7070081179A /* de */,\n\t\t\t\tCE1AD3DF0A7E845A0083C01E /* it */,\n\t\t\t\tCE55A6620AD194740091C8AE /* zh_CN */,\n\t\t\t);\n\t\t\tname = Localizable.strings;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t798300050B0D4A2600F5078E /* DropletLauncher.nib */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t798300060B0D4A2600F5078E /* en */,\n\t\t\t\tCEF894CF0BD72A45002886AA /* da */,\n\t\t\t\tCEF894E90BD72A55002886AA /* de */,\n\t\t\t\tCEF894EE0BD72A5C002886AA /* fr */,\n\t\t\t\tCEF894F30BD72A62002886AA /* it */,\n\t\t\t\tCEF894F80BD72A6A002886AA /* ja */,\n\t\t\t\tCEF894FD0BD72A70002886AA /* zh_CN */,\n\t\t\t\tCEF895020BD72A76002886AA /* zh_TW */,\n\t\t\t);\n\t\t\tname = DropletLauncher.nib;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t79CFD8DC09F7071400172CDD /* InputDialog.nib */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t79CFD8DD09F7071400172CDD /* en */,\n\t\t\t);\n\t\t\tname = InputDialog.nib;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t79CFD8DE09F7071400172CDD /* Permissions.nib */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t79CFD8DF09F7071400172CDD /* en */,\n\t\t\t);\n\t\t\tname = Permissions.nib;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXVariantGroup section */\n\n/* Begin XCBuildConfiguration section */\n\t\t09D6602709FD379A0000BA00 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(value)\",\n\t\t\t\t\t\"$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)\",\n\t\t\t\t);\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_ENABLE_FIX_AND_CONTINUE = NO;\n\t\t\t\tGCC_ENABLE_OBJC_EXCEPTIONS = YES;\n\t\t\t\tGCC_GENERATE_DEBUGGING_SYMBOLS = YES;\n\t\t\t\tGCC_MODEL_TUNING = G5;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = \"$(SYSTEM_LIBRARY_DIR)/Frameworks/Cocoa.framework/Headers/Cocoa.h\";\n\t\t\t\tINFOPLIST_FILE = \"UnitTest-Info.plist\";\n\t\t\t\tINSTALL_PATH = \"$(USER_LIBRARY_DIR)/Bundles\";\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tCocoa,\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tSenTestingKit,\n\t\t\t\t);\n\t\t\t\tPREBINDING = NO;\n\t\t\t\tPRODUCT_NAME = UnitTest;\n\t\t\t\tWRAPPER_EXTENSION = octest;\n\t\t\t\tZERO_LINK = NO;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t09D6602809FD379A0000BA00 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(value)\",\n\t\t\t\t\t\"$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)\",\n\t\t\t\t);\n\t\t\t\tGCC_ENABLE_FIX_AND_CONTINUE = NO;\n\t\t\t\tGCC_ENABLE_OBJC_EXCEPTIONS = YES;\n\t\t\t\tGCC_GENERATE_DEBUGGING_SYMBOLS = NO;\n\t\t\t\tGCC_MODEL_TUNING = G5;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = \"$(SYSTEM_LIBRARY_DIR)/Frameworks/Cocoa.framework/Headers/Cocoa.h\";\n\t\t\t\tINFOPLIST_FILE = \"UnitTest-Info.plist\";\n\t\t\t\tINSTALL_PATH = \"$(USER_LIBRARY_DIR)/Bundles\";\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tCocoa,\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tSenTestingKit,\n\t\t\t\t);\n\t\t\t\tPREBINDING = NO;\n\t\t\t\tPRODUCT_NAME = UnitTest;\n\t\t\t\tWRAPPER_EXTENSION = octest;\n\t\t\t\tZERO_LINK = NO;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t790FF0D00ACCE4B8004B4021 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_ENABLE_FIX_AND_CONTINUE = YES;\n\t\t\t\tGCC_ENABLE_OBJC_EXCEPTIONS = YES;\n\t\t\t\tGCC_GENERATE_DEBUGGING_SYMBOLS = YES;\n\t\t\t\tGCC_MODEL_TUNING = G5;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = \"$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h\";\n\t\t\t\tINFOPLIST_FILE = \"KTLog Viewer-Info.plist\";\n\t\t\t\tINSTALL_PATH = \"$(HOME)/Applications\";\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tFoundation,\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tAppKit,\n\t\t\t\t);\n\t\t\t\tPREBINDING = NO;\n\t\t\t\tPRODUCT_NAME = \"KTLog Viewer\";\n\t\t\t\tWRAPPER_EXTENSION = app;\n\t\t\t\tZERO_LINK = YES;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t790FF0D10ACCE4B8004B4021 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tGCC_ENABLE_FIX_AND_CONTINUE = NO;\n\t\t\t\tGCC_ENABLE_OBJC_EXCEPTIONS = YES;\n\t\t\t\tGCC_GENERATE_DEBUGGING_SYMBOLS = NO;\n\t\t\t\tGCC_MODEL_TUNING = G5;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = \"$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h\";\n\t\t\t\tINFOPLIST_FILE = \"KTLog Viewer-Info.plist\";\n\t\t\t\tINSTALL_PATH = \"$(HOME)/Applications\";\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tFoundation,\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tAppKit,\n\t\t\t\t);\n\t\t\t\tPREBINDING = NO;\n\t\t\t\tPRODUCT_NAME = \"KTLog Viewer\";\n\t\t\t\tWRAPPER_EXTENSION = app;\n\t\t\t\tZERO_LINK = NO;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t795FF4F80B0C013300EA9292 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_ENABLE_FIX_AND_CONTINUE = YES;\n\t\t\t\tGCC_GENERATE_DEBUGGING_SYMBOLS = YES;\n\t\t\t\tGCC_MODEL_TUNING = G5;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = \"$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h\";\n\t\t\t\tINFOPLIST_FILE = \"DropletHelper-Info.plist\";\n\t\t\t\tINSTALL_PATH = \"$(HOME)/Applications\";\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tFoundation,\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tAppKit,\n\t\t\t\t);\n\t\t\t\tPREBINDING = NO;\n\t\t\t\tPRODUCT_NAME = DropletHelper;\n\t\t\t\tWRAPPER_EXTENSION = app;\n\t\t\t\tZERO_LINK = NO;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t795FF4F90B0C013300EA9292 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tGCC_ENABLE_FIX_AND_CONTINUE = NO;\n\t\t\t\tGCC_GENERATE_DEBUGGING_SYMBOLS = NO;\n\t\t\t\tGCC_MODEL_TUNING = G5;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = \"$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h\";\n\t\t\t\tINFOPLIST_FILE = \"DropletHelper-Info.plist\";\n\t\t\t\tINSTALL_PATH = \"$(HOME)/Applications\";\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tFoundation,\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tAppKit,\n\t\t\t\t);\n\t\t\t\tPREBINDING = NO;\n\t\t\t\tPRODUCT_NAME = DropletHelper;\n\t\t\t\tWRAPPER_EXTENSION = app;\n\t\t\t\tZERO_LINK = NO;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t7983E6E30B0C4E1E00F5078E /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_ENABLE_FIX_AND_CONTINUE = YES;\n\t\t\t\tGCC_GENERATE_DEBUGGING_SYMBOLS = YES;\n\t\t\t\tGCC_MODEL_TUNING = G5;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = \"$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h\";\n\t\t\t\tINSTALL_PATH = \"$(HOME)/bin\";\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tFoundation,\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tAppKit,\n\t\t\t\t);\n\t\t\t\tPREBINDING = NO;\n\t\t\t\tPRODUCT_NAME = DropletLauncher;\n\t\t\t\tZERO_LINK = YES;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t7983E6E40B0C4E1E00F5078E /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tGCC_ENABLE_FIX_AND_CONTINUE = NO;\n\t\t\t\tGCC_GENERATE_DEBUGGING_SYMBOLS = NO;\n\t\t\t\tGCC_MODEL_TUNING = G5;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = \"$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h\";\n\t\t\t\tINSTALL_PATH = \"$(HOME)/bin\";\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tFoundation,\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tAppKit,\n\t\t\t\t);\n\t\t\t\tPREBINDING = NO;\n\t\t\t\tPRODUCT_NAME = DropletLauncher;\n\t\t\t\tZERO_LINK = NO;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t7983E7F10B0C4F6F00F5078E /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_GENERATE_DEBUGGING_SYMBOLS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tPRODUCT_NAME = \"Build All\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t7983E7F20B0C4F6F00F5078E /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tGCC_ENABLE_FIX_AND_CONTINUE = NO;\n\t\t\t\tGCC_GENERATE_DEBUGGING_SYMBOLS = NO;\n\t\t\t\tPRODUCT_NAME = \"Build All\";\n\t\t\t\tZERO_LINK = NO;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t79A8578D0B9267CA00D9C844 /* Plugin */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tGCC_ENABLE_FIX_AND_CONTINUE = NO;\n\t\t\t\tGCC_GENERATE_DEBUGGING_SYMBOLS = NO;\n\t\t\t\tGCC_MODEL_TUNING = G5;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = \"$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h\";\n\t\t\t\tINSTALL_PATH = \"$(HOME)/bin\";\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tFoundation,\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tAppKit,\n\t\t\t\t);\n\t\t\t\tPREBINDING = NO;\n\t\t\t\tPRODUCT_NAME = DropletLauncher;\n\t\t\t\tZERO_LINK = NO;\n\t\t\t};\n\t\t\tname = Plugin;\n\t\t};\n\t\t79A8578E0B9267CA00D9C844 /* Plugin */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tFRAMEWORK_VERSION = A;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_ENABLE_FIX_AND_CONTINUE = NO;\n\t\t\t\tGCC_ENABLE_OBJC_EXCEPTIONS = YES;\n\t\t\t\tGCC_GENERATE_DEBUGGING_SYMBOLS = NO;\n\t\t\t\tGCC_MODEL_TUNING = G5;\n\t\t\t\tGCC_PFE_FILE_C_DIALECTS = \"objective-c c++ objective-c++\";\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = Connection_Prefix.pch;\n\t\t\t\tINFOPLIST_FILE = \"Framework-Info.plist\";\n\t\t\t\tINSTALL_PATH = \"@loader_path/../Frameworks\";\n\t\t\t\tLIBRARY_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)\",\n\t\t\t\t);\n\t\t\t\tLIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = \"\\\"$(SRCROOT)\\\"\";\n\t\t\t\tOTHER_CFLAGS = \"-falign-loops=16\";\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tFoundation,\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tAppKit,\n\t\t\t\t\t\"-seg1addr\",\n\t\t\t\t\t0xcf200000,\n\t\t\t\t\t\"-header-pad_max_install_names\",\n\t\t\t\t);\n\t\t\t\tPREBINDING = NO;\n\t\t\t\tPRODUCT_NAME = Connection;\n\t\t\t\tZERO_LINK = NO;\n\t\t\t};\n\t\t\tname = Plugin;\n\t\t};\n\t\t79A8578F0B9267CA00D9C844 /* Plugin */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tGCC_ENABLE_FIX_AND_CONTINUE = NO;\n\t\t\t\tGCC_GENERATE_DEBUGGING_SYMBOLS = NO;\n\t\t\t\tGCC_MODEL_TUNING = G5;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = \"$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h\";\n\t\t\t\tINFOPLIST_FILE = \"DropletHelper-Info.plist\";\n\t\t\t\tINSTALL_PATH = \"$(HOME)/Applications\";\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tFoundation,\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tAppKit,\n\t\t\t\t);\n\t\t\t\tPREBINDING = NO;\n\t\t\t\tPRODUCT_NAME = DropletHelper;\n\t\t\t\tWRAPPER_EXTENSION = app;\n\t\t\t\tZERO_LINK = NO;\n\t\t\t};\n\t\t\tname = Plugin;\n\t\t};\n\t\t79A857900B9267CA00D9C844 /* Plugin */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tGCC_ENABLE_FIX_AND_CONTINUE = NO;\n\t\t\t\tGCC_GENERATE_DEBUGGING_SYMBOLS = NO;\n\t\t\t\tPRODUCT_NAME = \"Build All\";\n\t\t\t\tZERO_LINK = NO;\n\t\t\t};\n\t\t\tname = Plugin;\n\t\t};\n\t\t79A857910B9267CA00D9C844 /* Plugin */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tARCHS = (\n\t\t\t\t\tppc,\n\t\t\t\t\ti386,\n\t\t\t\t);\n\t\t\t\tGCC_ENABLE_OBJC_EXCEPTIONS = YES;\n\t\t\t\tGCC_GENERATE_DEBUGGING_SYMBOLS = NO;\n\t\t\t\tGCC_MODEL_TUNING = G5;\n\t\t\t\tINFOPLIST_FILE = Info.plist;\n\t\t\t\tINSTALL_PATH = \"$(HOME)/Applications\";\n\t\t\t\tPRODUCT_NAME = Connection;\n\t\t\t\tWRAPPER_EXTENSION = app;\n\t\t\t\tZERO_LINK = NO;\n\t\t\t};\n\t\t\tname = Plugin;\n\t\t};\n\t\t79A857920B9267CA00D9C844 /* Plugin */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(value)\",\n\t\t\t\t\t\"$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)\",\n\t\t\t\t);\n\t\t\t\tGCC_ENABLE_FIX_AND_CONTINUE = NO;\n\t\t\t\tGCC_ENABLE_OBJC_EXCEPTIONS = YES;\n\t\t\t\tGCC_GENERATE_DEBUGGING_SYMBOLS = NO;\n\t\t\t\tGCC_MODEL_TUNING = G5;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = \"$(SYSTEM_LIBRARY_DIR)/Frameworks/Cocoa.framework/Headers/Cocoa.h\";\n\t\t\t\tINFOPLIST_FILE = \"UnitTest-Info.plist\";\n\t\t\t\tINSTALL_PATH = \"$(USER_LIBRARY_DIR)/Bundles\";\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tCocoa,\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tSenTestingKit,\n\t\t\t\t);\n\t\t\t\tPREBINDING = NO;\n\t\t\t\tPRODUCT_NAME = UnitTest;\n\t\t\t\tWRAPPER_EXTENSION = octest;\n\t\t\t\tZERO_LINK = NO;\n\t\t\t};\n\t\t\tname = Plugin;\n\t\t};\n\t\t79A857930B9267CA00D9C844 /* Plugin */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tGCC_ENABLE_FIX_AND_CONTINUE = NO;\n\t\t\t\tGCC_ENABLE_OBJC_EXCEPTIONS = YES;\n\t\t\t\tGCC_GENERATE_DEBUGGING_SYMBOLS = NO;\n\t\t\t\tGCC_MODEL_TUNING = G5;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = \"$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h\";\n\t\t\t\tINFOPLIST_FILE = \"KTLog Viewer-Info.plist\";\n\t\t\t\tINSTALL_PATH = \"$(HOME)/Applications\";\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tFoundation,\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tAppKit,\n\t\t\t\t);\n\t\t\t\tPREBINDING = NO;\n\t\t\t\tPRODUCT_NAME = \"KTLog Viewer\";\n\t\t\t\tWRAPPER_EXTENSION = app;\n\t\t\t\tZERO_LINK = NO;\n\t\t\t};\n\t\t\tname = Plugin;\n\t\t};\n\t\t79A857940B9267CA00D9C844 /* Plugin */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tARCHS = (\n\t\t\t\t\tppc,\n\t\t\t\t\ti386,\n\t\t\t\t);\n\t\t\t\tGCC_INCREASE_PRECOMPILED_HEADER_SHARING = NO;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tPREBINDING = NO;\n\t\t\t\tSDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;\n\t\t\t};\n\t\t\tname = Plugin;\n\t\t};\n\t\t79CFD12909F702BF00172CDD /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tFRAMEWORK_VERSION = A;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_ENABLE_FIX_AND_CONTINUE = YES;\n\t\t\t\tGCC_ENABLE_OBJC_EXCEPTIONS = YES;\n\t\t\t\tGCC_ENABLE_OBJC_GC = YES;\n\t\t\t\tGCC_GENERATE_DEBUGGING_SYMBOLS = YES;\n\t\t\t\tGCC_MODEL_TUNING = G5;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PFE_FILE_C_DIALECTS = \"objective-c c++ objective-c++\";\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = Connection_Prefix.pch;\n\t\t\t\tINFOPLIST_FILE = \"Framework-Info.plist\";\n\t\t\t\tINSTALL_PATH = \"@executable_path/../Frameworks\";\n\t\t\t\tLIBRARY_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)\",\n\t\t\t\t);\n\t\t\t\tLIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = \"\\\"$(SRCROOT)\\\"\";\n\t\t\t\tOTHER_CFLAGS = \"-falign-loops=16\";\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tFoundation,\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tAppKit,\n\t\t\t\t\t\"-seg1addr\",\n\t\t\t\t\t0xcf200000,\n\t\t\t\t\t\"-header-pad_max_install_names\",\n\t\t\t\t);\n\t\t\t\tPREBINDING = NO;\n\t\t\t\tPRODUCT_NAME = Connection;\n\t\t\t\tZERO_LINK = NO;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t79CFD12A09F702BF00172CDD /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tDEPLOYMENT_POSTPROCESSING = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tFRAMEWORK_VERSION = A;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_ENABLE_FIX_AND_CONTINUE = NO;\n\t\t\t\tGCC_ENABLE_OBJC_EXCEPTIONS = YES;\n\t\t\t\tGCC_ENABLE_OBJC_GC = NO;\n\t\t\t\tGCC_GENERATE_DEBUGGING_SYMBOLS = NO;\n\t\t\t\tGCC_MODEL_TUNING = G5;\n\t\t\t\tGCC_PFE_FILE_C_DIALECTS = \"objective-c c++ objective-c++\";\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = Connection_Prefix.pch;\n\t\t\t\tINFOPLIST_FILE = \"Framework-Info.plist\";\n\t\t\t\tINSTALL_PATH = \"@executable_path/../Frameworks\";\n\t\t\t\tLIBRARY_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)\",\n\t\t\t\t);\n\t\t\t\tLIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = \"\\\"$(SRCROOT)\\\"\";\n\t\t\t\tOTHER_CFLAGS = \"-falign-loops=16\";\n\t\t\t\tOTHER_LDFLAGS = (\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tFoundation,\n\t\t\t\t\t\"-framework\",\n\t\t\t\t\tAppKit,\n\t\t\t\t\t\"-seg1addr\",\n\t\t\t\t\t0xcf200000,\n\t\t\t\t\t\"-header-pad_max_install_names\",\n\t\t\t\t);\n\t\t\t\tPREBINDING = NO;\n\t\t\t\tPRODUCT_NAME = Connection;\n\t\t\t\tZERO_LINK = NO;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tC01FCF4B08A954540054247B /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_ENABLE_FIX_AND_CONTINUE = YES;\n\t\t\t\tGCC_ENABLE_OBJC_EXCEPTIONS = YES;\n\t\t\t\tGCC_MODEL_TUNING = G5;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = \"\";\n\t\t\t\tINFOPLIST_FILE = Info.plist;\n\t\t\t\tINSTALL_PATH = \"$(HOME)/Applications\";\n\t\t\t\tOTHER_LDFLAGS = \"\";\n\t\t\t\tPRODUCT_NAME = Connection;\n\t\t\t\tWRAPPER_EXTENSION = app;\n\t\t\t\tZERO_LINK = NO;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tC01FCF4C08A954540054247B /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tARCHS = (\n\t\t\t\t\tppc,\n\t\t\t\t\ti386,\n\t\t\t\t);\n\t\t\t\tGCC_ENABLE_OBJC_EXCEPTIONS = YES;\n\t\t\t\tGCC_GENERATE_DEBUGGING_SYMBOLS = NO;\n\t\t\t\tGCC_MODEL_TUNING = G5;\n\t\t\t\tINFOPLIST_FILE = Info.plist;\n\t\t\t\tINSTALL_PATH = \"$(HOME)/Applications\";\n\t\t\t\tPRODUCT_NAME = Connection;\n\t\t\t\tWRAPPER_EXTENSION = app;\n\t\t\t\tZERO_LINK = NO;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tC01FCF4F08A954540054247B /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tGCC_INCREASE_PRECOMPILED_HEADER_SHARING = NO;\n\t\t\t\tGCC_TREAT_WARNINGS_AS_ERRORS = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tPREBINDING = NO;\n\t\t\t\tSDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tC01FCF5008A954540054247B /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tARCHS = \"$(ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1)\";\n\t\t\t\tARCHS_STANDARD_32_BIT_PRE_XCODE_3_1 = \"ppc i386\";\n\t\t\t\tGCC_INCREASE_PRECOMPILED_HEADER_SHARING = NO;\n\t\t\t\tGCC_TREAT_WARNINGS_AS_ERRORS = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tPREBINDING = NO;\n\t\t\t\tSDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t09D6602609FD379A0000BA00 /* Build configuration list for PBXNativeTarget \"UnitTest\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t09D6602709FD379A0000BA00 /* Debug */,\n\t\t\t\t09D6602809FD379A0000BA00 /* Release */,\n\t\t\t\t79A857920B9267CA00D9C844 /* Plugin */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t790FF0CF0ACCE4B8004B4021 /* Build configuration list for PBXNativeTarget \"KTLog Viewer\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t790FF0D00ACCE4B8004B4021 /* Debug */,\n\t\t\t\t790FF0D10ACCE4B8004B4021 /* Release */,\n\t\t\t\t79A857930B9267CA00D9C844 /* Plugin */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t795FF4F70B0C013300EA9292 /* Build configuration list for PBXNativeTarget \"DropletHelper\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t795FF4F80B0C013300EA9292 /* Debug */,\n\t\t\t\t795FF4F90B0C013300EA9292 /* Release */,\n\t\t\t\t79A8578F0B9267CA00D9C844 /* Plugin */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t7983E6E20B0C4E1E00F5078E /* Build configuration list for PBXNativeTarget \"DropletLauncher\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t7983E6E30B0C4E1E00F5078E /* Debug */,\n\t\t\t\t7983E6E40B0C4E1E00F5078E /* Release */,\n\t\t\t\t79A8578D0B9267CA00D9C844 /* Plugin */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t7983E7F00B0C4F6F00F5078E /* Build configuration list for PBXAggregateTarget \"Build All\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t7983E7F10B0C4F6F00F5078E /* Debug */,\n\t\t\t\t7983E7F20B0C4F6F00F5078E /* Release */,\n\t\t\t\t79A857900B9267CA00D9C844 /* Plugin */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t79CFD12809F702BF00172CDD /* Build configuration list for PBXNativeTarget \"Framework\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t79CFD12909F702BF00172CDD /* Debug */,\n\t\t\t\t79CFD12A09F702BF00172CDD /* Release */,\n\t\t\t\t79A8578E0B9267CA00D9C844 /* Plugin */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tC01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget \"Connection\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tC01FCF4B08A954540054247B /* Debug */,\n\t\t\t\tC01FCF4C08A954540054247B /* Release */,\n\t\t\t\t79A857910B9267CA00D9C844 /* Plugin */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tC01FCF4E08A954540054247B /* Build configuration list for PBXProject \"ConnectionApp\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tC01FCF4F08A954540054247B /* Debug */,\n\t\t\t\tC01FCF5008A954540054247B /* Release */,\n\t\t\t\t79A857940B9267CA00D9C844 /* Plugin */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = 29B97313FDCFA39411CA2CEA /* Project object */;\n}\n"
  },
  {
    "path": "Example/ConnectionTest.h",
    "content": "//\n//  ConnectionTest.h\n//  Marvel\n//\n//  Created by Dan Wood on 11/29/04.\n//  Copyright (c) 2004 Biophony, LLC. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n\n\n@interface ConnectionTest : NSObject {\n\n\tNSMutableDictionary *myCallbackDictionary;\n\tunsigned long \t\tmyUniqueNumber;\n\t\n\tNSThread\t\t\t*myMainThread;\t// not retained.  Just for diagnostics.\n\n\tNSString *myCurrentDirectory;\n\t\n}\n\n- (NSMutableDictionary *)callbackDictionary;\n- (void)setCallbackDictionary:(NSMutableDictionary *)aCallbackDictionary;\n\n- (NSString *)currentDirectory;\n- (void)setCurrentDirectory:(NSString *)aCurrentDirectory;\n\n\n@end\n"
  },
  {
    "path": "Example/ConnectionTest.m",
    "content": "//\n//  ConnectionTest.m\n//  Marvel\n//\n//  Created by Dan Wood on 11/29/04.\n//  Copyright (c) 2004 Biophony, LLC. All rights reserved.\n//\n\n#import \"ConnectionTest.h\"\n#import \"FTPConnection.h\"\n#import \"FileConnection.h\"\n\n/* AVAILABLE MACROS\n\nUKPass()\t\t\t\t\t\tPass always\nUKFail()\t\t\t\t\t\tFail always\nUKTrue(condition)\t\t\t\tPass if condition is true\nUKFalse(condition)\t\t\t\tPass if condition is false\nUKNil(ref)\t\t\t\t\t\tPass if ref is nil\nUKNotNil(ref)\t\t\t\t\tPass if ref is not nil\nUKIntsEqual(a, b)\t\t\t\tPass if a == b\nUKIntsNotEqual(a, b)\t\t\tPass if a != b\nUKFloatsEqual(a, b, d)\t\t\tPass if a == b\nUKFloatsNotEqual(a, b, d)\t\tPass if a != b\nUKObjectsEqual(a, b)\t\t\tPass if a isEqualTo: b\nUKObjectsNotEqual(a, b)\t\t\tPass if NOT a isEqualTo: b\nUKObjectsSame(a, b)\t\t\t\tPass if a (address) == b (address)\nUKObjectsNotSame(a, b)\t\t\tPass if a (address) != b (address)\nUKStringsEqual(a, b)\t\t\tPass if a isEqualToString: b\nUKStringsNotEqual(a, b)\t\t\tPass if a NOT isEqualToString: b\nUKStringContains(a, b)\t\t\tPass if a contains b\nUKStringDoesNotContain(a, b)\tPass if a does NOT contain b\nUKRaisesException(exp)\t\t\tPass if exp raises an exception\nUKDoesNotRaiseException(exp)\tPass if exp does NOT raise an exception\nUKRaisesExceptionNamed(exp, b)\tPass if exp raises an exception named b\t\nUKRaisesExceptionClass(exp, b)\tPass if exp does NOT raise an exception named b\n\n*/\n\n@implementation ConnectionTest\n\n- (id)init\n{\n\tif (self = [super init])\n\t{\n\t\tmyUniqueNumber = (unsigned long) [NSDate timeIntervalSinceReferenceDate];\n\t\t[self setCallbackDictionary:[NSMutableDictionary dictionary]];\n\t}\n\treturn self;\n}\n\n- (void)dealloc\n{\n\t[self setCallbackDictionary:nil];\n\t[super dealloc];\n}\n\n\n- (NSString *)currentDirectory\n{\n    return myCurrentDirectory; \n}\n- (void)setCurrentDirectory:(NSString *)aCurrentDirectory\n{\n    [aCurrentDirectory retain];\n    [myCurrentDirectory release];\n    myCurrentDirectory = aCurrentDirectory;\n}\n\n\n/*\n \n For all the connection methods, run a standard suite of tests.  Test the following methods:\n \n (Need to hook up a delegate to self, somehow put it into a state of what is expected, so we'll know if it's called.  If we expect it to be called and it's not, we can have it set an ivar and we'll check.)\n \n What will be tricky will be that this is async.  We may need to queue up a bunch of operations, and then wait somehow until they have completed.  Maybe make a runloop?\n \n \n Making connection\n \n changing to directory (good/bad)\n getting directory (as expected?)\n making directory (good/bad)\n making directory with certain permissions\n setting permissions (try a couple of times to make sure they actually change)  (success/fail)\n rename\n delete\n delete directory\n upload file (some known file, like /etc/hosts, or make a new /tmp file with UUID)\n\t.... to directory\n resume upload file at offset (supported for all?)\n download file\n resumeDownload file\n cancel transfer\n get directory contents\n \n */\n#pragma mark -\n#pragma mark Callbacks\n\n/*!\tThese callbacks work by adding their method name to the dictionary so we can tell what has been run.\n\tTemporarily scrunched to one line per method, to make it easy to count and sort.\n\n*/\n\n- (void)connection:(id <AbstractConnectionProtocol>)con didChangeToDirectory:(NSString *)dirPath { [self setCurrentDirectory:dirPath]; NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:dirPath forKey:NSStringFromSelector(_cmd)]; }\n- (void)connection:(id <AbstractConnectionProtocol>)con didConnectToHost:(NSString *)host { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:host forKey:NSStringFromSelector(_cmd)]; }\n- (void)connection:(id <AbstractConnectionProtocol>)con didCreateDirectory:(NSString *)dirPath { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:dirPath forKey:NSStringFromSelector(_cmd)]; }\n- (void)connection:(id <AbstractConnectionProtocol>)con didDeleteDirectory:(NSString *)dirPath { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:dirPath forKey:NSStringFromSelector(_cmd)]; }\n- (void)connection:(id <AbstractConnectionProtocol>)con didDeleteFile:(NSString *)path { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:path forKey:NSStringFromSelector(_cmd)]; }\n- (void)connection:(id <AbstractConnectionProtocol>)con didDisconnectFromHost:(NSString *)host { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:host forKey:NSStringFromSelector(_cmd)]; }\n- (void)connection:(id <AbstractConnectionProtocol>)con didReceiveContents:(NSArray *)contents ofDirectory:(NSString *)dirPath { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:contents forKey:NSStringFromSelector(_cmd)]; }\n- (void)connection:(id <AbstractConnectionProtocol>)con didReceiveError:(NSError *)error { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:error forKey:NSStringFromSelector(_cmd)]; }\n- (void)connection:(id <AbstractConnectionProtocol>)con didRename:(NSString *)fromPath to:(NSString *)toPath { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:[NSString stringWithFormat:@\"%@ -> %@\",fromPath,toPath]  forKey:NSStringFromSelector(_cmd)]; }\n- (void)connection:(id <AbstractConnectionProtocol>)con didSetPermissionsForFile:(NSString *)path { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:path forKey:NSStringFromSelector(_cmd)]; }\n- (void)connection:(id <AbstractConnectionProtocol>)con download:(NSString *)path progressedTo:(NSNumber *)percent { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:[NSString stringWithFormat:@\"%@: %@%%\",path,percent]  forKey:NSStringFromSelector(_cmd)]; }\n- (void)connection:(id <AbstractConnectionProtocol>)con download:(NSString *)path receivedDataOfLength:(int)length { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:[NSString stringWithFormat:@\"%@: %d bytes\",path,length]  forKey:NSStringFromSelector(_cmd)]; }\n- (void)connection:(id <AbstractConnectionProtocol>)con downloadDidBegin:(NSString *)remotePath { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:remotePath forKey:NSStringFromSelector(_cmd)]; }\n- (void)connection:(id <AbstractConnectionProtocol>)con downloadDidFinish:(NSString *)remotePath { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:remotePath forKey:NSStringFromSelector(_cmd)]; }\n- (NSString *)connection:(id <AbstractConnectionProtocol>)con needsAccountForUsername:(NSString *)username { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:username forKey:NSStringFromSelector(_cmd)]; return @\"foo\"; }\n- (void)connection:(id <AbstractConnectionProtocol>)con upload:(NSString *)remotePath progressedTo:(NSNumber *)percent { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:[NSString stringWithFormat:@\"%@: %@%%\",remotePath,percent]  forKey:NSStringFromSelector(_cmd)]; }\n- (void)connection:(id <AbstractConnectionProtocol>)con upload:(NSString *)remotePath sentDataOfLength:(int)length { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:[NSString stringWithFormat:@\"%@: %d bytes\",remotePath,length]  forKey:NSStringFromSelector(_cmd)]; }\n- (void)connection:(id <AbstractConnectionProtocol>)con uploadDidBegin:(NSString *)remotePath { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:remotePath forKey:NSStringFromSelector(_cmd)]; }\n- (void)connection:(id <AbstractConnectionProtocol>)con uploadDidFinish:(NSString *)remotePath { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:remotePath forKey:NSStringFromSelector(_cmd)]; }\n- (void)connectionDidCancelTransfer:(id <AbstractConnectionProtocol>)con { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:[NSNumber numberWithBool:YES] forKey:NSStringFromSelector(_cmd)]; }\n- (void)connectionDidSendBadPassword:(id <AbstractConnectionProtocol>)con { NSLog(@\"========= CALLBACK: %@\", NSStringFromSelector(_cmd)); [myCallbackDictionary setObject:[NSNumber numberWithBool:YES] forKey:NSStringFromSelector(_cmd)]; }\n\n\n\n#pragma mark -\n#pragma mark Main Test Suite\n\n\n/*!\tDo a full test suite\n*/\n- (void)runTestSuiteWithConnection:(id <AbstractConnectionProtocol>)aConn expectingFailure:(BOOL) inExpectConnectionFailure\n{\n\t\n\t[aConn setDelegate:self];\n\t\n\tBOOL done = NO;\n\tNSString *initialDirectory = nil;\n\n\tNSDate *dropDeadDate = [NSDate dateWithTimeIntervalSinceNow:120.0];\n\n\t[aConn connect];\n\n\twhile (!done && NSOrderedAscending == [((NSDate *)[NSDate date]) compare:(NSDate *)dropDeadDate])\n\t{\n\t\tif ([((NSObject *)aConn) isKindOfClass:[FTPConnection class]])\n\t\t{\n\t\t\tNSLog(@\"========= TEST: top of loop, state = %d, queue= %@\", [((FTPConnection *)aConn) state], [((FTPConnection *)aConn) queueDescription]);\n\t\t}\n\t\t\n\t\tif (0 == [myCallbackDictionary count])\t// We don't have any callbacks from the previous iteration\n\t\t{\n\t\t\tNSLog(@\"========= TEST: will run NSRunLoop\");\n\t\t\tBOOL found = [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:30.0]];\n\t\t\t//[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:20.0]];\n\t\t\t//[[NSRunLoop currentRunLoop] run];\n\t\t\tNSLog(@\"========= TEST: did  run NSRunLoop, found = %d dict = %@\", found, [[myCallbackDictionary allKeys] description]);\n\t\t\tif (!found)\n\t\t\t{\n\t\t\t\tdone = true;\t\t// nothing found after waiting this long, so we're done.\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tid value;\n\t\tNSDictionary *lastCallbackDictionary = [[myCallbackDictionary copy] autorelease];\n\t\t[myCallbackDictionary removeAllObjects];\t// clean out the original dict for the next pass\n\t\t\n\t\tif (nil != (value = [lastCallbackDictionary objectForKey:@\"connection:didReceiveError:\"]) )\n\t\t{\n\t\t\tNSLog(@\"========= TEST: Error message: %@\", value);\n\t\t\tUKTrue (inExpectConnectionFailure);\t// pass if we did expect an error!\n\t\t\tdone = YES;\t// we're done anyhow.\n\t\t}\n\t\telse if (nil != (value = [lastCallbackDictionary objectForKey:@\"connectionDidSendBadPassword:\"]) )\n\t\t{\n\t\t\tUKTrue (inExpectConnectionFailure);\t// pass if we did expect an error!\n\t\t\tdone = YES;\t// we're done anyhow.\n\t\t}\n\t\telse if (nil != (value = [lastCallbackDictionary objectForKey:@\"connection:didConnectToHost:\"]) )\n\t\t{\n\t\t\tNSLog(@\"========= TEST: Connected to host: %@\", value);\n\t\t\tUKFalse (inExpectConnectionFailure);\t// pass if we did not expect an error\n\t\t\t\n\t\t\t// NEXT TASK: MAKE A NEW DIRECTORY\n\t\t\t[aConn createDirectory:[NSString stringWithFormat:@\"d%ld\", myUniqueNumber]];\n\t\t}\n\t\telse if (nil != (value = [lastCallbackDictionary objectForKey:@\"connection:didCreateDirectory:\"]) )\n\t\t{\n\t\t\tNSLog(@\"========= TEST: Created directory called %@\", [NSString stringWithFormat:@\"d%ld\", myUniqueNumber]);\n\t\t\tUKPass(); // Got our directory\n\t\t\t\n\t\t\t// NEXT TASK: Get the contents of the current directory\n\t\t\t[aConn directoryContents];\n\t\t}\n\t\telse if (nil != (value = [lastCallbackDictionary objectForKey:@\"connection:didReceiveContents:ofDirectory:\"]) )\n\t\t{\n\t\t\tNSLog(@\"========= TEST: Got directory contents %@\", [value description]);\n\t\t\tUKPass(); // Got our directory ... REALY OUGHT TO VERIFY THAT OUR FILE IS IN THERE.\n\t\t\t\n\t\t\t// NEXT TASK: Change to that new directory\n\t\t\t[aConn changeToDirectory:[NSString stringWithFormat:@\"d%ld\", myUniqueNumber]];\n\t\t}\n\t\telse if (nil != (value = [lastCallbackDictionary objectForKey:@\"connection:didChangeToDirectory:\"]) )\n\t\t{\n\t\t\tif (nil == initialDirectory)\n\t\t\t{\n\t\t\t\tinitialDirectory = [self currentDirectory];\t// this will depend on what connection we have\n\t\t\t\tUKPass(); // Got our directory ... REALY OUGHT TO VERIFY THAT OUR FILE IS IN THERE.\n\t\t\t}\n\t\t\telse\t// second change; make sure we are within initial directory\n\t\t\t{\n\t\t\t\tNSString *expectedNewDirectory = [initialDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@\"d%ld\", myUniqueNumber]];\n\t\t\t\tUKStringsEqual([self currentDirectory], expectedNewDirectory);\n\t\t\t}\n\n\t\t\tNSLog(@\"========= TEST: Changed to directory %@\", [value description]);\n\t\t\t\t\t\t\n\t\t\t// NEXT TASK: Upload a file\n\t\t\t[aConn uploadFile:@\"/etc/hosts\"];\n\t\t}\n\t\telse if (nil != (value = [lastCallbackDictionary objectForKey:@\"connection:uploadDidFinish:\"]) )\n\t\t{\n\t\t\t\n\t\t\t\n\t\t\tNSLog(@\"========= TEST: Done uploading  %@\", [value description]);\n\t\t\tUKPass(); // Got our directory ... REALY OUGHT TO VERIFY THAT OUR FILE IS IN THERE.\n\t\t\t\n\t\t\tdone = YES;\t\t// done for now ... we don't have any more tests.\n\t\t\t\n\t\t}\n\t\t\n\n\t\t\t\n\t\t\t\n\t\t\n\t\t\t\t/*\n\t\t\t\t changing to directory (good/bad)\n\t\t\t\t getting directory (as expected?)\n\t\t\t\t making directory (good/bad)\n\t\t\t\t making directory with certain permissions\n\t\t\t\t setting permissions (try a couple of times to make sure they actually change)  (success/fail)\n\t\t\t\t rename\n\t\t\t\t delete\n\t\t\t\t delete directory\n\t\t\t\t upload file (some known file, like /etc/hosts, or make a new /tmp file with UUID)\n\t\t\t\t .... to directory\n\t\t\t\t resume upload file at offset (supported for all?)\n\t\t\t\t download file\n\t\t\t\t resumeDownload file\n\t\t\t\t cancel transfer\n\t\t\t\t get directory contents\n*/\n\n\t}\n\t\n\t[aConn disconnect];\n\tNSLog(@\"========= TEST: Disconnected.\");\n\t \n\tif (! (NSOrderedAscending == [((NSDate *)[NSDate date]) compare:dropDeadDate]) )\n\t{\n\t\tUKFail();\t// Ran out of time!\n\t}\n}\n\n#pragma mark -\n#pragma mark File tests\n\n/*!\tTest a file connection.  Since there is no connection, we can't test for a bad file connection\n*/\n\n\n- (void)testFileConnection\n{\n\tFileConnection *fc = [FileConnection connection];\n\t\n\t[self runTestSuiteWithConnection:fc expectingFailure:NO];\n}\n\n\n#pragma mark -\n#pragma mark FTP tests\n\n\n\n- (void)testRealFTPConnection\n{\n\tNSDictionary *environment = [[NSProcessInfo processInfo] environment];\n\tNSString *password = [environment objectForKey:@\"biophonyTestPassword\"];\n\t\t\n\tFTPConnection *c = [FTPConnection connectionToHost:@\"test.biophony.com\" port:nil username:@\"test\" password:password];\n\t\n\t[self runTestSuiteWithConnection:c expectingFailure:NO];\n}\n\n\n- (void) testQuotesScan\n{\n\tFTPConnection *c = [FTPConnection connectionToHost:@\"bogus\" port:nil username:@\"test\" password:@\"nothing\"];\n\t\n\tUKNil([c scanBetweenQuotes:@\"hey there we're the monkeys\"]);\n\tUKNil([c scanBetweenQuotes:@\"This has one \\\" quote mark\"]);\n\tUKStringsEqual([c scanBetweenQuotes:@\"empty \\\"\\\" quoted string\"], @\"\");\n\tUKStringsEqual([c scanBetweenQuotes:@\"257 \\\"/somethingee\\\" created\"], @\"/somethingee\");\n\tUKStringsEqual([c scanBetweenQuotes:@\"257 \\\"/he said \\\"\\\"yo\\\"\\\" to me\\\" created\"], @\"/he said \\\"yo\\\" to me\");\n}\n\n/*\n \n- (void)testBadAccountFTPConnection\n{\n\tFTPConnection *c = [FTPConnection connectionToHost:@\"test.biophony.com\" port:nil username:@\"somebodyelse\" password:@\"mypassword\"];\n\t\n\t[self runTestSuiteWithConnection:c expectingFailure:YES];\n}\n\n- (void)testConnectionRefusedFTPConnection\n{\n\tFTPConnection *c = [FTPConnection connectionToHost:@\"vorlon.karelia.com\" port:nil username:@\"somebodyelse\" password:@\"mypassword\"];\n\t\n\t[self runTestSuiteWithConnection:c expectingFailure:YES];\n}\n\n- (void)testHangingFTPConnection\n{\n\tFTPConnection *c = [FTPConnection connectionToHost:@\"ftp.zocalo.net\" port:nil username:@\"somebodyelse\" password:@\"mypassword\"];\n\t\n\t[self runTestSuiteWithConnection:c expectingFailure:YES];\n}\n\n- (void)testNoHostFTPConnection\n{\n\tFTPConnection *c = [FTPConnection connectionToHost:@\"fdjskalrejwfje.com\" port:nil username:@\"somebodyelse\" password:@\"mypassword\"];\n\t\n\t[self runTestSuiteWithConnection:c expectingFailure:YES];\n}\n*/\n\n#pragma mark -\n#pragma mark Private Support\n\n\n- (NSMutableDictionary *)callbackDictionary\n{\n    return myCallbackDictionary; \n}\n- (void)setCallbackDictionary:(NSMutableDictionary *)aCallbackDictionary\n{\n    [aCallbackDictionary retain];\n    [myCallbackDictionary release];\n    myCallbackDictionary = aCallbackDictionary;\n}\n\n\n\n@end\n"
  },
  {
    "path": "Example/Connection_Prefix.pch",
    "content": "// For Mac OS X < 10.5.\n#ifndef NSINTEGER_DEFINED\n#define NSINTEGER_DEFINED\n#ifdef __LP64__ || NS_BUILD_32_LIKE_64\ntypedef long           NSInteger;\ntypedef unsigned long  NSUInteger;\n#define NSIntegerMin   LONG_MIN\n#define NSIntegerMax   LONG_MAX\n#define NSUIntegerMax  ULONG_MAX\n#else\ntypedef int            NSInteger;\ntypedef unsigned int   NSUInteger;\n#define NSIntegerMin   INT_MIN\n#define NSIntegerMax   INT_MAX\n#define NSUIntegerMax  UINT_MAX\n#endif\n#endif // NSINTEGER_DEFINED\n\n\n#import \"KTLog.h\""
  },
  {
    "path": "Example/Controller.h",
    "content": "/* Controller */\n\n#import <Cocoa/Cocoa.h>\n\n@class InputDialog;\n@protocol AbstractConnectionProtocol;\n\n@interface Controller : NSObject\n{\n    IBOutlet NSButton *btnConnect;\n    IBOutlet NSButton *btnDelete;\n    IBOutlet NSButton *btnNewFolder;\n    IBOutlet NSButton *btnPermissions;\n    IBOutlet NSButton *btnRefresh;\n    IBOutlet NSButton *btnStop;\n    IBOutlet NSButton *cBtnCancel;\n    IBOutlet NSButton *cBtnConnect;\n    IBOutlet NSTextField *cHost;\n    IBOutlet NSPanel *connectWindow;\n    IBOutlet NSTextField *cPass;\n    IBOutlet NSTextField *cPort;\n    IBOutlet NSPopUpButton *cTypePopup;\n    IBOutlet NSTextField *cURL;\n    IBOutlet NSTextField *cUser;\n    IBOutlet NSPopUpButton *localPopup;\n    IBOutlet NSTableView *localTable;\n    IBOutlet NSPopUpButton *remotePopup;\n    IBOutlet NSTableView *remoteTable;\n    IBOutlet NSTextField *status;\n    IBOutlet NSTableView *transferTable;\n    IBOutlet NSWindow *window;\n\tIBOutlet NSDrawer *logDrawer;\n\tIBOutlet NSTextView *log;\n\tIBOutlet NSOutlineView *savedHosts;\n\tIBOutlet NSButton *btnDisconnect;\n\tIBOutlet NSTextField *initialDirectory;\n\tIBOutlet NSTextView *fileCheckLog;\n\tIBOutlet NSButton *btnBrowseHost;\n\tIBOutlet NSButton *btnEdit;\n\tIBOutlet NSPopUpButton *oConMenu;\n\t\n\tid <AbstractConnectionProtocol> con;\n\tNSMutableArray *remoteFiles;\n\tNSMutableArray *localFiles;\n\tNSMutableArray *transfers;\n\tNSString *currentLocalPath;\n\tNSString *currentRemotePath;\n\t\n\tint downloadCounter;\n\tint uploadCounter;\n\tBOOL isConnected;\n\t\n\tNSMutableArray *_savedHosts;\n\tid selectedItem;\n\tInputDialog *check;\n}\n- (IBAction)cancelConnect:(id)sender;\n- (IBAction)connect:(id)sender;\n- (IBAction)deleteFile:(id)sender;\n- (IBAction)localFileSelected:(id)sender;\n- (IBAction)localPopupChanged:(id)sender;\n- (IBAction)newFolder:(id)sender;\n- (IBAction)permissions:(id)sender;\n- (IBAction)refresh:(id)sender;\n- (IBAction)remoteFileSelected:(id)sender;\n- (IBAction)remotePopupChanged:(id)sender;\n- (IBAction)showConnect:(id)sender;\n- (IBAction)stopTransfer:(id)sender;\n- (IBAction)transferSelected:(id)sender;\n@end\n"
  },
  {
    "path": "Example/Controller.m",
    "content": "#import \"Controller.h\"\n#import \"ProgressCell.h\"\n#import \"InputDialog.h\"\n#import \"PermissionsController.h\"\n#import \"FileTransfer.h\"\n#import <Connection/Connection.h>\n\nstatic NSString *AutoSelect = @\"Auto Select\";\n\nNSString *TransferTypeKey = @\"Type\";\nNSString *TransferLocalFileKey = @\"LocalFile\";\nNSString *TransferRemoteFileKey = @\"RemoteFile\";\nNSString *TransferControllerKey = @\"Controller\";\nNSString *TransferProgressKey = @\"Progress\";\n\nint TransferTypeDown = 0;\nint TransferTypeUp = 1;\n\nNSString *cxRemoteFilePBoardType = @\"cxRemoteFilePBoardType\";\nNSString *cxLocalFilePBoardType = @\"cxLocalFilePBoardType\";\n\n\n//Storing to NSUser Defaults\nNSString *HostsKey = @\"Hosts\";\nNSString *HostKey = @\"Host\";\nNSString *PortKey = @\"Port\";\nNSString *UsernameKey = @\"Username\";\nNSString *ConnectionTypeKey = @\"Connection\";\nNSString *URLKey = @\"URL\";\nNSString *InitialDirectoryKey = @\"InitialDirectory\";\nNSString *ProtocolKey = @\"Protocol\";\n\n@interface Controller(PRivate)\n- (void)refreshLocal;\n- (void)refreshHosts;\n- (void)downloadFile:(NSString *)remote toFolder:(NSString *)local;\n- (void)uploadFile:(NSString *)local to:(NSString *)remote;\n@end\n@interface NSString (FileSizeFormatting)\n\n+ (NSString *)formattedFileSizeWithBytes:(NSNumber *)filesize;\n@end\n\n@implementation NSString (FileSizeFormatting)\n\n+ (NSString *)formattedFileSizeWithBytes:(NSNumber *)filesize\n{\n\tstatic NSString *suffix[] = {\n\t\t@\"B\", @\"KB\", @\"MB\", @\"GB\", @\"TB\", @\"PB\", @\"EB\"\n\t};\n\tint i, c = 7;\n\tlong size = [filesize longValue];\n\t\n\tfor (i = 0; i < c && size >= 1024; i++) {\n\t\tsize = size / 1024;\n\t}\n\treturn [NSString stringWithFormat:@\"%ld %@\", size, suffix[i]];\n}\n\n@end\n\n@implementation Controller\n\n- (void)awakeFromNib\n{\n\tNSUserDefaults *ud = [NSUserDefaults standardUserDefaults];\n\tNSString *savedWindowRect = [ud objectForKey:[window frameAutosaveName]];\n\tif (savedWindowRect)\n\t\t[window setFrame:NSRectFromString(savedWindowRect) display:YES];\n\tBOOL showLog = [ud boolForKey:@\"showLog\"];\n\tif (showLog) {\n\t\t[logDrawer open:self];\n\t}\n\t\n\tremoteFiles = [[NSMutableArray array] retain];\n\tlocalFiles = [[NSMutableArray array] retain];\n\ttransfers = [[NSMutableArray array] retain];\n\t\n\tNSArray *conTypes = [AbstractConnection registeredConnectionTypes];\n\t[cTypePopup removeAllItems];\n\t[cTypePopup addItemWithTitle:AutoSelect];\n\t[[cTypePopup menu] addItem:[NSMenuItem separatorItem]];\n\t[cTypePopup addItemsWithTitles:conTypes];\n\t\n\t[localTable setDataSource:self];\n\t[remoteTable setDataSource:self];\n\t[transferTable setDataSource:self];\n\t\n\tCKTransferProgressCell *cell = [[CKTransferProgressCell alloc] init];\n\t[[transferTable tableColumnWithIdentifier:@\"progress\"] setDataCell:cell];\n\t[cell release];\n\t\n\tcurrentLocalPath = [[NSString stringWithFormat:@\"%@\", NSHomeDirectory()] copy];\n\t[self refreshLocal];\n\t[remotePopup removeAllItems];\n\t\n\t[remoteTable setDoubleAction:@selector(remoteDoubleClick:)];\n\t[localTable setDoubleAction:@selector(localDoubleClick:)];\n\t\n\t//drag and drop\n\t[localTable registerForDraggedTypes:[NSArray arrayWithObject:cxRemoteFilePBoardType]]; //\n\t[remoteTable registerForDraggedTypes:[NSArray arrayWithObjects:cxLocalFilePBoardType, NSFilenamesPboardType, nil]]; //\n\t\n\t[remoteTable setHidden:YES];\n\t\n\t[cUser setStringValue:NSUserName()];\n\t\n\t//Get saved hosts\n\t_savedHosts = [[NSMutableArray array] retain];\n\t\n\t[_savedHosts addObject:[[[CKBonjourCategory alloc] init] autorelease]];\n\t\n\tid hosts = [ud objectForKey:HostsKey];\n\tif (hosts)\n\t{\n\t\tif ([hosts isKindOfClass:[NSArray class]])\n\t\t{\n\t\t\tCKHostCategory *cat = [[CKHostCategory alloc] initWithName:NSLocalizedString(@\"Saved Hosts\", @\"category name\")];\n\t\t\tNSEnumerator *e = [hosts objectEnumerator];\n\t\t\tNSDictionary *cur;\n\t\t\tCKHost *h;\n\t\t\t\n\t\t\twhile ((cur = [e nextObject]))\n\t\t\t{\n\t\t\t\th = [[CKHost alloc] init];\n\t\t\t\t[h setHost:[cur objectForKey:HostKey]];\n\t\t\t\t[h setPort:[cur objectForKey:PortKey]];\n\t\t\t\t[h setUsername:[cur objectForKey:UsernameKey]];\n\t\t\t\t[h setInitialPath:[cur objectForKey:InitialDirectoryKey]];\n\t\t\t\tif ([cur objectForKey:URLKey] && ![[cur objectForKey:URLKey] isEqualToString:@\"\"])\n\t\t\t\t{\n\t\t\t\t\t[h setURL:[NSURL URLWithString:[cur objectForKey:URLKey]]];\n\t\t\t\t}\n\t\t\t\t[h setConnectionType:[cur objectForKey:ProtocolKey]];\n\t\t\t\t[cat addHost:h];\n\t\t\t\t[h release];\n\t\t\t}\n\t\t\t[[ConnectionRegistry sharedRegistry] addCategory:cat];\n\t\t\t[_savedHosts addObject:cat];\n\t\t\t[cat release];\n\t\t}\n\t}\n\t[ud removeObjectForKey:HostsKey];\n\t[savedHosts setDataSource:[ConnectionRegistry sharedRegistry]];\n\t[savedHosts setDelegate:self];\n\t\n\t\n\tCKHostCell *acell = [[CKHostCell alloc] initImageCell:nil];\n\t[[[savedHosts tableColumns] objectAtIndex:0] setDataCell:acell];\n\t[acell release];\n\t\n\t[self refreshHosts];\n\t\n\tNSEnumerator *e = [[[ConnectionRegistry sharedRegistry] connections] objectEnumerator];\n\tid cur;\n\t\n\twhile ((cur = [e nextObject]))\n\t{\n\t\tif ([cur isKindOfClass:[CKHostCategory class]])\n\t\t{\n\t\t\t[savedHosts expandItem:cur];\n\t\t}\n\t}\n\t\n\t//have a timer to remove completed transfers\n\t[NSTimer scheduledTimerWithTimeInterval:10\n\t\t\t\t\t\t\t\t\t target:self\n\t\t\t\t\t\t\t\t   selector:@selector(cleanTransferTable:)\n\t\t\t\t\t\t\t\t   userInfo:nil\n\t\t\t\t\t\t\t\t\trepeats:YES];\n\t\n\t[[NSNotificationCenter defaultCenter] addObserver:self \n\t\t\t\t\t\t\t\t\t\t\t selector:@selector(registryChanged:) \n\t\t\t\t\t\t\t\t\t\t\t\t name:CKRegistryChangedNotification \n\t\t\t\t\t\t\t\t\t\t\t   object:nil];\n\t\n\t[oConMenu setMenu:[[ConnectionRegistry sharedRegistry] menu]];\n\t//[self runAutomatedScript];\n\t\n\t[[ConnectionRegistry sharedRegistry] handleFilterableOutlineView:savedHosts];\n}\n\n- (void)hostnameChanged:(id)sender\n{\n\t[[savedHosts itemAtRow:[savedHosts selectedRow]] setHost:[sender stringValue]];\n}\n\n- (void)portChanged:(id)sender\n{\n\t[[savedHosts itemAtRow:[savedHosts selectedRow]] setPort:[sender stringValue]];\n}\n\n- (void)usernameChanged:(id)sender\n{\n\t[[savedHosts itemAtRow:[savedHosts selectedRow]] setUsername:[sender stringValue]];\n}\n\n- (void)passwordChanged:(id)sender\n{\n\t[[savedHosts itemAtRow:[savedHosts selectedRow]] setPassword:[sender stringValue]];\n}\n\n- (void)initialDirectoryChanged:(id)sender\n{\n\t[[savedHosts itemAtRow:[savedHosts selectedRow]] setInitialPath:[sender stringValue]];\n}\n\n- (void)urlChanged:(id)sender\n{\n\t[[savedHosts itemAtRow:[savedHosts selectedRow]] setURL:[NSURL URLWithString:[sender stringValue]]];\n}\n\n- (void)registryChanged:(NSNotification *)n\n{\n\t[savedHosts reloadData];\n\t[oConMenu setMenu:[[ConnectionRegistry sharedRegistry] menu]];\n}\n\n- (void)newCategory:(id)sender\n{\n\tid parent = [savedHosts itemAtRow:[savedHosts selectedRow]];\n\tif ([parent isKindOfClass:[CKHost class]])\n\t{\n\t\tparent = [parent category];\n\t}\n\n\tCKHostCategory *cat = [[CKHostCategory alloc] initWithName:NSLocalizedString(@\"New Category\", @\"new cat name\")];\n\tif (parent)\n\t{\n\t\t[parent addChildCategory:cat];\n\t}\n\telse\n\t{\n\t\t[[ConnectionRegistry sharedRegistry] addCategory:cat];\n\t}\n\t[cat release];\n}\n\n- (void)newHost:(id)sender\n{\n\tid parent = [savedHosts itemAtRow:[savedHosts selectedRow]];\n\tif ([parent isKindOfClass:[CKHost class]])\n\t{\n\t\tparent = [parent category];\n\t}\n\t\n\tCKHost *h = [[CKHost alloc] init];\n\tif (parent)\n\t{\n\t\t[parent addHost:h];\n\t}\n\telse\n\t{\n\t\t[[ConnectionRegistry sharedRegistry] addHost:h];\n\t}\n\t[h release];\n}\n\n- (void)checkForFile:(id)sender\n{\n\tif (!check)\n\t{\n\t\tcheck = [[InputDialog alloc] init];\n\t\t[check setDialogTitle:@\"Find File\"];\n\t}\n\t[check beginSheetModalForWindow:window delegate:self selector:@selector(fileCheck:receivedValue:)];\n}\n\n- (void)fileCheck:(InputDialog *)input receivedValue:(NSString *)val\n{\n\tif (val)\n\t{\n\t\t[con checkExistenceOfPath:val];\n\t}\n}\n\n- (void)connectionTypeChanged:(id)sender\n{\n\t[[savedHosts itemAtRow:[savedHosts selectedRow]] setConnectionType:[sender titleOfSelectedItem]];\n}\n\n- (void)cleanTransferTable:(NSTimer *)timer\n{\n//\tNSMutableArray *completed = [NSMutableArray array];\n//\tNSEnumerator *e = [transfers objectEnumerator];\n//\tCKTransferRecord *cur;\n//\t\n//\twhile (cur = [e nextObject]) {\n//\t\tif ([cur isCompleted]) \n//\t\t\t[completed addObject:cur];\n//\t}\n//\t[transfers removeObjectsInArray:completed];\n//\t[transferTable reloadData];\n}\n\n- (void)disconnect:(id)sender\n{\n\t[con disconnect];\n}\n\n- (void)refreshHosts\n{\n\t[savedHosts reloadData];\n}\n\n- (void)savedHostsChanged:(id)sender\n{\n\tid selected = [savedHosts itemAtRow:[savedHosts selectedRow]];\n\t\n\tif ([selected isKindOfClass:[CKHost class]])\n\t{\n\t\tCKHost *host = selected;\n\t\t\t\t\n\t\t[cHost setStringValue:[host host]];\n\t\t[cUser setStringValue:[host username]];\n\t\t[cPort setStringValue:[host port]];\n\t\tif ([host initialPath])\n\t\t\t[initialDirectory setStringValue:[host initialPath]];\n\t\telse\n\t\t\t[initialDirectory setStringValue:@\"\"];\n\t\t\n\t\tif ([host connectionType])\n\t\t\t[cTypePopup selectItemWithTitle:[host connectionType]];\n\t\t\n\t\tNSString *pass = [host password];\n\t\tif (pass)\n\t\t\t[cPass setStringValue:pass];\n\t\telse\n\t\t\t[cPass setStringValue:@\"\"];\n\t\t\n\t\t[connectWindow makeFirstResponder:cPass];\n\t}\n\t\n}\n\n- (IBAction)cancelConnect:(id)sender\n{\n\t[connectWindow orderOut:self];\n\t[NSApp endSheet:connectWindow];\n}\n\n- (IBAction)connect:(id)sender\n{\n\tNSError *err = nil;\n\tif ([[cTypePopup titleOfSelectedItem] isEqualToString:AutoSelect])\n\t{\n\t\tif ([[cURL stringValue] length] > 0)\n\t\t\tcon = [[AbstractConnection connectionWithURL:[NSURL URLWithString:[cURL stringValue]] error:&err] retain];\n\t\telse\n\t\t\tcon = [[AbstractConnection connectionToHost:[cHost stringValue]\n\t\t\t\t\t\t\t\t\t\t\t\t   port:[cPort stringValue]\n\t\t\t\t\t\t\t\t\t\t\t   username:[cUser stringValue]\n\t\t\t\t\t\t\t\t\t\t\t   password:[cPass stringValue]\n\t\t\t\t\t\t\t\t\t\t\t\t  error:&err] retain];\n\t}\n\telse\n\t{\n\t\tcon = [[AbstractConnection connectionWithName:[cTypePopup titleOfSelectedItem]\n\t\t\t\t\t\t\t\t\t\t\t\t host:[cHost stringValue]\n\t\t\t\t\t\t\t\t\t\t\t\t port:[cPort stringValue]\n\t\t\t\t\t\t\t\t\t\t\t username:[cUser stringValue]\n\t\t\t\t\t\t\t\t\t\t\t password:[cPass stringValue]\n\t\t\t\t\t\t\t\t\t\t\t\terror:&err] retain];\n\t}\n\t\n\tif (!con)\n\t{\n\t\tif (err)\n\t\t{\n\t\t\t[NSApp presentError:err];\n\t\t}\n\t\treturn;\n\t}\n\t\n\tNSTextStorage *textStorage = [log textStorage];\n\t[textStorage setDelegate:self];\t\t// get notified when text changes\n\t[con setTranscript:textStorage];\n\t[[fileCheckLog textStorage] setDelegate:self];\n\t[con setProperty:[fileCheckLog textStorage] forKey:@\"RecursiveDirectoryDeletionTranscript\"];\n\t[con setProperty:[fileCheckLog textStorage] forKey:@\"FileCheckingTranscript\"];\n\t[con setProperty:[fileCheckLog textStorage] forKey:@\"RecursiveDownloadTranscript\"];\n\t\n\t\n\t[con setDelegate:self];\n\t[self cancelConnect:sender];\n\t\n\tif ([btnBrowseHost state] == NSOnState)\n\t{\n\t\tConnectionOpenPanel *browse = [ConnectionOpenPanel connectionOpenPanel:con];\n\t\t[browse setCanCreateDirectories:YES];\n\t\t[browse setCanChooseDirectories:YES];\n\t\t[browse setCanChooseFiles:YES];\n\t\t[browse setAllowsMultipleSelection:YES];\n\t\t\n\t\t[browse beginSheetForDirectory:[initialDirectory stringValue]\n\t\t\t\t\t\t\t\t  file:nil\n\t\t\t\t\t\tmodalForWindow:window\n\t\t\t\t\t\t modalDelegate:self\n\t\t\t\t\t\tdidEndSelector:@selector(browse:returnCode:contextInfo:)\n\t\t\t\t\t\t   contextInfo:nil];\n\t\t[con release];\n    con = nil;  //we are not responsible for it, the open connection panel will release it.\n\t}\n\telse\n\t{\n\t\t[status setStringValue:[NSString stringWithFormat:@\"Connecting to: %@\", [cHost stringValue]]];\n\t\t[con connect];\n\t}\n//\tid <AbstractConnectionProtocol> copy = [con copy];\n//\t[copy setDelegate:self];\n//\t[copy connect];\n}\n\n- (void)browse:(ConnectionOpenPanel *)panel returnCode:(int)returnCode contextInfo:(id)ui\n{\n\tif (returnCode == NSOKButton)\n\t{\n\t\tNSRunAlertPanel (@\"Files Selected\", [[panel filenames] description], @\"OK\", nil, nil);\n\t}\n\telse\n\t{\n\t\tNSRunAlertPanel(@\"Open Panel Cancelled\",@\"The panel was cancelled by the user\",@\"OK\",nil,nil);\n\t}\n}\n\n- (IBAction)deleteFile:(id)sender\n{\n\tNSEnumerator *e = [remoteTable selectedRowEnumerator];\n\tNSNumber *cur;\n\t\n\twhile (cur = [e nextObject])\n\t{\n\t\tint row = [cur intValue];\n\t\t\n\t\tNSDictionary *d = [remoteFiles objectAtIndex:row];\n\t\tif ([[d objectForKey:NSFileType] isEqualToString:NSFileTypeRegular] ||\n\t\t\t[[d objectForKey:NSFileType] isEqualToString:NSFileTypeSymbolicLink])\n\t\t{\n\t\t\tNSString *file = [[con currentDirectory] stringByAppendingPathComponent:[d objectForKey:cxFilenameKey]];\n\t\t\t[con deleteFile:file];\n\t\t}\n\t\telse\n\t\t{\n\t\t\t[con recursivelyDeleteDirectory:[[con currentDirectory] stringByAppendingPathComponent:[d objectForKey:cxFilenameKey]]];\n\t\t}\n\t}\n}\n\n- (IBAction)localFileSelected:(id)sender\n{\n}\n\n- (void)localDoubleClick:(id)sender\n{\n\tint row = [sender selectedRow];\n\t\n\tif (row >= 0 && row < [localFiles count])\n\t{\n\t\tBOOL isDir;\n\t\tif ([[NSFileManager defaultManager] fileExistsAtPath:[localFiles objectAtIndex:row] \n\t\t\t\t\t\t\t\t\t\t\t\t isDirectory:&isDir] && isDir)\n\t\t{\n\t\t\t[currentLocalPath autorelease];\n\t\t\tcurrentLocalPath = [[localFiles objectAtIndex:row] copy];\n\t\t\t[self refreshLocal];\n\t\t}\n\t\telse\n\t\t{\n\t\t\tNSString *file = [localFiles objectAtIndex:row];\n\t\t\t[self uploadFile:file to:[[con currentDirectory] stringByAppendingPathComponent:[file lastPathComponent]]];\n\t\t\t[transferTable reloadData];\n\t\t}\n\t}\n}\n\n- (IBAction)localPopupChanged:(id)sender\n{\n\tNSString *str = [[sender selectedItem] representedObject];\n\t[currentLocalPath autorelease];\n\tif ([str length] > 1)\n\t\tcurrentLocalPath = [[str substringToIndex:[str length] - 1] copy];\n\telse\n\t\tcurrentLocalPath = [str copy];\n\t[self refreshLocal];\n}\n\n- (IBAction)newFolder:(id)sender\n{\n\tInputDialog *input = [[InputDialog alloc] init];\n\t[input setDialogTitle:@\"Enter New Folder Name\"];\n\t[input beginSheetModalForWindow:window delegate:self selector:@selector(newFolderValue:)];\n}\n\n- (IBAction)logConfig:(id)sender\n{\n\t[KTLogger configure:self];\n}\n\n- (void)newFolderValue:(NSString *)val\n{\n\tif (val)\n\t{\n\t\tNSString *dir = [[con currentDirectory] stringByAppendingPathComponent:val];\n\t\t[con createDirectory:dir];\n\t\t[con contentsOfDirectory:[con currentDirectory]];\n\t}\n}\n\n- (IBAction)permissions:(id)sender\n{\n\tNSMutableDictionary *file = [remoteFiles objectAtIndex:[remoteTable selectedRow]];\n\t[[PermissionsController sharedPermissions] displayFile:file\n\t\t\t\t\t\t\t\t\t\t\t\t\t sheet:window\n\t\t\t\t\t\t\t\t\t\t\t\tconnection:con];\n}\n\n- (IBAction)refresh:(id)sender\n{\n\t[con contentsOfDirectory:[con currentDirectory]];\n}\n\n- (IBAction)remoteFileSelected:(id)sender\n{\n\tint idx = [sender selectedRow];\n\tNSDictionary *file = [remoteFiles objectAtIndex:idx];\n\t\n\tif (idx >= 0 && idx < [remoteFiles count])\n\t{\n\t\t[btnDelete setEnabled:YES];\n\t\t[btnPermissions setEnabled:YES];\n\t\t\n\t}\n\telse\n\t{\n\t\t[btnDelete setEnabled:NO];\n\t\t[btnPermissions setEnabled:NO];\n\t\t\n\t}\n\t\n\tif (![[file objectForKey:NSFileType] isEqualToString:NSFileTypeDirectory])\n\t{\n\t\t[btnEdit setEnabled:YES];\n\t}\n\telse\n\t{\n\t\t[btnEdit setEnabled:NO];\n\t}\n}\n\n- (void)remoteDoubleClick:(id)sender\n{\n\tint row = [sender selectedRow];\n\t\n\tif (row >= 0 && row < [remoteFiles count])\n\t{\n\t\tNSDictionary *attribs = [remoteFiles objectAtIndex:row];\n\t\t\n\t\tif ([[attribs objectForKey:NSFileType] isEqualToString:NSFileTypeDirectory])\n\t\t{\n\t\t\tNSString *path = [[con currentDirectory] stringByAppendingPathComponent:[attribs objectForKey:cxFilenameKey]];\n\t\t\t[con changeToDirectory:path];\n\t\t\t[con contentsOfDirectory:path];\n\t\t\t//[remoteFiles removeAllObjects];\n\t\t\treturn;\n\t\t}\n\t\telse if ([[attribs objectForKey:NSFileType] isEqualToString:NSFileTypeSymbolicLink])\n\t\t{\n\t\t\tNSString *target = [attribs objectForKey:cxSymbolicLinkTargetKey];\n\t\t\tif ([target characterAtIndex:[target length] - 1] == '/' || [target characterAtIndex:[target length] - 1] == '\\\\')\n\t\t\t{\n\t\t\t\t[con changeToDirectory:[attribs objectForKey:cxFilenameKey]];\n\t\t\t\t[con contentsOfDirectory:[attribs objectForKey:cxFilenameKey]];\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif ([[attribs objectForKey:NSFileType] isEqualToString:NSFileTypeRegular]) {\n\t\t\t[self downloadFile:[[con currentDirectory] stringByAppendingPathComponent:[attribs objectForKey:cxFilenameKey]]\n\t\t\t\t\t\t\ttoFolder:currentLocalPath];\n\t\t}\n\t\telse if ([[attribs objectForKey:NSFileType] isEqualToString:NSFileTypeSymbolicLink])\n\t\t{\n\t\t\tNSString *target = [attribs objectForKey:cxSymbolicLinkTargetKey];\n\t\t\tif ([target characterAtIndex:[target length] - 1] != '/'  && [target characterAtIndex:[target length] - 1] != '\\\\')\n\t\t\t\t[self downloadFile:[[con currentDirectory] stringByAppendingPathComponent:[attribs objectForKey:cxFilenameKey]]\n\t\t\t\t\t\t\t\ttoFolder: currentLocalPath];\n\t\t}\n\t\t\n\t\t[transferTable reloadData];\n\t}\n}\n\n- (IBAction)remotePopupChanged:(id)sender\n{\n\tNSString *path = [[sender selectedItem] representedObject];\n\t[con changeToDirectory:path];\n\t[con contentsOfDirectory:path];\n}\n\n- (IBAction)showConnect:(id)sender\n{\n\t//[self savedHostsChanged:savedHosts];\n\t[NSApp beginSheet:connectWindow\n\t   modalForWindow:window\n\t\tmodalDelegate:nil\n\t   didEndSelector:nil\n\t\t  contextInfo:nil];\n}\n\n- (IBAction)stopTransfer:(id)sender\n{\n\t[con cancelTransfer];\n}\n\n- (IBAction)transferSelected:(id)sender\n{\n\tint idx = [sender selectedRow];\n\t\n\tif (idx >= 0 && idx < [transfers count])\n\t{\n\t\t[btnStop setEnabled:YES];\n\t}\n\telse\n\t{\n\t\t[btnStop setEnabled:NO];\n\t}\n}\n\nstatic NSImage *_folder = nil;\n\n- (void)refreshRemoteUI\n{\n\t//create popup menu\n\tNSString *dir = [con currentDirectory];\n\tNSArray *folders = [dir componentsSeparatedByString:@\"/\"];\n\tif ([dir isEqualToString:@\"/\"])\n\t\tfolders = [folders subarrayWithRange:NSMakeRange(1, [folders count] - 1)];\n\tNSEnumerator *e = [folders objectEnumerator];\n\tNSMutableString *buildup = [NSMutableString string];\n\tNSString *cur;\n\t\n\tNSMenu *menu = [[NSMenu alloc] initWithTitle:@\"remote\"];\n\t\n\tif (!_folder)\n\t{\n\t\t_folder = [[[NSWorkspace sharedWorkspace] iconForFile:@\"/tmp\"] retain];\n\t\t[_folder setSize:NSMakeSize(16,16)];\n\t}\n\t\n\t\n\twhile (cur = [e nextObject])\n\t{\n\t\tNSMenuItem *item = [[NSMenuItem alloc] initWithTitle:cur\n\t\t\t\t\t\t\t\t\t\t\t\t\t  action:nil\n\t\t\t\t\t\t\t\t\t\t\t   keyEquivalent:@\"\"];\n\t\t[buildup appendFormat:@\"/%@\", cur];\n\t\t[item setRepresentedObject:[[buildup copy] autorelease]];\n\t\t[item setImage:_folder];\n\t\t[menu addItem:item];\n\t}\n\t\n\t[remotePopup setMenu:menu];\n\t[menu release];\n\t[remotePopup selectItem:[remotePopup lastItem]];\n\t\n\t[remoteTable reloadData];\n}\n\n- (void)refreshLocal\n{\n\t[localPopup removeAllItems];\n\t\n\t//refresh file list\n\tNSArray *dir = [[NSFileManager defaultManager] directoryContentsAtPath:currentLocalPath];\n\t[localFiles removeAllObjects];\n\tNSEnumerator *e = [dir objectEnumerator];\n\tNSString *cur;\n\t\n\twhile (cur = [e nextObject])\n\t{\n\t\tif ([cur characterAtIndex:0] != '.') //filter hidden files\n\t\t\t[localFiles addObject:[NSString stringWithFormat:@\"%@/%@\", currentLocalPath, cur]];\n\t}\n\t\n\tNSArray *pathComponents = [currentLocalPath componentsSeparatedByString:@\"/\"];\n\t\n\tNSMenu *menu = [[NSMenu alloc] initWithTitle:@\"local\"];\n\t\n\te = [pathComponents objectEnumerator];\n\tNSWorkspace *ws = [NSWorkspace sharedWorkspace];\n\t\n\tNSMutableString *buildup = [NSMutableString string];\n\tNSMenuItem *item;\n\t\n\tif ([pathComponents count] > 1)\n\t{\n\t\twhile (cur = [e nextObject])\n\t\t{\n\t\t\titem = [[NSMenuItem alloc] initWithTitle:cur\n\t\t\t\t\t\t\t\t\t\t\t  action:nil\n\t\t\t\t\t\t\t\t\t   keyEquivalent:@\"\"];\n\t\t\t[buildup appendFormat:@\"%@/\", cur];\n\t\t\t[item setRepresentedObject:[[buildup copy] autorelease]];\n\t\t\tNSImage *img = [ws iconForFile:buildup];\n\t\t\t[img setSize:NSMakeSize(16,16)];\n\t\t\t[item setImage:img];\n\t\t\t[menu addItem:item];\n\t\t\t[item release];\n\t\t}\t\t\n\t}\n\t\n\t[localPopup setMenu:menu];\n\t[menu release];\n\t[localPopup selectItem:[localPopup lastItem]];\n\t[localTable reloadData];\n}\n\n- (void)printQueueDescription:(id)sender\n{\n\tif ([con isKindOfClass:[AbstractQueueConnection class]]) {\n\t\tNSLog(@\"Queue Description:\\n%@\", [(AbstractQueueConnection *)con queueDescription]);\n\t}\n}\n\n- (void)editFile:(id)sender\n{\n\tunsigned idx = [remoteTable selectedRow];\n\tNSDictionary *file = [remoteFiles objectAtIndex:idx];\n\tNSString *remotePath = [[con currentDirectory] stringByAppendingPathComponent:[file objectForKey:cxFilenameKey]];\n\t[con editFile:remotePath];\n}\n\n- (void)searchChanged:(id)sender\n{\n\t[[ConnectionRegistry sharedRegistry] setFilterString:[sender stringValue]];\n}\n\n#pragma mark -\n#pragma mark Connection Helper Methods\n\n+ (NSString *)formattedSpeed:(long) spd\n{\n\tif (spd == 0) return @\"0 B/s\";\n\tNSString *suffix[] = {\n\t\t@\"B\", @\"KB\", @\"MB\", @\"GB\", @\"TB\", @\"PB\", @\"EB\"\n\t};\n\t\n\tint i, c = 7;\n\tlong size = spd;\n\t\n\tfor (i = 0; i < c && size >= 1024; i++) {\n\t\tsize = size / 1024;\n\t}\n\tfloat rem = 0;\n\t\n\tif (i != 0)\n\t\trem = (spd - (i * 1024)) / (i * 1024);\n\t\n\tNSString *ext = suffix[i];\n\treturn [NSString stringWithFormat:@\"%4.2f %@/s\", size+rem, ext];\n}\n\n- (FileTransfer *)uploadForLocalFile:(NSString *)file\n{\n\tNSEnumerator *e = [transfers objectEnumerator];\n\tFileTransfer *cur;\n\t\n\twhile (cur = [e nextObject])\n\t{\n\t\tif ([[cur localFile] isEqualToString:file] &&\n\t\t\t[cur type] == UploadType )\n\t\t\treturn cur;\n\t}\n\treturn nil;\n}\n\n- (FileTransfer *)downloadForLocalFile:(NSString *)file\n{\n\tNSEnumerator *e = [transfers objectEnumerator];\n\tFileTransfer *cur;\n\t\n\twhile (cur = [e nextObject])\n\t{\n\t\tif ([[cur localFile] isEqualToString:file] &&\n\t\t\t[cur type] == DownloadType)\n\t\t\treturn cur;\n\t}\n\treturn nil;\n}\n\n- (FileTransfer *)uploadForRemoteFile:(NSString *)file\n{\n\tNSEnumerator *e = [transfers objectEnumerator];\n\tFileTransfer *cur;\n\t\n\twhile (cur = [e nextObject])\n\t{\n\t\tif ([[cur remoteFile] isEqualToString:file] &&\n\t\t\t[cur type] == UploadType )\n\t\t\treturn cur;\n\t}\n\treturn nil;\n}\n\n- (FileTransfer *)downloadForRemoteFile:(NSString *)file\n{\n\tNSEnumerator *e = [transfers objectEnumerator];\n\tFileTransfer *cur;\n\t\n\twhile (cur = [e nextObject])\n\t{\n\t\tif ([[cur remoteFile] isEqualToString:file] &&\n\t\t\t[cur type] == DownloadType)\n\t\t\treturn cur;\n\t}\n\treturn nil;\n}\n\n- (void)downloadFile:(NSString *)remote toFolder:(NSString *)local\n{\n\tCKTransferRecord *rec = [con downloadFile:remote toDirectory:local overwrite:YES delegate:nil];\n\t[transfers addObject:rec];\n}\n\n- (void)uploadFile:(NSString *)local to:(NSString *)remote\n{\n\tCKTransferRecord *rec = [con uploadFile:local toFile:remote checkRemoteExistence:NO delegate:nil];\n\t[transfers addObject:rec];\n}\n\n- (void)recursivelyUploadContentsAtPath:(NSString *)aFolderPath serverPath:(NSString *)aServerPath\n{\n\tNSFileManager *fileManager = [NSFileManager defaultManager];\n    NSEnumerator *directoryEnum = [[fileManager directoryContentsAtPath:aFolderPath] objectEnumerator];\n    NSString *nextFile = nil;\n\t\n\t[con createDirectory:aServerPath];\n\t\n    while (nextFile = [directoryEnum nextObject])\n    {\n        NSString *fullLocalPath = [aFolderPath stringByAppendingPathComponent:nextFile];\n        NSString *fullServerPath = [aServerPath stringByAppendingPathComponent:nextFile];\n        BOOL isDir;\n\t\t\n        if ([nextFile hasPrefix:@\".\"])\n        {\n            continue;\n        }\n        \n        if ([fileManager fileExistsAtPath:fullLocalPath isDirectory:&isDir] && isDir)\n        {            \n            [self recursivelyUploadContentsAtPath:fullLocalPath serverPath:fullServerPath];\n        }\n        else\n        {\n            [self uploadFile:fullLocalPath to:fullServerPath];\n        }\n    }\n}\n\n- (void)uploadFolderContentsAtPath:(NSString *)aFolderPath\n{\n\tNSString *serverCurrentDirectory = [[con currentDirectory] stringByAppendingPathComponent:[aFolderPath lastPathComponent]];\n\t[self recursivelyUploadContentsAtPath:aFolderPath serverPath:serverCurrentDirectory];\n\t[transferTable reloadData];\n}\n\n#pragma mark -\n#pragma mark Connection Delegate Methods\n\n- (BOOL)connection:(id <AbstractConnectionProtocol>)con authorizeConnectionToHost:(NSString *)host message:(NSString *)message;\n{\n\tif (NSRunAlertPanel(@\"Authorize Connection?\", @\"%@\\nHost: %@\", @\"Yes\", @\"No\", nil, message, host) == NSOKButton)\n\t\treturn YES;\n\treturn NO;\n}\n\n- (void)connection:(AbstractConnection *)aConn didConnectToHost:(NSString *)host\n{\n\tisConnected = YES;\n\t[status setStringValue:[NSString stringWithFormat:@\"Connected to: %@\", host]];\n\t[btnRefresh setEnabled:YES];\n\t[remotePopup setHidden:NO];\n\t[btnNewFolder setEnabled:YES];\n\t[remoteTable setHidden:NO];\n\t[btnDisconnect setEnabled:YES];\n\tNSString *dir = [[initialDirectory stringValue] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];\n\tif (dir && [dir length] > 0)\n\t\t[con changeToDirectory:[initialDirectory stringValue]];\n\t[con directoryContents];\n}\n\n- (void)connection:(AbstractConnection *)aConn didDisconnectFromHost:(NSString *)host\n{\n\tisConnected = NO;\n\t[status setStringValue:[NSString stringWithFormat:@\"Disconnected from: %@\", host]];\n\t[btnRefresh setEnabled:NO];\n\t[btnDelete setEnabled:NO];\n\t[btnNewFolder setEnabled:NO];\n\t[btnPermissions setEnabled:NO];\n\t[btnStop setEnabled:NO];\n\t[btnDisconnect setEnabled:NO];\n\t[remotePopup setHidden:YES];\n\t[btnNewFolder setEnabled:NO];\n\t[remoteTable setHidden:YES];\n\t\n\t[con release];\n\tcon = nil;\n}\n\n- (void)connection:(AbstractConnection *)aConn didReceiveError:(NSError *)error\n{\n\tNSLog(@\"%@: %@\", NSStringFromSelector(_cmd), error);\n\tNSRunAlertPanel(@\"Error\",@\"Connection returned an error: %@\",@\"OK\",nil\n\t\t\t\t\t,nil, [error localizedDescription]);\n}\n\n- (void)connectionDidSendBadPassword:(AbstractConnection *)aConn\n{\n\tNSRunAlertPanel(@\"Bad Password\",@\"The Password you entered is no good. Please re-enter it and try again.\",@\"OK\",nil, nil);\n\t[self showConnect:self];\n}\n\n- (NSString *)connection:(AbstractConnection *)aConn needsAccountForUsername:(NSString *)username\n{\n\t[status setStringValue:[NSString stringWithFormat:@\"Need Account for %@ not implemented\", username]];\n\treturn nil;\n}\n\n- (void)connection:(AbstractConnection *)aConn didCreateDirectory:(NSString *)dirPath\n{\n\t[status setStringValue:[NSString stringWithFormat:@\"Created Directory: %@\", dirPath]];\n}\n\n- (void)connection:(AbstractConnection *)aConn didSetPermissionsForFile:(NSString *)path\n{\n\t\n}\n\n- (void)connection:(AbstractConnection *)aConn didRenameFile:(NSString *)from to:(NSString *)toPath\n{\n\t\n}\n\n- (void)connection:(AbstractConnection *)aConn didDeleteFile:(NSString *)path\n{\n\t[con contentsOfDirectory:[con currentDirectory]];\n}\n\n- (void)connection:(AbstractConnection *)aConn didDeleteDirectory:(NSString *)path\n{\n\t[con contentsOfDirectory:[con currentDirectory]];\n}\n\n\n- (void)connection:(AbstractConnection *)aConn didReceiveContents:(NSArray *)contents ofDirectory:(NSString *)dirPath\n{\n\tNSLog(@\"%@ %@\", NSStringFromSelector(_cmd), dirPath);\n\t[remoteFiles removeAllObjects];\n\t[remoteFiles addObjectsFromArray:[contents filteredArrayByRemovingHiddenFiles]];\n\t[self refreshRemoteUI];\n}\n\n- (void)connection:(id <AbstractConnectionProtocol>)con download:(NSString *)path receivedDataOfLength:(unsigned long long)length\n{\n\t[transferTable reloadData];\n}\n\n- (void)connection:(id <AbstractConnectionProtocol>)con upload:(NSString *)remotePath sentDataOfLength:(unsigned long long)length\n{\n\t[transferTable reloadData];\n}\n\n- (void)connection:(id <AbstractConnectionProtocol>)con uploadDidFinish:(NSString *)remotePath\n{\n\t[self refreshRemoteUI];\n\t[transferTable reloadData];\n}\n\n- (void)connection:(id <AbstractConnectionProtocol>)con downloadDidFinish:(NSString *)remotePath error:(NSError *)error\n{\n\t[self refreshLocal];\n\t[transferTable reloadData];\n}\n\n- (void)connection:(id <AbstractConnectionProtocol>)con checkedExistenceOfPath:(NSString *)path pathExists:(BOOL)exists\n{\n\tif (exists)\n\t{\n\t\tNSRunAlertPanel(@\"File Exists\", @\"Found path: %@\", @\"OK\", nil, nil, path);\n\t}\n\telse\n\t{\n\t\tNSRunAlertPanel(@\"File Not Found\", @\"Could not find path: %@\", @\"OK\", nil, nil, path);\n\t}\n}\n\n#pragma mark -\n#pragma mark NSTableView DataSource Methods\n\n- (int)numberOfRowsInTableView:(NSTableView *)aTable\n{\n\tif (aTable == remoteTable)\n\t\treturn [remoteFiles count];\n\telse if (aTable == localTable)\n\t\treturn [localFiles count];\n\treturn 0;\n}\n\nstatic NSImage *folder = nil;\nstatic NSImage *upload = nil;\nstatic NSImage *download = nil;\nstatic NSImage *symFolder = nil;\nstatic NSImage *symFile = nil;\nNSString *IconKey = @\"Icon\";\n\n- (id)tableView:(NSTableView *)aTable objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex\n{\n\tNSString *identifier = [aTableColumn identifier];\n\t\n\tif (aTable == remoteTable)\n\t{\n\t\tNSMutableDictionary *row = [remoteFiles objectAtIndex:rowIndex];\n\t\t\n\t\tif ([identifier isEqualToString:@\"icon\"])\n\t\t{\n\t\t\tNSImage *img = [row objectForKey:IconKey];\n\t\t\tif (!img)\n\t\t\t{\n\t\t\t\tif ([[row objectForKey:NSFileType] isEqualToString:NSFileTypeDirectory])\n\t\t\t\t{\n\t\t\t\t\tif (!folder)\n\t\t\t\t\t\tfolder = [[[NSWorkspace sharedWorkspace] iconForFile:@\"/tmp\"] retain];\n\t\t\t\t\timg = folder;\n\t\t\t\t}\n\t\t\t\telse if ([[row objectForKey:NSFileType] isEqualToString:NSFileTypeSymbolicLink])\n\t\t\t\t{\n\t\t\t\t\tif (!symFolder || !symFile)\n\t\t\t\t\t{\n\t\t\t\t\t\tsymFolder = [[NSImage imageNamed:@\"symlink_folder.tif\"] retain];\n\t\t\t\t\t\tsymFile = [[NSImage imageNamed:@\"symlink_file.tif\"] retain];\n\t\t\t\t\t}\n\t\t\t\t\tNSString *target = [row objectForKey:cxSymbolicLinkTargetKey];\n\t\t\t\t\tif ([target characterAtIndex:[target length] - 1] == '/' || [target characterAtIndex:[target length] - 1] == '\\\\')\n\t\t\t\t\t\timg = symFolder;\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tNSImage *fileType = [[NSWorkspace sharedWorkspace] iconForFileType:[[row objectForKey:cxFilenameKey] pathExtension]];\n\t\t\t\t\t\tNSImage *comp = [[NSImage alloc] initWithSize:NSMakeSize(16,16)];\n\t\t\t\t\t\t[img setScalesWhenResized:YES];\n\t\t\t\t\t\t[img setSize:NSMakeSize(16,16)];\n\t\t\t\t\t\t[comp lockFocus];\n\t\t\t\t\t\t[fileType drawInRect:NSMakeRect(0,0,16,16) fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0];\n\t\t\t\t\t\t[symFile drawInRect:NSMakeRect(0,0,16,16) fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0];\n\t\t\t\t\t\t[comp unlockFocus];\n\t\t\t\t\t\t[comp autorelease];\n\t\t\t\t\t\timg = comp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\timg = [[NSWorkspace sharedWorkspace] iconForFileType:[[row objectForKey:cxFilenameKey] pathExtension]];\n\t\t\t\t}\n\t\t\t\t[img setSize:NSMakeSize(16,16)];\n\t\t\t\t[row setObject:img forKey:IconKey];\n\t\t\t}\n\t\t\t\n\t\t\treturn img;\n\t\t}\n\t\telse if ([identifier isEqualToString:@\"name\"])\n\t\t{\n\t\t\treturn [row objectForKey:cxFilenameKey];\n\t\t}\n\t\telse if ([identifier isEqualToString:@\"size\"])\n\t\t{\n\t\t\t//if ([[row objectForKey:NSFileType] isEqualToString:NSFileTypeDirectory])\n\t\t\t//\treturn nil;\n\t\t\treturn [NSString formattedFileSizeWithBytes:[row objectForKey:NSFileSize]];\n\t\t}\n\t\telse if ([identifier isEqualToString:@\"modified\"])\n\t\t{\n\t\t\treturn [row objectForKey:NSFileModificationDate];\n\t\t}\n\t}\n\telse if (aTable == localTable)\n\t{\n\t\tNSString *file = [localFiles objectAtIndex:rowIndex];\n\t\tNSFileManager *fm = [NSFileManager defaultManager];\n\t\tNSDictionary *attribs = [fm fileAttributesAtPath:file traverseLink:YES];\n\t\t\n\t\tif ([identifier isEqualToString:@\"icon\"])\n\t\t{\n\t\t\tNSImage *img = [[NSWorkspace sharedWorkspace] iconForFile:file];\n\t\t\t[img setSize:NSMakeSize(16,16)];\n\t\t\treturn img;\n\t\t}\n\t\telse if ([identifier isEqualToString:@\"name\"])\n\t\t{\n\t\t\treturn [file lastPathComponent];\n\t\t}\n\t\telse if ([identifier isEqualToString:@\"size\"])\n\t\t{\n\t\t\tBOOL isDir;\n\t\t\tif ([fm fileExistsAtPath:file isDirectory:&isDir] && isDir)\n\t\t\t\treturn nil;\n\t\t\treturn [NSString formattedFileSizeWithBytes:[attribs objectForKey:NSFileSize]];\n\t\t}\n\t\telse if ([identifier isEqualToString:@\"modified\"])\n\t\t{\n\t\t\treturn [attribs objectForKey:NSFileModificationDate];\n\t\t}\n\t}\n\t\n\treturn nil;\n}\n\n- (NSView *) tableView:(NSTableView *) tableView viewForRow:(int) row\n{\n\treturn [[[transfers objectAtIndex:row] objectForKey:TransferControllerKey] view];\n}\n\n- (BOOL)tableView:(NSTableView *)tableView writeRows:(NSArray *)rows toPasteboard:(NSPasteboard *)pboard\n{\n\tif (tableView == localTable)\n\t{\n\t\tNSMutableArray *files = [NSMutableArray array];\n\t\tNSEnumerator *e = [rows objectEnumerator];\n\t\tNSNumber *cur;\n\t\tNSFileManager *fm = [NSFileManager defaultManager];\n\t\t\n\t\twhile (cur = [e nextObject])\n\t\t{\n\t\t\tNSString *name = [localFiles objectAtIndex:[cur intValue]];\n\t\t\tNSMutableDictionary *file = [[fm fileAttributesAtPath:name traverseLink:NO] mutableCopy];\n\t\t\t[file setObject:[name lastPathComponent] forKey:cxFilenameKey];\n\t\t\t[files addObject:file];\n\t\t\t[file release];\n\t\t}\n\t\t[pboard declareTypes:[NSArray arrayWithObject:cxLocalFilePBoardType] owner:nil];\n\t\t[pboard setPropertyList:files forType:cxLocalFilePBoardType]; //\n\t\treturn YES;\n\t}\n\telse if (tableView == remoteTable)\n\t{\n\t\tNSMutableArray *f = [NSMutableArray array];\n\t\tNSEnumerator *e = [rows objectEnumerator];\n\t\tNSNumber *cur;\n\t\twhile (cur = [e nextObject])\n\t\t{\n\t\t\tNSMutableDictionary *file = [[remoteFiles objectAtIndex:[cur intValue]] mutableCopy];\n\t\t\t[file removeObjectForKey:@\"Icon\"];\n\t\t\t[f addObject:file];\n\t\t\t[file release];\n\t\t}\n\t\t[pboard declareTypes:[NSArray arrayWithObject:cxRemoteFilePBoardType] owner:nil];\n\t\t[pboard setPropertyList:f forType:cxRemoteFilePBoardType];\n\t\treturn YES;\n\t}\n\treturn NO;\n}\n\n- (BOOL)tableView:(NSTableView *)tableView acceptDrop:(id <NSDraggingInfo>)info row:(int)row dropOperation:(NSTableViewDropOperation)operation\n{\n\tNSPasteboard *pb = [info draggingPasteboard];\n\tif (tableView == localTable) //do a download\n\t{\n\t\tNSArray *files = [pb propertyListForType:cxRemoteFilePBoardType];\n\t\tNSEnumerator *e = [files objectEnumerator];\n\t\tNSDictionary *file;\n\t\t\n\t\twhile (file = [e nextObject])\n\t\t{\n\t\t\tif ([[file objectForKey:NSFileType] isEqualToString:NSFileTypeRegular])\n\t\t\t{\n\t\t\t\t[self downloadFile:[[con currentDirectory] stringByAppendingPathComponent:[file objectForKey:cxFilenameKey]]\n\t\t\t\t\t\t  toFolder: currentLocalPath];\n\t\t\t}\n\t\t\telse if ([[file objectForKey:NSFileType] isEqualToString:NSFileTypeSymbolicLink])\n\t\t\t{\n\t\t\t\tNSString *target = [file objectForKey:cxSymbolicLinkTargetKey];\n\t\t\t\tif ([target characterAtIndex:[target length] - 1] != '/'  && [target characterAtIndex:[target length] - 1] != '\\\\')\n\t\t\t\t{\n\t\t\t\t\t[self downloadFile:[[con currentDirectory] stringByAppendingPathComponent:target]\n\t\t\t\t\t\t\t  toFolder: currentLocalPath];\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tCKTransferRecord *rec = [con recursivelyDownload:[[con currentDirectory] stringByAppendingPathComponent:target]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  to:currentLocalPath\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t   overwrite:YES];\n\t\t\t\t\t[transfers addObject:rec];\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ([[file objectForKey:NSFileType] isEqualToString:NSFileTypeDirectory])\n\t\t\t{\n\t\t\t\tCKTransferRecord *rec = [con recursivelyDownload:[[con currentDirectory] stringByAppendingPathComponent:[file objectForKey:cxFilenameKey]]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  to:currentLocalPath\n\t\t\t\t\t\t\t\t\t\t\t\t\t   overwrite:YES];\n\t\t\t\t[transfers addObject:rec];\n\t\t\t}\n\t\t}\n\t\t[transferTable reloadData];\n\t\treturn YES;\n\t}\n\telse if (tableView == remoteTable) //do an upload\n\t{\n\t\tif ([[pb types] containsObject:cxLocalFilePBoardType])\n\t\t{\n\t\t\tNSArray *files = [pb propertyListForType:cxLocalFilePBoardType];\n\t\t\tNSEnumerator *e = [files objectEnumerator];\n\t\t\tNSDictionary *cur;\n\t\t\t\n\t\t\twhile (cur = [e nextObject])\n\t\t\t{\n\t\t\t\tif ([[cur objectForKey:NSFileType] isEqualToString:NSFileTypeDirectory])\n\t\t\t\t{\n\t\t\t\t\tCKTransferRecord *rec = [con recursivelyUpload:[currentLocalPath stringByAppendingPathComponent:[cur objectForKey:cxFilenameKey]]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tto:[con currentDirectory]];\n\t\t\t\t\t[transfers addObject:rec];\n\t\t\t\t}\n\t\t\t\telse if ([[cur objectForKey:NSFileType] isEqualToString:NSFileTypeSymbolicLink])\n\t\t\t\t{\n\t\t\t\t\tCKTransferRecord *rec = [con recursivelyUpload:[currentLocalPath stringByAppendingPathComponent:[cur objectForKey:cxSymbolicLinkTargetKey]]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tto:[con currentDirectory]];\n\t\t\t\t\t[transfers addObject:rec];\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t[self uploadFile:[currentLocalPath stringByAppendingPathComponent:[cur objectForKey:cxFilenameKey]]\n\t\t\t\t\t\t\t\t  to:[[con currentDirectory] stringByAppendingPathComponent:[cur objectForKey:cxFilenameKey]]];\n\t\t\t\t}\n\t\t\t}\n\t\t\t[transferTable reloadData];\n\t\t\t\n\t\t\treturn YES;\n\t\t}\n\t\telse if ([[pb types] containsObject:NSFilenamesPboardType])\n\t\t{\n\t\t\tNSFileManager *fm = [NSFileManager defaultManager];\n\t\t\tNSArray *files = [pb propertyListForType:NSFilenamesPboardType];\n\t\t\tNSEnumerator *e = [files objectEnumerator];\n\t\t\tNSString *cur;\n\t\t\tBOOL isDir;\n\t\t\t\n\t\t\tNSString *curRemoteDir = [[con currentDirectory] copy];\n\t\t\t\n\t\t\twhile (cur = [e nextObject])\n\t\t\t{\n\t\t\t\tCKTransferRecord *root = [con recursivelyUpload:cur to:[con currentDirectory]];\n\t\t\t}\n\t\t\t[curRemoteDir release];\n\t\t\t[transferTable reloadData];\n\t\t\treturn YES;\n\t\t}\n\t}\n\treturn NO;\n}\n\n- (NSDragOperation)tableView:(NSTableView *)tableView \n\t\t\t\tvalidateDrop:(id <NSDraggingInfo>)info \n\t\t\t\t proposedRow:(int)row \n\t   proposedDropOperation:(NSTableViewDropOperation)operation\n{\n\tif (!isConnected)\n\t\treturn NSDragOperationNone;\n\tif (tableView == localTable || tableView == remoteTable)\n\t\treturn NSDragOperationCopy;\n\treturn NSDragOperationNone;\n}\n\n#pragma mark -\n#pragma mark Outline View Data Source\n\n- (int)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item\n{\n\tif (item == nil)\n\t{\n\t\treturn [transfers count];\n\t}\n\treturn [[item contents] count];\n}\n\n- (id)outlineView:(NSOutlineView *)outlineView child:(int)index ofItem:(id)item\n{\n\tif (item == nil)\n\t{\n\t\treturn [transfers objectAtIndex:index];\n\t}\n\treturn [[item contents] objectAtIndex:index];\n}\n\n- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item\n{\n\treturn [item isDirectory];\n}\n\n- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item\n{\n\tNSString *identifier = [tableColumn identifier];\n\tCKTransferRecord *transfer = (CKTransferRecord *)item;\n\t\n\tif ([identifier isEqualToString:@\"progress\"])\n\t{\n\t\treturn [NSDictionary dictionaryWithObjectsAndKeys:[transfer progress], @\"progress\", [transfer name], @\"name\", nil];\n\t}\n\telse if ([identifier isEqualToString:@\"file\"])\n\t{\n\t\treturn [transfer name];\n\t}\n\telse if ([identifier isEqualToString:@\"speed\"])\n\t{\n\t\treturn [NSString formattedSpeed:[transfer speed]];\n\t}\n\tif ([identifier isEqualToString:@\"image\"])\n\t{\n\t\tif (![transfer isUpload])\n\t\t{\n\t\t\tif (!download)\n\t\t\t\tdownload = [[NSImage imageNamed:@\"download.tif\"] retain];\n\t\t\treturn download;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (!upload)\n\t\t\t\tupload = [[NSImage imageNamed:@\"upload.tif\"] retain];\n\t\t\treturn upload;\n\t\t}\n\t}\n\telse if ([identifier isEqualToString:@\"icon\"])\n\t{\n\t\tNSImage *img = [[NSWorkspace sharedWorkspace] iconForFileType:[[transfer path] pathExtension]];\n\t\t[img setSize:NSMakeSize(16,16)];\n\t\treturn img;\n\t}\n\t\n\treturn nil;\n}\n\n#pragma mark -\n#pragma mark NSTextView Delegate Methods\n/*!\tCalled as a delegate of the log's text storage, so we can update the scroll position\n*/\n- (void)textStorageDidProcessEditing:(NSNotification *)aNotification\n{\n\tif ([aNotification object] == [log textStorage])\n\t\t[self performSelector:@selector(scrollToVisible:) withObject:log afterDelay:0.0];\n\telse\n\t\t[self performSelector:@selector(scrollToVisible:) withObject:fileCheckLog afterDelay:0.0];\n\t// Don't scroll now, do it in a moment. Doing it now causes error messgaes.\n}\n\n- (void) scrollToVisible:(id)whichLog\n{\n\t[whichLog scrollRangeToVisible:NSMakeRange([[whichLog textStorage] length], 0)];\n}\n\n#pragma mark -\n#pragma mark NSApplication Delegate Methods\n\n- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender\n{\n\tif ([con numberOfTransfers] > 0) {\n\t\tif (NSRunAlertPanel(@\"Transfers in Progress\", @\"Are you sure you want to quit while there are still file transfers in progress?\", @\"Yes Quit\", @\"No\", nil) != NSOKButton)\n\t\t\treturn NSTerminateCancel;\n\t}\n\tNSUserDefaults *ud = [NSUserDefaults standardUserDefaults];\n\t[ud setObject:NSStringFromRect([window frame]) \n\t\t   forKey:[window frameAutosaveName]];\n\t[ud setBool:[logDrawer state] == NSDrawerOpenState forKey:@\"showLog\"];\n\treturn NSTerminateNow;\n}\n\n- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication\n{\n\treturn YES;\n}\n\n@end\n"
  },
  {
    "path": "Example/DropletController.h",
    "content": "/* DropletController */\n\n#import <Cocoa/Cocoa.h>\n#import <Connection/Connection.h>\n\n@interface DropletController : NSObject\n{\n    IBOutlet NSButton *oCancel;\n    IBOutlet NSTextField *oPassword;\n    IBOutlet NSPanel *oPasswordPanel;\n    IBOutlet NSTextField *oPasswordText;\n    IBOutlet NSProgressIndicator *oProgressBar;\n    IBOutlet NSTextField *oStatus;\n    IBOutlet NSPanel *oWindow;\n\tIBOutlet NSOutlineView *oFiles;\n\tIBOutlet NSButton *oToggleFiles;\n\t\n\tCKHost *myHost;\n\tid <AbstractConnectionProtocol>myConnection;\n\tNSArray *myFilesDropped;\n\tNSMutableArray *myTransfers;\n}\n- (IBAction)cancelPassword:(id)sender;\n- (IBAction)cancelUpload:(id)sender;\n- (IBAction)connectPassword:(id)sender;\n- (IBAction)toggleFiles:(id)sender;\n@end\n"
  },
  {
    "path": "Example/DropletController.m",
    "content": "#import \"DropletController.h\"\n\n@interface DropletController (Private)\n- (void)startUpload;\n@end\n\nstatic NSSize sFilesExpandedSize = {375, 400};\nstatic NSSize sFilesCollapsedSize = {375, 105};\n\n@implementation DropletController\n\n- (void)dealloc\n{\n\t[myConnection release];\n\t[myFilesDropped release];\n\t[myHost release];\n\t[myTransfers release];\n\t\n\t[super dealloc];\n}\n\n- (void)awakeFromNib\n{\n\tNSString *str = [[NSUserDefaults standardUserDefaults] objectForKey:[oWindow frameAutosaveName]];\n\tif (str)\n\t{\n\t\t[oWindow setFrame:NSRectFromString(str) display:NO];\n\t}\n\tNSNumber *state = [[NSUserDefaults standardUserDefaults] objectForKey:@\"DisplayFiles\"];\n\tif ([state boolValue])\n\t{\n\t\t[oToggleFiles setState:NSOnState];\n\t}\n\tmyTransfers = [[NSMutableArray array] retain];\n\t[oFiles setDelegate:self];\n\t[oFiles setDataSource:self];\n\tCKTransferProgressCell *cell = [[CKTransferProgressCell alloc] init];\n\t[[[oFiles tableColumns] objectAtIndex:0] setDataCell:cell];\n\t[cell release];\n\n\tNSArray *args = [[NSProcessInfo processInfo] arguments];\n\tif ([args count] < 2)\n\t{\n\t\tNSRunAlertPanel(NSLocalizedString(@\"Bad Configuration\", @\"config\"),\n\t\t\t\t\t\tNSLocalizedString(@\"No configuration file specified\", @\"config\"),\n\t\t\t\t\t\tNSLocalizedString(@\"Quit\", @\"config\"),\n\t\t\t\t\t\tnil,\n\t\t\t\t\t\tnil);\n\t\t[NSApp performSelector:@selector(terminate:) withObject:nil afterDelay:0.0];\n\t\treturn;\n\t}\n\tNSString *configurationFile = [args objectAtIndex:1];\n\tmyFilesDropped = [[args subarrayWithRange:NSMakeRange(2,[args count] - 2)] retain];\n\t\n\tif (![[NSFileManager defaultManager] fileExistsAtPath:configurationFile])\n\t{\n\t\tNSRunAlertPanel(NSLocalizedString(@\"Bad Configuration\", @\"config\"),\n\t\t\t\t\t\tNSLocalizedString(@\"Couldn't find configuration file specified\\n %@\", @\"config\"),\n\t\t\t\t\t\tNSLocalizedString(@\"Quit\", @\"config\"),\n\t\t\t\t\t\tnil,\n\t\t\t\t\t\tnil, configurationFile);\n\t\t[NSApp performSelector:@selector(terminate:) withObject:nil afterDelay:0.0];\n\t\treturn;\n\t}\n\tmyHost = [[NSKeyedUnarchiver unarchiveObjectWithFile:configurationFile] retain];\n\tif (![myHost password])\n\t{\n\t\tNSString *str = [NSString stringWithFormat:[oPasswordText stringValue], [myHost host], [myHost connectionType]];\n\t\t[oPasswordText setStringValue:str];\n\t\t[oPasswordPanel center];\n\t\t[NSApp activateIgnoringOtherApps:YES];\n\t\t[oPasswordPanel makeKeyAndOrderFront:self];\n\t}\n\telse\n\t{\n\t\t[self startUpload];\n\t}\n}\n\n- (void)startUpload\n{\n\t[oProgressBar setIndeterminate:YES];\n\t[oProgressBar setUsesThreadedAnimation:YES];\n\t[oStatus setStringValue:[NSString stringWithFormat:NSLocalizedString(@\"Connecting to %@\", @\"connection string\"), [myHost host]]];\n\t[NSApp activateIgnoringOtherApps:YES];\n\t[oWindow makeKeyAndOrderFront:self];\n\t[oProgressBar startAnimation:self];\n\tmyConnection = [[myHost connection] retain];\n\t[myConnection setDelegate:self];\n\t[myConnection connect];\n\t\n\t// queue up the transfers\n\tNSEnumerator *e = [myFilesDropped objectEnumerator];\n\tNSString *cur;\n\t\n\twhile ((cur = [e nextObject]))\n\t{\n\t\tCKTransferRecord *root = [myConnection recursivelyUpload:cur to:[myHost initialPath]];\n\t\tCKTransferRecord *record = [CKTransferRecord recursiveRecord:root forFullPath:[[myHost initialPath] stringByAppendingPathComponent:[cur lastPathComponent]]];\n\t\t[myTransfers addObject:record];\n\t}\n\t[oFiles reloadData];\n\t\n\t// expand the root items\n\te = [myTransfers objectEnumerator];\n\tCKTransferRecord *rec;\n\t\n\twhile ((rec = [e nextObject]))\n\t{\n\t\t[oFiles expandItem:rec expandChildren:YES];\n\t}\n\t\n\t// disconnect\n\t[myConnection disconnect];\n}\n\n- (IBAction)cancelPassword:(id)sender\n{\n\t[oPasswordPanel orderOut:self];\n\t[NSApp performSelector:@selector(terminate:) withObject:nil afterDelay:0.0];\n}\n\n- (IBAction)cancelUpload:(id)sender\n{\n\t[oWindow orderOut:self];\n\t[NSApp performSelector:@selector(terminate:) withObject:nil afterDelay:0.0];\n}\n\n- (IBAction)connectPassword:(id)sender\n{\n\t[myHost setPassword:[oPassword stringValue]];\n\t[oPasswordPanel orderOut:self];\n\t[self startUpload];\n}\n\n- (IBAction)toggleFiles:(id)sender\n{\n\tNSRect frame = [oWindow frame];\n\tNSRect contentRect = [oWindow contentRectForFrameRect:frame];\n\tCGFloat titlebarHeight = NSHeight(frame) - NSHeight(contentRect);\n\tNSSize newSize = [sender state] == NSOnState ? sFilesExpandedSize : sFilesCollapsedSize;\n\tframe.origin.y -= newSize.height - contentRect.size.height;\n\tframe.size = newSize;\n\tframe.size.height += titlebarHeight;\n\t\n\t[oWindow setFrame:frame display:YES animate:YES];\n\t\n\t[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithBool:[sender state] == NSOnState]\n\t\t\t\t\t\t\t\t\t\t\t  forKey:@\"DisplayFiles\"];\n}\n\n- (void)notifyGrowlOfSuccessfulUpload\n{\n\tNSString *dropletName = [[NSProcessInfo processInfo] processName];\n\tNSString *scriptSource = [NSString stringWithFormat:@\"tell application \\\"System Events\\\"\\n\"\n\t\t\"set growlIsRunning to count of (every process whose name is \\\"GrowlHelperApp\\\") > 0\\n\"\n\t\t\"end tell\\n\"\n\t\t\"if growlIsRunning\\n\"\n\t\t\"tell application \\\"GrowlHelperApp\\\"\\n\"\n\t\t\"set the allNotificationsList to {\\\"Upload Complete\\\"}\\n\"\n\t\t\"set the enabledNotificationsList to {\\\"Upload Complete\\\"}\\n\"\n\t\t\"register as application \\\"Connection Droplet\\\" all notifications allNotificationsList default notifications enabledNotificationsList icon of application \\\"%@\\\"\\n\"\n\t\t\"notify with name \\\"Upload Complete\\\" title \\\"Upload Complete\\\" description \\\"The items have been uploaded successfully.\\\" application name \\\"Connection Droplet\\\"\\n\"\n\t\t\"end tell\\n\"\t\t\n\t\t\"end if\\n\", dropletName];\n\tNSDictionary *errorDictionary;\n\tNSAppleEventDescriptor *returnDescriptor = nil;\n\t\n\tNSAppleScript *applescript = [[NSAppleScript alloc] initWithSource:scriptSource];\n\treturnDescriptor = [applescript executeAndReturnError:&errorDictionary];\n\tif (!returnDescriptor)\n\t{\n\t\t//error\n\t\tNSLog(@\"Applescript Error for Droplet Growl Notification: %@\", errorDictionary);\n\t}\n\t[applescript release];\n}\n\n#pragma mark -\n#pragma mark NSWindow Delegate Methods\n\n- (BOOL)windowShouldClose:(id)sender\n{\n\tif (NSRunAlertPanel(NSLocalizedString(@\"Stop Upload?\", @\"close window\"),\n\t\t\t\t\t\tNSLocalizedString(@\"Are you sure you want to stop the upload?\", @\"close window\"),\n\t\t\t\t\t\tNSLocalizedString(@\"Continue Upload\", @\"close window\"),\n\t\t\t\t\t\tNSLocalizedString(@\"Stop Upload\", @\"close window\"),\n\t\t\t\t\t\tnil) != NSOKButton)\n\t{\n\t\t[myConnection setDelegate:nil];\n\t\t[myConnection forceDisconnect];\n\t\treturn YES;\n\t}\n\treturn NO;\n}\n\n- (void)windowWillClose:(NSNotification *)aNotification\n{\n\t[NSApp performSelector:@selector(terminate:) withObject:nil afterDelay:0.0];\n}\n\n- (void)windowDidMove:(NSNotification *)aNotification\n{\n\t[[NSUserDefaults standardUserDefaults] setObject:NSStringFromRect([oWindow frame])\n\t\t\t\t\t\t\t\t\t\t\t  forKey:[oWindow frameAutosaveName]];\n}\n\n#pragma mark -\n#pragma mark Connection Delegate Methods\n\n- (BOOL)connection:(id <AbstractConnectionProtocol>)con authorizeConnectionToHost:(NSString *)host message:(NSString *)message\n{\n\tNSAlert *alert = [NSAlert alertWithMessageText:NSLocalizedString(@\"Authorize Connection?\", @\"authorise\")\n\t\t\t\t\t\t\t\t\t defaultButton:NSLocalizedString(@\"Authorize\", @\"authorise\")\n\t\t\t\t\t\t\t\t   alternateButton:NSLocalizedString(@\"Cancel\", @\"authorise\")\n\t\t\t\t\t\t\t\t\t   otherButton:nil\n\t\t\t\t\t\t informativeTextWithFormat:NSLocalizedString(@\"%@\\nWhat would you like to do?\", @\"authorise\"), message];\n\t\n\tif ([alert runModal] == NSOKButton)\n\t{\n\t\treturn YES;\n\t}\n\treturn NO;\n}\n\n- (void)connection:(id <AbstractConnectionProtocol>)con didConnectToHost:(NSString *)host\n{\n\t[oStatus setStringValue:[NSString stringWithFormat:NSLocalizedString(@\"Connected to %@\", @\"connected message\"), [myHost host]]];\n\t\n\t[oProgressBar setIndeterminate:NO];\n\t[oProgressBar setMinValue:0];\n\t[oProgressBar setMaxValue:1.0];\n\t[oProgressBar setDoubleValue:0.0];\n}\n\n- (void)connection:(id <AbstractConnectionProtocol>)con didDisconnectFromHost:(NSString *)host\n{\n\t[oStatus setStringValue:NSLocalizedString(@\"Disconnected\", @\"status\")];\n\t[self notifyGrowlOfSuccessfulUpload];\n\t[NSApp performSelector:@selector(terminate:) withObject:nil afterDelay:0.5];\n}\n\n- (void)connection:(id <AbstractConnectionProtocol>)con didReceiveError:(NSError *)error\n{\n\tif ([[error userInfo] objectForKey:ConnectionDirectoryExistsKey]) \n\t{\n\t\treturn;\n\t}\n\tNSLog(@\"%@\", error);\n\tNSAlert *a = [NSAlert alertWithError:error];\n\t[a runModal];\n}\n\n//- (NSString *)connection:(id <AbstractConnectionProtocol>)con needsAccountForUsername:(NSString *)username\n//{\n//\t\n//}\n\n- (CKTransferRecord *)recordWithPath:(NSString *)path\n{\n\tNSString *chompedPath = [path substringFromIndex:[[myHost initialPath] length]];\n\tCKTransferRecord *record = nil;\n\tNSEnumerator *e = [myTransfers objectEnumerator];\n\tCKTransferRecord *cur;\n\t\n\twhile ((cur = [e nextObject]))\n\t{\n\t\trecord = [CKTransferRecord recursiveRecord:cur forPath:chompedPath];\n\t\tif (record)\n\t\t{\n\t\t\treturn record;\n\t\t}\n\t}\n\treturn nil;\n}\n\n- (void)connection:(id <AbstractConnectionProtocol>)con upload:(NSString *)remotePath progressedTo:(NSNumber *)aPercent\n{\n\tCKTransferRecord *record = [self recordWithPath:remotePath];\n\tNSInteger oldValue = [[record progress] integerValue];\n\tNSInteger percent = [aPercent integerValue];\n\t\n\tif (oldValue == 1 && percent == 100)\n\t{\n\t\tNSInteger i;\n\t\tfor (i = 1; i <= 10; i++) {\n\t\t\t[record setProgress:i*10];\n\t\t\tif ([oToggleFiles state] == NSOnState)\n\t\t\t{\n\t\t\t\t[oFiles reloadData];\n\t\t\t\t[oWindow display];\n\t\t\t\t[NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.0125]];\n\t\t\t}\n\t\t}\n\t}\n\telse if (percent > 0)\n\t{\n\t\t[record setProgress:percent];\n\t\t[oFiles reloadData];\n\t}\n\t\n\t// update progress bar\n\tunsigned long long totalBytes = 0;\n\tunsigned long long totalTransferred = 0;\n\tNSEnumerator *e = [myTransfers objectEnumerator];\n\tCKTransferRecord *cur;\n\t\n\twhile ((cur = [e nextObject]))\n\t{\n\t\ttotalBytes += [cur size];\n\t\ttotalTransferred += [cur transferred];\n\t}\n\t[oProgressBar setDoubleValue:(totalTransferred * 1.0) / (totalBytes * 1.0)];\n}\n\n- (void)connection:(id <AbstractConnectionProtocol>)con uploadDidBegin:(NSString *)remotePath\n{\n\tCKTransferRecord *record = [self recordWithPath:remotePath];\n\t[record setProgress:1];\n\t\n\t[oFiles reloadData];\n\t\n\t[oStatus setStringValue:[NSString stringWithFormat:NSLocalizedString(@\"Uploading %@\", @\"status\"), [record name]]];\n}\n\n- (void)connection:(id <AbstractConnectionProtocol>)con uploadDidFinish:(NSString *)remotePath\n{\n\tCKTransferRecord *record = [self recordWithPath:remotePath];\n\t[record setProgress:100];\n\t\n\t[oFiles reloadData];\n}\n\n- (void)connectionDidSendBadPassword:(id <AbstractConnectionProtocol>)con\n{\n\tNSLog(@\"Bad Password\");\n}\n\n#pragma mark -\n#pragma mark Outline View Data Source Methods\n\n- (NSInteger)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item\n{\n\tif (item == nil)\n\t{\n\t\treturn [myTransfers count];\n\t}\n\treturn [[item contents] count];\n}\n\n- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item\n{\n\treturn [item isDirectory];\n}\n\n- (id)outlineView:(NSOutlineView *)outlineView child:(NSInteger)index ofItem:(id)item\n{\n\n\tif (item == nil)\n\t{\n\t\treturn [myTransfers objectAtIndex:index];\n\t}\n\treturn [[item contents] objectAtIndex:index];\n}\n\n- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item\n{\n\treturn [NSDictionary dictionaryWithObjectsAndKeys:[item progress], @\"progress\", [item name], @\"name\", nil];\n}\n\n#pragma mark -\n#pragma mark Outline View Delegate Methods\n\n- (BOOL)outlineView:(NSOutlineView *)outlineView shouldSelectItem:(id)item\n{\n\treturn NO;\n}\n\n@end\n"
  },
  {
    "path": "Example/DropletHelper-Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>${EXECUTABLE_NAME}</string>\n\t<key>CFBundleIconFile</key>\n\t<string>DropletIcon</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>com.connectionkit.DropletHelper</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundlePackageType</key>\n\t<string>APPL</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1.0</string>\n\t<key>LSUIElement</key>\n\t<integer>1</integer>\n\t<key>NSMainNibFile</key>\n\t<string>Droplet</string>\n\t<key>NSPrincipalClass</key>\n\t<string>NSApplication</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/DropletLauncher.m",
    "content": "//\n//  DropletLauncher.m\n//  Connection\n//\n//  Created by Greg Hulands on 16/11/06.\n//  Copyright 2006 __MyCompanyName__. All rights reserved.\n//\n#import <Cocoa/Cocoa.h>\n\nint main(int argc, char *argv[])\n{\n    return NSApplicationMain(argc,  (const char **) argv);\n}\n\n@interface DropletLauncherDelegate : NSObject\n{\n\tBOOL myHasFilesToUpload;\n}\n\n@end\n\n@implementation DropletLauncherDelegate\n\n- (id)init\n{\n\tif ((self != [super init]))\n\t{\n\t\t[self release];\n\t\treturn nil;\n\t}\n\tmyHasFilesToUpload = NO;\n\t\n\treturn self;\n}\n\n- (void)application:(NSApplication *)app openFiles:(NSArray *)files\n{\n\tmyHasFilesToUpload = YES;\n\tNSString *dropletCreator = [[NSBundle mainBundle] objectForInfoDictionaryKey:@\"CKApplication\"];\n\tNSString *applicationPath = [[NSWorkspace sharedWorkspace] absolutePathForAppBundleWithIdentifier:dropletCreator];\n\tNSString *dyldPath = [[applicationPath stringByAppendingPathComponent:@\"Contents\"] stringByAppendingPathComponent:@\"Frameworks\"];\n\tNSString *ckFrameworkPath = [[dyldPath stringByAppendingPathComponent:@\"Connection\"] stringByAppendingPathExtension:@\"framework\"];\n\tNSString *dropletPath = [[NSBundle bundleWithPath:ckFrameworkPath] pathForResource:@\"DropletHelper\" ofType:@\"app\"];\n\tNSString *path = [[NSBundle bundleWithPath:dropletPath] executablePath];\n\t\n\tif (!path)\n\t{\n\t\tNSRunAlertPanel(NSLocalizedString(@\"Bad Droplet\", @\"error\"),\n\t\t\t\t\t\tNSLocalizedString(@\"This droplet is missing the original application that created it. You will need to reinstall the original application.\", @\"error\"),\n\t\t\t\t\t\tNSLocalizedString(@\"Quit\", @\"error\"),\n\t\t\t\t\t\tnil,\n\t\t\t\t\t\tnil);\n\t\t[NSApp performSelector:@selector(terminate:) withObject:nil afterDelay:0];\n\t\treturn;\n\t}\n\t\n\tNSTask *task = [[NSTask alloc] init];\n\t[task setLaunchPath:path];\n\tNSMutableArray *args = [NSMutableArray arrayWithObject:[[NSBundle mainBundle] pathForResource:@\"configuration\" ofType:@\"ckhost\"]];\n\t[args addObjectsFromArray:files];\n\t[task setArguments:args];\n\t[task launch];\n\t\n    [task release];\n\t[NSApp performSelector:@selector(terminate:) withObject:nil afterDelay:0.0];\n}\n\n- (void)applicationDidFinishLaunching:(NSNotification *)aNotification\n{\n\tif (!myHasFilesToUpload)\n\t{\n\t\tNSString *dropletCreator = [[NSBundle mainBundle] objectForInfoDictionaryKey:@\"CKApplication\"];\n\t\tNSString *applicationPath = [[NSWorkspace sharedWorkspace] absolutePathForAppBundleWithIdentifier:dropletCreator];\n\t\t[[NSWorkspace sharedWorkspace] openFile:[[NSBundle mainBundle] pathForResource:@\"configuration\" ofType:@\"ckhost\"] withApplication:applicationPath];\n\t\t[NSApp performSelector:@selector(terminate:) withObject:nil afterDelay:0.0];\n\t}\n}\n\n@end\n\n"
  },
  {
    "path": "Example/DropletMain.m",
    "content": "//\n//  DropletMain.m\n//  Connection\n//\n//  Created by Greg Hulands on 16/11/06.\n//  Copyright 2006 __MyCompanyName__. All rights reserved.\n//\n\n#import <Cocoa/Cocoa.h>\n\nint main(int argc, char *argv[])\n{\n    return NSApplicationMain(argc,  (const char **) argv);\n}\n\n"
  },
  {
    "path": "Example/DropletOutlineView.h",
    "content": "//\n//  DropletOutlineView.h\n//  Connection\n//\n//  Created by Greg Hulands on 16/11/06.\n//  Copyright 2006 __MyCompanyName__. All rights reserved.\n//\n\n#import <Cocoa/Cocoa.h>\n\n\n@interface DropletOutlineView : NSOutlineView \n{\n\tBOOL isReloading;\n}\n\n@end\n"
  },
  {
    "path": "Example/DropletOutlineView.m",
    "content": "//\n//  DropletOutlineView.m\n//  Connection\n//\n//  Created by Greg Hulands on 16/11/06.\n//  Copyright 2006 __MyCompanyName__. All rights reserved.\n//\n\n#import \"DropletOutlineView.h\"\n\n\n@implementation DropletOutlineView\n\n- (void)reloadData\n{\n\tif (isReloading)\n\t{\n\t\t[self performSelector:@selector(reloadData) withObject:nil afterDelay:0.0];\n\t}\n\tisReloading = YES;\n\t[super reloadData];\n\tisReloading = NO;\n}\n\n@end\n"
  },
  {
    "path": "Example/DropletPanel.h",
    "content": "//\n//  DropletPanel.h\n//  Connection\n//\n//  Created by Greg Hulands on 17/11/06.\n//  Copyright 2006 __MyCompanyName__. All rights reserved.\n//\n\n#import <Cocoa/Cocoa.h>\n\n\n@interface DropletPanel : NSPanel\n{\n\n}\n\n@end\n"
  },
  {
    "path": "Example/DropletPanel.m",
    "content": "//\n//  DropletPanel.m\n//  Connection\n//\n//  Created by Greg Hulands on 17/11/06.\n//  Copyright 2006 __MyCompanyName__. All rights reserved.\n//\n\n#import \"DropletPanel.h\"\n\n\n@implementation DropletPanel\n\n- (BOOL)hidesOnDeactivate\n{\n\treturn NO;\n}\n\n@end\n"
  },
  {
    "path": "Example/FileTransfer.h",
    "content": "//\n//  FileTransfer.h\n//  FTPConnection\n//\n//  Created by Greg Hulands on 24/11/05.\n//  Copyright 2005 __MyCompanyName__. All rights reserved.\n//\n\n// This is just a wrapper around the notion of a file transfer\n\n#import <Cocoa/Cocoa.h>\n\ntypedef enum {\n\tUploadType = 0,\n\tDownloadType,\n  DeleteType\n} TransferType;\n\n@interface FileTransfer : NSObject \n{\n\tTransferType _type;\n\tNSString *_local;\n\tNSString *_remote;\n\tNSNumber *_size;\n\tNSNumber *_percent;\n\tNSNumber *_transferred;\n\tBOOL\t_completed;\n}\n\n+ (id)uploadFile:(NSString *)local to:(NSString *)remote;\n+ (id)downloadFile:(NSString *)remote to:(NSString *)local;\n+ (id)deleteFile:(NSString *)remote;\n\n- (id)initWithType:(TransferType)type localFile:(NSString *)local remoteFile:(NSString *)remote;\n\n- (void)setLocalFile:(NSString *)local;\n- (void)setRemoteFile:(NSString *)remote;\n- (void)setSize:(NSNumber *)size;\n- (void)setPercentTransferred:(NSNumber *)percent;\n- (void)setAmountTransferred:(NSNumber *)transferred;\n- (void)setCompleted:(BOOL)flag;\n- (void)setType:(TransferType)type;\n- (TransferType)type;\n\n- (BOOL)isCompleted;\n- (NSString *)localFile;\n- (NSString *)remoteFile;\n- (NSNumber *)size;\n- (NSNumber *)percentTransferred;\n- (NSNumber *)amountTransferred;\n\n@end\n"
  },
  {
    "path": "Example/FileTransfer.m",
    "content": "//\n//  FileTransfer.m\n//  FTPConnection\n//\n//  Created by Greg Hulands on 24/11/05.\n//  Copyright 2005 __MyCompanyName__. All rights reserved.\n//\n\n#import \"FileTransfer.h\"\n\n\n@implementation FileTransfer\n\n+ (id)uploadFile:(NSString *)local to:(NSString *)remote\n{\n\tFileTransfer *transfer =  [[[FileTransfer alloc] initWithType:UploadType\n\t\t\t\t\t\t\t\t\t localFile:local\n\t\t\t\t\t\t\t\t\tremoteFile:remote] autorelease];\n  \n  [transfer setSize: [NSNumber numberWithUnsignedLongLong: [[[NSFileManager defaultManager] fileAttributesAtPath: local\n                                                                                                    traverseLink: NO] fileSize]]];\n  \n  return transfer;\n}\n\n+ (id)downloadFile:(NSString *)remote to:(NSString *)local\n{\n\treturn [[[FileTransfer alloc] initWithType:DownloadType\n\t\t\t\t\t\t\t\t\t localFile:local\n\t\t\t\t\t\t\t\t\tremoteFile:remote] autorelease];\n}\n\n+ (id)deleteFile:(NSString *)remote\n{\n\treturn [[[FileTransfer alloc] initWithType: DeleteType\n                                   localFile: nil\n                                  remoteFile: remote] autorelease];\n}\n\n- (id)initWithType:(TransferType)type localFile:(NSString *)local remoteFile:(NSString *)remote\n{\n\t[super init];\n\t_type = type;\n\t_local = [local copy];\n\t_remote = [remote copy];\n  _transferred = [NSNumber numberWithInt: 0];\n\treturn self;\n}\n\n- (void)dealloc\n{\n\t[_local release];\n\t[_remote release];\n\t[_size release];\n\t[_percent release];\n\t[_transferred release];\n\t[super dealloc];\n}\n\n- (void)setLocalFile:(NSString *)local\n{\n\t[_local autorelease];\n\t_local = [local copy];\n}\n\n- (void)setRemoteFile:(NSString *)remote\n{\n\t[_remote autorelease];\n\t_remote = [remote copy];\n}\n\n- (void)setSize:(NSNumber *)size\n{\n\t[_size autorelease];\n\t_size = [size copy];\n}\n\n- (void)setPercentTransferred:(NSNumber *)percent\n{\n\t[_percent autorelease];\n\t_percent = [percent copy];\n}\n\n- (void)setAmountTransferred:(NSNumber *)transferred\n{\n\t[_transferred autorelease];\n\t_transferred = [transferred copy];\n}\n\n- (NSString *)localFile\n{\n\treturn _local;\n}\n\n- (NSString *)remoteFile\n{\n\treturn _remote;\n}\n\n- (NSNumber *)size\n{\n\treturn _size;\n}\n\n- (NSNumber *)percentTransferred\n{\n\tif (_completed)\n\t\treturn [NSNumber numberWithInt:100];\n\treturn _percent;\n}\n\n- (NSNumber *)amountTransferred\n{\n\treturn _transferred;\n}\n\n- (void)setCompleted:(BOOL)flag\n{\n\t_completed = flag;\n}\n\n- (BOOL)isCompleted\n{\n\treturn _completed;\n}\n\n- (void)setType:(TransferType)type\n{\n\t_type = type;\n}\n\n- (TransferType)type\n{\n\treturn _type;\n}\n\n- (NSString *)description\n{\n\tNSMutableString *d = [NSMutableString stringWithString:@\"File Transfer\\n\"];\n\t[d appendFormat:@\"Local File: %@\\n\", _local];\n\t[d appendFormat:@\"Remote File: %@\\n\", _remote];\n  \n\tif (_type == DownloadType)\n\t\t[d appendString:@\"is Download\"];\n\telse if (_type == UploadType)\n\t\t[d appendString:@\"is Upload\"];\n\telse\n\t\t[d appendString:@\"is Delete\"];\n  \n\t[d appendFormat:@\" transfered: %@\\n\", [self amountTransferred]];\n\n  \n\treturn d;\n}\n@end\n"
  },
  {
    "path": "Example/Framework Debug.xcconfig",
    "content": "COPY_PHASE_STRIP = NO\nDYLIB_COMPATIBILITY_VERSION = 1\nDYLIB_CURRENT_VERSION = 1\nFRAMEWORK_VERSION = A\nGCC_DYNAMIC_NO_PIC = NO\nGCC_ENABLE_FIX_AND_CONTINUE = YES\nGCC_ENABLE_OBJC_EXCEPTIONS = YES\nGCC_GENERATE_DEBUGGING_SYMBOLS = YES\nGCC_MODEL_TUNING = G5\nGCC_OPTIMIZATION_LEVEL = 0\nGCC_PRECOMPILE_PREFIX_HEADER = YES\nGCC_PREFIX_HEADER = $(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h\nOTHER_LDFLAGS = -framework Foundation -framework AppKit\nPREBINDING = NO\nPRODUCT_NAME = iMediaBrowser\nSDKROOT = /Developer/SDKs/MacOSX10.4u.sdk\nZERO_LINK = YES\n"
  },
  {
    "path": "Example/Framework Release.xcconfig",
    "content": "ARCHS = ppc i386\nCOPY_PHASE_STRIP = YES\nDYLIB_COMPATIBILITY_VERSION = 1\nDYLIB_CURRENT_VERSION = 1\nFRAMEWORK_VERSION = A\nGCC_ENABLE_FIX_AND_CONTINUE = NO\nGCC_ENABLE_OBJC_EXCEPTIONS = YES\nGCC_GENERATE_DEBUGGING_SYMBOLS = NO\nGCC_MODEL_TUNING = G5\nGCC_PRECOMPILE_PREFIX_HEADER = YES\nGCC_PREFIX_HEADER = $(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h\nOTHER_LDFLAGS = -framework Foundation -framework AppKit\nPREBINDING = NO\nSDKROOT = /Developer/SDKs/MacOSX10.4u.sdk\nZERO_LINK = NO\n"
  },
  {
    "path": "Example/Framework-Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>${EXECUTABLE_NAME}</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>com.dlsxtreme.connection</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundlePackageType</key>\n\t<string>FMWK</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1.0</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/InputDialog.h",
    "content": "/* InputDialog */\n\n#import <Cocoa/Cocoa.h>\n\n@interface InputDialog : NSObject\n{\n    IBOutlet id input;\n    IBOutlet id panel;\n    IBOutlet id title;\n\t\n\tid _del;\n\tSEL _sel;\n}\n- (id)init;\n\n- (IBAction)cancel:(id)sender;\n- (IBAction)ok:(id)sender;\n- (void)setDialogTitle:(NSString *)str;\n\n//must respond to input: receivedValue:\n- (void)beginSheetModalForWindow:(NSWindow *)win delegate:(id)delegate selector:(SEL)sel;\n\n@end\n"
  },
  {
    "path": "Example/InputDialog.m",
    "content": "#import \"InputDialog.h\"\n\n@implementation InputDialog\n\n- (id)init\n{\n\t[super init];\n\t[NSBundle loadNibNamed:@\"InputDialog\" owner:self];\n\treturn self;\n}\n\n- (IBAction)cancel:(id)sender\n{\n\t[panel orderOut:self];\n\t[NSApp endSheet:panel];\n\t[_del performSelector:_sel withObject:nil];\n}\n\n- (IBAction)ok:(id)sender\n{\n\t[panel orderOut:self];\n\t[NSApp endSheet:panel];\n\t\n\t[_del performSelector:_sel withObject:[input stringValue]];\n}\n\n- (void)setDialogTitle:(NSString *)str\n{\n\t[title setStringValue:str];\n}\n\n- (void)beginSheetModalForWindow:(NSWindow *)win delegate:(id)delegate selector:(SEL)sel\n{\n\t_del = delegate;\n\t_sel = sel;\n\t[NSApp beginSheet:panel\n\t   modalForWindow:win\n\t\tmodalDelegate:nil\n\t   didEndSelector:nil\n\t\t  contextInfo:nil];\n}\n@end\n"
  },
  {
    "path": "Example/KTLog Viewer-Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleDocumentTypes</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>CFBundleTypeExtensions</key>\n\t\t\t<array>\n\t\t\t\t<string>ktlog</string>\n\t\t\t</array>\n\t\t\t<key>CFBundleTypeName</key>\n\t\t\t<string>Log File</string>\n\t\t\t<key>CFBundleTypeRole</key>\n\t\t\t<string>Viewer</string>\n\t\t\t<key>LSTypeIsPackage</key>\n\t\t\t<false/>\n\t\t\t<key>NSPersistentStoreTypeKey</key>\n\t\t\t<string>Binary</string>\n\t\t</dict>\n\t</array>\n\t<key>CFBundleExecutable</key>\n\t<string>${EXECUTABLE_NAME}</string>\n\t<key>CFBundleIconFile</key>\n\t<string>Logs</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>com.utr-software.KTLogViewer</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundlePackageType</key>\n\t<string>APPL</string>\n\t<key>CFBundleSignature</key>\n\t<string>ktlV</string>\n\t<key>CFBundleVersion</key>\n\t<string>1.0</string>\n\t<key>NSMainNibFile</key>\n\t<string>KTLogViewer</string>\n\t<key>NSPrincipalClass</key>\n\t<string>NSApplication</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/KTLogController.h",
    "content": "/* KTLogController */\n\n#import <Cocoa/Cocoa.h>\n\n@interface KTLogController : NSObject\n{\n    IBOutlet NSTableView *oTable;\n    IBOutlet NSWindow *oWindow;\n\t\n\tNSArray *myEntries;\n}\n@end\n"
  },
  {
    "path": "Example/KTLogController.m",
    "content": "#import \"KTLogController.h\"\n#import \"KTLog.h\"\n\n@interface KTLogLevelTransformer : NSValueTransformer\n{\n\t\n}\n@end\n\n@interface NSStringToAttributedString : NSValueTransformer\n{\n\t\n}\n@end\n\n@implementation KTLogController\n\n+ (void)initialize\n{\n\t[NSValueTransformer setValueTransformer:[[[KTLogLevelTransformer alloc] init] autorelease]\n\t\t\t\t\t\t\t\t\tforName:@\"KTLogLevelTransformer\"];\n\t[NSValueTransformer setValueTransformer:[[[NSStringToAttributedString alloc] init] autorelease]\n\t\t\t\t\t\t\t\t\tforName:@\"NSStringToAttributedString\"];\n}\n\n- (void)awakeFromNib\n{\n\tNSString *log = [[NSUserDefaults standardUserDefaults] objectForKey:@\"LastOpened\"];\n\tif (log && [[NSFileManager defaultManager] fileExistsAtPath:log])\n\t{\n\t\t[self willChangeValueForKey:@\"entries\"];\n\t\tmyEntries = [[KTLogger entriesWithLogFile:log] retain];\n\t\t[self didChangeValueForKey:@\"entries\"];\n\t}\n\t\n\t[[[oTable tableColumnWithIdentifier:@\"f\"] dataCell] setLineBreakMode: NSLineBreakByTruncatingHead];\n}\n\n- (NSArray *)entries\n{\n\treturn myEntries;\n}\n\n- (void)open:(id)sender\n{\n\tNSOpenPanel *op = [NSOpenPanel openPanel];\n\t\n\t[op beginSheetForDirectory:nil\n\t\t\t\t\t\t  file:nil\n\t\t\t\t\t\t types:[NSArray arrayWithObject:@\"ktlog\"]\n\t\t\t\tmodalForWindow:oWindow\n\t\t\t\t modalDelegate:self\n\t\t\t\tdidEndSelector:@selector(open:rc:ci:) \n\t\t\t\t   contextInfo:nil];\n}\n\n- (void)open:(NSOpenPanel *)op rc:(int)rc ci:(id)ci\n{\n\tif (rc == NSOKButton)\n\t{\n\t\t[myEntries autorelease];\n\t\t[self willChangeValueForKey:@\"entries\"];\n\t\tmyEntries = [[KTLogger entriesWithLogFile:[op filename]] retain];\n\t\t[self didChangeValueForKey:@\"entries\"];\n\t\t\n\t\t[[NSUserDefaults standardUserDefaults] setObject:[op filename] forKey:@\"LastOpened\"];\n\t\t[[NSUserDefaults standardUserDefaults] synchronize];\n\t}\n}\n\n@end\n\n@implementation NSStringToAttributedString\n\n+ (BOOL)allowsReverseTransformation { return NO; }\n\n- (id)transformedValue:(id)value \n{\n\treturn [[[NSAttributedString alloc] initWithString:value] autorelease];\n}\n\n@end\n\n@implementation KTLogLevelTransformer\n\n+ (BOOL)allowsReverseTransformation { return NO; }\n\n- (id)transformedValue:(id)value \n{\n\treturn [[[KTLogger sharedLogger] levelNames] objectAtIndex:[value intValue]];\n}\n\n@end\n"
  },
  {
    "path": "Example/ONBSSLContext.h",
    "content": "// This code derives from Aaron Jacobs's OneButton Socket, which was\n// at the time of writing normally licensed under the terms of the\n// GNU General Public License.  You can find the \"standard\" version\n// in the CVS repository of OneButton FTP (www.onebutton.org).\n//\n// The SPECIFIC INCARNATION of OneButton Socket upon which this\n// code is based was specially distributed to Greg Hulands on 2006-01-05\n// under the terms of a modified BSD-style license rather than the GPL.\n// This does not indicate that any other version of OneButton Socket\n// is or will be distributed under any license but the GPL.\n\n/*\n * Copyright (c) 2005, Aaron Jacobs.\n * All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n *     * Redistributions of source code must retain the above two paragraph\n *       note about licensing of OneButton Socket, the above copyright notice,\n *       this list of conditions and the following disclaimer.\n *     * Redistributions in binary form must reproduce the above copyright\n *       notice, this list of conditions and the following disclaimer in the\n *       documentation and/or other materials provided with the distribution.\n *     * Neither the name of Aaron Jacobs nor the names of OneButton Socket or\n *       OneButton FTP may be used to endorse or promote products derived from\n *       this software without specific prior written permission from Aaron Jacobs.\n *\n * THIS SOFTWARE IS PROVIDED BY AARON JACOBS \"AS IS\" AND ANY EXPRESS OR IMPLIED\n * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL AARON JACOBS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT\n * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\n * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY\n * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH\n * DAMAGE.\n */\n\n#import <Cocoa/Cocoa.h>\n#import <Security/SecureTransport.h>\n\n@class ONBSSLIdentity;\n\n@interface ONBSSLContext : NSObject\n{\n\tSSLContextRef\t\tONB_sslContext;\n\t\n\tNSMutableData\t\t*ONB_inputData;\n\tNSMutableData\t\t*ONB_outputData;\n\t\n\tBOOL\t\t\t\tONB_verifySSLCerts;\n\tONBSSLIdentity\t\t*ONB_sslIdentity;\n\tBOOL\t\t\t\tONB_sslServerMode;\n}\n\n// Should certificates be verified against known root certificates?  Turn this off if\n// you have self-signed or unsigned certificates.  The default is YES.  Note that\n// not verifying certificates removes a significant layer of security from SSL.\n// Must be set before starting a handshake.\n- (BOOL)verifySSLCertificates;\n- (void)setVerifySSLCertificates:(BOOL)verifySSLCertificates;\n\n// The SSL identity that should be used in the SSL session.  This is required for\n// SSL server mode.  Note that at this time it seems as if only RSA certificates work.\n// Must be set before starting a handshake.\n- (ONBSSLIdentity *)sslIdentity;\n- (void)setSSLIdentity:(ONBSSLIdentity *)sslIdentity;\n\n// Should the socket operate in SSL server mode or client mode?  The default is client\n// mode (NO).  If you change this to YES, you must also call setSSLCertificates:.\n// Must be set before starting a handshake.\n- (BOOL)sslServerMode;\n- (void)setSSLServerMode:(BOOL)sslServerMode;\n\n// Perform a handshake.  inputData should be filled with data read from the socket\n// and outputData should be empty.  When the method is done, inputData will contain\n// any unused data and outputData will contain any data that needs to be written to\n// the socket.  Returns 0 if it needs to be called back when more input data arrives\n// and 1 if the handshake has completed.  Returns a negative error code on error.\n- (int)handshakeWithInputData:(NSMutableData *)inputData\n\t\t\t\t\toutputData:(NSMutableData *)outputData;\n\n// Encrypt data to be written to the socket.  Data will be taken from inputData (which\n// should contain raw bytes from the socket) if any needs to be read in the process of\n// the encryption.\n- (NSData *)encryptData:(NSData *)data inputData:(NSMutableData *)inputData;\n\n// Decrypt data read from the socket.  If not all of the data could be decrypted at\n// the moment, the unused data will be left in the data object.  Data will be added\n// to outputData if any needs to be written in the process of the decryption.\n- (NSData *)decryptData:(NSMutableData *)data outputData:(NSMutableData *)outputData;\n\n@end"
  },
  {
    "path": "Example/ONBSSLContext.m",
    "content": "// This code derives from Aaron Jacobs's OneButton Socket, which was\n// at the time of writing normally licensed under the terms of the\n// GNU General Public License.  You can find the \"standard\" version\n// in the CVS repository of OneButton FTP (www.onebutton.org).\n//\n// The SPECIFIC INCARNATION of OneButton Socket upon which this\n// code is based was specially distributed to Greg Hulands on 2006-01-05\n// under the terms of a modified BSD-style license rather than the GPL.\n// This does not indicate that any other version of OneButton Socket\n// is or will be distributed under any license but the GPL.\n\n/*\n * Copyright (c) 2005, Aaron Jacobs.\n * All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n *     * Redistributions of source code must retain the above two paragraph\n *       note about licensing of OneButton Socket, the above copyright notice,\n *       this list of conditions and the following disclaimer.\n *     * Redistributions in binary form must reproduce the above copyright\n *       notice, this list of conditions and the following disclaimer in the\n *       documentation and/or other materials provided with the distribution.\n *     * Neither the name of Aaron Jacobs nor the names of OneButton Socket or\n *       OneButton FTP may be used to endorse or promote products derived from\n *       this software without specific prior written permission from Aaron Jacobs.\n *\n * THIS SOFTWARE IS PROVIDED BY AARON JACOBS \"AS IS\" AND ANY EXPRESS OR IMPLIED\n * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL AARON JACOBS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT\n * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\n * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY\n * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH\n * DAMAGE.\n */\n\n#import \"ONBSSLContext.h\"\n#import \"ONBSSLIdentity.h\"\n\n@interface ONBSSLContext ( ONBSSLContextPrivateMethods )\n\n- (OSStatus)ONB_handleSSLReadToData:(void *)data size:(size_t *)size;\n- (OSStatus)ONB_handleSSLWriteFromData:(const void *)data size:(size_t *)size;\n\n@end\n\nOSStatus SSLReadFunction(SSLConnectionRef connection, void *data, size_t *dataLength)\n{\n\treturn [(ONBSSLContext *)connection ONB_handleSSLReadToData:data size:dataLength];\n}\n\nOSStatus SSLWriteFunction(SSLConnectionRef connection, const void *data, size_t *dataLength)\n{\n\treturn [(ONBSSLContext *)connection ONB_handleSSLWriteFromData:data size:dataLength];\n}\n\n@implementation ONBSSLContext\n\n-  (id)init\n{\n\tif (! (self = [super init]))\n\t\treturn nil;\n\t\n\t[self setSSLIdentity:nil];\n\t\n\treturn self;\n}\n\n- (void)dealloc\n{\n\t[self setSSLIdentity:nil];\n\t[super dealloc];\n}\n\n- (int)handshakeWithInputData:(NSMutableData *)inputData\n\t\t\t\t\toutputData:(NSMutableData *)outputData\n{\n\tint ret;\n\n\t// If we haven't yet set up the SSL context, we should do so now.\n\tif (! ONB_sslContext)\n\t{\n\t\tif (ret = SSLNewContext((Boolean)[self sslServerMode], &ONB_sslContext))\n\t\t{\n\t\t\tNSLog(@\"Error creating new context\");\n\t\t\treturn ret;\n\t\t}\n\t\t\n\t\tif (ret = SSLSetIOFuncs(ONB_sslContext, SSLReadFunction, SSLWriteFunction))\n\t\t{\n\t\t\tNSLog(@\"Error setting IO Functions\");\n\t\t\treturn ret;\n\t\t}\n\t\t\n\t\tif (ret = SSLSetConnection(ONB_sslContext, self))\n\t\t{\n\t\t\tNSLog(@\"Error setting connection\");\n\t\t\treturn ret;\n\t\t}\n\t\t\n\t\tif (ret = SSLSetEnableCertVerify(ONB_sslContext, (Boolean)[self verifySSLCertificates]))\n\t\t{\n\t\t\tNSLog(@\"Error calling SSLSetEnableCertVerify\");\n\t\t\treturn ret;\n\t\t}\n\t\t\n\t\tSecIdentityRef identity = [[self sslIdentity] identityRef];\n\t\tif (identity || [self sslServerMode])\n\t\t{\n\t\t\tCFArrayRef certificates = CFArrayCreate(kCFAllocatorDefault,\n\t\t\t\t\t\t\t\t\t\t\t\t\t(const void **)&identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tidentity ? 1 : 0,\n\t\t\t\t\t\t\t\t\t\t\t\t\tNULL);\n\t\t\t\n\t\t\tret = SSLSetCertificate(ONB_sslContext, certificates);\n\t\t\tCFRelease(certificates);\n\t\t\t\n\t\t\tif (ret)\n\t\t\t{\n\t\t\t\tNSLog(@\"Error setting certificates: %d\", ret);\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t\telse\n\t\t\t\tNSLog(@\"Set up certificates\");\n\t\t}\n\t}\n\t\n\tONB_inputData = inputData;\n\tONB_outputData = outputData;\n\tret = SSLHandshake(ONB_sslContext);\n\t\n\tif (ret == errSSLWouldBlock)\n\t\treturn 0;\n\t\n\tif (! ret)\n\t\treturn 1;\n\t\n\treturn ret;\n}\n\n- (NSData *)encryptData:(NSData *)data inputData:(NSMutableData *)inputData\n{\n\tif ((! data) || (! [data length]))\n\t\treturn [NSData data];\n\n\tONB_inputData = inputData;\n\tONB_outputData = [NSMutableData dataWithCapacity:2*[data length]];\n\tunsigned int totalLength = [data length];\n\tunsigned int processed = 0;\n\tconst void *buffer = [data bytes];\n\t\n\twhile (processed < totalLength)\n\t{\n\t\tsize_t written = 0;\n\t\t\n\t\tint ret;\n\t\tif (ret = SSLWrite(ONB_sslContext, buffer + processed, totalLength - processed, &written))\n\t\t\treturn nil;\n\n\t\tprocessed += written;\n\t}\n\t\n\treturn [NSData dataWithData:ONB_outputData];\n}\n\n- (NSData *)decryptData:(NSMutableData *)data outputData:(NSMutableData *)outputData\n{\n\tif ((! data) || (! [data length]))\n\t\treturn [NSData data];\n\t\n\tONB_inputData = data;\n\tONB_outputData = outputData;\n\tNSMutableData *decryptedData = [NSMutableData dataWithCapacity:[data length]];\n\tint ret = 0;\n\t\n\twhile (! ret)\n\t{\n\t\tsize_t read = 0;\n\t\tchar buf[1024];\n\t\t\n\t\tret = SSLRead(ONB_sslContext, buf, 1024, &read);\n\t\tif (ret && (ret != errSSLWouldBlock) && (ret != errSSLClosedGraceful))\n\t\t{\n\t\t\tNSLog(@\"Error in SSLRead: %d\", ret);\n\t\t\treturn nil;\n\t\t}\n\t\t\n\t\t[decryptedData appendBytes:buf length:read];\n\t}\n\t\n\treturn [NSData dataWithData:decryptedData];\n}\n\n- (BOOL)verifySSLCertificates\n{\n\treturn ONB_verifySSLCerts;\n}\n\n- (void)setVerifySSLCertificates:(BOOL)verifySSLCertificates\n{\n\tONB_verifySSLCerts = verifySSLCertificates;\n}\n\n- (ONBSSLIdentity *)sslIdentity\n{\n\treturn ONB_sslIdentity;\n}\n\n- (BOOL)sslServerMode\n{\n\treturn ONB_sslServerMode;\n}\n\n- (void)setSSLServerMode:(BOOL)sslServerMode\n{\n\tONB_sslServerMode = sslServerMode;\n}\n\n- (void)setSSLIdentity:(ONBSSLIdentity *)sslIdentity\n{\n\t[ONB_sslIdentity autorelease];\n\tONB_sslIdentity = [sslIdentity retain];\n}\n\n- (OSStatus)ONB_handleSSLWriteFromData:(const void *)data size:(size_t *)size\n{\n\t[ONB_outputData appendBytes:data length:*size];\n\treturn noErr;\n}\n\n- (OSStatus)ONB_handleSSLReadToData:(void *)data size:(size_t *)size\n{\n\tsize_t askedSize = *size;\n\t*size = MIN(askedSize, [ONB_inputData length]);\n\tif (! *size)\n\t{\n\t\treturn errSSLWouldBlock;\n\t}\n\t\n\tNSRange byteRange = NSMakeRange(0, *size);\n\t[ONB_inputData getBytes:data range:byteRange];\n\t[ONB_inputData replaceBytesInRange:byteRange withBytes:NULL length:0];\n\t\n\tif (askedSize > *size)\n\t\treturn errSSLWouldBlock;\n\t\n\treturn noErr;\n}\n\n@end"
  },
  {
    "path": "Example/ONBSSLIdentity.h",
    "content": "// This code derives from Aaron Jacobs's OneButton Socket, which was\n// at the time of writing normally licensed under the terms of the\n// GNU General Public License.  You can find the \"standard\" version\n// in the CVS repository of OneButton FTP (www.onebutton.org).\n//\n// The SPECIFIC INCARNATION of OneButton Socket upon which this\n// code is based was specially distributed to Greg Hulands on 2006-01-05\n// under the terms of a modified BSD-style license rather than the GPL.\n// This does not indicate that any other version of OneButton Socket\n// is or will be distributed under any license but the GPL.\n\n/*\n * Copyright (c) 2005, Aaron Jacobs.\n * All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n *     * Redistributions of source code must retain the above two paragraph\n *       note about licensing of OneButton Socket, the above copyright notice,\n *       this list of conditions and the following disclaimer.\n *     * Redistributions in binary form must reproduce the above copyright\n *       notice, this list of conditions and the following disclaimer in the\n *       documentation and/or other materials provided with the distribution.\n *     * Neither the name of Aaron Jacobs nor the names of OneButton Socket or\n *       OneButton FTP may be used to endorse or promote products derived from\n *       this software without specific prior written permission from Aaron Jacobs.\n *\n * THIS SOFTWARE IS PROVIDED BY AARON JACOBS \"AS IS\" AND ANY EXPRESS OR IMPLIED\n * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL AARON JACOBS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT\n * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\n * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY\n * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH\n * DAMAGE.\n */\n\n#import <Cocoa/Cocoa.h>\n#import <Security/Security.h>\n\n@interface ONBSSLIdentity : NSObject\n{\n\tSecIdentityRef\t\tONB_identity;\n}\n\n// Calls defaultSSLIdentityFromKeychain: with an argument of nil.\n+ (ONBSSLIdentity *)defaultSSLIdentity;\n\n// Returns the first SSL identity from the given keychain (or the default keychain\n// if nil is given).  Returns nil if no such identity could be found.  You need only\n// specify the keychain's filename, e.g. \"login.keychain\".\n+ (ONBSSLIdentity *)defaultSSLIdentityInKeychain:(NSString *)keychainName;\n\n// Designated initializer\n- (id)initWithIdentityRef:(SecIdentityRef)identityRef;\n\n// It is your responsibility to retain this if you need it.\n- (SecIdentityRef)identityRef;\n\n@end"
  },
  {
    "path": "Example/ONBSSLIdentity.m",
    "content": "// This code derives from Aaron Jacobs's OneButton Socket, which was\n// at the time of writing normally licensed under the terms of the\n// GNU General Public License.  You can find the \"standard\" version\n// in the CVS repository of OneButton FTP (www.onebutton.org).\n//\n// The SPECIFIC INCARNATION of OneButton Socket upon which this\n// code is based was specially distributed to Greg Hulands on 2006-01-05\n// under the terms of a modified BSD-style license rather than the GPL.\n// This does not indicate that any other version of OneButton Socket\n// is or will be distributed under any license but the GPL.\n\n/*\n * Copyright (c) 2005, Aaron Jacobs.\n * All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n *     * Redistributions of source code must retain the above two paragraph\n *       note about licensing of OneButton Socket, the above copyright notice,\n *       this list of conditions and the following disclaimer.\n *     * Redistributions in binary form must reproduce the above copyright\n *       notice, this list of conditions and the following disclaimer in the\n *       documentation and/or other materials provided with the distribution.\n *     * Neither the name of Aaron Jacobs nor the names of OneButton Socket or\n *       OneButton FTP may be used to endorse or promote products derived from\n *       this software without specific prior written permission from Aaron Jacobs.\n *\n * THIS SOFTWARE IS PROVIDED BY AARON JACOBS \"AS IS\" AND ANY EXPRESS OR IMPLIED\n * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n * EVENT SHALL AARON JACOBS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT\n * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\n * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY\n * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH\n * DAMAGE.\n */\n\n#import \"ONBSSLIdentity.h\"\n\n@implementation ONBSSLIdentity\n\n- (id)init\n{\n\treturn [self initWithIdentityRef:nil];\n}\n\n- (id)initWithIdentityRef:(SecIdentityRef)identityRef\n{\n\tif (! (self = [super init]))\n\t\treturn nil;\n\n\tONB_identity = identityRef;\n\tCFRetain(ONB_identity);\n\t\n\treturn self;\n}\n\n- (void)dealloc\n{\n\tCFRelease(ONB_identity);\n\t[super dealloc];\n}\n\n+ (ONBSSLIdentity *)defaultSSLIdentity\n{\n\treturn [self defaultSSLIdentityInKeychain:nil];\n}\n\n+ (ONBSSLIdentity *)defaultSSLIdentityInKeychain:(NSString *)keychainName\n{\n\tSecKeychainRef keychainRef = nil;\n\t\n\t// If no keychain name was specified, use the default keychain.\n\tif (keychainName)\n\t{\n\t\tNSString *keychainsDirectory = [NSHomeDirectory() stringByAppendingPathComponent:@\"Library/Keychains\"];\n\t\tNSString *fullPath = [keychainsDirectory stringByAppendingPathComponent:keychainName];\n\t\t\n\t\tif (SecKeychainOpen([fullPath UTF8String], &keychainRef))\n\t\t{\n\t\t\tNSLog(@\"Unable to open keychain\");\n\t\t\treturn nil;\n\t\t}\n\t}\n\t\n\telse if (SecKeychainCopyDefault(&keychainRef))\n\t{\n\t\t\tNSLog(@\"Unable to get default keychain\");\n\t\t\treturn nil;\n\t}\n\t\n\tSecIdentitySearchRef searchRef = nil;\n\tif (SecIdentitySearchCreate(keychainRef, CSSM_KEYUSE_SIGN, &searchRef))\n\t{\n\t\tNSLog(@\"Unable to create keychain search\");\n\t\tCFRelease(keychainRef);\n\t\treturn nil;\n\t}\n\t\n\tSecIdentityRef identityRef = nil;\n\tif (SecIdentitySearchCopyNext(searchRef, &identityRef))\n\t{\n\t\tNSLog(@\"Unable to get next search result\");\n\t\tCFRelease(keychainRef);\n\t\tCFRelease(searchRef);\n\t\treturn nil;\n\t}\n\t\n\tONBSSLIdentity *sslIdentity = [[[ONBSSLIdentity alloc] initWithIdentityRef:identityRef] autorelease];\n\t\n\tCFRelease(keychainRef);\n\tCFRelease(searchRef);\n\tCFRelease(identityRef);\n\t\n\treturn sslIdentity;\n}\n\n- (SecIdentityRef)identityRef\n{\n\treturn ONB_identity;\n}\n\n@end"
  },
  {
    "path": "Example/PermissionsController.h",
    "content": "/* PermissionsController */\n\n#import <Cocoa/Cocoa.h>\n\n@interface PermissionsController : NSObject\n{\n    IBOutlet id ge;\n    IBOutlet id gr;\n    IBOutlet id gw;\n    IBOutlet id ue;\n    IBOutlet id ur;\n    IBOutlet id uw;\n    IBOutlet id we;\n    IBOutlet id window;\n    IBOutlet id wr;\n    IBOutlet id ww;\n\t\n\tBOOL _needsUpdating;\n\tid _con;\n}\n+ (id)sharedPermissions;\n\n- (void)displayFile:(NSMutableDictionary *)file sheet:(NSWindow *)win connection:(id)con;\n\n- (IBAction)attribsChanged:(id)sender;\n- (IBAction)cancel:(id)sender;\n- (IBAction)save:(id)sender;\n@end\n"
  },
  {
    "path": "Example/PermissionsController.m",
    "content": "#import \"PermissionsController.h\"\n\nstatic PermissionsController *_shared = nil;\n\n@implementation PermissionsController\n\n- (id)init\n{\n\t[super init];\n\t[NSBundle loadNibNamed:@\"Permissions\" owner:self];\n\treturn self;\n}\n\n+ (id)sharedPermissions\n{\n\tif (!_shared)\n\t\t_shared = [[PermissionsController alloc] init];\n\treturn _shared;\n}\n\n- (void)displayFile:(NSMutableDictionary *)file sheet:(NSWindow *)win connection:(id)con\n{\n\t_con = con;\n\t\n\tNSNumber *posix = [file objectForKey:NSFilePosixPermissions];\n\tNSLog(@\"%@: %@\", NSStringFromSelector(_cmd), posix);\n\t\n\t[NSApp beginSheet:window\n\t   modalForWindow:win\n\t\tmodalDelegate:nil\n\t   didEndSelector:nil\n\t\t  contextInfo:nil];\n}\n\n- (IBAction)attribsChanged:(id)sender\n{\n\t_needsUpdating = YES;\n}\n\n- (IBAction)cancel:(id)sender\n{\n\t[window orderOut:self];\n\t[NSApp endSheet:window];\n}\n\n- (IBAction)save:(id)sender\n{\n\tif (_needsUpdating)\n\t{\n\t//\t[_con setPermissions: forFile:];\n\t}\n\t[self cancel:self];\n}\n\n@end\n"
  },
  {
    "path": "Example/ProgressCell.h",
    "content": "//\n//  ProgressCell.h\n//  FTPConnection\n//\n//  Created by Greg Hulands on 3/12/04.\n//  Copyright 2004 __MyCompanyName__. All rights reserved.\n//\n\n#import <Cocoa/Cocoa.h>\n\n\n@interface ProgressCell : NSCell \n{\n}\n\n\n@end\n"
  },
  {
    "path": "Example/ProgressCell.m",
    "content": "//\n//  ProgressCell.m\n//  FTPConnection\n//\n//  Created by Greg Hulands on 3/12/04.\n//  Copyright 2004 __MyCompanyName__. All rights reserved.\n//\n\n#import \"ProgressCell.h\"\n\n\n@implementation ProgressCell\n\n- (id)initTextCell:(NSString *)txt\n{\n\t[super initTextCell:txt];\n\t[self setObjectValue:[NSNumber numberWithInt:-1]];\n\treturn self;\n}\n\n- (void)setObjectValue:(id)obj\n{\n\t[super setObjectValue:obj];\n}\n\n- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView\n{\n\tCGFloat percent = [[self objectValue] intValue] / 100.0;\n\t\n\tif (percent < 0 || percent >= 1)\n\t{\t\t\n\t\tif (percent < 0)\n\t\t{\t\n\t\t\tNSString *str = nil;\n\t\t\tif (percent == -1.0)\n\t\t\t{\n\t\t\t\tstr = [NSString stringWithString:@\"Waiting...\"];\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tstr = [NSString stringWithString:@\"Cancelled...\"];\n\t\t\t}\n\t\t\t\n\t\t\tNSDictionary *attribs = [NSDictionary dictionaryWithObjectsAndKeys:nil];\n\t\t\tNSSize size = [str sizeWithAttributes:attribs];\n\t\t\tNSRect centered = NSMakeRect(NSMidX(cellFrame) - (size.width/2), \n\t\t\t\t\t\t\t\t\t\t NSMidY(cellFrame) - (size.height / 2),\n\t\t\t\t\t\t\t\t\t\t NSWidth(cellFrame),\n\t\t\t\t\t\t\t\t\t\t size.height);\n\t\t\t[str drawInRect:centered withAttributes:attribs];\n\t\t}\n\t\telse\n\t\t{\n\t\t\tNSString *str = [NSString stringWithString:@\"Finished\"];\n\t\t\tNSDictionary *attribs = [NSDictionary dictionaryWithObjectsAndKeys:nil];\n\t\t\tNSSize size = [str sizeWithAttributes:attribs];\n\t\t\tNSRect centered = NSMakeRect(NSMidX(cellFrame) - (size.width/2), \n\t\t\t\t\t\t\t\t\t\t NSMidY(cellFrame) - (size.height / 2),\n\t\t\t\t\t\t\t\t\t\t NSWidth(cellFrame),\n\t\t\t\t\t\t\t\t\t\t size.height);\n\t\t\t[str drawInRect:centered withAttributes:attribs];\n\t\t}\n\t}\n\telse\n\t{\n\t\t[[NSColor colorWithCalibratedRed:164.0/256.0 green:106.0/256.0 blue:255.0/256.0 alpha:1.0] set];\n\t\tNSRectFill(NSMakeRect(NSMinX(cellFrame),NSMinY(cellFrame),percent * NSWidth(cellFrame),NSHeight(cellFrame)));\n\t\t[[NSColor colorWithCalibratedRed:129.0/256.0 green:84.0/256.0 blue:201.0/256.0 alpha:1.0] set];\n\t\tNSFrameRect(cellFrame);\n\t}\n\t\n}\n\n@end\n"
  },
  {
    "path": "Example/README",
    "content": "Notes on Using the Connection Framework\n\nDependencies:\n\n\n"
  },
  {
    "path": "Example/ReleaseNotes.txt",
    "content": "Connection Framework version 3 Release Notes\n\nThere have been quite a few changes to the API so take note when moving to this version. This is mainly in the arguments passed back in the upload/download of the delegate methods.\n\nWhat's New\n\n1. FTP can now connect to hosts that have multiple DNS names.\n2. FTP has been fully tested.\n3. SFTP support has been added.\n4. WebDav and .Mac support has been added.\n5. File Connection.\n6. New class heirachy. AbstractQueueConnection and StreamBasedConnection makes writing a new connection class very easy. If subclassing from StreamBasedConnection all background threading issues are handled for you and all you have to do is create a state machine for the sending and receiving of commands. If your connection is not state based, then it is suggested not to subclass AbstractConnection, but rather implement the protocol.\n7. Sample application has had more of the delegate methods implemented and better upload/download support.\n\nAll feedback is appreciated. ghulands@framedphotographics.com\n\n"
  },
  {
    "path": "Example/UKKQueue_Symbols",
    "content": "_UKFileWatcherRenameNotification\n_UKFileWatcherLinkCountChangeNotification\n_UKFileWatcherDeleteNotification\n_UKFileWatcherAccessRevocationNotification\n_UKFileWatcherWriteNotification\n_UKFileWatcherAttributeChangeNotification\n_UKFileWatcherSizeIncreaseNotification\n.objc_class_name_UKFNSubscribeFileWatcher\n_UKFileSubscriptionProc\n.objc_class_name_UKKQueue\n.objc_category_name_NSObject_UKMainThreadProxy\n.objc_class_name_UKMainThreadProxy\n"
  },
  {
    "path": "Example/channel.c",
    "content": "/* Copyright (c) 2004-2006, Sara Golemon <sarag@libssh2.org>\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms,\n * with or without modification, are permitted provided\n * that the following conditions are met:\n *\n *   Redistributions of source code must retain the above\n *   copyright notice, this list of conditions and the\n *   following disclaimer.\n *\n *   Redistributions in binary form must reproduce the above\n *   copyright notice, this list of conditions and the following\n *   disclaimer in the documentation and/or other materials\n *   provided with the distribution.\n *\n *   Neither the name of the copyright holder nor the names\n *   of any other contributors may be used to endorse or\n *   promote products derived from this software without\n *   specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND\n * CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES,\n * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE\n * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY\n * OF SUCH DAMAGE.\n */\n\n#include \"libssh2_priv.h\"\n#ifndef WIN32\n#include <unistd.h>\n#endif\n\n/* {{{ libssh2_channel_nextid\n * Determine the next channel ID we can use at our end\n */\nunsigned long libssh2_channel_nextid(LIBSSH2_SESSION *session)\n{\n\tunsigned long id = session->next_channel;\n\tLIBSSH2_CHANNEL *channel;\n\n\tchannel = session->channels.head;\n\n\twhile (channel) {\n\t\tif (channel->local.id > id) {\n\t\t\tid = channel->local.id;\n\t\t}\n\t\tchannel = channel->next;\n\t}\n\n\t/* This is a shortcut to avoid waiting for close packets on channels we've forgotten about,\n\t * This *could* be a problem if we request and close 4 billion or so channels in too rapid succession\n\t * for the remote end to respond, but the worst case scenario is that some data meant for another channel\n\t * Gets picked up by the new one.... Pretty unlikely all told...\n\t */\n\tsession->next_channel = id + 1;\n#ifdef LIBSSH2_DEBUG_CONNECTION\n\t_libssh2_debug(session, LIBSSH2_DBG_CONN, \"Allocated new channel ID#%lu\", id);\n#endif\n\treturn id;\n}\n/* }}} */\n\n/* {{{ libssh2_channel_locate\n * Locate a channel pointer by number\n */\nLIBSSH2_CHANNEL *libssh2_channel_locate(LIBSSH2_SESSION *session, unsigned long channel_id)\n{\n\tLIBSSH2_CHANNEL *channel = session->channels.head;\n\twhile (channel) {\n\t\tif (channel->local.id == channel_id) {\n\t\t\treturn channel;\n\t\t}\n\t\tchannel = channel->next;\n\t}\n\n\treturn NULL;\n}\n/* }}} */\n\n#define libssh2_channel_add(session, channel)\t\\\n{\t\\\n\tif ((session)->channels.tail) {\t\\\n\t\t(session)->channels.tail->next = (channel);\t\\\n\t\t(channel)->prev = (session)->channels.tail;\t\\\n\t} else {\t\\\n\t\t(session)->channels.head = (channel);\t\\\n\t\t(channel)->prev = NULL;\t\\\n\t}\t\\\n\t(channel)->next = NULL;\t\\\n\t(session)->channels.tail = (channel);\t\\\n\t(channel)->session = (session); \\\n}\n\n/* {{{ libssh2_channel_open_session\n * Establish a generic session channel\n */\nLIBSSH2_API LIBSSH2_CHANNEL *libssh2_channel_open_ex(LIBSSH2_SESSION *session, const char *channel_type, unsigned int channel_type_len, unsigned int window_size, \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   unsigned int packet_size, const char *message, unsigned int message_len)\n{\n\tunsigned char reply_codes[3] = { SSH_MSG_CHANNEL_OPEN_CONFIRMATION, SSH_MSG_CHANNEL_OPEN_FAILURE, 0 };\n\tLIBSSH2_CHANNEL *channel = NULL;\n\tunsigned long local_channel = libssh2_channel_nextid(session);\n\tunsigned char *s, *packet = NULL;\n\tunsigned long packet_len = channel_type_len + message_len + 17; /* packet_type(1) + channel_type_len(4) + sender_channel(4) +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   window_size(4) + packet_size(4) */\n\tunsigned char *data = NULL;\n\tunsigned long data_len;\n\n#ifdef LIBSSH2_DEBUG_CONNECTION\n\t_libssh2_debug(session, LIBSSH2_DBG_CONN, \"Opening Channel - win %d pack %d\", window_size, packet_size);\n#endif\n\tchannel = LIBSSH2_ALLOC(session, sizeof(LIBSSH2_CHANNEL));\n\tif (!channel) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate space for channel data\", 0);\n\t\treturn NULL;\n\t}\n\tmemset(channel, 0, sizeof(LIBSSH2_CHANNEL));\n\n\tchannel->channel_type_len\t= channel_type_len;\n\tchannel->channel_type\t\t= LIBSSH2_ALLOC(session, channel_type_len);\n\tif (!channel->channel_type) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Failed allocating memory for channel type name\", 0);\n\t\tLIBSSH2_FREE(session, channel);\n\t\treturn NULL;\n\t}\n\tmemcpy(channel->channel_type, channel_type, channel_type_len);\n\n\t/* REMEMBER: local as in locally sourced */\n\tchannel->local.id\t\t\t\t\t= local_channel;\n\tchannel->remote.window_size \t\t= window_size;\n\tchannel->remote.window_size_initial\t= window_size;\n\tchannel->remote.packet_size \t\t= packet_size;\n\n\tlibssh2_channel_add(session, channel);\n\n\ts = packet = LIBSSH2_ALLOC(session, packet_len);\n\tif (!packet) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate temporary space for packet\", 0);\n\t\treturn NULL;\n\t}\n\t*(s++) = SSH_MSG_CHANNEL_OPEN;\n\tlibssh2_htonu32(s, channel_type_len);\t\t\t\ts += 4;\n\tmemcpy(s, channel_type, channel_type_len);\t\t\ts += channel_type_len;\n\n\tlibssh2_htonu32(s, local_channel);\t\t\t\t\ts += 4;\n\tlibssh2_htonu32(s, window_size);\t\t\t\t\ts += 4;\n\tlibssh2_htonu32(s, packet_size);\t\t\t\t\ts += 4;\n\n\tif (message && message_len) {\n\t\tmemcpy(s, message, message_len);\t\t\t\ts += message_len;\n\t}\n\n\tif (libssh2_packet_write(session, packet, packet_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send channel-open request\", 0);\n\t\tgoto channel_error;\n\t}\n\n\tif (libssh2_packet_requirev_ex(session, reply_codes, &data, &data_len, 1, packet + 5 + channel_type_len, 4)) {\n\t\tgoto channel_error;\n\t}\n\n\tif (data[0] == SSH_MSG_CHANNEL_OPEN_CONFIRMATION) {\n\t\tchannel->remote.id\t\t\t\t\t= libssh2_ntohu32(data + 5);\n\t\tchannel->local.window_size\t\t\t= libssh2_ntohu32(data + 9);\n\t\tchannel->local.window_size_initial\t= libssh2_ntohu32(data + 9);\n\t\tchannel->local.packet_size\t\t\t= libssh2_ntohu32(data + 13);\n#ifdef LIBSSH2_DEBUG_CONNECTION\n\t\t_libssh2_debug(session, LIBSSH2_DBG_CONN, \"Connection Established - ID: %lu/%lu win: %lu/%lu pack: %lu/%lu\",\n\t\t\t\t\t\t\t\t\t\t\t\tchannel->local.id, channel->remote.id,\n\t\t\t\t\t\t\t\t\t\t\t\tchannel->local.window_size, channel->remote.window_size,\n\t\t\t\t\t\t\t\t\t\t\t\tchannel->local.packet_size, channel->remote.packet_size);\n#endif\n\t\tLIBSSH2_FREE(session, packet);\n\t\tLIBSSH2_FREE(session, data);\n\n\t\treturn channel;\n\t}\n\n\tif (data[0] == SSH_MSG_CHANNEL_OPEN_FAILURE) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_CHANNEL_FAILURE, \"Channel open failure\", 0);\n\t}\n\n channel_error:\n\n\tif (data) {\n\t\tLIBSSH2_FREE(session, data);\n\t}\n\tif (packet) {\n\t\tLIBSSH2_FREE(session, packet);\n\t}\n\tif (channel) {\n\t\tunsigned char channel_id[4];\n\t\tLIBSSH2_FREE(session, channel->channel_type);\n\n\t\tif (channel->next) {\n\t\t\tchannel->next->prev = channel->prev;\n\t\t}\n\t\tif (channel->prev) {\n\t\t\tchannel->prev->next = channel->next;\n\t\t}\n\t\tif (session->channels.head == channel) {\n\t\t\tsession->channels.head = channel->next;\n\t\t}\n\t\tif (session->channels.tail == channel) {\n\t\t\tsession->channels.tail = channel->prev;\n\t\t}\n\n\t\t/* Clear out packets meant for this channel */\n\t\tlibssh2_htonu32(channel_id, channel->local.id);\n\t\twhile  ((libssh2_packet_ask_ex(session, SSH_MSG_CHANNEL_DATA, \t\t  &data, &data_len, 1, channel_id, 4, 1) >= 0) ||\n\t\t\t\t(libssh2_packet_ask_ex(session, SSH_MSG_CHANNEL_EXTENDED_DATA, &data, &data_len, 1, channel_id, 4, 1) >= 0)) {\n\t\t\tLIBSSH2_FREE(session, data);\n\t\t}\n\n\t\tLIBSSH2_FREE(session, channel);\n\t}\n\n\treturn NULL;\n}\n/* }}} */\n\n/* {{{ libssh2_channel_direct_tcpip_ex\n * Tunnel TCP/IP connect through the SSH session to direct host/port\n */\nLIBSSH2_API LIBSSH2_CHANNEL *libssh2_channel_direct_tcpip_ex(LIBSSH2_SESSION *session, char *host, int port, char *shost, int sport)\n{\n\tLIBSSH2_CHANNEL *channel;\n\tunsigned char *message, *s;\n\tunsigned long host_len = strlen(host), shost_len = strlen(shost);\n\tunsigned long message_len = host_len + shost_len + 16; /* host_len(4) + port(4) + shost_len(4) + sport(4) */\n\n#ifdef LIBSSH2_DEBUG_CONNECTION\n\t_libssh2_debug(session, LIBSSH2_DBG_CONN, \"Requesting direct-tcpip session to from %s:%d to %s:%d\", shost, sport, host, port);\n#endif\n\n\ts = message = LIBSSH2_ALLOC(session, message_len);\n\tif (!message) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for direct-tcpip connection\", 0);\n\t\treturn NULL;\n\t}\n\tlibssh2_htonu32(s, host_len);\t\t\t\t\ts += 4;\n\tmemcpy(s, host, host_len);\t\t\t\t\t\ts += host_len;\n\tlibssh2_htonu32(s, port);\t\t\t\t\t\ts += 4;\n\n\tlibssh2_htonu32(s, shost_len);\t\t\t\t\ts += 4;\n\tmemcpy(s, shost, shost_len);\t\t\t\t\ts += shost_len;\n\tlibssh2_htonu32(s, sport);\t\t\t\t\t\ts += 4;\n\n\tchannel = libssh2_channel_open_ex(session, \"direct-tcpip\",\n                                          sizeof(\"direct-tcpip\") - 1,\n                                          LIBSSH2_CHANNEL_WINDOW_DEFAULT,\n                                          LIBSSH2_CHANNEL_PACKET_DEFAULT,\n                                          (char *)message, message_len);\n\tLIBSSH2_FREE(session, message);\n\n\treturn channel;\n}\n/* }}} */\n\n/* {{{ libssh2_channel_forward_listen_ex\n * Bind a port on the remote host and listen for connections\n */\nLIBSSH2_API LIBSSH2_LISTENER *libssh2_channel_forward_listen_ex(LIBSSH2_SESSION *session, char *host, int port, int *bound_port, int queue_maxsize)\n{\n\tunsigned char *packet, *s, *data, reply_codes[3] = { SSH_MSG_REQUEST_SUCCESS, SSH_MSG_REQUEST_FAILURE, 0 };\n\tunsigned long data_len;\n\tunsigned long host_len = (host ? strlen(host) : (sizeof(\"0.0.0.0\") - 1));\n\tunsigned long packet_len = host_len + (sizeof(\"tcpip-forward\") - 1) + 14;\n\t\t\t\t\t/* packet_type(1) + request_len(4) + want_replay(1) + host_len(4) + port(4) */\n\n#ifdef LIBSSH2_DEBUG_CONNECTION\n\t_libssh2_debug(session, LIBSSH2_DBG_CONN, \"Requesting tcpip-forward session for %s:%d\", host, port);\n#endif\n\n\ts = packet = LIBSSH2_ALLOC(session, packet_len);\n\tif (!packet) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memeory for setenv packet\", 0);\n\t\treturn NULL;\n\t}\n\n\t*(s++) = SSH_MSG_GLOBAL_REQUEST;\n\tlibssh2_htonu32(s, sizeof(\"tcpip-forward\") - 1);\t\t\ts += 4;\n\tmemcpy(s, \"tcpip-forward\", sizeof(\"tcpip-forward\") - 1);\ts += sizeof(\"tcpip-forward\") - 1;\n\t*(s++) = 0xFF;\t\t/* want_reply */\n\n\tlibssh2_htonu32(s, host_len);\t\t\t\t\t\t\t\ts += 4;\n\tmemcpy(s, host ? host : \"0.0.0.0\", host_len);\t\t\t\ts += host_len;\n\tlibssh2_htonu32(s, port);\t\t\t\t\t\t\t\t\ts += 4;\n\n\tif (libssh2_packet_write(session, packet, packet_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send global-request packet for forward listen request\", 0);\n\t\tLIBSSH2_FREE(session, packet);\n\t\treturn NULL;\n\t}\n\tLIBSSH2_FREE(session, packet);\n\n\tif (libssh2_packet_requirev(session, reply_codes, &data, &data_len)) {\n\t\treturn NULL;\n\t}\n\n\tif (data[0] == SSH_MSG_REQUEST_SUCCESS) {\n\t\tLIBSSH2_LISTENER *listener;\n\n\t\tlistener = LIBSSH2_ALLOC(session, sizeof(LIBSSH2_LISTENER));\n\t\tif (!listener) {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for listener queue\", 0);\n\t\t\tLIBSSH2_FREE(session, data);\n\t\t\treturn NULL;\n\t\t}\n\t\tmemset(listener, 0, sizeof(LIBSSH2_LISTENER));\n\t\tlistener->session = session;\n\t\tlistener->host = LIBSSH2_ALLOC(session, host_len + 1);\n\t\tif (!listener->host) {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for listener queue\", 0);\n\t\t\tLIBSSH2_FREE(session, listener);\n\t\t\tLIBSSH2_FREE(session, data);\n\t\t\treturn NULL;\n\t\t}\n\t\tmemcpy(listener->host, host ? host : \"0.0.0.0\", host_len);\n\t\tlistener->host[host_len] = 0;\n\t\tif (data_len >= 5 && !port) {\n\t\t\tlistener->port = libssh2_ntohu32(data + 1);\n#ifdef LIBSSH2_DEBUG_CONNECTION\n\t_libssh2_debug(session, LIBSSH2_DBG_CONN, \"Dynamic tcpip-forward port allocated: %d\", listener->port);\n#endif\n\t\t} else {\n\t\t\tlistener->port = port;\n\t\t}\n\n\t\tlistener->queue_size = 0;\n\t\tlistener->queue_maxsize = queue_maxsize;\n\n\t\tlistener->next = session->listeners;\n\t\tlistener->prev = NULL;\n\t\tif (session->listeners) {\n\t\t\tsession->listeners->prev = listener;\n\t\t}\n\t\tsession->listeners = listener;\n\n\t\tif (bound_port) {\n\t\t\t*bound_port = listener->port;\n\t\t}\n\n\t\tLIBSSH2_FREE(session, data);\n\t\treturn listener;\n\t}\n\n\tif (data[0] == SSH_MSG_REQUEST_FAILURE) {\n\t\tLIBSSH2_FREE(session, data);\n\t\tlibssh2_error(session, LIBSSH2_ERROR_REQUEST_DENIED, \"Unable to complete request for forward-listen\", 0);\n\t\treturn NULL;\n\t}\n\n\treturn NULL;\n}\n/* }}} */\n\n/* {{{ libssh2_channel_forward_cancel\n * Stop listening on a remote port and free the listener\n * Toss out any pending (un-accept()ed) connections\n */\nLIBSSH2_API int libssh2_channel_forward_cancel(LIBSSH2_LISTENER *listener)\n{\n\tLIBSSH2_SESSION *session = listener->session;\n\tLIBSSH2_CHANNEL *queued = listener->queue;\n\tunsigned char *packet, *s;\n\tunsigned long host_len = strlen(listener->host);\n\tunsigned long packet_len = host_len + 14 + sizeof(\"cancel-tcpip-forward\") - 1;\n\t\t\t\t\t/* packet_type(1) + request_len(4) + want_replay(1) + host_len(4) + port(4) */\n\n#ifdef LIBSSH2_DEBUG_CONNECTION\n\t_libssh2_debug(session, LIBSSH2_DBG_CONN, \"Cancelling tcpip-forward session for %s:%d\", listener->host, listener->port);\n#endif\n\n\ts = packet = LIBSSH2_ALLOC(session, packet_len);\n\tif (!packet) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memeory for setenv packet\", 0);\n\t\treturn -1;\n\t}\n\n\t*(s++) = SSH_MSG_GLOBAL_REQUEST;\n\tlibssh2_htonu32(s, sizeof(\"cancel-tcpip-forward\") - 1);\t\t\t\t\ts += 4;\n\tmemcpy(s, \"cancel-tcpip-forward\", sizeof(\"cancel-tcpip-forward\") - 1);\ts += sizeof(\"cancel-tcpip-forward\") - 1;\n\t*(s++) = 0x00;\t\t/* want_reply */\n\n\tlibssh2_htonu32(s, host_len);\t\t\t\t\t\t\t\t\t\ts += 4;\n\tmemcpy(s, listener->host, host_len);\t\t\t\t\t\t\t\ts += host_len;\n\tlibssh2_htonu32(s, listener->port);\t\t\t\t\t\t\t\t\ts += 4;\n\n\tif (libssh2_packet_write(session, packet, packet_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send global-request packet for forward listen request\", 0);\n\t\tLIBSSH2_FREE(session, packet);\n\t\treturn -1;\n\t}\n\tLIBSSH2_FREE(session, packet);\n\n\twhile (queued) {\n\t\tLIBSSH2_CHANNEL *next = queued->next;\n\n\t\tlibssh2_channel_free(queued);\n\t\tqueued = next;\n\t}\n\tLIBSSH2_FREE(session, listener->host);\n\n\tif (listener->next) {\n\t\tlistener->next->prev = listener->prev;\n\t}\n\tif (listener->prev) {\n\t\tlistener->prev->next = listener->next;\n\t} else {\n\t\tsession->listeners = listener->next;\n\t}\n\n\tLIBSSH2_FREE(session, listener);\n\n\treturn 0;\n}\n/* }}} */\n\n/* {{{ libssh2_channel_forward_accept\n * Accept a connection\n */\nLIBSSH2_API LIBSSH2_CHANNEL *libssh2_channel_forward_accept(LIBSSH2_LISTENER *listener)\n{\n\twhile (libssh2_packet_read(listener->session, 0) > 0);\n\n\tif (listener->queue) {\n\t\tLIBSSH2_SESSION *session = listener->session;\n\t\tLIBSSH2_CHANNEL *channel;\n\n\t\tchannel = listener->queue;\n\n\t\tlistener->queue = listener->queue->next;\n\t\tif (listener->queue) {\n\t\t\tlistener->queue->prev = NULL;\n\t\t}\n\n\t\tchannel->prev = NULL;\n\t\tchannel->next = session->channels.head;\n\t\tsession->channels.head = channel;\n\n\t\tif (channel->next) {\n\t\t\tchannel->next->prev = channel;\n\t\t} else {\n\t\t\tsession->channels.tail = channel;\n\t\t}\n\t\tlistener->queue_size--;\n\n\t\treturn channel;\n\t}\n\n\treturn NULL;\n}\n/* }}} */\n\n/* {{{ libssh2_channel_setenv_ex\n * Set an environment variable prior to requesting a shell/program/subsystem\n */\nLIBSSH2_API int libssh2_channel_setenv_ex(LIBSSH2_CHANNEL *channel, char *varname, unsigned int varname_len, char *value, unsigned int value_len)\n{\n\tLIBSSH2_SESSION *session = channel->session;\n\tunsigned char *s, *packet, *data, reply_codes[3] = { SSH_MSG_CHANNEL_SUCCESS, SSH_MSG_CHANNEL_FAILURE, 0 }, local_channel[4];\n\tunsigned long data_len;\n\tunsigned long packet_len = varname_len + value_len + 21; /* packet_type(1) + channel_id(4) + request_len(4) + request(3)\"env\" +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\twant_reply(1) + varname_len(4) + value_len(4) */\n\n#ifdef LIBSSH2_DEBUG_CONNECTION\n\t_libssh2_debug(session, LIBSSH2_DBG_CONN, \"Setting remote environment variable: %s=%s on channel %lu/%lu\", varname, value, channel->local.id, channel->remote.id);\n#endif\n\n\ts = packet = LIBSSH2_ALLOC(session, packet_len);\n\tif (!packet) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memeory for setenv packet\", 0);\n\t\treturn -1;\n\t}\n\n\t*(s++) = SSH_MSG_CHANNEL_REQUEST;\n\tlibssh2_htonu32(s, channel->remote.id);\t\t\t\ts += 4;\n\tlibssh2_htonu32(s, sizeof(\"env\") - 1);\t\t\t\ts += 4;\n\tmemcpy(s, \"env\", sizeof(\"env\") - 1);\t\t\t\ts += sizeof(\"env\") - 1;\n\n\t*(s++) = 0xFF;\n\n\tlibssh2_htonu32(s, varname_len);\t\t\t\t\ts += 4;\n\tmemcpy(s, varname, varname_len);\t\t\t\t\ts += varname_len;\n\n\tlibssh2_htonu32(s, value_len);\t\t\t\t\t\ts += 4;\n\tmemcpy(s, value, value_len);\t\t\t\t\t\ts += value_len;\n\n\tif (libssh2_packet_write(session, packet, packet_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send channel-request packet for setenv request\", 0);\n\t\tLIBSSH2_FREE(session, packet);\n\t\treturn -1;\n\t}\n\tLIBSSH2_FREE(session, packet);\n\n\tlibssh2_htonu32(local_channel, channel->local.id);\n\tif (libssh2_packet_requirev_ex(session, reply_codes, &data, &data_len, 1, local_channel, 4)) {\n\t\treturn -1;\n\t}\n\n\tif (data[0] == SSH_MSG_CHANNEL_SUCCESS) {\n\t\tLIBSSH2_FREE(session, data);\n\t\treturn 0;\n\t}\n\n\tLIBSSH2_FREE(session, data);\n\tlibssh2_error(session, LIBSSH2_ERROR_CHANNEL_REQUEST_DENIED, \"Unable to complete request for channel-setenv\", 0);\n\treturn -1;\n}\n/* }}} */\n\n/* {{{ libssh2_channel_request_pty_ex\n * Duh... Request a PTY\n */\nLIBSSH2_API int libssh2_channel_request_pty_ex(LIBSSH2_CHANNEL *channel, char *term, unsigned int term_len,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t char *modes, unsigned int modes_len,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t int width, int height,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t int width_px, int height_px)\n{\n\tLIBSSH2_SESSION *session = channel->session;\n\tunsigned char *s, *packet, *data, reply_codes[3] = { SSH_MSG_CHANNEL_SUCCESS, SSH_MSG_CHANNEL_FAILURE, 0 }, local_channel[4];\n\tunsigned long data_len;\n\tunsigned long packet_len = term_len + modes_len + 41; /*  packet_type(1) + channel(4) + pty_req_len(4) + \"pty_req\"(7) + want_reply(1) +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  term_len(4) + width(4) + height(4) + width_px(4) + height_px(4) + modes_len(4) */\n\n#ifdef LIBSSH2_DEBUG_CONNECTION\n\t_libssh2_debug(session, LIBSSH2_DBG_CONN, \"Allocating tty on channel %lu/%lu\", channel->local.id, channel->remote.id);\n#endif\n\n\ts = packet = LIBSSH2_ALLOC(session, packet_len);\n\tif (!packet) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for pty-request\", 0);\n\t\treturn -1;\n\t}\n\n\t*(s++) = SSH_MSG_CHANNEL_REQUEST;\n\tlibssh2_htonu32(s, channel->remote.id);\t\t\t\t\t\ts += 4;\n\tlibssh2_htonu32(s, sizeof(\"pty-req\") - 1);\t\t\t\t\ts += 4;\n\tmemcpy(s, \"pty-req\", sizeof(\"pty-req\") - 1);\t\t\t\ts += sizeof(\"pty-req\") - 1;\n\n\t*(s++) = 0xFF;\n\n\tlibssh2_htonu32(s, term_len);\t\t\t\t\t\t\t\ts += 4;\n\tif (term) {\n\t\tmemcpy(s, term, term_len);\t\t\t\t\t\t\t\ts += term_len;\n\t}\n\n\tlibssh2_htonu32(s, width);\t\t\t\t\t\t\t\t\ts += 4;\n\tlibssh2_htonu32(s, height);\t\t\t\t\t\t\t\t\ts += 4;\n\tlibssh2_htonu32(s, width_px);\t\t\t\t\t\t\t\ts += 4;\n\tlibssh2_htonu32(s, height_px);\t\t\t\t\t\t\t\ts += 4;\n\n\tlibssh2_htonu32(s, modes_len);\t\t\t\t\t\t\t\ts += 4;\n\tif (modes) {\n\t\tmemcpy(s, modes, modes_len);\t\t\t\t\t\t\ts += modes_len;\n\t}\n\n\tif (libssh2_packet_write(session, packet, packet_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send pty-request packet\", 0);\n\t\tLIBSSH2_FREE(session, packet);\n\t\treturn -1;\n\t}\n\tLIBSSH2_FREE(session, packet);\n\n\tlibssh2_htonu32(local_channel, channel->local.id);\n\tif (libssh2_packet_requirev_ex(session, reply_codes, &data, &data_len, 1, local_channel, 4)) {\n\t\treturn -1;\n\t}\n\n\tif (data[0] == SSH_MSG_CHANNEL_SUCCESS) {\n\t\tLIBSSH2_FREE(session, data);\n\t\treturn 0;\n\t}\n\n\tLIBSSH2_FREE(session, data);\n\tlibssh2_error(session, LIBSSH2_ERROR_CHANNEL_REQUEST_DENIED, \"Unable to complete request for channel request-pty\", 0);\n\treturn -1;\n}\n/* }}} */\n\n/* Keep this an even number */\n#define LIBSSH2_X11_RANDOM_COOKIE_LEN\t\t32\n/* {{{ libssh2_channel_x11_req_ex\n * Request X11 forwarding\n */\nLIBSSH2_API int libssh2_channel_x11_req_ex(LIBSSH2_CHANNEL *channel, int single_connection, char *auth_proto, char *auth_cookie, int screen_number)\n{\n\tLIBSSH2_SESSION *session = channel->session;\n\tunsigned char *s, *packet, *data, reply_codes[3] = { SSH_MSG_CHANNEL_SUCCESS, SSH_MSG_CHANNEL_FAILURE, 0 }, local_channel[4];\n\tunsigned long data_len;\n\tunsigned long proto_len = auth_proto ? strlen(auth_proto) : (sizeof(\"MIT-MAGIC-COOKIE-1\") - 1);\n\tunsigned long cookie_len = auth_cookie ? strlen(auth_cookie) : LIBSSH2_X11_RANDOM_COOKIE_LEN;\n\tunsigned long packet_len = proto_len + cookie_len + 30; /*  packet_type(1) + channel(4) + x11_req_len(4) + \"x11-req\"(7) + want_reply(1) +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsingle_cnx(1) + proto_len(4) + cookie_len(4) + screen_num(4) */\n\n#ifdef LIBSSH2_DEBUG_CONNECTION\n\t_libssh2_debug(session, LIBSSH2_DBG_CONN, \"Requesting x11-req for channel %lu/%lu: single=%d proto=%s cookie=%s screen=%d\",\n\t\t\t\t\t\t\t\t\t\t\t\tchannel->local.id, channel->remote.id, single_connection,\n\t\t\t\t\t\t\t\t\t\t\t\tauth_proto ? auth_proto : \"MIT-MAGIC-COOKIE-1\",\n\t\t\t\t\t\t\t\t\t\t\t\tauth_cookie ? auth_cookie : \"<random>\", screen_number);\n#endif\n\n\ts = packet = LIBSSH2_ALLOC(session, packet_len);\n\tif (!packet) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for pty-request\", 0);\n\t\treturn -1;\n\t}\n\n\t*(s++) = SSH_MSG_CHANNEL_REQUEST;\n\tlibssh2_htonu32(s, channel->remote.id);\t\t\t\t\t\ts += 4;\n\tlibssh2_htonu32(s, sizeof(\"x11-req\") - 1);\t\t\t\t\ts += 4;\n\tmemcpy(s, \"x11-req\", sizeof(\"x11-req\") - 1);\t\t\t\ts += sizeof(\"x11-req\") - 1;\n\n\t*(s++) = 0xFF; /* want_reply */\n\t*(s++) = single_connection ? 0xFF : 0x00;\n\n\tlibssh2_htonu32(s, proto_len);\t\t\t\t\t\t\t\ts += 4;\n\tmemcpy(s, auth_proto ? auth_proto : \"MIT-MAGIC-COOKIE-1\", proto_len);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ts += proto_len;\n\n\tlibssh2_htonu32(s, cookie_len);\t\t\t\t\t\t\t\ts += 4;\n\tif (auth_cookie) {\n\t\tmemcpy(s, auth_cookie, cookie_len);\n\t} else {\n\t\tint i;\n\t\tunsigned char buffer[LIBSSH2_X11_RANDOM_COOKIE_LEN / 2];\n\n\t\tlibssh2_random(buffer, LIBSSH2_X11_RANDOM_COOKIE_LEN / 2);\n\t\tfor (i = 0; i < (LIBSSH2_X11_RANDOM_COOKIE_LEN / 2); i++) {\n\t\t\tsnprintf((char *)s + (i * 2), 2, \"%02X\", buffer[i]);\n\t\t}\n\t}\n\ts += cookie_len;\n\n\tlibssh2_htonu32(s, screen_number);\t\t\t\t\t\t\ts += 4;\n\n\tif (libssh2_packet_write(session, packet, packet_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send x11-req packet\", 0);\n\t\tLIBSSH2_FREE(session, packet);\n\t\treturn -1;\n\t}\n\tLIBSSH2_FREE(session, packet);\n\n\tlibssh2_htonu32(local_channel, channel->local.id);\n\n\tif (libssh2_packet_requirev_ex(session, reply_codes, &data, &data_len, 1, local_channel, 4)) {\n\t\treturn -1;\n\t}\n\n\tif (data[0] == SSH_MSG_CHANNEL_SUCCESS) {\n\t\tLIBSSH2_FREE(session, data);\n\t\treturn 0;\n\t}\n\n\tLIBSSH2_FREE(session, data);\n\tlibssh2_error(session, LIBSSH2_ERROR_CHANNEL_REQUEST_DENIED, \"Unable to complete request for channel x11-req\", 0);\n\treturn -1;\n}\n/* }}} */\n\n/* {{{ libssh2_channel_process_startup\n * Primitive for libssh2_channel_(shell|exec|subsystem)\n */\nLIBSSH2_API int libssh2_channel_process_startup(LIBSSH2_CHANNEL *channel, const char *request, unsigned int request_len, const char *message, unsigned int message_len)\n{\n\tLIBSSH2_SESSION *session = channel->session;\n\tunsigned char *s, *packet, *data, reply_codes[3] = { SSH_MSG_CHANNEL_SUCCESS, SSH_MSG_CHANNEL_FAILURE, 0 }, local_channel[4];\n\tunsigned long data_len;\n\tunsigned long packet_len = request_len + 10; /* packet_type(1) + channel(4) + request_len(4) + want_reply(1) */\n\n\tif (message) {\n\t\tpacket_len += message_len + 4;\n\t}\n\n#ifdef LIBSSH2_DEBUG_CONNECTION\n\t_libssh2_debug(session, LIBSSH2_DBG_CONN, \"starting request(%s) on channel %lu/%lu, message=%s\", request, channel->local.id, channel->remote.id, message);\n#endif\n\n\ts = packet = LIBSSH2_ALLOC(session, packet_len);\n\tif (!packet) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for channel-process request\", 0);\n\t\treturn -1;\n\t}\n\n\t*(s++) = SSH_MSG_CHANNEL_REQUEST;\n\tlibssh2_htonu32(s, channel->remote.id);\t\t\t\t\ts += 4;\n\tlibssh2_htonu32(s, request_len);\t\t\t\t\t\ts += 4;\n\tmemcpy(s, request, request_len);\t\t\t\t\t\ts += request_len;\n\n\t*(s++) = 0xFF;\n\n\tif (message) {\n\t\tlibssh2_htonu32(s, message_len);\t\t\t\t\ts += 4;\n\t\tmemcpy(s, message, message_len);\t\t\t\t\ts += message_len;\n\t}\n\n\tif (libssh2_packet_write(session, packet, packet_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send channel request\", 0);\n\t\tLIBSSH2_FREE(session, packet);\n\t\treturn -1;\n\t}\n\tLIBSSH2_FREE(session, packet);\n\n\tlibssh2_htonu32(local_channel, channel->local.id);\n\tif (libssh2_packet_requirev_ex(session, reply_codes, &data, &data_len, 1, local_channel, 4)) {\n\t\treturn -1;\n\t}\n\n\tif (data[0] == SSH_MSG_CHANNEL_SUCCESS) {\n\t\tLIBSSH2_FREE(session, data);\n\t\treturn 0;\n\t}\n\n\tLIBSSH2_FREE(session, data);\n\tlibssh2_error(session, LIBSSH2_ERROR_CHANNEL_REQUEST_DENIED, \"Unable to complete request for channel-process-startup\", 0);\n\treturn -1;\n}\n/* }}} */\n\n/* {{{ libssh2_channel_set_blocking\n * Set a channel's blocking mode on or off, similar to a socket's fcntl(fd, F_SETFL, O_NONBLOCK); type command\n */\nLIBSSH2_API void libssh2_channel_set_blocking(LIBSSH2_CHANNEL *channel, int blocking)\n{\n#ifdef LIBSSH2_DEBUG_CONNECTION\n\t_libssh2_debug(channel->session, LIBSSH2_DBG_CONN, \"Setting blocking mode on channel %lu/%lu to %d\", channel->local.id, channel->remote.id, blocking);\n#endif\n\tchannel->blocking = blocking;\n}\n/* }}} */\n\n/* {{{ libssh2_channel_flush_ex\n * Flush data from one (or all) stream\n * Returns number of bytes flushed, or -1 on failure\n */\nLIBSSH2_API int libssh2_channel_flush_ex(LIBSSH2_CHANNEL *channel, int streamid)\n{\n\tLIBSSH2_PACKET *packet = channel->session->packets.head;\n\tunsigned long refund_bytes = 0, flush_bytes = 0;\n\n\twhile (packet) {\n\t\tLIBSSH2_PACKET *next = packet->next;\n\t\tunsigned char packet_type = packet->data[0];\n\n\t\tif (((packet_type == SSH_MSG_CHANNEL_DATA) || (packet_type == SSH_MSG_CHANNEL_EXTENDED_DATA)) &&\n\t\t\t(libssh2_ntohu32(packet->data + 1) == channel->local.id)) {\n\t\t\t/* It's our channel at least */\n\t\t\tunsigned long packet_stream_id = (packet_type == SSH_MSG_CHANNEL_DATA) ? 0 : libssh2_ntohu32(packet->data + 5);\n\t\t\tif ((streamid == LIBSSH2_CHANNEL_FLUSH_ALL) ||\n\t\t\t\t((packet_type == SSH_MSG_CHANNEL_EXTENDED_DATA) && ((streamid == LIBSSH2_CHANNEL_FLUSH_EXTENDED_DATA) || (streamid == packet_stream_id))) ||\n\t\t\t\t((packet_type == SSH_MSG_CHANNEL_DATA) && (streamid == 0))) {\n\t\t\t\tint bytes_to_flush = packet->data_len - packet->data_head;\n#ifdef LIBSSH2_DEBUG_CONNECTION\n\t_libssh2_debug(channel->session, LIBSSH2_DBG_CONN, \"Flushing %d bytes of data from stream %lu on channel %lu/%lu\", bytes_to_flush,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpacket_stream_id, channel->local.id, channel->remote.id);\n#endif\n\n\t\t\t\t/* It's one of the streams we wanted to flush */\n\t\t\t\trefund_bytes += packet->data_len - 13;\n\t\t\t\tflush_bytes += bytes_to_flush;\n\n\t\t\t\tLIBSSH2_FREE(channel->session, packet->data);\n\t\t\t\tif (packet->prev) {\n\t\t\t\t\tpacket->prev->next = packet->next;\n\t\t\t\t} else {\n\t\t\t\t\tchannel->session->packets.head = packet->next;\n\t\t\t\t}\n\t\t\t\tif (packet->next) {\n\t\t\t\t\tpacket->next->prev = packet->prev;\n\t\t\t\t} else {\n\t\t\t\t\tchannel->session->packets.tail = packet->prev;\n\t\t\t\t}\n\t\t\t\tLIBSSH2_FREE(channel->session, packet);\n\t\t\t}\n\t\t}\n\t\tpacket = next;\n\t}\n\n\tif (refund_bytes) {\n\t\tlibssh2_channel_receive_window_adjust(channel, refund_bytes, 0);\n\t}\n\n\treturn flush_bytes;\n}\n/* }}} */\n\n/* {{{ libssh2_channel_get_exit_status\n * Return the channel's program exit status\n */\nLIBSSH2_API int libssh2_channel_get_exit_status(LIBSSH2_CHANNEL* channel)\n{\n\treturn channel->exit_status;\n}\n\n/* }}} */\n\n/* {{{ libssh2_channel_receive_window_adjust\n * Adjust the receive window for a channel by adjustment bytes\n * If the amount to be adjusted is less than LIBSSH2_CHANNEL_MINADJUST and force is 0\n * The adjustment amount will be queued for a later packet\n *\n * Returns the new size of the receive window (as understood by remote end)\n */\nLIBSSH2_API unsigned long libssh2_channel_receive_window_adjust(LIBSSH2_CHANNEL *channel, unsigned long adjustment, unsigned char force)\n{\n\tunsigned char adjust[9]; /* packet_type(1) + channel(4) + adjustment(4) */\n\n\tif (!force && (adjustment + channel->adjust_queue < LIBSSH2_CHANNEL_MINADJUST)) {\n#ifdef LIBSSH2_DEBUG_CONNECTION\n\t\t_libssh2_debug(channel->session, LIBSSH2_DBG_CONN, \"Queing %lu bytes for receive window adjustment for channel %lu/%lu\", adjustment, channel->local.id, channel->remote.id);\n#endif\n\t\tchannel->adjust_queue += adjustment;\n\t\treturn channel->remote.window_size;\n\t}\n\n\tif (!adjustment && !channel->adjust_queue) {\n\t\treturn channel->remote.window_size;\n\t}\n\n\tadjustment += channel->adjust_queue;\n\tchannel->adjust_queue = 0;\n\n\n\t/* Adjust the window based on the block we just freed */\n\tadjust[0] = SSH_MSG_CHANNEL_WINDOW_ADJUST;\n\tlibssh2_htonu32(adjust + 1, channel->remote.id);\n\tlibssh2_htonu32(adjust + 5, adjustment);\n#ifdef LIBSSH2_DEBUG_CONNECTION\n\t_libssh2_debug(channel->session, LIBSSH2_DBG_CONN, \"Adjusting window %lu bytes for data flushed from channel %lu/%lu\", adjustment, channel->local.id, channel->remote.id);\n#endif\n\n\tif (libssh2_packet_write(channel->session, adjust, 9)) {\n\t\tlibssh2_error(channel->session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send transfer-window adjustment packet, deferring\", 0);\n\t\tchannel->adjust_queue = adjustment;\n\t} else {\n\t\tchannel->remote.window_size += adjustment;\n\t}\n\n\treturn channel->remote.window_size;\n}\n/* }}} */\n\n/* {{{ libssh2_channel_handle_extended_data\n * How should extended data look to the calling app?\n * Keep it in separate channels[_read() _read_stdder()]? (NORMAL)\n * Merge the extended data to the standard data? [everything via _read()]? (MERGE)\n * Ignore it entirely [toss out packets as they come in]? (IGNORE)\n */\nLIBSSH2_API void libssh2_channel_handle_extended_data(LIBSSH2_CHANNEL *channel, int ignore_mode)\n{\n#ifdef LIBSSH2_DEBUG_CONNECTION\n\t_libssh2_debug(channel->session, LIBSSH2_DBG_CONN, \"Setting channel %lu/%lu handle_extended_data mode to %d\", channel->local.id, channel->remote.id, ignore_mode);\n#endif\n\tchannel->remote.extended_data_ignore_mode = ignore_mode;\n\n\tif (ignore_mode == LIBSSH2_CHANNEL_EXTENDED_DATA_IGNORE) {\n\t\tlibssh2_channel_flush_ex(channel, LIBSSH2_CHANNEL_FLUSH_EXTENDED_DATA);\n\t}\n}\n/* }}} */\n\n/* {{{ libssh2_channel_read_ex\n * Read data from a channel\n */\nLIBSSH2_API int libssh2_channel_read_ex(LIBSSH2_CHANNEL *channel, int stream_id, char *buf, size_t buflen)\n{\n\tLIBSSH2_SESSION *session = channel->session;\n\tint bytes_read = 0, blocking_read = 0;\n\n#ifdef LIBSSH2_DEBUG_CONNECTION\n\t_libssh2_debug(session, LIBSSH2_DBG_CONN, \"Attempting to read %d bytes from channel %lu/%lu stream #%d\", (int)buflen, channel->local.id, channel->remote.id, stream_id);\n#endif\n\tdo {\n\t\tLIBSSH2_PACKET *packet;\n\n\t\t/* Process any waiting packets */\n\t\twhile (libssh2_packet_read(session, blocking_read) > 0) blocking_read = 0;\n\t\tpacket = session->packets.head;\n\n\t\twhile (packet && (bytes_read < buflen)) {\n\t\t\t/* In case packet gets destroyed during this iteration */\n\t\t\tLIBSSH2_PACKET *next = packet->next;\n\n\t\t\t/* Either we asked for a specific extended data stream (and data was available),\n\t\t\t * or the standard stream (and data was available),\n\t\t\t * or the standard stream with extended_data_merge enabled and data was available\n\t\t\t */\n\t\t\tif ((stream_id  && (packet->data[0] == SSH_MSG_CHANNEL_EXTENDED_DATA) && (channel->local.id == libssh2_ntohu32(packet->data + 1)) && (stream_id == libssh2_ntohu32(packet->data + 5))) ||\n\t\t\t\t(!stream_id && (packet->data[0] == SSH_MSG_CHANNEL_DATA) && (channel->local.id == libssh2_ntohu32(packet->data + 1))) ||\n\t\t\t\t(!stream_id && (packet->data[0] == SSH_MSG_CHANNEL_EXTENDED_DATA) && (channel->local.id == libssh2_ntohu32(packet->data + 1)) && (channel->remote.extended_data_ignore_mode == LIBSSH2_CHANNEL_EXTENDED_DATA_MERGE))) {\n\t\t\t\tint want = buflen - bytes_read;\n\t\t\t\tint unlink_packet = 0;\n\n\t\t\t\tif (want >= (packet->data_len - packet->data_head)) {\n\t\t\t\t\twant = packet->data_len - packet->data_head;\n\t\t\t\t\tunlink_packet = 1;\n\t\t\t\t}\n\n#ifdef LIBSSH2_DEBUG_CONNECTION\n\t_libssh2_debug(session, LIBSSH2_DBG_CONN, \"Reading %d of buffered data from %lu/%lu/%d\", want, channel->local.id, channel->remote.id, stream_id);\n#endif\n\t\t\t\tmemcpy(buf + bytes_read, packet->data + packet->data_head, want);\n\t\t\t\tpacket->data_head += want;\n\t\t\t\tbytes_read += want;\n\n\t\t\t\tif (unlink_packet) {\n\t\t\t\t\tif (packet->prev) {\n\t\t\t\t\t\tpacket->prev->next = packet->next;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsession->packets.head = packet->next;\n\t\t\t\t\t}\n\t\t\t\t\tif (packet->next) {\n\t\t\t\t\t\tpacket->next->prev = packet->prev;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsession->packets.tail = packet->prev;\n\t\t\t\t\t}\n\t\t\t\t\tLIBSSH2_FREE(session, packet->data);\n\n#ifdef LIBSSH2_DEBUG_CONNECTION\n\t_libssh2_debug(session, LIBSSH2_DBG_CONN, \"Unlinking empty packet buffer from channel %lu/%lu\", channel->local.id, channel->remote.id);\n#endif\n\t\t\t\t\tlibssh2_channel_receive_window_adjust(channel, packet->data_len - (stream_id ? 13 : 9), 0);\n\t\t\t\t\tLIBSSH2_FREE(session, packet);\n\t\t\t\t}\n\t\t\t}\n\t\t\tpacket = next;\n\t\t}\n\t\tblocking_read = 1;\n\t} while (channel->blocking && (bytes_read == 0) && !channel->remote.close);\n\n\tif (channel->blocking && (bytes_read == 0)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_CHANNEL_CLOSED, \"Remote end has closed this channel\", 0);\n\t}\n\n\treturn bytes_read;\n}\n/* }}} */\n\n/* {{{ libssh2_channel_write_ex\n * Send data to a channel\n */\nLIBSSH2_API int libssh2_channel_write_ex(LIBSSH2_CHANNEL *channel, int stream_id, const char *buf, size_t buflen)\n{\n\tLIBSSH2_SESSION *session = channel->session;\n\tunsigned char *packet;\n\tunsigned long packet_len, bufwrote = 0;\n\n#ifdef LIBSSH2_DEBUG_CONNECTION\n\t_libssh2_debug(session, LIBSSH2_DBG_CONN, \"Writing %d bytes on channel %lu/%lu, stream #%d\", (int)buflen, channel->local.id, channel->remote.id, stream_id);\n#endif\n\tif (channel->local.close) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_CHANNEL_CLOSED, \"We've already closed this channel\", 0);\n\t\treturn -1;\n\t}\n\n\tif (channel->local.eof) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_CHANNEL_EOF_SENT, \"EOF has already been sight, data might be ignored\", 0);\n\t}\n\n\tif (!channel->blocking && (channel->local.window_size <= 0)) {\n\t\t/* Can't write anything */\n\t\treturn 0;\n\t}\n\n\tpacket_len = buflen + (stream_id ? 13 : 9); /* packet_type(1) + channelno(4) [ + streamid(4) ] + buflen(4) */\n\tpacket = LIBSSH2_ALLOC(session, packet_len);\n\tif (!packet) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocte space for data transmission packet\", 0);\n\t\treturn -1;\n\t}\n\n\twhile (buflen > 0) {\n\t\tsize_t bufwrite = buflen;\n\t\tunsigned char *s = packet;\n\n\t\t*(s++) = stream_id ? SSH_MSG_CHANNEL_EXTENDED_DATA : SSH_MSG_CHANNEL_DATA;\n\t\tlibssh2_htonu32(s, channel->remote.id);\t\t\t\t\ts += 4;\n\t\tif (stream_id) {\n\t\t\tlibssh2_htonu32(s, stream_id);\t\t\t\t\t\ts += 4;\n\t\t}\n\n\t\t/* twiddle our thumbs until there's window space available */\n\t\twhile (channel->local.window_size <= 0) {\n\t\t\t/* Don't worry -- This is never hit unless it's a blocking channel anyway */\n\t\t\tif (libssh2_packet_read(session, 1) < 0) {\n\t\t\t\t/* Error occured, disconnect? */\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\n\t\t/* Don't exceed the remote end's limits */\n\t\t/* REMEMBER local means local as the SOURCE of the data */\n\t\tif (bufwrite > channel->local.window_size) {\n#ifdef LIBSSH2_DEBUG_CONNECTION\n\t_libssh2_debug(session, LIBSSH2_DBG_CONN, \"Splitting write block due to %lu byte window_size on %lu/%lu/%d\", channel->local.window_size, channel->local.id, channel->remote.id, stream_id);\n#endif\n\t\t\tbufwrite = channel->local.window_size;\n\t\t}\n\t\tif (bufwrite > channel->local.packet_size) {\n#ifdef LIBSSH2_DEBUG_CONNECTION\n\t_libssh2_debug(session, LIBSSH2_DBG_CONN, \"Splitting write block due to %lu byte packet_size on %lu/%lu/%d\", channel->local.packet_size, channel->local.id, channel->remote.id, stream_id);\n#endif\n\t\t\tbufwrite = channel->local.packet_size;\n\t\t}\n\t\tlibssh2_htonu32(s, bufwrite);\t\t\t\t\t\t\ts += 4;\n\t\tmemcpy(s, buf, bufwrite);\t\t\t\t\t\t\t\ts += bufwrite;\n\n#ifdef LIBSSH2_DEBUG_CONNECTION\n\t_libssh2_debug(session, LIBSSH2_DBG_CONN, \"Sending %d bytes on channel %lu/%lu, stream_id=%d\", (int)bufwrite, channel->local.id, channel->remote.id, stream_id);\n#endif\n\t\tif (libssh2_packet_write(session, packet, s - packet)) {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send channel data\", 0);\n\t\t\tLIBSSH2_FREE(session, packet);\n\t\t\treturn -1;\n\t\t}\n\t\t/* Shrink local window size */\n\t\tchannel->local.window_size -= bufwrite;\n\n\t\t/* Adjust buf for next iteration */\n\t\tbuflen -= bufwrite;\n\t\tbuf += bufwrite;\n\t\tbufwrote += bufwrite;\n\n\t\tif (!channel->blocking) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tLIBSSH2_FREE(session, packet);\n\n\treturn bufwrote;\n}\n/* }}} */\n\n/* {{{ libssh2_channel_send_eof\n * Send EOF on channel\n */\nLIBSSH2_API int libssh2_channel_send_eof(LIBSSH2_CHANNEL *channel)\n{\n\tLIBSSH2_SESSION *session = channel->session;\n\tunsigned char packet[5]; /* packet_type(1) + channelno(4) */\n\n#ifdef LIBSSH2_DEBUG_CONNECTION\n\t_libssh2_debug(session, LIBSSH2_DBG_CONN, \"Sending EOF on channel %lu/%lu\",channel->local.id, channel->remote.id);\n#endif\n\tpacket[0] = SSH_MSG_CHANNEL_EOF;\n\tlibssh2_htonu32(packet + 1, channel->remote.id);\n\tif (libssh2_packet_write(session, packet, 5)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send EOF on channel\", 0);\n\t\treturn -1;\n\t}\n\tchannel->local.eof = 1;\n\n\treturn 0;\n}\n/* }}} */\n\n/* {{{ libssh2_channel_eof\n * Read channel's eof status\n */\nLIBSSH2_API int libssh2_channel_eof(LIBSSH2_CHANNEL *channel)\n{\n\tLIBSSH2_SESSION *session = channel->session;\n\tLIBSSH2_PACKET *packet = session->packets.head;\n\n\twhile (packet) {\n\t\tif (((packet->data[0] == SSH_MSG_CHANNEL_DATA) || (packet->data[0] == SSH_MSG_CHANNEL_EXTENDED_DATA)) &&\n\t\t\t(channel->local.id == libssh2_ntohu32(packet->data + 1))) {\n\t\t\t/* There's data waiting to be read yet, mask the EOF status */\n\t\t\treturn 0;\n\t\t}\n\t\tpacket = packet->next;\n\t}\n\n\treturn channel->remote.eof;\n}\n/* }}} */\n\n/* {{{ libssh2_channel_close\n * Close a channel\n */\nLIBSSH2_API int libssh2_channel_close(LIBSSH2_CHANNEL *channel)\n{\n\tLIBSSH2_SESSION *session = channel->session;\n\tunsigned char packet[5];\n\n\tif (channel->local.close) {\n\t\t/* Already closed, act like we sent another close, even though we didn't... shhhhhh */\n\t\treturn 0;\n\t}\n\n#ifdef LIBSSH2_DEBUG_CONNECTION\n\t_libssh2_debug(session, LIBSSH2_DBG_CONN, \"Closing channel %lu/%lu\", channel->local.id, channel->remote.id);\n#endif\n\n\tif (channel->close_cb) {\n\t\tLIBSSH2_CHANNEL_CLOSE(session, channel);\n\t}\n\tchannel->local.close = 1;\n\n\tpacket[0] = SSH_MSG_CHANNEL_CLOSE;\n\tlibssh2_htonu32(packet + 1, channel->remote.id);\n\tif (libssh2_packet_write(session, packet, 5)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send close-channel request\", 0);\n\t\treturn -1;\n\t}\n\n\t/* TODO: Wait up to a timeout value for a CHANNEL_CLOSE to come back, to avoid the problem alluded to in channel_nextid */\n\n\treturn 0;\n}\n/* }}} */\n\n/* {{{ libssh2_channel_wait_closed\n * Awaiting channel close after EOF\n */\nLIBSSH2_API int libssh2_channel_wait_closed(LIBSSH2_CHANNEL *channel)\n{\n\tLIBSSH2_SESSION* session = channel->session;\n\n\tif (!libssh2_channel_eof(channel)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_INVAL, \"libssh2_channel_wait_closed() invoked when channel is not in EOF state\", 0);\n\t\treturn -1;\n\t}\n\n#ifdef LIBSSH2_DEBUG_CONNECTION\n\t_libssh2_debug(session, LIBSSH2_DBG_CONN, \"Awaiting close of channel %lu/%lu\", channel->local.id, channel->remote.id);\n#endif\n\n\t/* while channel is not closed, read more\n\t * packets from the network.\n\t * Either or channel will be closed\n\t * or network timeout will occur\n\t */\n\twhile (!channel->remote.close && libssh2_packet_read(session, 1) > 0)\n\t\t;\n\n\treturn 1;\n}\n/* }}} */\n\n\n/* {{{ libssh2_channel_free\n * Make sure a channel is closed, then remove the channel from the session and free its resource(s)\n */\nLIBSSH2_API int libssh2_channel_free(LIBSSH2_CHANNEL *channel)\n{\n\tLIBSSH2_SESSION *session = channel->session;\n\tunsigned char channel_id[4], *data;\n\tunsigned long data_len;\n\n#ifdef LIBSSH2_DEBUG_CONNECTION\n\t_libssh2_debug(session, LIBSSH2_DBG_CONN, \"Freeing channel %lu/%lu resources\", channel->local.id, channel->remote.id);\n#endif\n\t/* Allow channel freeing even when the socket has lost its connection */\n\tif (!channel->local.close && (session->socket_state == LIBSSH2_SOCKET_CONNECTED) &&\n\t\tlibssh2_channel_close(channel)) {\n\t\treturn -1;\n\t}\n\n\t/* channel->remote.close *might* not be set yet, Well...\n\t * We've sent the close packet, what more do you want?\n\t * Just let packet_add ignore it when it finally arrives\n\t */\n\n\t/* Clear out packets meant for this channel */\n\tlibssh2_htonu32(channel_id, channel->local.id);\n\twhile  ((libssh2_packet_ask_ex(session, SSH_MSG_CHANNEL_DATA, \t\t  &data, &data_len, 1, channel_id, 4, 1) >= 0) ||\n\t\t\t(libssh2_packet_ask_ex(session, SSH_MSG_CHANNEL_EXTENDED_DATA, &data, &data_len, 1, channel_id, 4, 1) >= 0)) {\n\t\tLIBSSH2_FREE(session, data);\n\t}\n\n\t/* free \"channel_type\" */\n\tif (channel->channel_type) {\n\t\tLIBSSH2_FREE(session, channel->channel_type);\n\t}\n\n\t/* Unlink from channel brigade */\n\tif (channel->prev) {\n\t\tchannel->prev->next = channel->next;\n\t} else {\n\t\tsession->channels.head = channel->next;\n\t}\n\tif (channel->next) {\n\t\tchannel->next->prev = channel->prev;\n\t} else {\n\t\tsession->channels.tail = channel->prev;\n\t}\n\n\tLIBSSH2_FREE(session, channel);\n\n\treturn 0;\n}\n/* }}} */\n\n/* {{{ libssh2_channel_window_read_ex\n * Check the status of the read window\n * Returns the number of bytes which the remote end may send without overflowing the window limit\n * read_avail (if passed) will be populated with the number of bytes actually available to be read\n * window_size_initial (if passed) will be populated with the window_size_initial as defined by the channel_open request\n */\nLIBSSH2_API unsigned long libssh2_channel_window_read_ex(LIBSSH2_CHANNEL *channel, unsigned long *read_avail, unsigned long *window_size_initial)\n{\n\tif (window_size_initial) {\n\t\t*window_size_initial = channel->remote.window_size_initial;\n\t}\n\n\tif (read_avail) {\n\t\tunsigned long bytes_queued = 0;\n\t\tLIBSSH2_PACKET *packet = channel->session->packets.head;\n\n\t\twhile (packet) {\n\t\t\tunsigned char packet_type = packet->data[0];\n\n\t\t\tif (((packet_type == SSH_MSG_CHANNEL_DATA) || (packet_type == SSH_MSG_CHANNEL_EXTENDED_DATA)) &&\n\t\t\t\t(libssh2_ntohu32(packet->data + 1) == channel->local.id)) {\n\t\t\t\tbytes_queued += packet->data_len - packet->data_head;\n\t\t\t}\n\n\t\t\tpacket = packet->next;\n\t\t}\n\n\t\t*read_avail = bytes_queued;\n\t}\n\n\treturn channel->remote.window_size;\n}\n/* }}} */\n\n/* {{{ libssh2_channel_window_write_ex\n * Check the status of the write window\n * Returns the number of bytes which may be safely writen on the channel without blocking\n * window_size_initial (if passed) will be populated with the size of the initial window as defined by the channel_open request\n */\nLIBSSH2_API unsigned long libssh2_channel_window_write_ex(LIBSSH2_CHANNEL *channel, unsigned long *window_size_initial)\n{\n\tif (window_size_initial) {\n\t\t/* For locally initiated channels this is very often 0, so it's not *that* useful as information goes */\n\t\t*window_size_initial = channel->local.window_size_initial;\n\t}\n\n\treturn channel->local.window_size;\n}\n/* }}} */\n"
  },
  {
    "path": "Example/comp.c",
    "content": "/* Copyright (c) 2004-2006, Sara Golemon <sarag@libssh2.org>\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms,\n * with or without modification, are permitted provided\n * that the following conditions are met:\n *\n *   Redistributions of source code must retain the above\n *   copyright notice, this list of conditions and the\n *   following disclaimer.\n *\n *   Redistributions in binary form must reproduce the above\n *   copyright notice, this list of conditions and the following\n *   disclaimer in the documentation and/or other materials\n *   provided with the distribution.\n *\n *   Neither the name of the copyright holder nor the names\n *   of any other contributors may be used to endorse or\n *   promote products derived from this software without\n *   specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND\n * CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES,\n * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE\n * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY\n * OF SUCH DAMAGE.\n */\n\n#include \"libssh2_priv.h\"\n#include <zlib.h>\n\n/* ********\n   * none *\n   ******** */\n\n/* {{{ libssh2_comp_method_none_comp\n * Minimalist compression: Absolutely none\n */\nstatic int libssh2_comp_method_none_comp(LIBSSH2_SESSION *session,\n\t\t\t\t\t int compress,\n\t\t\t\t\t unsigned char **dest,\n\t\t\t\t\t unsigned long *dest_len,\n\t\t\t\t\t unsigned long payload_limit,\n\t\t\t\t\t int *free_dest,\n\t\t\t\t\t const unsigned char *src,\n\t\t\t\t\t unsigned long src_len,\n\t\t\t\t\t void **abstract)\n{\n\t(void)session;\n\t(void)compress;\n\t(void)payload_limit;\n\t(void)abstract;\n\t*dest = (unsigned char *)src;\n\t*dest_len = src_len;\n\n\t*free_dest = 0;\n\n\treturn 0;\n}\n/* }}} */\n\nstatic LIBSSH2_COMP_METHOD libssh2_comp_method_none = {\n\t(char *)\"none\",\n\tNULL,\n\tlibssh2_comp_method_none_comp,\n\tNULL\n};\n\n#ifdef LIBSSH2_HAVE_ZLIB\n/* ********\n   * zlib *\n   ******** */\n\n/* {{{ Memory management wrappers\n * Yes, I realize we're doing a callback to a callback,\n * Deal...\n */\n\nstatic voidpf libssh2_comp_method_zlib_alloc(voidpf opaque, uInt items, uInt size)\n{\n\tLIBSSH2_SESSION *session = (LIBSSH2_SESSION*)opaque;\n\n\treturn (voidpf)LIBSSH2_ALLOC(session, items * size);\n}\n\nstatic void libssh2_comp_method_zlib_free(voidpf opaque, voidpf address)\n{\n\tLIBSSH2_SESSION *session = (LIBSSH2_SESSION*)opaque;\n\n\tLIBSSH2_FREE(session, address);\n}\n/* }}} */\n\n/* {{{ libssh2_comp_method_zlib_init\n * All your bandwidth are belong to us (so save some)\n */\nstatic int libssh2_comp_method_zlib_init(LIBSSH2_SESSION *session, int compress, void **abstract)\n{\n\tz_stream *strm;\n\tint status;\n\n\tstrm = LIBSSH2_ALLOC(session, sizeof(z_stream));\n\tif (!strm) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for zlib compression/decompression\", 0);\n\t\treturn -1;\n\t}\n\tmemset(strm, 0, sizeof(z_stream));\n\n\tstrm->opaque = (voidpf)session;\n\tstrm->zalloc = (alloc_func)libssh2_comp_method_zlib_alloc;\n\tstrm->zfree = (free_func)libssh2_comp_method_zlib_free;\n\tif (compress) {\n\t\t/* deflate */\n\t\tstatus = deflateInit(strm, Z_DEFAULT_COMPRESSION);\n\t} else {\n\t\t/* inflate */\n\t\tstatus = inflateInit(strm);\n\t}\n\n\tif (status != Z_OK) {\n\t\tLIBSSH2_FREE(session, strm);\n\t\treturn -1;\n\t}\n\t*abstract = strm;\n\n\treturn 0;\n}\n/* }}} */\n\n/* {{{ libssh2_comp_method_zlib_comp\n * zlib, a compression standard for all occasions\n */\nstatic int libssh2_comp_method_zlib_comp(LIBSSH2_SESSION *session,\n\t\t\t\t\t int compress,\n\t\t\t\t\t unsigned char **dest,\n\t\t\t\t\t unsigned long *dest_len,\n\t\t\t\t\t unsigned long payload_limit,\n\t\t\t\t\t int *free_dest,\n\t\t\t\t\t const unsigned char *src,\n\t\t\t\t\t unsigned long src_len,\n\t\t\t\t\t void **abstract)\n{\n\tz_stream *strm = *abstract;\n\t/* A short-term alloc of a full data chunk is better than a series of\n\t   reallocs */\n\tchar *out;\n\tint out_maxlen = compress ? (src_len + 4) : (2 * src_len);\n\tint limiter = 0;\n\n\t/* In practice they never come smaller than this */\n\tif (out_maxlen < 25) {\n\t\tout_maxlen = 25;\n\t}\n\n\tif (out_maxlen > (int)payload_limit) {\n\t\tout_maxlen = payload_limit;\n\t}\n\n\tstrm->next_in = (unsigned char *)src;\n\tstrm->avail_in = src_len;\n\tstrm->next_out = (unsigned char *)LIBSSH2_ALLOC(session, out_maxlen);\n\tout = (char *)strm->next_out;\n\tstrm->avail_out = out_maxlen;\n\tif (!strm->next_out) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate compression/decompression buffer\", 0);\n\t\treturn -1;\n\t}\n\twhile (strm->avail_in) {\n\t\tint status;\n\n\t\tif (compress) {\n\t\t\tstatus = deflate(strm, Z_PARTIAL_FLUSH);\n\t\t} else {\n\t\t\tstatus = inflate(strm, Z_PARTIAL_FLUSH);\n\t\t}\n\t\tif (status != Z_OK) {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_ZLIB, \"compress/decompression failure\", 0);\n\t\t\tLIBSSH2_FREE(session, out);\n\t\t\treturn -1;\n\t\t}\n\t\tif (strm->avail_in) {\n\t\t\tunsigned long out_ofs = out_maxlen - strm->avail_out;\n\n\t\t\tout_maxlen += compress ? (strm->avail_in + 4) : (2 * strm->avail_in);\n\n\t\t\tif ((out_maxlen > (int)payload_limit) &&\n\t\t\t    !compress && limiter++) {\n\t\t\t\tlibssh2_error(session, LIBSSH2_ERROR_ZLIB,\n\t\t\t\t\t      \"Excessive growth in decompression phase\", 0);\n\t\t\t\tLIBSSH2_FREE(session, out);\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tout = LIBSSH2_REALLOC(session, out, out_maxlen);\n\t\t\tif (!out) {\n\t\t\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to expand compress/decompression buffer\", 0);\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tstrm->next_out = (unsigned char *)out + out_ofs;\n\t\t\tstrm->avail_out += compress ? (strm->avail_in + 4) : (2 * strm->avail_in);\n\t\t} else while (!strm->avail_out) {\n\t\t\t/* Done with input, might be a byte or two in internal buffer during compress\n\t\t\t * Or potentially many bytes if it's a decompress\n\t\t\t */\n\t\t\tint grow_size = compress ? 8 : 1024;\n\n\t\t\tif (out_maxlen >= (int)payload_limit) {\n\t\t\t\tlibssh2_error(session, LIBSSH2_ERROR_ZLIB, \"Excessive growth in decompression phase\", 0);\n\t\t\t\tLIBSSH2_FREE(session, out);\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tif (grow_size > (int)(payload_limit - out_maxlen)) {\n\t\t\t\tgrow_size = payload_limit - out_maxlen;\n\t\t\t}\n\n\t\t\tout_maxlen += grow_size;\n\t\t\tstrm->avail_out = grow_size;\n\n\t\t\tout = LIBSSH2_REALLOC(session, out, out_maxlen);\n\t\t\tif (!out) {\n\t\t\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to expand final compress/decompress buffer\", 0);\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tstrm->next_out = (unsigned char *)out + out_maxlen -\n\t\t\t\tgrow_size;\n\n\t\t\tif (compress) {\n\t\t\t\tstatus = deflate(strm, Z_PARTIAL_FLUSH);\n\t\t\t} else {\n\t\t\t\tstatus = inflate(strm, Z_PARTIAL_FLUSH);\n\t\t\t}\n\t\t\tif (status != Z_OK) {\n\t\t\t\tlibssh2_error(session, LIBSSH2_ERROR_ZLIB, \"compress/decompression failure\", 0);\n\t\t\t\tLIBSSH2_FREE(session, out);\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\t*dest = (unsigned char *)out;\n\t*dest_len = out_maxlen - strm->avail_out;\n\t*free_dest = 1;\n\n\treturn 0;\n}\n/* }}} */\n\n/* {{{ libssh2_comp_method_zlib_dtor\n * All done, no more compression for you\n */\nstatic int libssh2_comp_method_zlib_dtor(LIBSSH2_SESSION *session, int compress, void **abstract)\n{\n\tz_stream *strm = *abstract;\n\n\tif (strm) {\n\t\tif (compress) {\n\t\t\t/* deflate */\n\t\t\tdeflateEnd(strm);\n\t\t} else {\n\t\t\t/* inflate */\n\t\t\tinflateEnd(strm);\n\t\t}\n\n\t\tLIBSSH2_FREE(session, strm);\n\t}\n\n\t*abstract = NULL;\n\n\treturn 0;\n}\n/* }}} */\n\nstatic LIBSSH2_COMP_METHOD libssh2_comp_method_zlib = {\n\t(char *)\"zlib\",\n\tlibssh2_comp_method_zlib_init,\n\tlibssh2_comp_method_zlib_comp,\n\tlibssh2_comp_method_zlib_dtor,\n};\n#endif /* LIBSSH2_HAVE_ZLIB */\n\n/* ***********************\n   * Compression Methods *\n   *********************** */\n\nstatic LIBSSH2_COMP_METHOD *_libssh2_comp_methods[] = {\n\t&libssh2_comp_method_none,\n#ifdef LIBSSH2_HAVE_ZLIB\n\t&libssh2_comp_method_zlib,\n#endif /* LIBSSH2_HAVE_ZLIB */\n\tNULL\n};\n\nLIBSSH2_COMP_METHOD **libssh2_comp_methods(void) {\n\treturn _libssh2_comp_methods;\n}\n\n"
  },
  {
    "path": "Example/crypt.c",
    "content": "/* Copyright (c) 2004-2006, Sara Golemon <sarag@libssh2.org>\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms,\n * with or without modification, are permitted provided\n * that the following conditions are met:\n *\n *   Redistributions of source code must retain the above\n *   copyright notice, this list of conditions and the\n *   following disclaimer.\n *\n *   Redistributions in binary form must reproduce the above\n *   copyright notice, this list of conditions and the following\n *   disclaimer in the documentation and/or other materials\n *   provided with the distribution.\n *\n *   Neither the name of the copyright holder nor the names\n *   of any other contributors may be used to endorse or\n *   promote products derived from this software without\n *   specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND\n * CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES,\n * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE\n * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY\n * OF SUCH DAMAGE.\n */\n\n#include \"libssh2_priv.h\"\n\n#if LIBSSH2_CRYPT_NONE\n/* {{{ libssh2_crypt_none_crypt\n * Minimalist cipher: VERY secure *wink*\n */\nstatic int libssh2_crypt_none_crypt(LIBSSH2_SESSION *session, unsigned char *buf, void **abstract)\n{\n\t/* Do nothing to the data! */\n\treturn 0;\n}\n/* }}} */\n\nstatic LIBSSH2_CRYPT_METHOD libssh2_crypt_method_none = {\n\t\"none\",\n\t8, /* blocksize (SSH2 defines minimum blocksize as 8) */\n\t0, /* iv_len */\n\t0, /* secret_len */\n\t0, /* flags */\n\tNULL,\n\tlibssh2_crypt_none_crypt,\n\tNULL\n};\n#endif /* LIBSSH2_CRYPT_NONE */\n\nstruct crypt_ctx {\n\tint encrypt;\n\t_libssh2_cipher_type(algo);\n\t_libssh2_cipher_ctx h;\n};\n\nstatic int init (LIBSSH2_SESSION *session,\n\t\t LIBSSH2_CRYPT_METHOD *method,\n\t\t unsigned char *iv, int *free_iv,\n\t\t unsigned char *secret, int *free_secret,\n\t\t int encrypt, void **abstract)\n{\n\tstruct crypt_ctx *ctx = LIBSSH2_ALLOC(session,\n\t\t\t\t\t      sizeof(struct crypt_ctx));\n\tif (!ctx) {\n\t\treturn -1;\n\t}\n\tctx->encrypt = encrypt;\n\tctx->algo = method->algo;\n\tif (_libssh2_cipher_init (&ctx->h, ctx->algo, iv, secret, encrypt))\n\t{\n\t\tLIBSSH2_FREE (session, ctx);\n\t\treturn -1;\n\t}\n\t*abstract = ctx;\n\t*free_iv = 1;\n\t*free_secret = 1;\n\treturn 0;\n}\n\nstatic int crypt(LIBSSH2_SESSION *session, unsigned char *block, void **abstract)\n{\n\tstruct crypt_ctx *cctx = *(struct crypt_ctx **)abstract;\n\treturn _libssh2_cipher_crypt(&cctx->h, cctx->algo,\n\t\t\t\t     cctx->encrypt, block);\n}\n\nstatic int dtor(LIBSSH2_SESSION *session, void **abstract)\n{\n\tstruct crypt_ctx **cctx = (struct crypt_ctx **)abstract;\n\tif (cctx && *cctx) {\n\t\t_libssh2_cipher_dtor(&(*cctx)->h);\n\t\tLIBSSH2_FREE(session, *cctx);\n\t\t*abstract = NULL;\n\t}\n\treturn 0;\n}\n\n#if LIBSSH2_AES\nstatic LIBSSH2_CRYPT_METHOD libssh2_crypt_method_aes128_cbc = {\n\t\"aes128-cbc\",\n\t16, /* blocksize */\n\t16, /* initial value length */\n\t16, /* secret length -- 16*8 == 128bit */\n\t0, /* flags */\n\t&init,\n\t&crypt,\n\t&dtor,\n\t_libssh2_cipher_aes128\n};\n\nstatic LIBSSH2_CRYPT_METHOD libssh2_crypt_method_aes192_cbc = {\n\t\"aes192-cbc\",\n\t16, /* blocksize */\n\t16, /* initial value length */\n\t24, /* secret length -- 24*8 == 192bit */\n\t0, /* flags */\n\t&init,\n\t&crypt,\n\t&dtor,\n\t_libssh2_cipher_aes192\n};\n\nstatic LIBSSH2_CRYPT_METHOD libssh2_crypt_method_aes256_cbc = {\n\t\"aes256-cbc\",\n\t16, /* blocksize */\n\t16, /* initial value length */\n\t32, /* secret length -- 32*8 == 256bit */\n\t0, /* flags */\n\t&init,\n\t&crypt,\n\t&dtor,\n\t_libssh2_cipher_aes256\n};\n\n/* rijndael-cbc@lysator.liu.se == aes256-cbc */\nstatic LIBSSH2_CRYPT_METHOD libssh2_crypt_method_rijndael_cbc_lysator_liu_se = {\n\t\"rijndael-cbc@lysator.liu.se\",\n\t16, /* blocksize */\n\t16, /* initial value length */\n\t32, /* secret length -- 32*8 == 256bit */\n\t0, /* flags */\n\t&init,\n\t&crypt,\n\t&dtor,\n\t_libssh2_cipher_aes256\n};\n#endif /* LIBSSH2_AES */\n\n#if LIBSSH2_BLOWFISH\nstatic LIBSSH2_CRYPT_METHOD libssh2_crypt_method_blowfish_cbc = {\n\t\"blowfish-cbc\",\n\t8, /* blocksize */\n\t8, /* initial value length */\n\t16, /* secret length */\n\t0, /* flags */\n\t&init,\n\t&crypt,\n\t&dtor,\n\t_libssh2_cipher_blowfish\n};\n#endif /* LIBSSH2_BLOWFISH */\n\n#if LIBSSH2_RC4\nstatic LIBSSH2_CRYPT_METHOD libssh2_crypt_method_arcfour = {\n\t\"arcfour\",\n\t8, /* blocksize */\n\t8, /* initial value length */\n\t16, /* secret length */\n\t0, /* flags */\n\t&init,\n\t&crypt,\n\t&dtor,\n\t_libssh2_cipher_arcfour\n};\n#endif /* LIBSSH2_RC4 */\n\n#if LIBSSH2_CAST\nstatic LIBSSH2_CRYPT_METHOD libssh2_crypt_method_cast128_cbc = {\n\t\"cast128-cbc\",\n\t8, /* blocksize */\n\t8, /* initial value length */\n\t16, /* secret length */\n\t0, /* flags */\n\t&init,\n\t&crypt,\n\t&dtor,\n\t_libssh2_cipher_cast5\n};\n#endif /* LIBSSH2_CAST */\n\n#if LIBSSH2_3DES\nstatic LIBSSH2_CRYPT_METHOD libssh2_crypt_method_3des_cbc = {\n\t\"3des-cbc\",\n\t8, /* blocksize */\n\t8, /* initial value length */\n\t24, /* secret length */\n\t0, /* flags */\n\t&init,\n\t&crypt,\n\t&dtor,\n\t_libssh2_cipher_3des\n};\n#endif\n\nstatic LIBSSH2_CRYPT_METHOD *_libssh2_crypt_methods[] = {\n#if LIBSSH2_AES\n\t&libssh2_crypt_method_aes256_cbc,\n\t&libssh2_crypt_method_rijndael_cbc_lysator_liu_se, /* == aes256-cbc */\n\t&libssh2_crypt_method_aes192_cbc,\n\t&libssh2_crypt_method_aes128_cbc,\n#endif /* LIBSSH2_AES */\n#if LIBSSH2_BLOWFISH\n\t&libssh2_crypt_method_blowfish_cbc,\n#endif /* LIBSSH2_BLOWFISH */\n#if LIBSSH2_RC4\n\t&libssh2_crypt_method_arcfour,\n#endif /* LIBSSH2_RC4 */\n#if LIBSSH2_CAST\n\t&libssh2_crypt_method_cast128_cbc,\n#endif /* LIBSSH2_CAST */\n#if LIBSSH2_3DES\n\t&libssh2_crypt_method_3des_cbc,\n#endif /*  LIBSSH2_DES */\n#if LIBSSH2_CRYPT_NONE\n\t&libssh2_crypt_method_none,\n#endif\n\tNULL\n};\n\n/* Expose to kex.c */\nLIBSSH2_CRYPT_METHOD **libssh2_crypt_methods(void) {\n\treturn _libssh2_crypt_methods;\n}\n"
  },
  {
    "path": "Example/da.lproj/DropletLauncher.nib/classes.nib",
    "content": "{\n    IBClasses =     (\n                {\n            CLASS = DropletLauncherDelegate;\n            LANGUAGE = ObjC;\n            SUPERCLASS = NSObject;\n        },\n                {\n            CLASS = FirstResponder;\n            LANGUAGE = ObjC;\n            SUPERCLASS = NSObject;\n        }\n    );\n    IBVersion = 1;\n}"
  },
  {
    "path": "Example/da.lproj/DropletLauncher.nib/info.nib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IBDocumentLocation</key>\n\t<string>702 98 356 240 0 0 1920 1178 </string>\n\t<key>IBEditorPositions</key>\n\t<dict>\n\t\t<key>29</key>\n\t\t<string>116 400 338 44 0 0 1920 1178 </string>\n\t</dict>\n\t<key>IBFramework Version</key>\n\t<string>489.0</string>\n\t<key>IBOldestOS</key>\n\t<integer>4</integer>\n\t<key>IBSystem Version</key>\n\t<string>9C7010</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/da.lproj/InfoPlist.strings",
    "content": "/* Localized versions of Info.plist keys */\n\nCFBundleName = \"FTPConnection\";\nNSHumanReadableCopyright = \"© __MyCompanyName__, 2004\";"
  },
  {
    "path": "Example/da.lproj/Localizable.strings",
    "content": "/* authorise */\n\"%@\\nWhat would you like to do?\" = \"%@\\nHvad vil du gøre?\";\n\n/* ConnectionOpenPanel */\n\"A Connection Error Occurred\" = \"Der opstod en forbindelsesfejl\";\n\n/* FTP Abort */\n\"Action Aborted. Local Error\" = \"Handling afbrudt. Lokal fejl\";\n\n/* FTP no data stream types available */\n\"All data connection modes have been exhausted. Check with the server administrator.\" = \"Alle dataforbindelsesmuligheder er udtømte. Spørg serveradministratoren.\";\n\n/* WebDAV Create Directory Error\n   MobileMe Create Directory Error */\n\n\"An intermediate directory does not exist and needs to be created before the current directory\" = \"Et midlertidigt bibliotek findes ikke og skal oprettes før det aktuelle bibliotek\";\n\n/* WebDAV Create Directory Error\n   MobileMe Create Directory Error */\n\n\"An unknown error occurred\" = \"Der opstod en ukendt fejl\";\n\n/* multiple connection joiner */\n\"and\" = \"og\";\n\n/* close window */\n\"Are you sure you want to stop the upload?\" = \"Er du sikker på du vil stoppe din upload?\";\n\n/* authorise */\n\"Authorize\" = \"Godkend\";\n\n/* authorise */\n\"Authorize Connection?\" = \"Godkend forbindelse?\";\n\n/* connection type */\n\"auto\" = \"auto\";\n\n/* config */\n\"Bad Configuration\" = \"Fejlkonfiguration\";\n\n/* error */\n\"Bad Droplet\" = \"Ugyldig Droplet\";\n\n/* Transfer Controller */\n\"Bad Password.\" = \"Forkert adgangkode.\";\n\n/* context menu\n   tree controller action gear */\n\n\"Browse Packages\" = \"Gennemse pakker\";\n\n/* filesize: bytes */\n\"bytes\" = \"bytes\";\n\n/* authorise */\n\"Cancel\" = \"Annuller\";\n\n/* FTP upload error */\n\"Cannot Upload File. Storage quota on server exceeded\" = \"Kan ikke uploade arkiv. Opbevaringskvota på serveren er overskredet\";\n\n/* transfer controller\n   connected message */\n\n\"Connected to %@\" = \"Forbundet til %@\";\n\n/* file transcript */\n\"Connected to File System\\n\" = \"Forbundet til arkivsystem\\n\";\n\n/* connection string */\n\"Connecting to %@\" = \"Forbinder til %@\";\n\n/* file transcript */\n\"Connecting…\\n\" = \"Forbinder…\\n\";\n\n/* close window */\n\"Continue Upload\" = \"Fortsæt upload\";\n\n/* file transcript */\n\"Copying %@ to %@\\n\" = \"Kopierer %1$@ til %2$@\\n\";\n\n/* FileConnection set permissions error */\n\"Could not change file permissions\" = \"Kunne ikke ændre arkivtilladelser\";\n\n/* FileConnection create directory error */\n\"Could not create directory\" = \"Kunne ikke oprette mappe\";\n\n/* config */\n\"Couldn't find configuration file specified\\n %@\" = \"Kunne ikke finde det angivne konfigurationsarkiv\\n %@\";\n\n/* file transcript */\n\"Create Directory %@ (%lo)\\n\" = \"Opret mappe %1$@ (%2$lo)\\n\";\n\n/* FTP Create directory error */\n\"Create directory operation failed\" = \"Opret mappe-handling mislykkedes\";\n\n/* Failed to open a data stream connection */\n\"Data Stream Timed Out\" = \"Datastrøm udløb\";\n\n/* outline view column header name\n   outline view column context menu item */\n\n\"Date Modified\" = \"Ændringsdato\";\n\n/* file transcript */\n\"Deleting File %@\\n\" = \"Sletter arkiv %@\\n\";\n\n/* status */\n\"Disconnected\" = \"Ikke forbundet\";\n\n/* transfer controller */\n\"Disconnected from %@\" = \"Lukker forbindelse til %@\";\n\n/* unknown UTI name */\n\"Document\" = \"Dokument\";\n\n/* filesize: exabytes */\n\"EB\" = \"EB\";\n\n/* Directory Parsing Error */\n\"Error parsing directory listing\" = \"Fejl ved undersøgelse af mappeindhold\";\n\n/* FTP no data streams available */\n\"Exhausted all connection types to server. Please contact server administrator\" = \"Har udtømt alle forbindelsestyper til serveren. Kontakt venligst serveradministratoren\";\n\n/* Bad ftp command */\n\"Failed to change to directory\" = \"Kunne ikke skifte mappe\";\n\n/* couldn't delete the file\n   MobileMe Directory Deletion Error\n   WebDAV Directory Deletion Error */\n\n\n\"Failed to delete directory\" = \"Kunne ikke slette mappe\";\n\n/* error for deleting a directory */\n\"Failed to delete directory: %@\" = \"Kunne ikke slette mappen: %@\";\n\n/* couldn't delete the file\n   MobileMe file deletion error\n   WebDAV File Deletion Error */\n\n\n\"Failed to delete file\" = \"Kunne ikke slette arkiv\";\n\n/* error for deleting a file */\n\"Failed to delete file: %@\" = \"Kunne ikke slette arkiv: %@\";\n\n/* No MobileMe account or password */\n\"Failed to retrieve MobileMe account details\" = \"Kunne ikke hente information om MobileMe-konto\";\n\n/* FTP Upload error */\n\"Failed to set permissions for path %@\" = \"Kunne ikke indstille tilladelser for stien %@\";\n\n/* FileConnection copy data error */\n\"Failed to upload data\" = \"Kunne ikke oploade data\";\n\n/* error transferring */\n\"Failed to verify file transferred successfully\" = \"Kunne ikke bekræfte at arkivoverførsel lykkedes\";\n\n/* FTP file download error */\n\"File %@ does not exist on server\" = \"Arkiver %@ findes ikke på serveren\";\n\n/* FTP error */\n\"File / Directory does not exist\" = \"Arkiv / Mappe findes ikke\";\n\n/* FileConnection error */\n\"File Already Exists\" = \"Arkivet findes allerede\";\n\n/* FTP file in use */\n\"File in Use\" = \"Arkivet er i brug\";\n\n/* FTP Upload error */\n\"Filename not Allowed\" = \"Arkivnavn ikke tilladt\";\n\n/* directory kind */\n\"Folder\" = \"Mappe\";\n\n/* FTP service timed out */\n\"FTP service not available; Remote server has closed connection\" = \"FTP-service ikke tilgængelig. Serveren har lukket forbindelsen\";\n\n/* FTP no service */\n\"FTP Service Unavailable\" = \"FTP-service ikke tilgængelig\";\n\n/* filesize: gigabytes */\n\"GB\" = \"GB\";\n\n/* transfer controller */\n\"Hide Files\" = \"Skjul arkiver\";\n\n/* Couldn't open the port to the host */\n\"Host Unavailable\" = \"Vært ikke tilgængelig\";\n\n/* WebDAV Create Directory Error\n   MobileMe Create Directory Error */\n\n\"Insufficient storage space available\" = \"Ikke nok plads tilgængelig\";\n\n/* FTP Error */\n\"Invalid Account name\" = \"Ugyldigt kontonavn\";\n\n/* Stream Error before opening */\n\"Is the service running on the server\" = \"Kører denne service på serveren\";\n\n/* filesize: kilobytes */\n\"KB\" = \"KB\";\n\n/* outline view column header name\n   outline view column context menu item */\n\n\"Kind\" = \"Type\";\n\n/* FTP download error */\n\"Local File already exists\" = \"Lokalt arkiv findes allerede\";\n\n/* filesize: megabytes */\n\"MB\" = \"MB\";\n\n/* outline view column header name\n   outline view column context menu item */\n\n\"Name\" = \"Navn\";\n\n/* new cat name */\n\"New Category\" = \"Ny kategori\";\n\n/* tree controller action gear */\n\"New Folder\" = \"Ny mappe\";\n\n/* config */\n\"No configuration file specified\" = \"Intet konfigurationsarkiv angivet\";\n\n/* failed to find a connection class */\n\"No connection available for requested connection type\" = \"Ingen forbindelse tilgængelig for den ønskede forbindelsestype\";\n\n/* failed to find a connection class */\n\"No connection available for requested port\" = \"ingen forbindelse tilgængelig på den ønskede port\";\n\n/* failed to find a connection class */\n\"No connection available for requested protocol\" = \"Ingen forbindelse tilgængelig for den ønskede protokol\";\n\n/* FTP Error */\n\"No Storage Space Available\" = \"Ingen ledig plads tilgængelig\";\n\n/* FTP Error */\n\"Not Logged In\" = \"Ikke logget ind\";\n\n/* sftp last error\n   OK */\n\"OK\" = \"OK\";\n\n/* WebDAV Uploading Error\n   MobileMe File Uploading Error */\n\n\"Parent Folder does not exist\" = \"Overliggende mappe findes ikke\";\n\n/* No comment provided by engineer. */\n\"Password was not accepted.\" = \"Adgangskoden blev ikke godkendt.\";\n\n/* filesize: petabytes */\n\"PB\" = \"PB\";\n\n/* mimic Finder naming conventions */\n\"Plain text document\" = \"Normalt tekstdokument\";\n\n/* config\n   error */\n\n\"Quit\" = \"Slut\";\n\n/* tree controller action gear */\n\"Refresh\" = \"Opdater\";\n\n/* file transcript */\n\"Renaming %@ to %@\\n\" = \"Omdøber %1$@ til %2$@\\n\";\n\n/* FTP Error */\n\"Request Aborted. Page Type Unknown\" = \"Anmodning afbrudt. Ukendt sidetype\";\n\n/* abbreviation for seconds, e.g. 12 MB/s */\n\"s\" = \"s\";\n\n/* category name */\n\"Saved Hosts\" = \"Arkiverede værter\";\n\n/* transfer controller */\n\"Show Files\" = \"Vis arkiver\";\n\n/* context menu\n   tree controller action gear */\n\n\"Show Hidden Files\" = \"Vis skjulte arkiver\";\n\n/* context menu\n   tree controller action gear */\n\n\"Show Package Extensions\" = \"Vis pakke-endelser\";\n\n/* outline view column header name\n   outline view column context menu item */\n\n\"Size\" = \"Str.\";\n\n/* close window */\n\"Stop Upload\" = \"Stop upload\";\n\n/* close window */\n\"Stop Upload?\" = \"Stop upload?\";\n\n/* Error creating stream */\n\"Stream Unavailable\" = \"Stream ikke tilgængelig\";\n\n/* filesize: terabytes */\n\"TB\" = \"TB\";\n\n/* WebDAV Create Directory Error\n   MobileMe Create Directory Error */\n\n\"The body of the request is not supported\" = \"Indholdet af anmodningen understøttes ikke\";\n\n/* WebDAV Create Directory Error\n   MobileMe Create Directory Error */\n\n\"The directory already exists\" = \"Mappen findes allerede\";\n\n/* name of a host to connect to; in this case, the local file system rather than a remote server */\n\"the File System\" = \"Arkivsystemet\";\n\n/* WebDAV Create Directory Error\n   MobileMe Create Directory Error */\n\n\"The server does not allow the creation of directories at the current location\" = \"Serveren tillader ikke oprettelse af mapper på dette sted\";\n\n/* error transferring */\n\"The transferred file has a size of 0.\" = \"Det overførte arkivs størrelse er 0.\";\n\n/* MobileMe Directory Contents Error */\n\"There is no MobileMe access to the directory\" = \"Der er ikke MobileMe-adgang til mappen\";\n\n/* No WebDAV access to the specified path */\n\"There is no WebDAV access to the directory\" = \"Der er ikke WebDAV-adgang til mappen\";\n\n/* error */\n\"This droplet is missing the original application that created it. You will need to reinstall the original application.\" = \"Denne droplet mangler det originale program der oprettede den. Du er nød til at geninstallere det originale program.\";\n\n/* time out */\n\"Timed Out waiting for remote host.\" = \"Time out under venten på vært.\";\n\n/* Transfer Controller */\n\"Too many files had transfer problems\" = \"For mange arkiver havde overførselsproblemer\";\n\n/* FileConnection failed to copy file */\n\"Unable to store data in file\" = \"Kunne ikke opbevare data i arkivet\";\n\n/* WebDAV Error */\n\"Unknown Error Occurred\" = \"Der opstod en ukendt fejl\";\n\n/* status message */\n\"Uploading\" = \"Uploader\";\n\n/* status */\n\"Uploading %@\" = \"Uploader %@\";\n\n/* No username or password */\n\"Username and Password are required for FTP connections\" = \"Der kræves brugernavn og adgangskode til FTP-forbindelser\";\n\n/* No username or password */\n\"Username and Password are required for S3 connections\" = \"Der kræves brugernavn og adgangskode til S3-forbindelser\";\n\n/* No username or password */\n\"Username and Password are required for WebDAV connections\" = \"Der kræver brugernavn og adgangskode til WebDAV-forbindelser\";\n\n/* file transcript */\n\"Writing data to %@\\n\" = \"Skriver data til %@\\n\";\n\n/* Bonjour Error */\n\"You can not add a child collection to the Bonjour category.\" = \"Du kan ikke tilføje en underliggende samling til Bonjour-kategorien.\";\n\n/* Bonjour Error */\n\"You can not add a new server to the Bonjour category.\" = \"Du kan ikke tilføje en ny server til Bonjour-kategorien.\";\n\n/* FTP file upload error */\n\"You do not have access to write file %@\" = \"Du har ikke tilladelse til at skrive arkivet %@\";\n\n/* FTP Error */\n\"You need an Account to Upload Files\" = \"Du skal have en konto for et kunne uploade arkiver\";"
  },
  {
    "path": "Example/de.lproj/DropletLauncher.nib/classes.nib",
    "content": "{\n    IBClasses =     (\n                {\n            CLASS = DropletLauncherDelegate;\n            LANGUAGE = ObjC;\n            SUPERCLASS = NSObject;\n        },\n                {\n            CLASS = FirstResponder;\n            LANGUAGE = ObjC;\n            SUPERCLASS = NSObject;\n        }\n    );\n    IBVersion = 1;\n}"
  },
  {
    "path": "Example/de.lproj/DropletLauncher.nib/info.nib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IBDocumentLocation</key>\n\t<string>415 56 356 240 0 0 1280 778 </string>\n\t<key>IBEditorPositions</key>\n\t<dict>\n\t\t<key>29</key>\n\t\t<string>69 259 338 44 0 0 1280 778 </string>\n\t</dict>\n\t<key>IBFramework Version</key>\n\t<string>489.0</string>\n\t<key>IBSystem Version</key>\n\t<string>9E17</string>\n\t<key>IBUsesTextArchiving</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/de.lproj/DropletLauncher.nib/keyedobjects.nib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>$archiver</key>\n\t<string>NSKeyedArchiver</string>\n\t<key>$objects</key>\n\t<array>\n\t\t<string>$null</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>387</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAccessibilityConnectors</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>384</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAccessibilityOidsKeys</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>385</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAccessibilityOidsValues</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>386</integer>\n\t\t\t</dict>\n\t\t\t<key>NSClassesKeys</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>279</integer>\n\t\t\t</dict>\n\t\t\t<key>NSClassesValues</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>280</integer>\n\t\t\t</dict>\n\t\t\t<key>NSConnections</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>9</integer>\n\t\t\t</dict>\n\t\t\t<key>NSFontManager</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t</dict>\n\t\t\t<key>NSFramework</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>6</integer>\n\t\t\t</dict>\n\t\t\t<key>NSNamesKeys</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>255</integer>\n\t\t\t</dict>\n\t\t\t<key>NSNamesValues</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>256</integer>\n\t\t\t</dict>\n\t\t\t<key>NSNextOid</key>\n\t\t\t<integer>250</integer>\n\t\t\t<key>NSObjectsKeys</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>176</integer>\n\t\t\t</dict>\n\t\t\t<key>NSObjectsValues</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>254</integer>\n\t\t\t</dict>\n\t\t\t<key>NSOidsKeys</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>281</integer>\n\t\t\t</dict>\n\t\t\t<key>NSOidsValues</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>282</integer>\n\t\t\t</dict>\n\t\t\t<key>NSRoot</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t\t<key>NSVisibleWindows</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>7</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>5</integer>\n\t\t\t</dict>\n\t\t\t<key>NSClassName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>3</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>NSApplication</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSMutableString</string>\n\t\t\t\t<string>NSString</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSMutableString</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSCustomObject</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSCustomObject</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>IBCocoaFramework</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>8</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSMutableSet</string>\n\t\t\t\t<string>NSSet</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSMutableSet</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>10</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>24</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>29</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>35</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>40</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>46</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>51</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>57</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>61</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>66</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>70</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>74</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>79</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>84</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>90</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>95</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>100</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>105</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>110</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>115</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>120</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>125</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>130</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>134</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>138</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>142</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>148</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>152</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>156</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>160</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>165</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>170</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>22</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>11</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>14</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>12</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>13</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>184</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>181</integer>\n\t\t\t</dict>\n\t\t\t<key>NSName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>183</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>179</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Im Dock ablegen</string>\n\t\t<string>m</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>18</integer>\n\t\t\t</dict>\n\t\t\t<key>NSClassName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>16</integer>\n\t\t\t</dict>\n\t\t\t<key>NSResourceName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>17</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>NSImage</string>\n\t\t<string>NSMenuCheckmark</string>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSCustomResource</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSCustomResource</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>18</integer>\n\t\t\t</dict>\n\t\t\t<key>NSClassName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>16</integer>\n\t\t\t</dict>\n\t\t\t<key>NSResourceName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>20</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>NSMenuMixedState</string>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSMenuItem</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSMenuItem</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>performMiniaturize:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSNibControlConnector</string>\n\t\t\t\t<string>NSNibConnector</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSNibControlConnector</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>28</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>25</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>12</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>26</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Alle nach vorne bringen</string>\n\t\t<string></string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>arrangeInFront:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>34</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>30</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>33</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>32</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>184</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>236</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>235</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Drucken…</string>\n\t\t<string>p</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>print:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>39</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>36</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>38</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>37</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Papierformat…</string>\n\t\t<string>P</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>runPageLayout:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>45</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>41</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>44</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>42</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>43</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>184</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>229</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>228</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>NewApplication Hilfe</string>\n\t\t<string>?</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>showHelp:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>50</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>47</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>48</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>49</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>184</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>212</integer>\n\t\t\t</dict>\n\t\t\t<key>NSName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>213</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>210</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Menü löschen</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>clearRecentDocuments:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSDestination</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>56</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>52</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>55</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>54</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>184</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>188</integer>\n\t\t\t</dict>\n\t\t\t<key>NSName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>202</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>186</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>NewApplication beenden</string>\n\t\t<string>q</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>terminate:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSDestination</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>60</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>58</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>59</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Über NewApplication</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>orderFrontStandardAboutPanel:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSDestination</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>65</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>62</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>64</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1572864</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>63</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Andere ausblenden</string>\n\t\t<string>h</string>\n\t\t<string>hideOtherApplications:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSDestination</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>69</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>67</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>64</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>68</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>NewApplication ausblenden</string>\n\t\t<string>hide:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSDestination</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>73</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>71</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>72</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Alle einblenden</string>\n\t\t<string>unhideAllApplications:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>78</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>75</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>77</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>76</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Schließen</string>\n\t\t<string>w</string>\n\t\t<string>performClose:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>83</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>80</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>81</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>82</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>184</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>218</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>216</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Während der Texteingabe prüfen</string>\n\t\t<string>toggleContinuousSpellChecking:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>89</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>85</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>88</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>87</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>184</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>245</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>244</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Widerrufen</string>\n\t\t<string>z</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>undo:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>94</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>91</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>93</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>92</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Kopieren</string>\n\t\t<string>c</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>copy:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>99</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>96</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>98</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>81</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>97</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Rechtschreibprüfung</string>\n\t\t<string>;</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>checkSpelling:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>104</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>101</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>103</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>102</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Einsetzen</string>\n\t\t<string>v</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>paste:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>109</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>106</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>107</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>108</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>184</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>227</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>226</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Sprachausgabe stoppen</string>\n\t\t<string>stopSpeaking:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>114</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>111</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>113</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>112</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Ausschneiden</string>\n\t\t<string>x</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>cut:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>119</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>116</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>118</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>81</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>117</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Rechtschreibung…</string>\n\t\t<string>:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>showGuessPanel:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>124</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>121</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>123</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>122</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Wiederholen</string>\n\t\t<string>Z</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>redo:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>129</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>126</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>128</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>127</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Alle auswählen</string>\n\t\t<string>a</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>selectAll:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>133</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>131</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>107</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>132</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Sprachausgabe starten</string>\n\t\t<string>startSpeaking:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>137</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>135</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>136</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Löschen</string>\n\t\t<string>delete:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>141</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>139</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>12</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>140</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Zoomen</string>\n\t\t<string>performZoom:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>147</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>143</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>146</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>144</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTag</key>\n\t\t\t<integer>1</integer>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>145</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>184</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>221</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>220</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Suchen …</string>\n\t\t<string>f</string>\n\t\t<string>performFindPanelAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>147</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>149</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>151</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>144</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTag</key>\n\t\t\t<integer>2</integer>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>150</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Weitersuchen (vorwärts)</string>\n\t\t<string>g</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>147</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>153</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>155</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>144</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTag</key>\n\t\t\t<integer>3</integer>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>154</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Weitersuchen (rückwärts)</string>\n\t\t<string>G</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>147</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>157</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>159</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>144</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTag</key>\n\t\t\t<integer>7</integer>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>158</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Auswahl suchen</string>\n\t\t<string>e</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>164</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>161</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>163</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>144</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>162</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Auswahl anzeigen</string>\n\t\t<string>j</string>\n\t\t<string>centerSelectionInVisibleArea:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>169</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>166</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>168</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1572864</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>167</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Einsetzen und Stil anpassen</string>\n\t\t<string>V</string>\n\t\t<string>pasteAsPlainText:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>174</integer>\n\t\t\t</dict>\n\t\t\t<key>NSDestination</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>171</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>173</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>5</integer>\n\t\t\t</dict>\n\t\t\t<key>NSClassName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>172</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>DropletLauncherDelegate</string>\n\t\t<string>delegate</string>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSNibOutletConnector</string>\n\t\t\t\t<string>NSNibConnector</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSNibOutletConnector</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSMutableArray</string>\n\t\t\t\t<string>NSArray</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSMutableArray</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>157</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>143</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>177</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>91</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>185</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>47</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>203</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>206</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>209</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>200</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>214</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>215</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>131</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>193</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>219</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>190</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>222</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>25</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>182</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>223</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>107</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>153</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>111</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>41</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>201</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>197</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>116</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>135</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>42</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>230</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>126</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>232</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>194</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>234</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>71</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>149</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>171</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>96</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>240</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>242</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>121</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>75</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>67</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>237</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>166</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>30</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>248</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>139</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>81</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>189</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>85</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>178</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>48</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>58</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>161</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>246</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>106</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>80</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>36</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>101</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>180</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>178</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>12</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>179</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>184</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>251</integer>\n\t\t\t</dict>\n\t\t\t<key>NSName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>252</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>250</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Fenster</string>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>139</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>182</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>25</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>12</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>_NSWindowsMenu</string>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSMenu</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSMenu</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>187</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>178</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>186</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>NewApplication</string>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>58</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>189</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>190</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>193</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>194</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>200</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>67</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>71</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>201</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>192</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>191</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Einstellungen …</string>\n\t\t<string>,</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>196</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>197</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>195</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Dienste</string>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>184</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>198</integer>\n\t\t\t</dict>\n\t\t\t<key>NSName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>199</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>195</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<string>_NSServicesMenu</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>_NSAppleMenu</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>205</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>204</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Öffnen …</string>\n\t\t<string>o</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>208</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>207</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Sichern</string>\n\t\t<string>s</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>211</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>48</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>210</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Benutzte Dokumente</string>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>47</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<string>_NSRecentDocumentsMenu</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>217</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>81</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>216</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Rechtschreibung</string>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>116</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>96</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>80</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Suchen</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>143</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>149</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>153</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>157</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>161</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>225</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>224</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Neu</string>\n\t\t<string>n</string>\n\t\t<string>Sprachausgabe</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>131</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>106</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<string>Hilfe</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>41</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>231</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Zurücksetzen</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>233</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>178</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>42</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>228</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Ablage</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>223</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>203</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>209</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>222</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>75</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>206</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>237</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>230</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>219</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>36</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>30</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>239</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>238</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Sichern unter …</string>\n\t\t<string>S</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>241</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>107</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>226</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>243</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>178</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>235</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>submenuAction:</string>\n\t\t<string>Bearbeiten</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>85</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>121</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>234</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>111</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>91</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>101</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>166</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>135</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>126</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>214</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>246</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>215</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>240</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>247</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>144</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>220</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>249</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>178</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>244</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>submenuAction:</string>\n\t\t<string>Droplet Starter</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>185</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>242</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>248</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>177</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>232</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<string>_NSMainMenu</string>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSArray</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSArray</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>178</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>178</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>48</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>107</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>246</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>240</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>42</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>194</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>81</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>232</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>177</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>178</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>242</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>81</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>178</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>248</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>185</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>178</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>215</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>209</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>107</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>81</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>96</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>242</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>171</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>203</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>75</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>206</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>215</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>237</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>30</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>222</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>219</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>190</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>81</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>182</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>178</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>223</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>42</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>41</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>116</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>80</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>36</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>230</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>232</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>257</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>258</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>257</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>172</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>259</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>257</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>260</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>261</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>262</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>258</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>263</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>264</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>265</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>266</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>267</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>268</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>257</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>269</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>270</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>271</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>257</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>272</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>273</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>274</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>275</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>276</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>278</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string></string>\n\t\t</dict>\n\t\t<string>NSMenuItem</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>File's Owner</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>1</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>3</string>\n\t\t</dict>\n\t\t<string>1111</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>8</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>6</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>7</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>2</string>\n\t\t</dict>\n\t\t<string>121</string>\n\t\t<string>NSMenu</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>MainMenu</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>9</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>2</string>\n\t\t</dict>\n\t\t<string>NSMenuItem1</string>\n\t\t<string>NSMenuItem2</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>5</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>10</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>277</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSNull</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSNull</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>1</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>115</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>143</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>185</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>203</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>209</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>200</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>214</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>215</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>165</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>105</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>219</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>142</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>182</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>223</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>153</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>110</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>84</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>201</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>42</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>197</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>135</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>100</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>126</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>232</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>70</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>71</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>149</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>242</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>121</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>134</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>237</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>24</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>46</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>30</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>248</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>81</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>189</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>178</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>61</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>170</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>90</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>130</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>80</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>157</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>138</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>177</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>91</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>47</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>74</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>206</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>57</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>131</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>193</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>222</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>190</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>25</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>40</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>107</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>111</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>10</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>41</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>116</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>230</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>194</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>120</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>234</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>96</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>171</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>79</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>152</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>240</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>35</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>75</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>95</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>67</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>156</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>166</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>139</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>85</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>29</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>48</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>58</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>161</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>246</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>125</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>106</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>148</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>51</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>36</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>66</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>160</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>101</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>283</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>284</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>285</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>286</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>287</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>288</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>289</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>290</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>291</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>292</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>293</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>294</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>295</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>296</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>297</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>298</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>299</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>300</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>301</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>302</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>303</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>304</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>305</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>306</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>307</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>308</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>309</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>310</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>311</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>312</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>313</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>314</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>315</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>316</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>317</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>318</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>319</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>320</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>321</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>322</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>323</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>324</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>325</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>326</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>327</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>328</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>329</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>330</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>331</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>332</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>333</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>334</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>335</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>336</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>337</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>338</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>339</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>340</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>341</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>342</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>343</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>344</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>345</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>346</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>347</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>348</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>349</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>350</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>351</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>352</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>353</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>354</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>355</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>356</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>357</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>358</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>359</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>360</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>361</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>362</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>363</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>364</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>365</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>366</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>367</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>368</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>369</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>370</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>371</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>372</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>373</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>374</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>375</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>376</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>377</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>378</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>379</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>380</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>381</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>382</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>383</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<integer>230</integer>\n\t\t<integer>209</integer>\n\t\t<integer>56</integer>\n\t\t<integer>145</integer>\n\t\t<integer>72</integer>\n\t\t<integer>124</integer>\n\t\t<integer>144</integer>\n\t\t<integer>214</integer>\n\t\t<integer>216</integer>\n\t\t<integer>247</integer>\n\t\t<integer>227</integer>\n\t\t<integer>74</integer>\n\t\t<integer>241</integer>\n\t\t<integer>92</integer>\n\t\t<integer>82</integer>\n\t\t<integer>213</integer>\n\t\t<integer>228</integer>\n\t\t<integer>223</integer>\n\t\t<integer>149</integer>\n\t\t<integer>106</integer>\n\t\t<integer>130</integer>\n\t\t<integer>202</integer>\n\t\t<integer>226</integer>\n\t\t<integer>198</integer>\n\t\t<integer>103</integer>\n\t\t<integer>24</integer>\n\t\t<integer>153</integer>\n\t\t<integer>23</integer>\n\t\t<integer>150</integer>\n\t\t<integer>208</integer>\n\t\t<integer>83</integer>\n\t\t<integer>1</integer>\n\t\t<integer>215</integer>\n\t\t<integer>136</integer>\n\t\t<integer>235</integer>\n\t\t<integer>80</integer>\n\t\t<integer>39</integer>\n\t\t<integer>127</integer>\n\t\t<integer>57</integer>\n\t\t<integer>78</integer>\n\t\t<integer>217</integer>\n\t\t<integer>200</integer>\n\t\t<integer>236</integer>\n\t\t<integer>29</integer>\n\t\t<integer>146</integer>\n\t\t<integer>249</integer>\n\t\t<integer>224</integer>\n\t\t<integer>233</integer>\n\t\t<integer>219</integer>\n\t\t<integer>221</integer>\n\t\t<integer>240</integer>\n\t\t<integer>19</integer>\n\t\t<integer>197</integer>\n\t\t<integer>126</integer>\n\t\t<integer>193</integer>\n\t\t<integer>75</integer>\n\t\t<integer>142</integer>\n\t\t<integer>196</integer>\n\t\t<integer>143</integer>\n\t\t<integer>79</integer>\n\t\t<integer>220</integer>\n\t\t<integer>129</integer>\n\t\t<integer>5</integer>\n\t\t<integer>122</integer>\n\t\t<integer>212</integer>\n\t\t<integer>199</integer>\n\t\t<integer>37</integer>\n\t\t<integer>111</integer>\n\t\t<integer>204</integer>\n\t\t<integer>112</integer>\n\t\t<integer>131</integer>\n\t\t<integer>231</integer>\n\t\t<integer>206</integer>\n\t\t<integer>81</integer>\n\t\t<integer>201</integer>\n\t\t<integer>248</integer>\n\t\t<integer>222</integer>\n\t\t<integer>243</integer>\n\t\t<integer>211</integer>\n\t\t<integer>87</integer>\n\t\t<integer>73</integer>\n\t\t<integer>225</integer>\n\t\t<integer>134</integer>\n\t\t<integer>205</integer>\n\t\t<integer>244</integer>\n\t\t<integer>246</integer>\n\t\t<integer>239</integer>\n\t\t<integer>207</integer>\n\t\t<integer>86</integer>\n\t\t<integer>125</integer>\n\t\t<integer>58</integer>\n\t\t<integer>210</integer>\n\t\t<integer>218</integer>\n\t\t<integer>232</integer>\n\t\t<integer>195</integer>\n\t\t<integer>242</integer>\n\t\t<integer>139</integer>\n\t\t<integer>77</integer>\n\t\t<integer>152</integer>\n\t\t<integer>245</integer>\n\t\t<integer>203</integer>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSIBObjectData</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSIBObjectData</string>\n\t\t</dict>\n\t</array>\n\t<key>$top</key>\n\t<dict>\n\t\t<key>IB.objectdata</key>\n\t\t<dict>\n\t\t\t<key>CF$UID</key>\n\t\t\t<integer>1</integer>\n\t\t</dict>\n\t</dict>\n\t<key>$version</key>\n\t<integer>100000</integer>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/de.lproj/InfoPlist.strings",
    "content": "/* Localized versions of Info.plist keys */\n\nCFBundleName = \"FTPConnection\";\nNSHumanReadableCopyright = \"© __MyCompanyName__, 2004\";"
  },
  {
    "path": "Example/de.lproj/Localizable.strings",
    "content": "/* authorise */\n\"%@\\nWhat would you like to do?\" = \"%@\\nWas möchten Sie tun?\";\n\n/* ConnectionOpenPanel */\n\"A Connection Error Occurred\" = \"Ein Verbindungsfehler ist aufgetreten\";\n\n/* FTP Abort */\n\"Action Aborted. Local Error\" = \"Aktion abgebrochen. Lokaler Fehler\";\n\n/* FTP no data stream types available */\n\"All data connection modes have been exhausted. Check with the server administrator.\" = \"Alle Datenverbindungstypen haben versagt. Fragen Sie Ihren Administrator\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\n\"An intermediate directory does not exist and needs to be created before the current directory\" = \"Ein Zwischenordner existiert nicht und muss vor dem jetzigen Ordner neu eingerichtet werden\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\n\"An unknown error occurred\" = \"Ein unbekannter Fehler ist aufgetreten\";\n\n/* multiple connection joiner */\n\"and\" = \"und\";\n\n/* close window */\n\"Are you sure you want to stop the upload?\" = \"Wollen Sie die Übertragung wirklich stoppen?\";\n\n/* authorise */\n\"Authorize\" = \"Autorisieren\";\n\n/* authorise */\n\"Authorize Connection?\" = \"Verbindung autorisieren?\";\n\n/* connection type */\n\"auto\" = \"auto\";\n\n/* config */\n\"Bad Configuration\" = \"Falsche Konfiguration\";\n\n/* error */\n\"Bad Droplet\" = \"Falsches Droplet\";\n\n/* Transfer Controller */\n\"Bad Password.\" = \"Falsches Kennwort.\";\n\n/* context menu\n   tree controller action gear */\n\n\"Browse Packages\" = \"Pakete durchsuchen\";\n\n/* filesize: bytes */\n\"bytes\" = \"Byte\";\n\n/* authorise */\n\"Cancel\" = \"Abbrechen\";\n\n/* FTP upload error */\n\"Cannot Upload File. Storage quota on server exceeded\" = \"Kann Datei nicht hochladen. Speicherkontingent auf Server überschritten.\";\n\n/* connected message\n   transfer controller */\n\n\"Connected to %@\" = \"Verbunden mit %@\";\n\n/* file transcript */\n\"Connected to File System\\n\" = \"Mit Dateisystem verbunden\";\n\n/* connection string */\n\"Connecting to %@\" = \"Mit %@ verbinden\";\n\n/* file transcript */\n\"Connecting…\\n\" = \"Verbinde …\\n\";\n\n/* close window */\n\"Continue Upload\" = \"Übertragung fortsetzen\";\n\n/* file transcript */\n\"Copying %@ to %@\\n\" = \"Kopiere %1$@ nach %2$@\\n\";\n\n/* FileConnection set permissions error */\n\"Could not change file permissions\" = \"Konnte Datei Zugriffsrechte nicht ändern\";\n\n/* FileConnection create directory error */\n\"Could not create directory\" = \"Konnte Verzeichnis nicht erstellen\";\n\n/* config */\n\"Couldn't find configuration file specified\\n %@\" = \"Konnte angegebene Konfigurationsdatei nicht finden\\n %@\";\n\n/* file transcript */\n\"Create Directory %@ (%lo)\\n\" = \"Verzeichnis %1$@ (%2$lo) erstellen\\n\";\n\n/* FTP Create directory error */\n\"Create directory operation failed\" = \"Die Verzeichniserstellung ist fehlgeschlagen\";\n\n/* Failed to open a data stream connection */\n\"Data Stream Timed Out\" = \"Zeitüberschreitung beim Aufbau der Datenverbindung \";\n\n/* outline view column header name\n   outline view column context menu item */\n\n\"Date Modified\" = \"Änderungsdatum\";\n\n/* file transcript */\n\"Deleting File %@\\n\" = \"Datei %@ löschen\\n\";\n\n/* status */\n\"Disconnected\" = \"Getrennt\";\n\n/* transfer controller */\n\"Disconnected from %@\" = \"Getrennt von %@\";\n\n/* unknown UTI name */\n\"Document\" = \"Dokument\";\n\n/* filesize: exabytes */\n\"EB\" = \"EB\";\n\n/* Directory Parsing Error */\n\"Error parsing directory listing\" = \"Fehler beim Lesen der Verzeichnisstruktur\";\n\n/* FTP no data streams available */\n\"Exhausted all connection types to server. Please contact server administrator\" = \"Alle Verbindungsarten zum Server wurden versucht. Kontaktieren Sie den Serveradministrator.\";\n\n/* Bad ftp command */\n\"Failed to change to directory\" = \"Verzeichnis konnte nicht gewechselt werden\";\n\n/* WebDAV Directory Deletion Error\n   couldn't delete the file\n   MobileMe Directory Deletion Error */\n\n\n\"Failed to delete directory\" = \"Verzeichnis konnte nicht gelöscht werden\";\n\n/* error for deleting a directory */\n\"Failed to delete directory: %@\" = \"Konnte Verzeichnis %@ nicht löschen\";\n\n/* WebDAV File Deletion Error\n   couldn't delete the file\n   MobileMe file deletion error */\n\n\n\"Failed to delete file\" = \"Datei konnte nicht gelöscht werden\";\n\n/* error for deleting a file */\n\"Failed to delete file: %@\" = \"Konnte Datei %@ nicht löschen\";\n\n/* No MobileMe account or password */\n\"Failed to retrieve MobileMe account details\" = \"Konnte MobileMe Account Daten nicht erhalten\";\n\n/* FTP Upload error */\n\"Failed to set permissions for path %@\" = \"Zugriffsrechte für den Pfad %@ konnten nicht gesetzt werden\";\n\n/* FileConnection copy data error */\n\"Failed to upload data\" = \"Daten konnte nicht hochgeladen werden\";\n\n/* error transferring */\n\"Failed to verify file transferred successfully\" = \"Überprüfung der Dateiübertragung fehlgeschlagen\";\n\n/* FTP file download error */\n\"File %@ does not exist on server\" = \"Datei %@ existiert auf dem Server nicht\";\n\n/* FTP error */\n\"File / Directory does not exist\" = \"Datei / Verzeichnis existiert nicht\";\n\n/* FileConnection error */\n\"File Already Exists\" = \"Datei existiert bereits\";\n\n/* FTP file in use */\n\"File in Use\" = \"Datei wird bereits benutzt\";\n\n/* FTP Upload error */\n\"Filename not Allowed\" = \"Dateiname nicht erlaubt\";\n\n/* directory kind */\n\"Folder\" = \"Ordner\";\n\n/* FTP service timed out */\n\"FTP service not available; Remote server has closed connection\" = \"FTP Dienst nicht verfügbar; Entfernter Rechner hat die Verbindung beendet\";\n\n/* FTP no service */\n\"FTP Service Unavailable\" = \"FTP Dienst nicht verfügbar\";\n\n/* filesize: gigabytes */\n\"GB\" = \"GB\";\n\n/* transfer controller */\n\"Hide Files\" = \"Dateien ausblenden\";\n\n/* Couldn't open the port to the host */\n\"Host Unavailable\" = \"Host nicht verfügbar\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\n\"Insufficient storage space available\" = \"Unzureichender freier Speicher\";\n\n/* FTP Error */\n\"Invalid Account name\" = \"Ungültiger Kontoname\";\n\n/* Stream Error before opening */\n\"Is the service running on the server\" = \"Läuft der Dienst auf dem Server\";\n\n/* filesize: kilobytes */\n\"KB\" = \"KB\";\n\n/* outline view column header name\n   outline view column context menu item */\n\n\"Kind\" = \"Art\";\n\n/* FTP download error */\n\"Local File already exists\" = \"Lokale Datei existiert bereits\";\n\n/* filesize: megabytes */\n\"MB\" = \"MB\";\n\n/* outline view column header name\n   outline view column context menu item */\n\n\"Name\" = \"Name\";\n\n/* new cat name */\n\"New Category\" = \"Neue Kategorie\";\n\n/* tree controller action gear */\n\"New Folder\" = \"Neuer Ordner\";\n\n/* config */\n\"No configuration file specified\" = \"Keine Konfigurationsdatei angegeben\";\n\n/* failed to find a connection class */\n\"No connection available for requested connection type\" = \"Keine verfügbare Verbindung für gewählte Verbindungsart\";\n\n/* failed to find a connection class */\n\"No connection available for requested port\" = \"Keine verfügbare Verbindung für angeforderten Port\";\n\n/* failed to find a connection class */\n\"No connection available for requested protocol\" = \"Keine verfügbare Verbindung für angefordertes Protokoll\";\n\n/* FTP Error */\n\"No Storage Space Available\" = \"Kein verfügbarer Speicher\";\n\n/* FTP Error */\n\"Not Logged In\" = \"Nicht eingeloggt\";\n\n/* OK */\n\"OK\" = \"OK\";\n\n/* WebDAV Uploading Error\n   MobileMe File Uploading Error */\n\n\"Parent Folder does not exist\" = \"Übergeordneter Ordner existiert nicht\";\n\n/* No comment provided by engineer. */\n\"Password was not accepted.\" = \"Kennwort wurde abgelehnt.\";\n\n/* filesize: petabytes */\n\"PB\" = \"PB\";\n\n/* mimic Finder naming conventions */\n\"Plain text document\" = \"Reines Textdokument\";\n\n/* config\n   error */\n\n\"Quit\" = \"Beenden\";\n\n/* tree controller action gear */\n\"Refresh\" = \"Aktualisieren\";\n\n/* file transcript */\n\"Renaming %@ to %@\\n\" = \"Umbennen von %1$@ zu %2$@\\n\";\n\n/* FTP Error */\n\"Request Aborted. Page Type Unknown\" = \"Vorgang abgebrochen. Seitentyp unbekannt\";\n\n/* abbreviation for seconds, e.g. 12 MB/s */\n\"s\" = \"s\";\n\n/* category name */\n\"Saved Hosts\" = \"Gespeicherte Hosts\";\n\n/* transfer controller */\n\"Show Files\" = \"Dateien einblenden\";\n\n/* context menu\n   tree controller action gear */\n\n\"Show Hidden Files\" = \"Ausgeblendete Dateien einblenden\";\n\n/* context menu\n   tree controller action gear */\n\n\"Show Package Extensions\" = \"Paketerweiterungen einblenden\";\n\n/* outline view column header name\n   outline view column context menu item */\n\n\"Size\" = \"Größe\";\n\n/* close window */\n\"Stop Upload\" = \"Übertragung stoppen\";\n\n/* close window */\n\"Stop Upload?\" = \"Übertragung stoppen?\";\n\n/* Error creating stream */\n\"Stream Unavailable\" = \"Stream nicht verfügbar\";\n\n/* filesize: terabytes */\n\"TB\" = \"TB\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\n\"The body of the request is not supported\" = \"Der Befehl wird nicht unterstützt\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\n\"The directory already exists\" = \"Das Verzeichnis existiert bereits\";\n\n/* name of a host to connect to; in this case, the local file system rather than a remote server */\n\"the File System\" = \"lokales Dateisystem\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\n\"The server does not allow the creation of directories at the current location\" = \"Der Server erlaubt kein Erstellen von Verzeichnissen am momentanen Ort\";\n\n/* error transferring */\n\"The transferred file has a size of 0.\" = \"Die übertragenen Datei hat die Größe 0.\";\n\n/* MobileMe Directory Contents Error */\n\"There is no MobileMe access to the directory\" = \"Kein MobileMe Zugang zum gewählten Verzeichnis\";\n\n/* No WebDAV access to the specified path */\n\"There is no WebDAV access to the directory\" = \"Es ist kein WebDAV Zugang zum Verzeichnis vorhanden\";\n\n/* error */\n\"This droplet is missing the original application that created it. You will need to reinstall the original application.\" = \"Diesem Droplet fehlt das Originalprogramm mit welchem es erstellt wurden. Bitte reinstallieren Sie das Originalprogramm.\";\n\n/* time out */\n\"Timed Out waiting for remote host.\" = \"Zeitüberschreitung beim Warten auf den entfernten Host.\";\n\n/* Transfer Controller */\n\"Too many files had transfer problems\" = \"Zu viele Dateien hatten Übertragungsprobleme\";\n\n/* FileConnection failed to copy file */\n\"Unable to store data in file\" = \"Konnte Daten nicht in Datei sichern\";\n\n/* WebDAV Error */\n\"Unknown Error Occurred\" = \"Unbekannter Fehler aufgetreten\";\n\n/* status message */\n\"Uploading\" = \"Hochladen von\";\n\n/* status */\n\"Uploading %@\" = \"Hochladen von %@\";\n\n/* No username or password */\n\"Username and Password are required for FTP connections\" = \"Benutzername und Kennwort werden für FTP-Zugang benötigt\";\n\n/* No username or password */\n\"Username and Password are required for S3 connections\" = \"Benutzername und Kennwort werden für S3 Verbindungen benötigt\";\n\n/* No username or password */\n\"Username and Password are required for WebDAV connections\" = \"Benutzername und Kennwort werden für WebDAV Verbindungen benötigt\";\n\n/* file transcript */\n\"Writing data to %@\\n\" = \"Schreibe Daten nach %@\\n\";\n\n/* Bonjour Error */\n\"You can not add a child collection to the Bonjour category.\" = \"Sie können keine untergeordnete Sammlung zu der Bonjour Kategorie hinzufügen.\";\n\n/* Bonjour Error */\n\"You can not add a new server to the Bonjour category.\" = \"Sie können keinen neuen Server zu der Bonjour Kategorie hinzufügen.\";\n\n/* FTP file upload error */\n\"You do not have access to write file %@\" = \"Sie haben keinen Schreibzugang zur Datei %@\";\n\n/* FTP Error */\n\"You need an Account to Upload Files\" = \"Sie brauchen eine Konto, um Dateien hochzuladen\";"
  },
  {
    "path": "Example/en.lproj/Droplet.nib/classes.nib",
    "content": "{\n    IBClasses =     (\n                {\n            ACTIONS =             {\n                cancelPassword = id;\n                cancelUpload = id;\n                connectPassword = id;\n                toggleFiles = id;\n            };\n            CLASS = DropletController;\n            LANGUAGE = ObjC;\n            OUTLETS =             {\n                oCancel = NSButton;\n                oFiles = NSOutlineView;\n                oPassword = NSTextField;\n                oPasswordPanel = NSPanel;\n                oPasswordText = NSTextField;\n                oProgressBar = NSProgressIndicator;\n                oStatus = NSTextField;\n                oToggleFiles = NSButton;\n                oWindow = NSPanel;\n            };\n            SUPERCLASS = NSObject;\n        },\n                {\n            CLASS = DropletOutlineView;\n            LANGUAGE = ObjC;\n            SUPERCLASS = NSOutlineView;\n        },\n                {\n            CLASS = DropletPanel;\n            LANGUAGE = ObjC;\n            SUPERCLASS = NSPanel;\n        },\n                {\n            CLASS = FirstResponder;\n            LANGUAGE = ObjC;\n            SUPERCLASS = NSObject;\n        }\n    );\n    IBVersion = 1;\n}"
  },
  {
    "path": "Example/en.lproj/Droplet.nib/info.nib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IBDocumentLocation</key>\n\t<string>325 154 356 240 0 0 1920 1178 </string>\n\t<key>IBFramework Version</key>\n\t<string>489.0</string>\n\t<key>IBOldestOS</key>\n\t<integer>4</integer>\n\t<key>IBSystem Version</key>\n\t<string>9C7010</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/en.lproj/DropletLauncher.nib/classes.nib",
    "content": "{\n    IBClasses =     (\n                {\n            CLASS = DropletLauncherDelegate;\n            LANGUAGE = ObjC;\n            SUPERCLASS = NSObject;\n        },\n                {\n            CLASS = FirstResponder;\n            LANGUAGE = ObjC;\n            SUPERCLASS = NSObject;\n        }\n    );\n    IBVersion = 1;\n}"
  },
  {
    "path": "Example/en.lproj/DropletLauncher.nib/info.nib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IBDocumentLocation</key>\n\t<string>702 98 356 240 0 0 1920 1178 </string>\n\t<key>IBEditorPositions</key>\n\t<dict>\n\t\t<key>29</key>\n\t\t<string>116 400 338 44 0 0 1920 1178 </string>\n\t</dict>\n\t<key>IBFramework Version</key>\n\t<string>489.0</string>\n\t<key>IBOldestOS</key>\n\t<integer>4</integer>\n\t<key>IBSystem Version</key>\n\t<string>9C7010</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/en.lproj/InfoPlist.strings",
    "content": "/* Localized versions of Info.plist keys */\n\nCFBundleName = \"FTPConnection\";\nNSHumanReadableCopyright = \"© __MyCompanyName__, 2004\";"
  },
  {
    "path": "Example/en.lproj/InputDialog.nib/classes.nib",
    "content": "{\n    IBClasses =     (\n                {\n            CLASS = FirstResponder;\n            LANGUAGE = ObjC;\n            SUPERCLASS = NSObject;\n        },\n                {\n            ACTIONS =             {\n                cancel = id;\n                ok = id;\n            };\n            CLASS = InputDialog;\n            LANGUAGE = ObjC;\n            OUTLETS =             {\n                input = id;\n                panel = id;\n                title = id;\n            };\n            SUPERCLASS = NSObject;\n        },\n                {\n            CLASS = \"java.lang.Object\";\n            LANGUAGE = Java;\n        }\n    );\n    IBVersion = 1;\n}"
  },
  {
    "path": "Example/en.lproj/InputDialog.nib/info.nib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IBDocumentLocation</key>\n\t<string>160 93 356 240 0 0 1920 1178 </string>\n\t<key>IBFramework Version</key>\n\t<string>489.0</string>\n\t<key>IBOldestOS</key>\n\t<integer>4</integer>\n\t<key>IBSystem Version</key>\n\t<string>9C7010</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/en.lproj/KTLogViewer.nib/classes.nib",
    "content": "{\n    IBClasses =     (\n                {\n            CLASS = FirstResponder;\n            LANGUAGE = ObjC;\n            SUPERCLASS = NSObject;\n        },\n                {\n            ACTIONS =             {\n                open = id;\n            };\n            CLASS = KTLogController;\n            LANGUAGE = ObjC;\n            OUTLETS =             {\n                oTable = NSTableView;\n                oWindow = NSWindow;\n            };\n            SUPERCLASS = NSObject;\n        }\n    );\n    IBVersion = 1;\n}"
  },
  {
    "path": "Example/en.lproj/KTLogViewer.nib/info.nib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IBDocumentLocation</key>\n\t<string>117 25 356 240 0 0 1920 1178 </string>\n\t<key>IBEditorPositions</key>\n\t<dict>\n\t\t<key>29</key>\n\t\t<string>115 400 325 44 0 0 1920 1178 </string>\n\t</dict>\n\t<key>IBFramework Version</key>\n\t<string>489.0</string>\n\t<key>IBOldestOS</key>\n\t<integer>4</integer>\n\t<key>IBSystem Version</key>\n\t<string>9C7010</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/en.lproj/Localizable.strings",
    "content": "/* authorise */\n\"%@\\nWhat would you like to do?\" = \"%@\\nWhat would you like to do?\";\n\n/* ConnectionOpenPanel */\n\"A Connection Error Occurred\" = \"A Connection Error Occurred\";\n\n/* FTP Abort */\n\"Action Aborted. Local Error\" = \"Action Aborted. Local Error\";\n\n/* FTP no data stream types available */\n\"All data connection modes have been exhausted. Check with the server administrator.\" = \"All data connection modes have been exhausted. Check with the server administrator.\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\"An intermediate directory does not exist and needs to be created before the current directory\" = \"An intermediate directory does not exist and needs to be created before the current directory\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\"An unknown error occurred\" = \"An unknown error occurred\";\n\n/* multiple connection joiner */\n\"and\" = \"and\";\n\n/* close window */\n\"Are you sure you want to stop the upload?\" = \"Are you sure you want to stop the upload?\";\n\n/* authorise */\n\"Authorize\" = \"Authorize\";\n\n/* authorise */\n\"Authorize Connection?\" = \"Authorize Connection?\";\n\n/* connection type */\n\"auto\" = \"auto\";\n\n/* config */\n\"Bad Configuration\" = \"Bad Configuration\";\n\n/* error */\n\"Bad Droplet\" = \"Bad Droplet\";\n\n/* Transfer Controller */\n\"Bad Password.\" = \"Bad Password.\";\n\n/* context menu\n   tree controller action gear */\n\"Browse Packages\" = \"Browse Packages\";\n\n/* filesize: bytes */\n\"bytes\" = \"bytes\";\n\n/* authorise */\n\"Cancel\" = \"Cancel\";\n\n/* FTP upload error */\n\"Cannot Upload File. Storage quota on server exceeded\" = \"Cannot Upload File. Storage quota on server exceeded\";\n\n/* connected message\n   transfer controller */\n\"Connected to %@\" = \"Connected to %@\";\n\n/* file transcript */\n\"Connected to File System\\n\" = \"Connected to File System\\n\";\n\n/* connection string */\n\"Connecting to %@\" = \"Connecting to %@\";\n\n/* file transcript */\n\"Connecting…\\n\" = \"Connecting…\\n\";\n\n/* close window */\n\"Continue Upload\" = \"Continue Upload\";\n\n/* file transcript */\n\"Copying %@ to %@\\n\" = \"Copying %1$@ to %2$@\\n\";\n\n/* FileConnection set permissions error */\n\"Could not change file permissions\" = \"Could not change file permissions\";\n\n/* FileConnection create directory error */\n\"Could not create directory\" = \"Could not create directory\";\n\n/* config */\n\"Couldn't find configuration file specified\\n %@\" = \"Couldn't find configuration file specified\\n %@\";\n\n/* file transcript */\n\"Create Directory %@ (%lo)\\n\" = \"Create Directory %1$@ (%2$lo)\\n\";\n\n/* FTP Create directory error\n   Create directory operation failed */\n\"Create directory operation failed\" = \"Create directory operation failed\";\n\n/* Failed to open a data stream connection */\n\"Data Stream Timed Out\" = \"Data Stream Timed Out\";\n\n/* outline view column header name\n   outline view column context menu item */\n\"Date Modified\" = \"Date Modified\";\n\n/* file transcript */\n\"Deleting File %@\\n\" = \"Deleting File %@\\n\";\n\n/* status */\n\"Disconnected\" = \"Disconnected\";\n\n/* transfer controller */\n\"Disconnected from %@\" = \"Disconnected from %@\";\n\n/* unknown UTI name */\n\"Document\" = \"Document\";\n\n/* filesize: exabytes */\n\"EB\" = \"EB\";\n\n/* Directory Parsing Error */\n\"Error parsing directory listing\" = \"Error parsing directory listing\";\n\n/* FTP no data streams available */\n\"Exhausted all connection types to server. Please contact server administrator\" = \"Exhausted all connection types to server. Please contact server administrator\";\n\n/* Failed to change to directory\n   Bad ftp command */\n\"Failed to change to directory\" = \"Failed to change to directory\";\n\n/* WebDAV Directory Deletion Error\n   couldn't delete the file\n   MobileMe Directory Deletion Error */\n\"Failed to delete directory\" = \"Failed to delete directory\";\n\n/* error for deleting a directory */\n\"Failed to delete directory: %@\" = \"Failed to delete directory: %@\";\n\n/* WebDAV File Deletion Error\n   couldn't delete the file\n   MobileMe file deletion error */\n\"Failed to delete file\" = \"Failed to delete file\";\n\n/* error for deleting a file */\n\"Failed to delete file: %@\" = \"Failed to delete file: %@\";\n\n/* Failed to download file. */\n\"Failed to download file.\" = \"Failed to download file.\";\n\n/* Failed to rename file. */\n\"Failed to rename file.\" = \"Failed to rename file.\";\n\n/* No MobileMe account or password */\n\"Failed to retrieve MobileMe account details\" = \"Failed to retrieve MobileMe account details\";\n\n/* FTP Upload error\n   SFTP Upload error */\n\"Failed to set permissions for path %@\" = \"Failed to set permissions for path %@\";\n\n/* FileConnection copy data error */\n\"Failed to upload data\" = \"Failed to upload data\";\n\n/* Failed to upload file. */\n\"Failed to upload file.\" = \"Failed to upload file.\";\n\n/* error transferring */\n\"Failed to verify file transferred successfully\" = \"Failed to verify file transferred successfully\";\n\n/* FTP file download error */\n\"File %@ does not exist on server\" = \"File %@ does not exist on server\";\n\n/* FileConnection error */\n\"File Already Exists\" = \"File Already Exists\";\n\n/* FTP file in use */\n\"File in Use\" = \"File in Use\";\n\n/* directory kind */\n\"Folder\" = \"Folder\";\n\n/* FTP service timed out */\n\"FTP service not available; Remote server has closed connection\" = \"FTP service not available; Remote server has closed connection\";\n\n/* FTP no service */\n\"FTP Service Unavailable\" = \"FTP Service Unavailable\";\n\n/* filesize: gigabytes */\n\"GB\" = \"GB\";\n\n/* transfer controller */\n\"Hide Files\" = \"Hide Files\";\n\n/* Couldn't open the port to the host\n   Host Unavailable */\n\"Host Unavailable\" = \"Host Unavailable\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\"Insufficient storage space available\" = \"Insufficient storage space available\";\n\n/* FTP Error */\n\"Invalid Account name\" = \"Invalid Account name\";\n\n/* Stream Error before opening */\n\"Is the service running on the server\" = \"Is the service running on the server\";\n\n/* filesize: kilobytes */\n\"KB\" = \"KB\";\n\n/* outline view column header name\n   outline view column context menu item */\n\"Kind\" = \"Kind\";\n\n/* FTP download error */\n\"Local File already exists\" = \"Local File already exists\";\n\n/* filesize: megabytes */\n\"MB\" = \"MB\";\n\n/* outline view column header name\n   outline view column context menu item */\n\"Name\" = \"Name\";\n\n/* new cat name */\n\"New Category\" = \"New Category\";\n\n/* tree controller action gear */\n\"New Folder\" = \"New Folder\";\n\n/* config */\n\"No configuration file specified\" = \"No configuration file specified\";\n\n/* failed to find a connection class */\n\"No connection available for requested connection type\" = \"No connection available for requested connection type\";\n\n/* failed to find a connection class */\n\"No connection available for requested port\" = \"No connection available for requested port\";\n\n/* failed to find a connection class */\n\"No connection available for requested protocol\" = \"No connection available for requested protocol\";\n\n/* FTP Error */\n\"No Storage Space Available\" = \"No Storage Space Available\";\n\n/* No such file */\n\"No such file\" = \"No such file\";\n\n/* FTP Error */\n\"Not Logged In\" = \"Not Logged In\";\n\n/* OK */\n\"OK\" = \"OK\";\n\n/* WebDAV Uploading Error\n   MobileMe File Uploading Error */\n\"Parent Folder does not exist\" = \"Parent Folder does not exist\";\n\n/* No comment provided by engineer. */\n\"Password was not accepted.\" = \"Password was not accepted.\";\n\n/* filesize: petabytes */\n\"PB\" = \"PB\";\n\n/* Permission Denied */\n\"Permission Denied\" = \"Permission Denied\";\n\n/* mimic Finder naming conventions */\n\"Plain text document\" = \"Plain text document\";\n\n/* config\n   error */\n\"Quit\" = \"Quit\";\n\n/* tree controller action gear */\n\"Refresh\" = \"Refresh\";\n\n/* file transcript */\n\"Renaming %@ to %@\\n\" = \"Renaming %1$@ to %2$@\\n\";\n\n/* abbreviation for seconds, e.g. 12 MB/s */\n\"s\" = \"s\";\n\n/* category name */\n\"Saved Hosts\" = \"Saved Hosts\";\n\n/* transfer controller */\n\"Show Files\" = \"Show Files\";\n\n/* context menu\n   tree controller action gear */\n\"Show Hidden Files\" = \"Show Hidden Files\";\n\n/* context menu\n   tree controller action gear */\n\"Show Package Extensions\" = \"Show Package Extensions\";\n\n/* outline view column header name\n   outline view column context menu item */\n\"Size\" = \"Size\";\n\n/* close window */\n\"Stop Upload\" = \"Stop Upload\";\n\n/* close window */\n\"Stop Upload?\" = \"Stop Upload?\";\n\n/* Error creating stream */\n\"Stream Unavailable\" = \"Stream Unavailable\";\n\n/* filesize: terabytes */\n\"TB\" = \"TB\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\"The body of the request is not supported\" = \"The body of the request is not supported\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\"The directory already exists\" = \"The directory already exists\";\n\n/* name of a host to connect to; in this case, the local file system rather than a remote server */\n\"the File System\" = \"the File System\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\"The server does not allow the creation of directories at the current location\" = \"The server does not allow the creation of directories at the current location\";\n\n/* error transferring */\n\"The transferred file has a size of 0.\" = \"The transferred file has a size of 0.\";\n\n/* MobileMe Directory Contents Error */\n\"There is no MobileMe access to the directory\" = \"There is no MobileMe access to the directory\";\n\n/* No WebDAV access to the specified path */\n\"There is no WebDAV access to the directory\" = \"There is no WebDAV access to the directory\";\n\n/* error */\n\"This droplet is missing the original application that created it. You will need to reinstall the original application.\" = \"This droplet is missing the original application that created it. You will need to reinstall the original application.\";\n\n/* time out */\n\"Timed Out waiting for remote host.\" = \"Timed Out waiting for remote host.\";\n\n/* Transfer Controller */\n\"Too many files had transfer problems\" = \"Too many files had transfer problems\";\n\n/* FileConnection failed to copy file */\n\"Unable to store data in file\" = \"Unable to store data in file\";\n\n/* WebDAV Error */\n\"Unknown Error Occurred\" = \"Unknown Error Occurred\";\n\n/* status message */\n\"Uploading\" = \"Uploading\";\n\n/* status */\n\"Uploading %@\" = \"Uploading %@\";\n\n/* No username or password */\n\"Username and Password are required for FTP connections\" = \"Username and Password are required for FTP connections\";\n\n/* No username or password */\n\"Username and Password are required for S3 connections\" = \"Username and Password are required for S3 connections\";\n\n/* No username or password */\n\"Username and Password are required for WebDAV connections\" = \"Username and Password are required for WebDAV connections\";\n\n/* file transcript */\n\"Writing data to %@\\n\" = \"Writing data to %@\\n\";\n\n/* Bonjour Error */\n\"You can not add a child collection to the Bonjour category.\" = \"You can not add a child collection to the Bonjour category.\";\n\n/* Bonjour Error */\n\"You can not add a new server to the Bonjour category.\" = \"You can not add a new server to the Bonjour category.\";\n\n/* FTP file upload error */\n\"You do not have access to write file %@\" = \"You do not have access to write file %@\";\n\n/* FTP Error */\n\"You need an Account to Upload Files\" = \"You need an Account to Upload Files\";\n\n"
  },
  {
    "path": "Example/en.lproj/MainMenu.nib/classes.nib",
    "content": "{\n    IBClasses =     (\n                {\n            ACTIONS =             {\n                cancelConnect = id;\n                checkForFile = id;\n                connect = id;\n                connectionTypeChanged = id;\n                deleteFile = id;\n                disconnect = id;\n                editFile = id;\n                hostnameChanged = id;\n                initialDirectoryChanged = id;\n                localFileSelected = id;\n                localPopupChanged = id;\n                logConfig = id;\n                newCategory = id;\n                newFolder = id;\n                newHost = id;\n                passwordChanged = id;\n                permissions = id;\n                portChanged = id;\n                printQueueDescription = id;\n                refresh = id;\n                remoteFileSelected = id;\n                remotePopupChanged = id;\n                saveHost = id;\n                savedHostsChanged = id;\n                searchChanged = id;\n                showConnect = id;\n                stopTransfer = id;\n                transferSelected = id;\n                urlChanged = id;\n                usernameChanged = id;\n            };\n            CLASS = Controller;\n            LANGUAGE = ObjC;\n            OUTLETS =             {\n                btnBrowseHost = NSButton;\n                btnConnect = NSButton;\n                btnDelete = NSButton;\n                btnDisconnect = NSButton;\n                btnEdit = NSButton;\n                btnNewFolder = NSButton;\n                btnPermissions = NSButton;\n                btnRefresh = NSButton;\n                btnStop = NSButton;\n                cBtnCancel = NSButton;\n                cBtnConnect = NSButton;\n                cHost = NSTextField;\n                cPass = NSTextField;\n                cPort = NSTextField;\n                cTypePopup = NSPopUpButton;\n                cURL = NSTextField;\n                cUser = NSTextField;\n                connectWindow = NSPanel;\n                fileCheckLog = NSTextView;\n                initialDirectory = NSTextField;\n                localBrowserBox = NSBox;\n                localPopup = NSPopUpButton;\n                localTable = NSTableView;\n                log = NSTextView;\n                logDrawer = NSDrawer;\n                oConMenu = NSPopUpButton;\n                remoteBrowserBox = NSBox;\n                remotePopup = NSPopUpButton;\n                remoteTable = NSTableView;\n                savedHosts = id;\n                status = NSTextField;\n                transferTable = NSTableView;\n                window = NSWindow;\n            };\n            SUPERCLASS = NSObject;\n        },\n                {\n            CLASS = FirstResponder;\n            LANGUAGE = ObjC;\n            SUPERCLASS = NSObject;\n        }\n    );\n    IBVersion = 1;\n}"
  },
  {
    "path": "Example/en.lproj/MainMenu.nib/info.nib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IBDocumentLocation</key>\n\t<string>95 807 356 240 0 0 1920 1178 </string>\n\t<key>IBEditorPositions</key>\n\t<dict>\n\t\t<key>29</key>\n\t\t<string>1333 989 498 44 0 0 2560 1578 </string>\n\t\t<key>332</key>\n\t\t<string>948 972 664 210 0 0 2560 1578 </string>\n\t</dict>\n\t<key>IBFramework Version</key>\n\t<string>489.0</string>\n\t<key>IBOldestOS</key>\n\t<integer>4</integer>\n\t<key>IBSystem Version</key>\n\t<string>9C7010</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/en.lproj/Permissions.nib/classes.nib",
    "content": "{\n    IBClasses =     (\n                {\n            CLASS = FirstResponder;\n            LANGUAGE = ObjC;\n            SUPERCLASS = NSObject;\n        },\n                {\n            ACTIONS =             {\n                attribsChanged = id;\n                cancel = id;\n                save = id;\n            };\n            CLASS = PermissionsController;\n            LANGUAGE = ObjC;\n            OUTLETS =             {\n                ge = id;\n                gr = id;\n                gw = id;\n                ue = id;\n                ur = id;\n                uw = id;\n                we = id;\n                window = id;\n                wr = id;\n                ww = id;\n            };\n            SUPERCLASS = NSObject;\n        }\n    );\n    IBVersion = 1;\n}"
  },
  {
    "path": "Example/en.lproj/Permissions.nib/info.nib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IBDocumentLocation</key>\n\t<string>114 29 356 240 0 0 1920 1178 </string>\n\t<key>IBFramework Version</key>\n\t<string>489.0</string>\n\t<key>IBOldestOS</key>\n\t<integer>4</integer>\n\t<key>IBSystem Version</key>\n\t<string>9C7010</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/fr.lproj/DropletLauncher.nib/classes.nib",
    "content": "{\n    IBClasses = (\n        {CLASS = DropletLauncherDelegate; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, \n        {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }\n    ); \n    IBVersion = 1; \n}"
  },
  {
    "path": "Example/fr.lproj/DropletLauncher.nib/info.nib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IBDocumentLocation</key>\n\t<string>415 79 356 240 0 0 1280 1002 </string>\n\t<key>IBEditorPositions</key>\n\t<dict>\n\t\t<key>29</key>\n\t\t<string>69 338 378 44 0 0 1280 1002 </string>\n\t</dict>\n\t<key>IBFramework Version</key>\n\t<string>439.0</string>\n\t<key>IBSystem Version</key>\n\t<string>8S165</string>\n\t<key>IBUsesTextArchiving</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/fr.lproj/DropletLauncher.nib/keyedobjects.nib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>$archiver</key>\n\t<string>NSKeyedArchiver</string>\n\t<key>$objects</key>\n\t<array>\n\t\t<string>$null</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>388</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAccessibilityConnectors</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>385</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAccessibilityOidsKeys</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>386</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAccessibilityOidsValues</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>387</integer>\n\t\t\t</dict>\n\t\t\t<key>NSClassesKeys</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>280</integer>\n\t\t\t</dict>\n\t\t\t<key>NSClassesValues</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>281</integer>\n\t\t\t</dict>\n\t\t\t<key>NSConnections</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>9</integer>\n\t\t\t</dict>\n\t\t\t<key>NSFontManager</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t</dict>\n\t\t\t<key>NSFramework</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>6</integer>\n\t\t\t</dict>\n\t\t\t<key>NSNamesKeys</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>256</integer>\n\t\t\t</dict>\n\t\t\t<key>NSNamesValues</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>257</integer>\n\t\t\t</dict>\n\t\t\t<key>NSNextOid</key>\n\t\t\t<integer>250</integer>\n\t\t\t<key>NSObjectsKeys</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>176</integer>\n\t\t\t</dict>\n\t\t\t<key>NSObjectsValues</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>255</integer>\n\t\t\t</dict>\n\t\t\t<key>NSOidsKeys</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>282</integer>\n\t\t\t</dict>\n\t\t\t<key>NSOidsValues</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>283</integer>\n\t\t\t</dict>\n\t\t\t<key>NSRoot</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t\t<key>NSVisibleWindows</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>7</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>5</integer>\n\t\t\t</dict>\n\t\t\t<key>NSClassName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>3</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>NSApplication</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSMutableString</string>\n\t\t\t\t<string>NSString</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSMutableString</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSCustomObject</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSCustomObject</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>IBCocoaFramework</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>8</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSMutableSet</string>\n\t\t\t\t<string>NSSet</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSMutableSet</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>10</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>24</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>29</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>35</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>40</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>46</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>51</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>57</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>61</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>66</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>70</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>74</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>79</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>84</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>90</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>95</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>100</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>105</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>110</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>115</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>120</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>125</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>130</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>134</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>138</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>142</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>148</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>152</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>156</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>160</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>165</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>170</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>22</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>11</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>14</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>12</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>13</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>191</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>244</integer>\n\t\t\t</dict>\n\t\t\t<key>NSName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>246</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>242</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Placer dans le Dock</string>\n\t\t<string>m</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>18</integer>\n\t\t\t</dict>\n\t\t\t<key>NSClassName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>16</integer>\n\t\t\t</dict>\n\t\t\t<key>NSResourceName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>17</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>NSImage</string>\n\t\t<string>NSMenuCheckmark</string>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSCustomResource</string>\n\t\t\t\t<string>%NSCustomResource</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSCustomResource</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>18</integer>\n\t\t\t</dict>\n\t\t\t<key>NSClassName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>16</integer>\n\t\t\t</dict>\n\t\t\t<key>NSResourceName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>20</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>NSMenuMixedState</string>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSMenuItem</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSMenuItem</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>performMiniaturize:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSNibControlConnector</string>\n\t\t\t\t<string>NSNibConnector</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSNibControlConnector</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>28</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>25</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>12</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>26</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Tout ramener au premier plan</string>\n\t\t<string></string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>arrangeInFront:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>34</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>30</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>33</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>32</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>191</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>199</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>197</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Imprimer…</string>\n\t\t<string>p</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>print:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>39</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>36</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>38</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>37</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Format d’impression…</string>\n\t\t<string>P</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>runPageLayout:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>45</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>41</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>44</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>42</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>43</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>191</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>252</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>250</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Aide NewApplication</string>\n\t\t<string>?</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>showHelp:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>50</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>47</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>48</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>49</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>191</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>209</integer>\n\t\t\t</dict>\n\t\t\t<key>NSName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>210</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>207</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Effacer le menu</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>clearRecentDocuments:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSDestination</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>56</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>52</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>55</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>54</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>191</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>178</integer>\n\t\t\t</dict>\n\t\t\t<key>NSName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>194</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>177</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Quitter NewApplication</string>\n\t\t<string>q</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>terminate:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSDestination</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>60</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>58</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>59</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>À propos de NewApplication</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>orderFrontStandardAboutPanel:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSDestination</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>65</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>62</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>64</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1572864</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>63</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Masquer les autres</string>\n\t\t<string>h</string>\n\t\t<string>hideOtherApplications:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSDestination</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>69</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>67</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>64</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>68</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Masquer NewApplication</string>\n\t\t<string>hide:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSDestination</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>73</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>71</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>72</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Tout afficher</string>\n\t\t<string>unhideAllApplications:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>78</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>75</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>77</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>76</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Fermer</string>\n\t\t<string>w</string>\n\t\t<string>performClose:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>83</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>80</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>81</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>82</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>191</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>238</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>236</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Vérifier l’orthographe lors de la frappe</string>\n\t\t<string>toggleContinuousSpellChecking:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>89</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>85</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>88</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>87</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>191</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>228</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>226</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Annuler</string>\n\t\t<string>z</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>undo:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>94</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>91</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>93</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>92</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Copier</string>\n\t\t<string>c</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>copy:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>99</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>96</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>98</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>81</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>97</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Vérifier l’orthographe</string>\n\t\t<string>;</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>checkSpelling:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>104</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>101</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>103</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>102</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Coller</string>\n\t\t<string>v</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>paste:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>109</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>106</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>107</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>108</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>191</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>222</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>221</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Arrêter la lecture</string>\n\t\t<string>stopSpeaking:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>114</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>111</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>113</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>112</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Couper</string>\n\t\t<string>x</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>cut:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>119</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>116</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>118</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>81</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>117</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Orthographe…</string>\n\t\t<string>:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>showGuessPanel:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>124</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>121</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>123</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>122</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Rétablir</string>\n\t\t<string>Z</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>redo:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>129</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>126</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>128</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>127</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Tout sélectionner</string>\n\t\t<string>a</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>selectAll:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>133</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>131</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>107</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>132</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Commencer la lecture</string>\n\t\t<string>startSpeaking:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>137</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>135</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>136</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Supprimer</string>\n\t\t<string>delete:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>141</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>139</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>12</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>140</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Zoom</string>\n\t\t<string>performZoom:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>147</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>143</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>146</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>144</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTag</key>\n\t\t\t<integer>1</integer>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>145</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>191</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>234</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>232</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Rechercher…</string>\n\t\t<string>f</string>\n\t\t<string>performFindPanelAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>147</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>149</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>151</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>144</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTag</key>\n\t\t\t<integer>2</integer>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>150</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Rechercher le suivant</string>\n\t\t<string>g</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>147</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>153</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>155</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>144</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTag</key>\n\t\t\t<integer>3</integer>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>154</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Rechercher le précédent</string>\n\t\t<string>G</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>147</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>157</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>159</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>144</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTag</key>\n\t\t\t<integer>7</integer>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>158</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Utiliser la sélection pour trouver</string>\n\t\t<string>e</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>164</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>161</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>163</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>144</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>162</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Aller à la sélection</string>\n\t\t<string>j</string>\n\t\t<string>centerSelectionInVisibleArea:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>169</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>166</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>168</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1572864</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>167</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Coller le style et l’appliquer</string>\n\t\t<string>V</string>\n\t\t<string>pasteAsPlainText:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>174</integer>\n\t\t\t</dict>\n\t\t\t<key>NSDestination</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>171</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>173</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>5</integer>\n\t\t\t</dict>\n\t\t\t<key>NSClassName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>172</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>DropletLauncherDelegate</string>\n\t\t<string>delegate</string>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSNibOutletConnector</string>\n\t\t\t\t<string>NSNibConnector</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSNibOutletConnector</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSMutableArray</string>\n\t\t\t\t<string>NSArray</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSMutableArray</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>254</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>195</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>107</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>106</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>223</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>143</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>71</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>171</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>25</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>58</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>36</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>157</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>218</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>111</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>80</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>192</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>225</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>153</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>179</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>187</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>220</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>241</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>161</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>180</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>215</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>139</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>193</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>235</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>131</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>230</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>47</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>85</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>196</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>200</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>245</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>211</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>249</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>116</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>121</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>239</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>75</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>30</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>81</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>91</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>212</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>96</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>41</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>166</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>229</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>67</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>231</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>135</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>42</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>126</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>203</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>101</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>184</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>48</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>183</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>206</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>149</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<string>NewApplication</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>58</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>179</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>180</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>183</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>184</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>192</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>67</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>71</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>193</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>182</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>181</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Préférences…</string>\n\t\t<string>,</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>186</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>187</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>185</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Services</string>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>191</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>189</integer>\n\t\t\t</dict>\n\t\t\t<key>NSName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>190</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>188</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>Services</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<string>_NSServicesMenu</string>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSMenu</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSMenu</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>_NSAppleMenu</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>198</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>196</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>197</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>191</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>248</integer>\n\t\t\t</dict>\n\t\t\t<key>NSName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>247</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Fichier</string>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>200</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>203</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>206</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>211</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>75</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>212</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>215</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>218</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>220</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>36</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>30</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>202</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>201</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Nouveau</string>\n\t\t<string>n</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>205</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>204</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Ouvrir…</string>\n\t\t<string>o</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>208</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>48</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>207</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Ouvrir récent</string>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>47</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<string>_NSRecentDocumentsMenu</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>214</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>213</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Enregistrer</string>\n\t\t<string>s</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>217</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>216</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Enregistrer sous…</string>\n\t\t<string>S</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>219</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Revenir</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Parole</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>131</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>106</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>224</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>196</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>177</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>227</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>196</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>226</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Édition</string>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>85</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>121</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>229</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>111</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>91</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>101</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>166</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>135</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>126</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>230</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>231</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>235</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>239</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>233</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>144</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>232</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Rechercher</string>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>143</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>149</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>153</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>157</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>161</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>237</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>81</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>236</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Orthographe</string>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>116</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>96</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>80</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>240</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>107</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>221</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>243</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>196</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>12</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>242</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Fenêtre</string>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>139</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>245</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>25</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>12</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>_NSWindowsMenu</string>\n\t\t<string>DropletLauncher</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>223</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>195</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>225</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>241</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>249</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>251</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>196</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>42</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>250</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Aide</string>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>41</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<string>_NSMainMenu</string>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSArray</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSArray</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>254</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>223</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>196</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>239</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>107</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>196</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>81</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>196</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>184</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>196</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>107</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>48</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>231</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>196</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>81</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>241</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>235</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>225</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>81</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>42</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>195</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>249</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>206</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>254</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>36</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>211</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>203</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>80</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>195</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>81</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>116</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>235</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>196</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>75</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>245</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>96</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>171</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>42</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>249</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>200</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>30</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>220</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>41</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>215</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>212</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>180</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>218</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>254</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>258</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>259</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>260</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>261</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>260</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>262</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>263</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>264</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>265</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>266</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>267</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>260</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>265</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>172</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>268</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>269</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>270</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>272</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>273</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>274</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>275</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>260</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>276</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>277</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>278</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>279</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>260</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>5</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>7</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string></string>\n\t\t</dict>\n\t\t<string>NSMenuItem2</string>\n\t\t<string>NSMenu</string>\n\t\t<string>NSMenuItem1</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>File's Owner</string>\n\t\t</dict>\n\t\t<string>NSMenuItem</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>MainMenu</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>1</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>2</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>1</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>271</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSNull</string>\n\t\t\t\t<string>%NSNull</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSNull</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>9</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>6</string>\n\t\t</dict>\n\t\t<string>1111</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>2</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>8</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>3</string>\n\t\t</dict>\n\t\t<string>121</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>10</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>254</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>254</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>254</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>193</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>35</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>36</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>170</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>10</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>125</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>29</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>211</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>84</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>229</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>110</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>187</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>95</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>241</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>225</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>171</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>206</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>90</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>71</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>166</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>149</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>230</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>142</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>215</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>41</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>111</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>79</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>245</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>148</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>218</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>57</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>107</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>80</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>184</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>235</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>116</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>106</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>152</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>180</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>139</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>75</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>42</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>126</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>67</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>231</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>115</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>153</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>156</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>91</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>100</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>239</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>160</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>130</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>70</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>30</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>220</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>105</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>25</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>165</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>134</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>192</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>195</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>74</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>157</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>61</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>143</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>81</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>46</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>85</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>51</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>96</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>196</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>58</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>138</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>66</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>40</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>121</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>200</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>120</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>223</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>212</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>131</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>249</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>161</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>203</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>183</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>47</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>101</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>24</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>135</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>179</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>48</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>254</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>284</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>285</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>286</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>287</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>288</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>289</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>290</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>291</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>292</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>293</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>294</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>295</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>296</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>297</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>298</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>299</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>300</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>301</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>302</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>303</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>304</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>305</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>306</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>307</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>308</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>309</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>310</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>311</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>312</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>313</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>314</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>315</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>316</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>317</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>318</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>319</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>320</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>321</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>322</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>323</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>324</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>325</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>326</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>327</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>328</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>329</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>330</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>331</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>332</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>333</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>334</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>335</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>336</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>337</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>338</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>339</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>340</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>341</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>342</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>343</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>344</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>345</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>346</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>347</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>348</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>349</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>350</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>351</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>352</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>353</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>354</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>355</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>356</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>357</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>358</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>359</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>360</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>361</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>362</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>363</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>364</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>365</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>366</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>367</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>368</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>369</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>370</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>371</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>372</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>373</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>374</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>375</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>376</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>377</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>378</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>379</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>380</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>381</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>382</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>383</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>384</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<integer>149</integer>\n\t\t<integer>87</integer>\n\t\t<integer>77</integer>\n\t\t<integer>249</integer>\n\t\t<integer>37</integer>\n\t\t<integer>232</integer>\n\t\t<integer>86</integer>\n\t\t<integer>79</integer>\n\t\t<integer>223</integer>\n\t\t<integer>206</integer>\n\t\t<integer>228</integer>\n\t\t<integer>130</integer>\n\t\t<integer>225</integer>\n\t\t<integer>19</integer>\n\t\t<integer>217</integer>\n\t\t<integer>248</integer>\n\t\t<integer>205</integer>\n\t\t<integer>124</integer>\n\t\t<integer>224</integer>\n\t\t<integer>150</integer>\n\t\t<integer>246</integer>\n\t\t<integer>208</integer>\n\t\t<integer>214</integer>\n\t\t<integer>241</integer>\n\t\t<integer>80</integer>\n\t\t<integer>111</integer>\n\t\t<integer>199</integer>\n\t\t<integer>222</integer>\n\t\t<integer>92</integer>\n\t\t<integer>242</integer>\n\t\t<integer>112</integer>\n\t\t<integer>142</integer>\n\t\t<integer>212</integer>\n\t\t<integer>219</integer>\n\t\t<integer>23</integer>\n\t\t<integer>131</integer>\n\t\t<integer>216</integer>\n\t\t<integer>204</integer>\n\t\t<integer>195</integer>\n\t\t<integer>243</integer>\n\t\t<integer>129</integer>\n\t\t<integer>239</integer>\n\t\t<integer>73</integer>\n\t\t<integer>106</integer>\n\t\t<integer>198</integer>\n\t\t<integer>134</integer>\n\t\t<integer>218</integer>\n\t\t<integer>230</integer>\n\t\t<integer>213</integer>\n\t\t<integer>244</integer>\n\t\t<integer>145</integer>\n\t\t<integer>197</integer>\n\t\t<integer>226</integer>\n\t\t<integer>211</integer>\n\t\t<integer>245</integer>\n\t\t<integer>1</integer>\n\t\t<integer>233</integer>\n\t\t<integer>153</integer>\n\t\t<integer>78</integer>\n\t\t<integer>136</integer>\n\t\t<integer>74</integer>\n\t\t<integer>227</integer>\n\t\t<integer>5</integer>\n\t\t<integer>247</integer>\n\t\t<integer>235</integer>\n\t\t<integer>144</integer>\n\t\t<integer>83</integer>\n\t\t<integer>193</integer>\n\t\t<integer>221</integer>\n\t\t<integer>146</integer>\n\t\t<integer>209</integer>\n\t\t<integer>200</integer>\n\t\t<integer>127</integer>\n\t\t<integer>207</integer>\n\t\t<integer>139</integer>\n\t\t<integer>201</integer>\n\t\t<integer>29</integer>\n\t\t<integer>58</integer>\n\t\t<integer>240</integer>\n\t\t<integer>152</integer>\n\t\t<integer>122</integer>\n\t\t<integer>215</integer>\n\t\t<integer>82</integer>\n\t\t<integer>24</integer>\n\t\t<integer>231</integer>\n\t\t<integer>56</integer>\n\t\t<integer>75</integer>\n\t\t<integer>220</integer>\n\t\t<integer>81</integer>\n\t\t<integer>196</integer>\n\t\t<integer>57</integer>\n\t\t<integer>103</integer>\n\t\t<integer>210</integer>\n\t\t<integer>72</integer>\n\t\t<integer>143</integer>\n\t\t<integer>126</integer>\n\t\t<integer>203</integer>\n\t\t<integer>39</integer>\n\t\t<integer>202</integer>\n\t\t<integer>236</integer>\n\t\t<integer>125</integer>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>254</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>254</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSIBObjectData</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSIBObjectData</string>\n\t\t</dict>\n\t</array>\n\t<key>$top</key>\n\t<dict>\n\t\t<key>IB.objectdata</key>\n\t\t<dict>\n\t\t\t<key>CF$UID</key>\n\t\t\t<integer>1</integer>\n\t\t</dict>\n\t</dict>\n\t<key>$version</key>\n\t<integer>100000</integer>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/fr.lproj/InfoPlist.strings",
    "content": "/* Localized versions of Info.plist keys */\n\nCFBundleName = \"FTPConnection\";\nNSHumanReadableCopyright = \"© __MyCompanyName__, 2004\";"
  },
  {
    "path": "Example/fr.lproj/Localizable.strings",
    "content": "/* authorise */\n\"%@\\nWhat would you like to do?\" = \"%@\\nQue désirez-vous faire ?\";\n\n/* ConnectionOpenPanel */\n\"A Connection Error Occurred\" = \"Une erreur de connexion s'est produite\";\n\n/* FTP Abort */\n\"Action Aborted. Local Error\" = \"Action interrompue. Erreur locale\";\n\n/* FTP no data stream types available */\n\"All data connection modes have been exhausted. Check with the server administrator.\" = \"Tous les modes de connexion de données ont été épuisés. Vérifier avec l'administrateur du serveur.\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\n\"An intermediate directory does not exist and needs to be created before the current directory\" = \"Un répertoire intermédiaire n'existe pas et doit être créé avant le répertoire actuel\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\n\"An unknown error occurred\" = \"Une erreur inconnue s'est produite\";\n\n/* multiple connection joiner */\n\"and\" = \"et\";\n\n/* close window */\n\"Are you sure you want to stop the upload?\" = \"Êtes-vous sûr de vouloir arrêter le chargement ?\";\n\n/* authorise */\n\"Authorize\" = \"Authoriser\";\n\n/* authorise */\n\"Authorize Connection?\" = \"Autoriser la connexion ?\";\n\n/* connection type */\n\"auto\" = \"auto\";\n\n/* config */\n\"Bad Configuration\" = \"Mauvaise configuration\";\n\n/* error */\n\"Bad Droplet\" = \"Mauvaise 'droplet'\";\n\n/* Transfer Controller */\n\"Bad Password.\" = \"Mauvais mot de passe.\";\n\n/* context menu\n   tree controller action gear */\n\n\"Browse Packages\" = \"Parcourir les paquets\";\n\n/* filesize: bytes */\n\"bytes\" = \"octets\";\n\n/* authorise */\n\"Cancel\" = \"Annuler\";\n\n/* FTP upload error */\n\"Cannot Upload File. Storage quota on server exceeded\" = \"Ne peut pas charger le fichier. Le quota de stockage sur le serveur est dépassé\";\n\n/* connected message\n   transfer controller */\n\n\"Connected to %@\" = \"Connecté à %@\";\n\n/* file transcript */\n\"Connected to File System\\n\" = \"Relié au Système de fichiers\\n\";\n\n/* connection string */\n\"Connecting to %@\" = \"Se connecte à %@\";\n\n/* file transcript */\n\"Connecting…\\n\" = \"En connexion…\\n\";\n\n/* close window */\n\"Continue Upload\" = \"Continuer le chargement\";\n\n/* file transcript */\n\"Copying %@ to %@\\n\" = \"Copie de %1$@ vers %2$@\\n\";\n\n/* FileConnection set permissions error */\n\"Could not change file permissions\" = \"N'a pas pu modifier des autorisations de fichier\";\n\n/* FileConnection create directory error */\n\"Could not create directory\" = \"N'a pas pu créer le répertoire\";\n\n/* config */\n\"Couldn't find configuration file specified\\n %@\" = \"N'a pu trouver le fichier de configuration indiqué\\n %@ \";\n\n/* file transcript */\n\"Create Directory %@ (%lo)\\n\" = \"Crération du répertoire %1$@ (%2$lo)\\n\";\n\n/* FTP Create directory error */\n\"Create directory operation failed\" = \"L'opération de création du répertoire a échoué\";\n\n/* Failed to open a data stream connection */\n\"Data Stream Timed Out\" = \"Le flux de données est arrêté\";\n\n/* outline view column header name\n   outline view column context menu item */\n\n\"Date Modified\" = \"Date de modification\";\n\n/* file transcript */\n\"Deleting File %@\\n\" = \"Suppression du fichier %@\\n\";\n\n/* status */\n\"Disconnected\" = \"Déconnecté\";\n\n/* transfer controller */\n\"Disconnected from %@\" = \"Déconnecté de %@\";\n\n/* unknown UTI name */\n\"Document\" = \"Document\";\n\n/* filesize: exabytes */\n\"EB\" = \"Eo\";\n\n/* Directory Parsing Error */\n\"Error parsing directory listing\" = \"Erreur en traitant le listage du répertoire\";\n\n/* FTP no data streams available */\n\"Exhausted all connection types to server. Please contact server administrator\" = \"Tous les types de connexion au serveur sont épuisés. Veuillez contacter l'administrateur de serveur\";\n\n/* Bad ftp command */\n\"Failed to change to directory\" = \"N'a pas modifié en répertoire\";\n\n/* WebDAV Directory Deletion Error\n   couldn't delete the file\n   MobileMe Directory Deletion Error */\n\n\n\"Failed to delete directory\" = \"N'a pas effacé le répertoire\";\n\n/* error for deleting a directory */\n\"Failed to delete directory: %@\" = \"N'a pas effacé le répertoire : %@\";\n\n/* WebDAV File Deletion Error\n   couldn't delete the file\n   MobileMe file deletion error */\n\n\n\"Failed to delete file\" = \"N'a pas effacé le fichier\";\n\n/* error for deleting a file */\n\"Failed to delete file: %@\" = \"N'a pas effacé le fichier : %@\";\n\n/* No MobileMe account or password */\n\"Failed to retrieve MobileMe account details\" = \"N'a pu obtenir les infos du compte MobileMe\";\n\n/* FTP Upload error */\n\"Failed to set permissions for path %@\" = \"N'a pu définir les permissions pour le chemin %@\";\n\n/* FileConnection copy data error */\n\"Failed to upload data\" = \"N'a pas chargé les données\";\n\n/* error transferring */\n\"Failed to verify file transferred successfully\" = \"N'a pu vérifié le fichier transféré avec succès\";\n\n/* FTP file download error */\n\"File %@ does not exist on server\" = \"Le fichier %@ n'existe pas sur le serveur\";\n\n/* FTP error */\n\"File / Directory does not exist\" = \"Le fichier/répertoire n'existe pas\";\n\n/* FileConnection error */\n\"File Already Exists\" = \"Le fichier existe déjà\";\n\n/* FTP file in use */\n\"File in Use\" = \"Le fichier est utilisé\";\n\n/* FTP Upload error */\n\"Filename not Allowed\" = \"Nom du fichier n'est pas permis\";\n\n/* directory kind */\n\"Folder\" = \"Dossier\";\n\n/* FTP service timed out */\n\"FTP service not available; Remote server has closed connection\" = \"Service FTP indisponible ; Le serveur à distance fermé la connexion\";\n\n/* FTP no service */\n\"FTP Service Unavailable\" = \"Service FTP indisponible\";\n\n/* filesize: gigabytes */\n\"GB\" = \"Go\";\n\n/* transfer controller */\n\"Hide Files\" = \"Masquer les fichiers\";\n\n/* Couldn't open the port to the host */\n\"Host Unavailable\" = \"Hôte indisponible\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\n\"Insufficient storage space available\" = \"Espace de stockage insuffisant disponible\";\n\n/* FTP Error */\n\"Invalid Account name\" = \"Nom de compte invalide\";\n\n/* Stream Error before opening */\n\"Is the service running on the server\" = \"Est-ce que le service fonctionne sur le serveur\";\n\n/* filesize: kilobytes */\n\"KB\" = \"Ko\";\n\n/* outline view column header name\n   outline view column context menu item */\n\n\"Kind\" = \"Type\";\n\n/* FTP download error */\n\"Local File already exists\" = \"Le fichier local existe déjà\";\n\n/* filesize: megabytes */\n\"MB\" = \"Mo\";\n\n/* outline view column header name\n   outline view column context menu item */\n\n\"Name\" = \"Nom \";\n\n/* new cat name */\n\"New Category\" = \"Nouvelle catégorie\";\n\n/* tree controller action gear */\n\"New Folder\" = \"Nouveau dossier\";\n\n/* config */\n\"No configuration file specified\" = \"Aucun fichier de configuration indiqué\";\n\n/* failed to find a connection class */\n\"No connection available for requested connection type\" = \"Aucune connexion disponible pour le type de connexion demandé\";\n\n/* failed to find a connection class */\n\"No connection available for requested port\" = \"Aucune connexion disponible pour le port demandé\";\n\n/* failed to find a connection class */\n\"No connection available for requested protocol\" = \"Aucune connexion disponible pour le protocole demandé\";\n\n/* FTP Error */\n\"No Storage Space Available\" = \"Pas d'espace de stockage disponible\";\n\n/* FTP Error */\n\"Not Logged In\" = \"Pas connecté\";\n\n/* OK */\n\"OK\" = \"OK\";\n\n/* WebDAV Uploading Error\n   MobileMe File Uploading Error */\n\n\"Parent Folder does not exist\" = \"Le dossier Parent n'existe pas\";\n\n/* No comment provided by engineer. */\n\"Password was not accepted.\" = \"Le mot de passe fut refusé.\";\n\n/* filesize: petabytes */\n\"PB\" = \"Po\";\n\n/* mimic Finder naming conventions */\n\"Plain text document\" = \"Document sans format\";\n\n/* config\n   error */\n\n\"Quit\" = \"Quitter\";\n\n/* tree controller action gear */\n\"Refresh\" = \"Actualiser\";\n\n/* file transcript */\n\"Renaming %@ to %@\\n\" = \"Renommage de %1$@ en %2$@\\n\";\n\n/* FTP Error */\n\"Request Aborted. Page Type Unknown\" = \"Demande interrompue. Type inconnu de page\";\n\n/* abbreviation for seconds, e.g. 12 MB/s */\n\"s\" = \"s\";\n\n/* category name */\n\"Saved Hosts\" = \"Hôtes enregistrées\";\n\n/* transfer controller */\n\"Show Files\" = \"Afficher les fichiers\";\n\n/* context menu\n   tree controller action gear */\n\n\"Show Hidden Files\" = \"Afficher les fichiers masqués\";\n\n/* context menu\n   tree controller action gear */\n\n\"Show Package Extensions\" = \"Afficher les extensions des paquets\";\n\n/* outline view column header name\n   outline view column context menu item */\n\n\"Size\" = \"Taille\";\n\n/* close window */\n\"Stop Upload\" = \"Arrêter le chargement\";\n\n/* close window */\n\"Stop Upload?\" = \"Arrêter le chargement ?\";\n\n/* Error creating stream */\n\"Stream Unavailable\" = \"Flux indisponible\";\n\n/* filesize: terabytes */\n\"TB\" = \"To\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\n\"The body of the request is not supported\" = \"Le corps de la demande n'est pas supporté\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\n\"The directory already exists\" = \"Le répertoire existe déjà\";\n\n/* name of a host to connect to; in this case, the local file system rather than a remote server */\n\"the File System\" = \"le système de fichier\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\n\"The server does not allow the creation of directories at the current location\" = \"Le serveur ne permet pas la création de répertoires à l'emplacement actuel\";\n\n/* error transferring */\n\"The transferred file has a size of 0.\" = \"Le fichier transféré a une taille de 0.\";\n\n/* MobileMe Directory Contents Error */\n\"There is no MobileMe access to the directory\" = \"Aucun accès MobileMe au répertoire\";\n\n/* No WebDAV access to the specified path */\n\"There is no WebDAV access to the directory\" = \"Aucun accès WebDAV au répertoire\";\n\n/* error */\n\"This droplet is missing the original application that created it. You will need to reinstall the original application.\" = \"Il manque à cette gouttelette l'application originale qui l'a créée. Vous devrez réinstaller l'application originale.\";\n\n/* time out */\n\"Timed Out waiting for remote host.\" = \"Manque de temps pour l'hôte distant.\";\n\n/* Transfer Controller */\n\"Too many files had transfer problems\" = \"Trop de fichiers ont eu des problèmes de transfert\";\n\n/* FileConnection failed to copy file */\n\"Unable to store data in file\" = \"Incapable d'enregistrer des données dans le fichier\";\n\n/* WebDAV Error */\n\"Unknown Error Occurred\" = \"Une erreur inconnue s'est produite\";\n\n/* status message */\n\"Uploading\" = \"Téléversement\";\n\n/* status */\n\"Uploading %@\" = \"Chargement de %@\";\n\n/* No username or password */\n\"Username and Password are required for FTP connections\" = \"Un nom d'utilisateur et un mot de passe sont exigés pour des connexions FTP\";\n\n/* No username or password */\n\"Username and Password are required for S3 connections\" = \"Le nom utilisateur et le mot de passe sont exigés pour les connexions S3\";\n\n/* No username or password */\n\"Username and Password are required for WebDAV connections\" = \"Un nom d'utilisateur et un mot de passe sont exigés pour des connexions WebDAV\";\n\n/* file transcript */\n\"Writing data to %@\\n\" = \"Écriture des données sur %@\\n\";\n\n/* Bonjour Error */\n\"You can not add a child collection to the Bonjour category.\" = \"Vous ne pouvez pas ajouter une collection enfant à la catégorie Bonjour.\";\n\n/* Bonjour Error */\n\"You can not add a new server to the Bonjour category.\" = \"Vous ne pouvez pas ajouter un nouveau serveur à la catégorie Bonjour.\";\n\n/* FTP file upload error */\n\"You do not have access to write file %@\" = \"Vous n'avez pas l'accès pour écrire le fichier %@\";\n\n/* FTP Error */\n\"You need an Account to Upload Files\" = \"Vous avez besoin d'un compte pour télécharger des fichiers\";"
  },
  {
    "path": "Example/hostkey.c",
    "content": "/* Copyright (c) 2004-2006, Sara Golemon <sarag@libssh2.org>\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms,\n * with or without modification, are permitted provided\n * that the following conditions are met:\n *\n *   Redistributions of source code must retain the above\n *   copyright notice, this list of conditions and the\n *   following disclaimer.\n *\n *   Redistributions in binary form must reproduce the above\n *   copyright notice, this list of conditions and the following\n *   disclaimer in the documentation and/or other materials\n *   provided with the distribution.\n *\n *   Neither the name of the copyright holder nor the names\n *   of any other contributors may be used to endorse or\n *   promote products derived from this software without\n *   specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND\n * CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES,\n * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE\n * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY\n * OF SUCH DAMAGE.\n */\n\n#include \"libssh2_priv.h\"\n\n/* Needed for struct iovec on some platforms */\n#ifdef HAVE_SYS_UIO_H\n#include <sys/uio.h>\n#endif\n\n#if LIBSSH2_RSA\n/* ***********\n   * ssh-rsa *\n   *********** */\n\nstatic int libssh2_hostkey_method_ssh_rsa_dtor(LIBSSH2_SESSION *session, void **abstract);\n\n/* {{{ libssh2_hostkey_method_ssh_rsa_init\n * Initialize the server hostkey working area with e/n pair\n */\nstatic int\nlibssh2_hostkey_method_ssh_rsa_init(LIBSSH2_SESSION *session,\n\t\t\t\t    unsigned char *hostkey_data,\n\t\t\t\t    unsigned long hostkey_data_len,\n\t\t\t\t    void **abstract)\n{\n\tlibssh2_rsa_ctx *rsactx;\n\tunsigned char *s, *e, *n;\n\tunsigned long len, e_len, n_len;\n\n\t(void)hostkey_data_len;\n\n\tif (*abstract) {\n\t\tlibssh2_hostkey_method_ssh_rsa_dtor(session, abstract);\n\t\t*abstract = NULL;\n\t}\n\n\ts = hostkey_data;\n\tlen = libssh2_ntohu32(s);\n\ts += 4;\n\n\tif (len != 7 || strncmp((char *)s, \"ssh-rsa\", 7) != 0) {\n\t\treturn -1;\n\t}\n\ts += 7;\n\n\te_len = libssh2_ntohu32(s);\n\ts += 4;\n\n\te = s;\t\t\t\t\t\t\t\t\t\ts += e_len;\n\tn_len = libssh2_ntohu32(s);\t\t\t\t\ts += 4;\n\tn = s;\t\t\t\t\t\t\t\t\t\ts += n_len;\n\n\tif (_libssh2_rsa_new (&rsactx, e, e_len, n, n_len, NULL, 0,\n\t\t\t      NULL, 0, NULL, 0, NULL, 0, NULL, 0, NULL, 0))\n\t  return -1;\n\n\t*abstract = rsactx;\n\n\treturn 0;\n}\n/* }}} */\n\n/* {{{ libssh2_hostkey_method_ssh_rsa_initPEM\n * Load a Private Key from a PEM file\n */\nstatic int libssh2_hostkey_method_ssh_rsa_initPEM(LIBSSH2_SESSION *session,\n\t\t\t\t\t\t  const char *privkeyfile, unsigned const char *passphrase, void **abstract)\n{\n\tlibssh2_rsa_ctx *rsactx;\n\tFILE *fp;\n\tint ret;\n\n\tif (*abstract) {\n\t\tlibssh2_hostkey_method_ssh_rsa_dtor(session, abstract);\n\t\t*abstract = NULL;\n\t}\n\n\tfp = fopen(privkeyfile, \"r\");\n\tif (!fp) {\n\t\treturn -1;\n\t}\n\n\tret = _libssh2_rsa_new_private (&rsactx, session, fp, passphrase);\n\tfclose(fp);\n\tif (ret) {\n\t\treturn -1;\n\t}\n\n\t*abstract = rsactx;\n\n\treturn 0;\n}\n/* }}} */\n\n/* {{{ libssh2_hostkey_method_ssh_rsa_sign\n * Verify signature created by remote\n */\nstatic int libssh2_hostkey_method_ssh_rsa_sig_verify(LIBSSH2_SESSION *session,\n\t\t\t\t\t\t     const unsigned char *sig,\n\t\t\t\t\t\t     unsigned long sig_len,\n\t\t\t\t\t\t     const unsigned char *m,\n\t\t\t\t\t\t     unsigned long m_len,\n\t\t\t\t\t\t     void **abstract)\n{\n\tlibssh2_rsa_ctx *rsactx = (libssh2_rsa_ctx*)(*abstract);\n\t(void)session;\n\n\t/* Skip past keyname_len(4) + keyname(7){\"ssh-rsa\"} + signature_len(4) */\n\tsig += 15; sig_len -= 15;\n\treturn _libssh2_rsa_sha1_verify (rsactx, sig, sig_len, m, m_len);\n}\n/* }}} */\n\n/* {{{ libssh2_hostkey_method_ssh_rsa_signv\n * Construct a signature from an array of vectors\n */\nstatic int libssh2_hostkey_method_ssh_rsa_signv(LIBSSH2_SESSION *session, unsigned char **signature, unsigned long *signature_len,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  unsigned long veccount, const struct iovec datavec[], void **abstract)\n{\n\tlibssh2_rsa_ctx *rsactx = (libssh2_rsa_ctx*)(*abstract);\n\tint ret;\n\tunsigned int i;\n\tunsigned char hash[SHA_DIGEST_LENGTH];\n\tlibssh2_sha1_ctx ctx;\n\n\tlibssh2_sha1_init(&ctx);\n\tfor(i = 0; i < veccount; i++) {\n\t\tlibssh2_sha1_update(ctx, datavec[i].iov_base, datavec[i].iov_len);\n\t}\n\tlibssh2_sha1_final(ctx, hash);\n\n\tret = _libssh2_rsa_sha1_sign(session, rsactx, hash, SHA_DIGEST_LENGTH,\n\t\t\t\t     signature, signature_len);\n\tif (ret) {\n\t\treturn -1;\n\t}\n\n\treturn 0;\n}\n/* }}} */\n\n/* {{{ libssh2_hostkey_method_ssh_rsa_dtor\n * Shutdown the hostkey\n */\nstatic int libssh2_hostkey_method_ssh_rsa_dtor(LIBSSH2_SESSION *session,\n\t\t\t\t\t       void **abstract)\n{\n\tlibssh2_rsa_ctx *rsactx = (libssh2_rsa_ctx*)(*abstract);\n\t(void)session;\n\n\t_libssh2_rsa_free(rsactx);\n\n\t*abstract = NULL;\n\n\treturn 0;\n}\n/* }}} */\n\nstatic LIBSSH2_HOSTKEY_METHOD libssh2_hostkey_method_ssh_rsa = {\n\t\"ssh-rsa\",\n\tMD5_DIGEST_LENGTH,\n\tlibssh2_hostkey_method_ssh_rsa_init,\n\tlibssh2_hostkey_method_ssh_rsa_initPEM,\n\tlibssh2_hostkey_method_ssh_rsa_sig_verify,\n\tlibssh2_hostkey_method_ssh_rsa_signv,\n\tNULL, /* encrypt */\n\tlibssh2_hostkey_method_ssh_rsa_dtor,\n};\n#endif /* LIBSSH2_RSA */\n\n#if LIBSSH2_DSA\n/* ***********\n   * ssh-dss *\n   *********** */\n\nstatic int libssh2_hostkey_method_ssh_dss_dtor(LIBSSH2_SESSION *session, void **abstract);\n\n/* {{{ libssh2_hostkey_method_ssh_dss_init\n * Initialize the server hostkey working area with p/q/g/y set\n */\nstatic int\nlibssh2_hostkey_method_ssh_dss_init(LIBSSH2_SESSION *session,\n\t\t\t\t    unsigned char *hostkey_data,\n\t\t\t\t    unsigned long hostkey_data_len,\n\t\t\t\t    void **abstract)\n{\n\tlibssh2_dsa_ctx *dsactx;\n\tunsigned char *p, *q, *g, *y, *s;\n\tunsigned long p_len, q_len, g_len, y_len, len;\n\t(void)hostkey_data_len;\n\n\tif (*abstract) {\n\t\tlibssh2_hostkey_method_ssh_dss_dtor(session, abstract);\n\t\t*abstract = NULL;\n\t}\n\n\ts = hostkey_data;\n\tlen = libssh2_ntohu32(s);\t\t\t\t\ts += 4;\n\tif (len != 7 || strncmp((char *)s, \"ssh-dss\", 7) != 0) {\n\t\treturn -1;\n\t}\t\t\t\t\t\t\t\t\t\t\ts += 7;\n\n\tp_len = libssh2_ntohu32(s);\t\t\t\t\ts += 4;\n\tp = s;\t\t\t\t\t\t\t\t\t\ts += p_len;\n\tq_len = libssh2_ntohu32(s);\t\t\t\t\ts += 4;\n\tq = s;\t\t\t\t\t\t\t\t\t\ts += q_len;\n\tg_len = libssh2_ntohu32(s);\t\t\t\t\ts += 4;\n\tg = s;\t\t\t\t\t\t\t\t\t\ts += g_len;\n\ty_len = libssh2_ntohu32(s);\t\t\t\t\ts += 4;\n\ty = s;\t\t\t\t\t\t\t\t\t\ts += y_len;\n\n\t_libssh2_dsa_new(&dsactx, p, p_len, q, q_len, g, g_len,\n\t\t\t y, y_len, NULL, 0);\n\n\t*abstract = dsactx;\n\n\treturn 0;\n}\n/* }}} */\n\n/* {{{ libssh2_hostkey_method_ssh_dss_initPEM\n * Load a Private Key from a PEM file\n */\nstatic int libssh2_hostkey_method_ssh_dss_initPEM(LIBSSH2_SESSION *session,\n\t\t\t\t\t\t  const char *privkeyfile,\n\t\t\t\t\t\t  unsigned const char *passphrase,\n\t\t\t\t\t\t  void **abstract)\n{\n\tlibssh2_dsa_ctx *dsactx;\n\tFILE *fp;\n\tint ret;\n\n\tif (*abstract) {\n\t\tlibssh2_hostkey_method_ssh_dss_dtor(session, abstract);\n\t\t*abstract = NULL;\n\t}\n\n\tfp = fopen(privkeyfile, \"r\");\n\tif (!fp) {\n\t\treturn -1;\n\t}\n\n\tret = _libssh2_dsa_new_private (&dsactx, session, fp, passphrase);\n\tfclose(fp);\n\tif (ret) {\n\t\treturn -1;\n\t}\n\n\t*abstract = dsactx;\n\n\treturn 0;\n}\n/* }}} */\n\n/* {{{ libssh2_hostkey_method_ssh_dss_sign\n * Verify signature created by remote\n */\nstatic int libssh2_hostkey_method_ssh_dss_sig_verify(LIBSSH2_SESSION *session, const unsigned char *sig, unsigned long sig_len,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   const unsigned char *m, unsigned long m_len, void **abstract)\n{\n\tlibssh2_dsa_ctx *dsactx = (libssh2_dsa_ctx*)(*abstract);\n\n\t/* Skip past keyname_len(4) + keyname(7){\"ssh-dss\"} + signature_len(4) */\n\tsig += 15; sig_len -= 15;\n\tif (sig_len != 40) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_PROTO, \"Invalid DSS signature length\", 0);\n\t\treturn -1;\n\t}\n\treturn _libssh2_dsa_sha1_verify(dsactx, sig, m, m_len);\n}\n/* }}} */\n\n/* {{{ libssh2_hostkey_method_ssh_dss_signv\n * Construct a signature from an array of vectors\n */\nstatic int libssh2_hostkey_method_ssh_dss_signv(LIBSSH2_SESSION *session, unsigned char **signature, unsigned long *signature_len,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  unsigned long veccount, const struct iovec datavec[], void **abstract)\n{\n\tlibssh2_dsa_ctx *dsactx = (libssh2_dsa_ctx*)(*abstract);\n\tunsigned char hash[SHA_DIGEST_LENGTH];\n\tlibssh2_sha1_ctx ctx;\n\tunsigned int i;\n\n\t*signature = LIBSSH2_ALLOC(session, 2 * SHA_DIGEST_LENGTH);\n\t*signature_len = 2 * SHA_DIGEST_LENGTH;\n\tmemset(*signature, 0, 2 * SHA_DIGEST_LENGTH);\n\n\tif (!(*signature)) {\n\t\treturn -1;\n\t}\n\n\tlibssh2_sha1_init(&ctx);\n\tfor(i = 0; i < veccount; i++) {\n\t\tlibssh2_sha1_update(ctx, datavec[i].iov_base, datavec[i].iov_len);\n\t}\n\tlibssh2_sha1_final(ctx, hash);\n\n\tif (_libssh2_dsa_sha1_sign(dsactx, hash, SHA_DIGEST_LENGTH,\n\t\t\t\t   *signature))\n\t{\n\t\tLIBSSH2_FREE(session, *signature);\n\t\treturn -1;\n\t}\n\n\treturn 0;\n}\n/* }}} */\n\n/* {{{ libssh2_hostkey_method_ssh_dss_dtor\n * Shutdown the hostkey method\n */\nstatic int libssh2_hostkey_method_ssh_dss_dtor(LIBSSH2_SESSION *session,\n\t\t\t\t\t       void **abstract)\n{\n\tlibssh2_dsa_ctx *dsactx = (libssh2_dsa_ctx*)(*abstract);\n\t(void)session;\n\n\t_libssh2_dsa_free(dsactx);\n\n\t*abstract = NULL;\n\n\treturn 0;\n}\n/* }}} */\n\nstatic LIBSSH2_HOSTKEY_METHOD libssh2_hostkey_method_ssh_dss = {\n\t\"ssh-dss\",\n\tMD5_DIGEST_LENGTH,\n\tlibssh2_hostkey_method_ssh_dss_init,\n\tlibssh2_hostkey_method_ssh_dss_initPEM,\n\tlibssh2_hostkey_method_ssh_dss_sig_verify,\n\tlibssh2_hostkey_method_ssh_dss_signv,\n\tNULL, /* encrypt */\n\tlibssh2_hostkey_method_ssh_dss_dtor,\n};\n#endif /* LIBSSH2_DSA */\n\nstatic LIBSSH2_HOSTKEY_METHOD *_libssh2_hostkey_methods[] = {\n#if LIBSSH2_RSA\n\t&libssh2_hostkey_method_ssh_rsa,\n#endif /* LIBSSH2_RSA */\n#if LIBSSH2_DSA\n\t&libssh2_hostkey_method_ssh_dss,\n#endif /* LIBSSH2_DSA */\n\tNULL\n};\n\nLIBSSH2_HOSTKEY_METHOD **libssh2_hostkey_methods(void)\n{\n\treturn _libssh2_hostkey_methods;\n}\n\n/* {{{ libssh2_hostkey_hash\n * Returns hash signature\n * Returned buffer should NOT be freed\n * Length of buffer is determined by hash type\n * i.e. MD5 == 16, SHA1 == 20\n */\nLIBSSH2_API const char *libssh2_hostkey_hash(LIBSSH2_SESSION *session, int hash_type)\n{\n\tswitch (hash_type) {\n#if LIBSSH2_MD5\n\t\tcase LIBSSH2_HOSTKEY_HASH_MD5:\n\t\t\treturn (char *)session->server_hostkey_md5;\n\t\t\tbreak;\n#endif /* LIBSSH2_MD5 */\n\t\tcase LIBSSH2_HOSTKEY_HASH_SHA1:\n\t\t\treturn (char *)session->server_hostkey_sha1;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\treturn NULL;\n\t}\n}\n/* }}} */\n\n\n"
  },
  {
    "path": "Example/it.lproj/DropletLauncher.nib/classes.nib",
    "content": "{\n    IBClasses = (\n        {CLASS = DropletLauncherDelegate; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, \n        {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }\n    ); \n    IBVersion = 1; \n}"
  },
  {
    "path": "Example/it.lproj/DropletLauncher.nib/info.nib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IBDocumentLocation</key>\n\t<string>415 56 356 240 0 0 1280 778 </string>\n\t<key>IBEditorPositions</key>\n\t<dict>\n\t\t<key>29</key>\n\t\t<string>69 259 338 44 0 0 1280 778 </string>\n\t</dict>\n\t<key>IBFramework Version</key>\n\t<string>437.0</string>\n\t<key>IBSystem Version</key>\n\t<string>8P135</string>\n\t<key>IBUsesTextArchiving</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/it.lproj/DropletLauncher.nib/keyedobjects.nib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>$archiver</key>\n\t<string>NSKeyedArchiver</string>\n\t<key>$objects</key>\n\t<array>\n\t\t<string>$null</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>387</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAccessibilityConnectors</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>384</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAccessibilityOidsKeys</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>385</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAccessibilityOidsValues</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>386</integer>\n\t\t\t</dict>\n\t\t\t<key>NSClassesKeys</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>279</integer>\n\t\t\t</dict>\n\t\t\t<key>NSClassesValues</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>280</integer>\n\t\t\t</dict>\n\t\t\t<key>NSConnections</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>9</integer>\n\t\t\t</dict>\n\t\t\t<key>NSFontManager</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t</dict>\n\t\t\t<key>NSFramework</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>6</integer>\n\t\t\t</dict>\n\t\t\t<key>NSNamesKeys</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>255</integer>\n\t\t\t</dict>\n\t\t\t<key>NSNamesValues</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>256</integer>\n\t\t\t</dict>\n\t\t\t<key>NSNextOid</key>\n\t\t\t<integer>250</integer>\n\t\t\t<key>NSObjectsKeys</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>176</integer>\n\t\t\t</dict>\n\t\t\t<key>NSObjectsValues</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>254</integer>\n\t\t\t</dict>\n\t\t\t<key>NSOidsKeys</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>281</integer>\n\t\t\t</dict>\n\t\t\t<key>NSOidsValues</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>282</integer>\n\t\t\t</dict>\n\t\t\t<key>NSRoot</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t\t<key>NSVisibleWindows</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>7</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>5</integer>\n\t\t\t</dict>\n\t\t\t<key>NSClassName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>3</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>NSApplication</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSMutableString</string>\n\t\t\t\t<string>NSString</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSMutableString</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSCustomObject</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSCustomObject</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>IBCocoaFramework</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>8</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSMutableSet</string>\n\t\t\t\t<string>NSSet</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSMutableSet</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>10</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>24</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>29</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>35</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>40</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>46</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>51</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>57</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>61</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>66</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>70</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>74</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>79</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>84</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>90</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>95</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>100</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>105</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>110</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>115</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>120</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>125</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>130</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>134</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>138</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>142</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>148</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>152</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>156</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>160</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>165</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>170</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>22</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>11</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>14</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>12</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>13</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>189</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>187</integer>\n\t\t\t</dict>\n\t\t\t<key>NSName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>188</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>185</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Contrai</string>\n\t\t<string>m</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>18</integer>\n\t\t\t</dict>\n\t\t\t<key>NSClassName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>16</integer>\n\t\t\t</dict>\n\t\t\t<key>NSResourceName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>17</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>NSImage</string>\n\t\t<string>NSMenuCheckmark</string>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSCustomResource</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSCustomResource</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>18</integer>\n\t\t\t</dict>\n\t\t\t<key>NSClassName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>16</integer>\n\t\t\t</dict>\n\t\t\t<key>NSResourceName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>20</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>NSMenuMixedState</string>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSMenuItem</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSMenuItem</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>performMiniaturize:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSNibControlConnector</string>\n\t\t\t\t<string>NSNibConnector</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSNibControlConnector</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>28</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>25</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>12</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>26</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Porta tutto in primo piano</string>\n\t\t<string></string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>arrangeInFront:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>34</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>30</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>33</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>32</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>189</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>192</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>191</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Stampa…</string>\n\t\t<string>p</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>print:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>39</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>36</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>38</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>37</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Formato di stampa…</string>\n\t\t<string>P</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>runPageLayout:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>45</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>41</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>44</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>42</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>43</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>189</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>251</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>249</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Aiuto NewApplication</string>\n\t\t<string>?</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>showHelp:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>50</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>47</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>48</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>49</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>189</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>202</integer>\n\t\t\t</dict>\n\t\t\t<key>NSName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>203</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>200</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Cancella menu</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>clearRecentDocuments:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSDestination</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>56</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>52</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>55</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>54</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>189</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>218</integer>\n\t\t\t</dict>\n\t\t\t<key>NSName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>228</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>216</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Esci da NewApplication</string>\n\t\t<string>q</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>terminate:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSDestination</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>60</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>58</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>59</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Info su NewApplication</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>orderFrontStandardAboutPanel:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSDestination</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>65</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>62</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>64</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1572864</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>63</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Nascondi altre</string>\n\t\t<string>h</string>\n\t\t<string>hideOtherApplications:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSDestination</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>69</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>67</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>64</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>68</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Nascondi NewApplication</string>\n\t\t<string>hide:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSDestination</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>73</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>71</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>72</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Mostra tutte</string>\n\t\t<string>unhideAllApplications:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>78</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>75</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>77</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>76</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Chiudi</string>\n\t\t<string>w</string>\n\t\t<string>performClose:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>83</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>80</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>81</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>82</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>189</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>243</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>241</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Controlla ortografia mentre scrivo</string>\n\t\t<string>toggleContinuousSpellChecking:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>89</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>85</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>88</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>87</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>189</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>234</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>232</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Annulla</string>\n\t\t<string>z</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>undo:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>94</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>91</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>93</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>92</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Copia</string>\n\t\t<string>c</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>copy:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>99</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>96</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>98</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>81</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>97</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Controlla ortografia</string>\n\t\t<string>;</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>checkSpelling:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>104</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>101</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>103</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>102</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Incolla</string>\n\t\t<string>v</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>paste:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>109</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>106</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>107</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>108</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>189</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>247</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>245</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Interrompi riproduzione</string>\n\t\t<string>stopSpeaking:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>114</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>111</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>113</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>112</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Taglia</string>\n\t\t<string>x</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>cut:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>119</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>116</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>118</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>81</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>117</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Ortografia…</string>\n\t\t<string>:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>showGuessPanel:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>124</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>121</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>123</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>122</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Ripristina</string>\n\t\t<string>Z</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>redo:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>129</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>126</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>128</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>127</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Seleziona tutto</string>\n\t\t<string>a</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>selectAll:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>133</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>131</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>107</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>132</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Inizia riproduzione</string>\n\t\t<string>startSpeaking:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>137</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>135</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>136</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Cancella</string>\n\t\t<string>delete:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>141</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>139</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>12</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>140</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Ridimensiona</string>\n\t\t<string>performZoom:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>147</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>143</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>146</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>144</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTag</key>\n\t\t\t<integer>1</integer>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>145</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>189</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>239</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>237</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Cerca…</string>\n\t\t<string>f</string>\n\t\t<string>performFindPanelAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>147</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>149</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>151</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>144</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTag</key>\n\t\t\t<integer>2</integer>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>150</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Cerca successivo</string>\n\t\t<string>g</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>147</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>153</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>155</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>144</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTag</key>\n\t\t\t<integer>3</integer>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>154</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Cerca precedente</string>\n\t\t<string>G</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>147</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>157</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>159</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>144</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTag</key>\n\t\t\t<integer>7</integer>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>158</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Usa selezione per cercare</string>\n\t\t<string>e</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>164</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>161</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>163</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>144</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>162</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Vai fino alla selezione</string>\n\t\t<string>j</string>\n\t\t<string>centerSelectionInVisibleArea:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>169</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>166</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>168</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1572864</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>167</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Incolla e mantieni lo stile</string>\n\t\t<string>V</string>\n\t\t<string>pasteAsPlainText:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>174</integer>\n\t\t\t</dict>\n\t\t\t<key>NSDestination</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>171</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>173</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>5</integer>\n\t\t\t</dict>\n\t\t\t<key>NSClassName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>172</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>DropletLauncherDelegate</string>\n\t\t<string>delegate</string>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSNibOutletConnector</string>\n\t\t\t\t<string>NSNibConnector</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSNibOutletConnector</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSMutableArray</string>\n\t\t\t\t<string>NSArray</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSMutableArray</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>177</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>47</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>178</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>171</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>36</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>179</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>67</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>182</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>183</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>161</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>143</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>190</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>101</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>25</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>131</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>121</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>80</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>210</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>204</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>184</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>229</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>106</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>81</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>193</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>149</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>236</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>166</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>235</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>196</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>71</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>139</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>219</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>207</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>41</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>215</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>116</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>248</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>244</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>153</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>135</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>111</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>107</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>199</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>227</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>42</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>96</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>240</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>220</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>209</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>75</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>231</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>226</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>58</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>157</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>126</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>91</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>85</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>48</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>30</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>223</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>12</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>181</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>180</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Registra</string>\n\t\t<string>s</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>186</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>184</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>12</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>185</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>189</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>214</integer>\n\t\t\t</dict>\n\t\t\t<key>NSName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>252</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>213</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Finestra</string>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>139</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>178</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>25</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<string>_NSWindowsMenu</string>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSMenu</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSMenu</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Archivio</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>193</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>196</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>199</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>182</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>75</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>179</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>204</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>207</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>209</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>36</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>30</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>195</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>194</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Nuovo</string>\n\t\t<string>n</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>198</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>197</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Apri…</string>\n\t\t<string>o</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>201</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>48</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>200</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Apri recente</string>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>47</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<string>_NSRecentDocumentsMenu</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>206</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>205</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Registra col nome…</string>\n\t\t<string>S</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>208</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Ripristina</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>212</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>211</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Preferenze…</string>\n\t\t<string>,</string>\n\t\t<string>DropletLauncher</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>215</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>229</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>231</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>183</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>248</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>217</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>184</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>216</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>NewApplication</string>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>58</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>177</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>210</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>219</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>220</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>226</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>67</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>71</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>227</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>222</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>223</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>221</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Servizi</string>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>189</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>224</integer>\n\t\t\t</dict>\n\t\t\t<key>NSName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>225</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>221</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<string>_NSServicesMenu</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>_NSAppleMenu</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>230</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>184</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>191</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>233</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>184</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>232</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Composizione</string>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>85</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>121</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>235</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>111</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>91</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>101</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>166</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>135</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>126</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>190</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>236</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>240</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>244</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>238</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>144</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>237</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Cerca</string>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>143</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>149</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>153</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>157</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>161</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>242</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>81</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>241</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Ortografia</string>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>116</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>96</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>80</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>246</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>107</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>245</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Voce</string>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>131</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>106</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>250</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>184</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>42</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>249</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>Aiuto</string>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>41</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<string>_NSMainMenu</string>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSArray</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSArray</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>48</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>184</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>107</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>81</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>229</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>184</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>107</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>183</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>240</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>42</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>184</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>215</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>81</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>184</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>236</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>244</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>248</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>81</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>184</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>231</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>199</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>220</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>182</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>240</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>41</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>171</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>204</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>36</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>229</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>96</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>184</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>42</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>179</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>248</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>80</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>196</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>209</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>30</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>178</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>75</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>116</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>193</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>207</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>210</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>81</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>257</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>258</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>259</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>172</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>260</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>261</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>259</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>258</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>259</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>262</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>263</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>264</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>265</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>267</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>268</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>259</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>269</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>270</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>259</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>271</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>272</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>273</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>274</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>275</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>276</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>277</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>278</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>7</string>\n\t\t</dict>\n\t\t<string>NSMenuItem</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string></string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>8</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>5</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>MainMenu</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>2</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>3</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>266</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSNull</string>\n\t\t\t\t<string>%NSNull</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSNull</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>1</string>\n\t\t</dict>\n\t\t<string>NSMenuItem2</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>2</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>6</string>\n\t\t</dict>\n\t\t<string>1111</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>1</string>\n\t\t</dict>\n\t\t<string>NSMenuItem1</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>File's Owner</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>9</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>10</string>\n\t\t</dict>\n\t\t<string>121</string>\n\t\t<string>NSMenu</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>199</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>100</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>121</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>161</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>177</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>226</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>41</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>240</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>61</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>130</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>244</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>236</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>106</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>81</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>178</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>75</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>227</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>111</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>134</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>219</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>90</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>183</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>139</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>138</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>24</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>204</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>120</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>101</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>223</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>29</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>170</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>142</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>184</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>149</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>46</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>30</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>42</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>84</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>209</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>105</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>135</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>116</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>196</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>229</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>66</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>85</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>157</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>110</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>215</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>148</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>70</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>190</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>51</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>171</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>48</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>152</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>71</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>95</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>235</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>210</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>74</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>182</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>35</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>10</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>25</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>125</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>79</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>47</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>179</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>67</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>91</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>58</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>220</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>96</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>80</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>131</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>143</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>248</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>160</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>207</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>57</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>166</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>193</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>40</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>115</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>156</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>165</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>107</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>153</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>36</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>231</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>126</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>283</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>284</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>285</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>286</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>287</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>288</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>289</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>290</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>291</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>292</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>293</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>294</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>295</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>296</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>297</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>298</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>299</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>300</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>301</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>302</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>303</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>304</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>305</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>306</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>307</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>308</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>309</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>310</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>311</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>312</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>313</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>314</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>315</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>316</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>317</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>318</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>319</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>320</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>321</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>322</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>323</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>324</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>325</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>326</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>327</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>328</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>329</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>330</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>331</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>332</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>333</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>334</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>335</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>336</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>337</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>338</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>339</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>340</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>341</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>342</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>343</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>344</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>345</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>346</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>347</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>348</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>349</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>350</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>351</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>352</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>353</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>354</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>355</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>356</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>357</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>358</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>359</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>360</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>361</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>362</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>363</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>364</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>365</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>366</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>367</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>368</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>369</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>370</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>371</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>372</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>373</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>374</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>375</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>376</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>377</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>378</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>379</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>380</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>381</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>382</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>383</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<integer>124</integer>\n\t\t<integer>226</integer>\n\t\t<integer>23</integer>\n\t\t<integer>145</integer>\n\t\t<integer>215</integer>\n\t\t<integer>210</integer>\n\t\t<integer>236</integer>\n\t\t<integer>144</integer>\n\t\t<integer>111</integer>\n\t\t<integer>216</integer>\n\t\t<integer>57</integer>\n\t\t<integer>146</integer>\n\t\t<integer>233</integer>\n\t\t<integer>211</integer>\n\t\t<integer>218</integer>\n\t\t<integer>195</integer>\n\t\t<integer>200</integer>\n\t\t<integer>92</integer>\n\t\t<integer>73</integer>\n\t\t<integer>149</integer>\n\t\t<integer>199</integer>\n\t\t<integer>235</integer>\n\t\t<integer>143</integer>\n\t\t<integer>224</integer>\n\t\t<integer>1</integer>\n\t\t<integer>19</integer>\n\t\t<integer>239</integer>\n\t\t<integer>240</integer>\n\t\t<integer>39</integer>\n\t\t<integer>205</integer>\n\t\t<integer>80</integer>\n\t\t<integer>231</integer>\n\t\t<integer>203</integer>\n\t\t<integer>130</integer>\n\t\t<integer>86</integer>\n\t\t<integer>249</integer>\n\t\t<integer>241</integer>\n\t\t<integer>29</integer>\n\t\t<integer>208</integer>\n\t\t<integer>127</integer>\n\t\t<integer>78</integer>\n\t\t<integer>106</integer>\n\t\t<integer>223</integer>\n\t\t<integer>74</integer>\n\t\t<integer>227</integer>\n\t\t<integer>202</integer>\n\t\t<integer>204</integer>\n\t\t<integer>72</integer>\n\t\t<integer>83</integer>\n\t\t<integer>152</integer>\n\t\t<integer>207</integer>\n\t\t<integer>221</integer>\n\t\t<integer>228</integer>\n\t\t<integer>56</integer>\n\t\t<integer>242</integer>\n\t\t<integer>153</integer>\n\t\t<integer>214</integer>\n\t\t<integer>139</integer>\n\t\t<integer>248</integer>\n\t\t<integer>125</integer>\n\t\t<integer>243</integer>\n\t\t<integer>150</integer>\n\t\t<integer>225</integer>\n\t\t<integer>206</integer>\n\t\t<integer>129</integer>\n\t\t<integer>193</integer>\n\t\t<integer>79</integer>\n\t\t<integer>136</integer>\n\t\t<integer>87</integer>\n\t\t<integer>220</integer>\n\t\t<integer>37</integer>\n\t\t<integer>24</integer>\n\t\t<integer>5</integer>\n\t\t<integer>232</integer>\n\t\t<integer>222</integer>\n\t\t<integer>126</integer>\n\t\t<integer>75</integer>\n\t\t<integer>134</integer>\n\t\t<integer>197</integer>\n\t\t<integer>58</integer>\n\t\t<integer>131</integer>\n\t\t<integer>201</integer>\n\t\t<integer>219</integer>\n\t\t<integer>196</integer>\n\t\t<integer>209</integer>\n\t\t<integer>103</integer>\n\t\t<integer>245</integer>\n\t\t<integer>112</integer>\n\t\t<integer>142</integer>\n\t\t<integer>246</integer>\n\t\t<integer>82</integer>\n\t\t<integer>122</integer>\n\t\t<integer>230</integer>\n\t\t<integer>244</integer>\n\t\t<integer>247</integer>\n\t\t<integer>212</integer>\n\t\t<integer>213</integer>\n\t\t<integer>81</integer>\n\t\t<integer>77</integer>\n\t\t<integer>217</integer>\n\t\t<integer>198</integer>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSIBObjectData</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSIBObjectData</string>\n\t\t</dict>\n\t</array>\n\t<key>$top</key>\n\t<dict>\n\t\t<key>IB.objectdata</key>\n\t\t<dict>\n\t\t\t<key>CF$UID</key>\n\t\t\t<integer>1</integer>\n\t\t</dict>\n\t</dict>\n\t<key>$version</key>\n\t<integer>100000</integer>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/it.lproj/InfoPlist.strings",
    "content": "/* Localized versions of Info.plist keys */\n\nCFBundleName = \"FTPConnection\";\nNSHumanReadableCopyright = \"© __MyCompanyName__, 2004\";"
  },
  {
    "path": "Example/it.lproj/Localizable.strings",
    "content": "/* ssh host key changed */\n\"%@'s fingerprint does not match the one on record. If the server has changed its key, then this is to be expected. If not then you should check with the system administrator before proceeding.\\nThe new fingerprint is %@.\\nDo you wish to connect to the server?\" = \"La fingerprint di %1$@ non corrisponde a quella in archivio. Se il server ha cambiato la sua chiave questo è un comportamento normale. Diversamente, dovresti fare un controllo con l'amministratore del sistema prima di continuare.\\n La nuova fingerprint è %2$@.\\nVuoi collegarti al server?\";\n\n/* authorise */\n\"%@\\nWhat would you like to do?\" = \"%@\\nChe cosa ti piacerebbe fare?\";\n\n/* ConnectionOpenPanel */\n\"A Connection Error Occurred\" = \"Si è verificato un errore di connessione\";\n\n/* FTP Abort */\n\"Action Aborted. Local Error\" = \"Azione interrotta. Errore locale\";\n\n/* FTP no data stream types available */\n\"All data connection modes have been exhausted. Check with the server administrator.\" = \"Tutte le possibili modalità di connessione sono state provate. Fai un controllo con l'amministratore del server.\";\n\n/* WebDAV Create Directory Error\n   MobileMe Create Directory Error */\n\n\"An intermediate directory does not exist and needs to be created before the current directory\" = \"Non esiste una cartella intermedia e deve essere creata prima della cartella attuale.\";\n\n/* WebDAV Create Directory Error\n   MobileMe Create Directory Error */\n\n\"An unknown error occurred\" = \"Si è verificato un errore sconosciuto\";\n\n/* multiple connection joiner */\n\"and\" = \"e\";\n\n/* close window */\n\"Are you sure you want to stop the upload?\" = \"Sei sicuro di voler interrompere il caricamento?\";\n\n/* failed pk authentication for ssh */\n\"Authentication by Public Key Failed\" = \"L'autenticazione con Chiave Pubblica è fallita\";\n\n/* failed authentication for ssh */\n\"Authentication Failed. Do you have permission to access this server via SFTP?\" = \"Autenticazione fallita. Sei sicuro di avere i permessi per accedere al server via SFTP?\";\n\n/* authorise */\n\"Authorize\" = \"Autorizza\";\n\n/* authorise */\n\"Authorize Connection?\" = \"Autorizzi la connessione?\";\n\n/* connection type */\n\"auto\" = \"auto\";\n\n/* config */\n\"Bad Configuration\" = \"Configurazione errata\";\n\n/* error */\n\"Bad Droplet\" = \"Droplet errato\";\n\n/* sftp last error */\n\"Bad Message\" = \"Messaggio errato\";\n\n/* Transfer Controller */\n\"Bad Password.\" = \"Password errata.\";\n\n/* filesize: bytes */\n\"bytes\" = \"bytes\";\n\n/* authorise */\n\"Cancel\" = \"Annulla\";\n\n/* FTP upload error */\n\"Cannot Upload File. Storage quota on server exceeded\" = \"Non posso caricare il file. Lo spazio assegnato sul server è esaurito\";\n\n/* transfer controller\n   connected message */\n\n\"Connected to %@\" = \"Connesso a %@\";\n\n/* file transcript */\n\"Connected to File System\\n\" = \"Connesso al File System\\n\";\n\n/* connection string */\n\"Connecting to %@\" = \"Connessione a %@\";\n\n/* file transcript */\n\"Connecting…\\n\" = \"Connessione…\\n\";\n\n/* sftp last error */\n\"Connection Lost\" = \"Connessione perduta\";\n\n/* close window */\n\"Continue Upload\" = \"Continua caricamento\";\n\n/* file transcript */\n\"Copying %@ to %@\\n\" = \"Sto copiando %1$@ di %2$@\\n\";\n\n/* FileConnection set permissions error */\n\"Could not change file permissions\" = \"Non posso cambiare i permessi dei files\";\n\n/* FileConnection create directory error */\n\"Could not create directory\" = \"Non posso creare la cartella\";\n\n/* config */\n\"Couldn't find configuration file specified\\n %@\" = \"Impossibile trovare il file di configurazione specificato\\n %@\";\n\n/* file transcript */\n\"Create Directory %@ (%lo)\\n\" = \"Crea cartella %1$@ (%2$lo)\\n\";\n\n/* FTP Create directory error */\n\"Create directory operation failed\" = \"Operazione di creazione cartella fallita\";\n\n/* Failed to open a data stream connection */\n\"Data Stream Timed Out\" = \"Tempo scaduto per il flusso di dati\";\n\n/* file transcript */\n\"Deleting File %@\\n\" = \"Cancellazione file %@\\n\";\n\n/* sftp last error */\n\"Directory not empty\" = \"Cartella non vuota\";\n\n/* status */\n\"Disconnected\" = \"Disconnesso\";\n\n/* transfer controller */\n\"Disconnected from %@\" = \"Disconnesso da %@\";\n\n/* filesize: exabytes */\n\"EB\" = \"EB\";\n\n/* sftp last error */\n\"End of File\" = \"Fine del file\";\n\n/* sftp last error */\n\"Error INVAL\" = \"Errore INVAL\";\n\n/* Directory Parsing Error */\n\"Error parsing directory listing\" = \"Errore nell'analizzare l'elenco della cartella\";\n\n/* FTP no data streams available */\n\"Exhausted all connection types to server. Please contact server administrator\" = \"Tutte le possibili modalità di connessione sono state provate. Contatta l'amministratore del server.\";\n\n/* Bad ftp command */\n\"Failed to change to directory\" = \"Impossibile cambiare la cartella\";\n\n/* sftp failure to create dir */\n\"Failed to create directory\" = \"Impossibile creare la cartella\";\n\n/* couldn't delete the file\n   MobileMe Directory Deletion Error\n   WebDAV Directory Deletion Error */\n\n\n\"Failed to delete directory\" = \"Impossibile cancellare la cartella\";\n\n/* error for deleting a directory */\n\"Failed to delete directory: %@\" = \"Impossibile cancellare la cartella: %@\";\n\n/* couldn't delete the file\n   MobileMe file deletion error\n   WebDAV File Deletion Error */\n\n\n\"Failed to delete file\" = \"Impossibile cancellare il file\";\n\n/* error for deleting a file */\n\"Failed to delete file: %@\" = \"Impossibile cancellare il file: %@\";\n\n/* failed to find the id_dsa.pub */\n\"Failed to find public key in %@. If you have a custom named key, please set the User Default key SSHPublicKey.\" = \"Impossibile trovare una Chiave Pubblica in %@. Se hai una chiave nominale personale, imposta la chiave utente di default SSHPublicKey.\";\n\n/* failed authentication for ssh */\n\"Failed to initialize SFTP Subsystem. Do you have permission to access this server via SFTP?\" = \"Impossibile inizializzare il sottosistema SFTP. Hai i permessi necessari per accedere al server via SFTP?\";\n\n/* No MobileMe account or password */\n\"Failed to retrieve MobileMe account details\" = \"Impossibile recuperare le informazioni dell'utenza MobileMe\";\n\n/* FileConnection copy data error */\n\"Failed to upload data\" = \"Impossibile caricare dati\";\n\n/* error transferring */\n\"Failed to verify file transferred successfully\" = \"Impossibile verificare l'esito positivo del trasferimento\";\n\n/* sftp error */\n\"Failed to write all data\" = \"Impossibile verificare tutti i dati\";\n\n/* sftp last error */\n\"Failure\" = \"Fallito\";\n\n/* FTP file download error */\n\"File %@ does not exist on server\" = \"Il file %@ non esiste sul server\";\n\n/* FTP error */\n\"File / Directory does not exist\" = \"Il file / Cartella non esiste\";\n\n/* FileConnection error */\n\"File Already Exists\" = \"Il file esiste già\t\";\n\n/* sftp last error */\n\"File already exists\" = \"Il file esiste già\";\n\n/* FTP file in use */\n\"File in Use\" = \"Il file è in uso\";\n\n/* FTP Upload error */\n\"Filename not Allowed\" = \"Il nome file non è consentito\";\n\n/* FTP service timed out */\n\"FTP service not available; Remote server has closed connection\" = \"Il servizio FTP non è disponibile; il server remoto ha chiuso la connessione\";\n\n/* FTP no service */\n\"FTP Service Unavailable\" = \"Il servizio FTP non è disponibile\";\n\n/* filesize: gigabytes */\n\"GB\" = \"GB\";\n\n/* transfer controller */\n\"Hide Files\" = \"Nascondi files\";\n\n/* Couldn't open the port to the host */\n\"Host Unavailable\" = \"L'Host non è disponibile\";\n\n/* WebDAV Create Directory Error\n   MobileMe Create Directory Error */\n\n\"Insufficient storage space available\" = \"Lo spazio su disco non è sufficiente\";\n\n/* FTP Error */\n\"Invalid Account name\" = \"Il nome account non è valido\";\n\n/* sftp last error */\n\"Invalid filename\" = \"Il nome file non è valido\";\n\n/* sftp last error */\n\"Invalid Handle\" = \"L'handle non è valido\";\n\n/* Stream Error before opening */\n\"Is the service running on the server\" = \"Il servizio è attivo sul server\";\n\n/* filesize: kilobytes */\n\"Kilobytes\" = \"Kilobytes\";\n\n/* sftp last error */\n\"Link Loop\" = \"Collegameno ricorsivo\";\n\n/* FTP download error */\n\"Local File already exists\" = \"Il file locale esiste già\";\n\n/* sftp last error */\n\"Lock Conflict\" = \"Conflitto di Lock\";\n\n/* filesize: megabytes */\n\"MB\" = \"MB\";\n\n/* sftp last error */\n\"Method not Supported\" = \"Metodo non supportato\";\n\n/* new cat name */\n\"New Category\" = \"Nuova categoria\";\n\n/* config */\n\"No configuration file specified\" = \"Non è stato specificato nessun file di configurazione\";\n\n/* sftp last error */\n\"No Connection\" = \"Nessuna connessione\";\n\n/* failed to find a connection class */\n\"No connection available for requested connection type\" = \"Nessuna connessione è disponibile per il tipo di connessione richiesto\";\n\n/* failed to find a connection class */\n\"No connection available for requested port\" = \"Nessuna connessione è disponibile per la porta richiesta\";\n\n/* failed to find a connection class */\n\"No connection available for requested protocol\" = \"Nessuna connessione è disponibile per il protocollo richiesto\";\n\n/* sftp last error */\n\"No Media\" = \"Nessun media\";\n\n/* sftp last error */\n\"No space left on remote machine\" = \"Non c'è altro spazio disponibile sulla macchina remota\";\n\n/* FTP Error */\n\"No Storage Space Available\" = \"Non c'è più spazio disponibile\";\n\n/* sftp last error */\n\"No such file\" = \"Nessun file\";\n\n/* sftp last error */\n\"No such path\" = \"Nessun percorso\";\n\n/* sftp last error */\n\"Not a directory\" = \"Non è una cartella\";\n\n/* FTP Error */\n\"Not Logged In\" = \"Noi sei connesso\";\n\n/* sftp last error\n   OK */\n\n\"OK\" = \"OK\";\n\n/* sftp last error */\n\"Operation Unsupported\" = \"L'operazione non è supportata\";\n\n/* WebDAV Uploading Error\n   MobileMe File Uploading Error */\n\n\"Parent Folder does not exist\" = \"La cartella superiore non esiste\";\n\n/* No comment provided by engineer. */\n\"Password was not accepted.\" = \"La password non è stata accettata.\";\n\n/* filesize: petabytes */\n\"PB\" = \"PB\";\n\n/* sftp last error */\n\"Permission Denied\" = \"Permesso negato\";\n\n/* config\n   error */\n\n\"Quit\" = \"Esci\";\n\n/* sftp last error */\n\"Quota exceeded\" = \"Quota superata\";\n\n/* file transcript */\n\"Renaming %@ to %@\\n\" = \"Restanti %1$@ di %2$@\\n\";\n\n/* FTP Error */\n\"Request Aborted. Page Type Unknown\" = \"La richiesta è stata interrotta. Tipo di pagina sconosciuto\";\n\n/* sftp last error */\n\"Request Denied\" = \"Richiesta negata\";\n\n/* abbreviation for seconds, e.g. 12 MB/s */\n\"s\" = \"sec\";\n\n/* category name */\n\"Saved Hosts\" = \"Host registrati\";\n\n/* No comment provided by engineer. */\n\"Secure Shell Connection Error\" = \"Errore di connessione Secure Shell\";\n\n/* transfer controller */\n\"Show Files\" = \"Mostra files\";\n\n/* close window */\n\"Stop Upload\" = \"Ferma caricamento\";\n\n/* close window */\n\"Stop Upload?\" = \"Interrompere caricamento?\";\n\n/* Error creating stream */\n\"Stream Unavailable\" = \"Stream non disponibile\";\n\n/* filesize: terabytes */\n\"TB\" = \"TB\";\n\n/* WebDAV Create Directory Error\n   MobileMe Create Directory Error */\n\n\"The body of the request is not supported\" = \"Il corpo della richiesta non è supportato\";\n\n/* sftp bad directory */\n\"The directory (%@) does not exist\" = \"La cartella (%@) non esiste\";\n\n/* WebDAV Create Directory Error\n   MobileMe Create Directory Error */\n\n\"The directory already exists\" = \"La cartella esiste già\";\n\n/* WebDAV Create Directory Error\n   MobileMe Create Directory Error */\n\n\"The server does not allow the creation of directories at the current location\" = \"Il server non permette la creazione di directory nella posizione attuale\";\n\n/* No comment provided by engineer. */\n\"The SSH manager returned the following error message:\\n\\n%@\" = \"Il manager SSH ha riportato il seguente messaggio di errore:\\n\\n%@\";\n\n/* error transferring */\n\"The transferred file has a size of 0.\" = \"Il file trasferito ha dimensione uguale a 0.\";\n\n/* MobileMe Directory Contents Error */\n\"There is no MobileMe access to the directory\" = \"Non c'è un accesso MobileMe alla cartella\";\n\n/* No WebDAV access to the specified path */\n\"There is no WebDAV access to the directory\" = \"Non c'è un accesso WebDAV alla directory\";\n\n/* sftp error */\n\"There was an error with the SSH subsystem: \" = \"Si è verificato un errore con il sottosistema SSH:\";\n\n/* error */\n\"This droplet is missing the original application that created it. You will need to reinstall the original application.\" = \"Il droplet ha perduto la connessione con l'applicazione che l'ha creato. Dovrai reinstallare l'applicazione originale.\";\n\n/* ssh authorise remote host fingerprint */\n\"This is the first time connecting to %@. It has a fingerprint of \\n%@. Do you wish to connect?\" = \"Questa è la prima volta che ti colleghi a  %1$@, che ha una fingerprint di \\n%2$@. Vuoi connetterti?\";\n\n/* time out */\n\"Timed Out waiting for remote host.\" = \"E' scaduto il tempo di attesa per l'host remoto.\";\n\n/* Transfer Controller */\n\"Too many files had transfer problems\" = \"Problemi dovuti allo scaricamento di troppi files\";\n\n/* FileConnection failed to copy file */\n\"Unable to store data in file\" = \"Non posso salvare i dati nel file\";\n\n/* WebDAV Error */\n\"Unknown Error Occurred\" = \"Si è verificato un errore sconosciuto\";\n\n/* sftp last error */\n\"Unknown Principle\" = \"Principio sconosciuto\";\n\n/* status message */\n\"Uploading\" = \"Sto caricando\";\n\n/* status */\n\"Uploading %@\" = \"Sto caricando %@\";\n\n/* No username or password */\n\"Username and Password are required for FTP connections\" = \"Nome Utente e Password sono necessarie per le connessioni FTP\";\n\n/* No username or password */\n\"Username and Password are required for S3 connections\" = \"Nome Utente e Password sono necessarie per le connessioni S3\";\n\n/* No username or password */\n\"Username and Password are required for WebDAV connections\" = \"Nome Utente e Password sono necessarie per le connessioni WebDAV\";\n\n/* No username or password */\n\"Username is required for SFTP connections\" = \"Il Nome Utente è necessario per le connessioni SFTP\";\n\n/* sftp last error */\n\"Write Protected\" = \"Protetto da scrittura\";\n\n/* file transcript */\n\"Writing data to %@\\n\" = \"Sto scrivendo i dati in %@\\n\";\n\n/* Bonjour Error */\n\"You can not add a child category to the Bonjour category.\" = \"Non puoi aggiungere una categoria secondaria alla categoria di Bonjour.\";\n\n/* Bonjour Error */\n\"You can not add a new host to the Bonjour category.\" = \"Non puoi aggiungere un nuovo host alla categoria di Bonjour.\";\n\n/* FTP file upload error */\n\"You do not have access to write file %@\" = \"Non hai l'accesso per scrivere il file %@\";\n\n/* FTP Error */\n\"You need an Account to Upload Files\" = \"Hai bisogno di un account per caricare files\";"
  },
  {
    "path": "Example/ja.lproj/DropletLauncher.nib/classes.nib",
    "content": "{\n    IBClasses = (\n        {CLASS = DropletLauncherDelegate; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, \n        {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }\n    ); \n    IBVersion = 1; \n}"
  },
  {
    "path": "Example/ja.lproj/DropletLauncher.nib/info.nib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IBDocumentLocation</key>\n\t<string>415 56 356 240 0 0 1280 778 </string>\n\t<key>IBEditorPositions</key>\n\t<dict>\n\t\t<key>29</key>\n\t\t<string>69 259 338 44 0 0 1280 778 </string>\n\t</dict>\n\t<key>IBFramework Version</key>\n\t<string>446.1</string>\n\t<key>IBSystem Version</key>\n\t<string>8P2137</string>\n\t<key>IBUsesTextArchiving</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/ja.lproj/DropletLauncher.nib/keyedobjects.nib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>$archiver</key>\n\t<string>NSKeyedArchiver</string>\n\t<key>$objects</key>\n\t<array>\n\t\t<string>$null</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>387</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAccessibilityConnectors</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>384</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAccessibilityOidsKeys</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>385</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAccessibilityOidsValues</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>386</integer>\n\t\t\t</dict>\n\t\t\t<key>NSClassesKeys</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>279</integer>\n\t\t\t</dict>\n\t\t\t<key>NSClassesValues</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>280</integer>\n\t\t\t</dict>\n\t\t\t<key>NSConnections</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>9</integer>\n\t\t\t</dict>\n\t\t\t<key>NSFontManager</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t</dict>\n\t\t\t<key>NSFramework</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>6</integer>\n\t\t\t</dict>\n\t\t\t<key>NSNamesKeys</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>255</integer>\n\t\t\t</dict>\n\t\t\t<key>NSNamesValues</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>256</integer>\n\t\t\t</dict>\n\t\t\t<key>NSNextOid</key>\n\t\t\t<integer>250</integer>\n\t\t\t<key>NSObjectsKeys</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>176</integer>\n\t\t\t</dict>\n\t\t\t<key>NSObjectsValues</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>254</integer>\n\t\t\t</dict>\n\t\t\t<key>NSOidsKeys</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>281</integer>\n\t\t\t</dict>\n\t\t\t<key>NSOidsValues</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>282</integer>\n\t\t\t</dict>\n\t\t\t<key>NSRoot</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t\t<key>NSVisibleWindows</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>7</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>5</integer>\n\t\t\t</dict>\n\t\t\t<key>NSClassName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>3</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>NSApplication</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSMutableString</string>\n\t\t\t\t<string>NSString</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSMutableString</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSCustomObject</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSCustomObject</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>IBCocoaFramework</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>8</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSMutableSet</string>\n\t\t\t\t<string>NSSet</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSMutableSet</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>10</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>24</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>29</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>35</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>40</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>46</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>51</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>57</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>61</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>66</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>70</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>74</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>79</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>84</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>90</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>95</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>100</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>105</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>110</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>115</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>120</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>125</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>130</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>134</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>138</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>142</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>148</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>152</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>156</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>160</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>165</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>170</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>22</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>11</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>14</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>12</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>13</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>181</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>183</integer>\n\t\t\t</dict>\n\t\t\t<key>NSName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>185</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>182</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>しまう</string>\n\t\t<string>m</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>18</integer>\n\t\t\t</dict>\n\t\t\t<key>NSClassName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>16</integer>\n\t\t\t</dict>\n\t\t\t<key>NSResourceName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>17</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>NSImage</string>\n\t\t<string>NSMenuCheckmark</string>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSCustomResource</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSCustomResource</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>18</integer>\n\t\t\t</dict>\n\t\t\t<key>NSClassName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>16</integer>\n\t\t\t</dict>\n\t\t\t<key>NSResourceName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>20</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>NSMenuMixedState</string>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSMenuItem</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSMenuItem</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>performMiniaturize:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSNibControlConnector</string>\n\t\t\t\t<string>NSNibConnector</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSNibControlConnector</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>28</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>25</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>12</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>26</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>すべてを手前に移動</string>\n\t\t<string></string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>arrangeInFront:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>34</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>30</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>33</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>32</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>181</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>242</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>240</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>プリント…</string>\n\t\t<string>p</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>print:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>39</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>36</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>38</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>37</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>ページ設定…</string>\n\t\t<string>P</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>runPageLayout:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>45</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>41</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>44</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>42</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>43</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>181</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>230</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>229</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>新規アプリケーションヘルプ</string>\n\t\t<string>?</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>showHelp:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>50</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>47</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>48</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>49</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>181</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>179</integer>\n\t\t\t</dict>\n\t\t\t<key>NSName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>180</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>178</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>メニューを消去</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>clearRecentDocuments:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSDestination</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>56</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>52</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>55</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>54</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>181</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>217</integer>\n\t\t\t</dict>\n\t\t\t<key>NSName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>228</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>215</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>新規アプリケーションを終了</string>\n\t\t<string>q</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>terminate:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSDestination</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>60</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>58</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>59</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>新規アプリケーションについて</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>orderFrontStandardAboutPanel:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSDestination</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>65</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>62</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>64</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1572864</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>63</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>ほかを隠す</string>\n\t\t<string>h</string>\n\t\t<string>hideOtherApplications:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSDestination</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>69</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>67</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>64</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>68</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>新規アプリケーションを隠す</string>\n\t\t<string>hide:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSDestination</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>73</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>71</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>72</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>すべてを表示</string>\n\t\t<string>unhideAllApplications:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>78</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>75</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>77</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>76</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>閉じる</string>\n\t\t<string>w</string>\n\t\t<string>performClose:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>83</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>80</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>81</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>82</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>181</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>203</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>201</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>入力中に自動スペルチェック</string>\n\t\t<string>toggleContinuousSpellChecking:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>89</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>85</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>88</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>87</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>181</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>193</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>192</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>取り消し</string>\n\t\t<string>z</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>undo:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>94</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>91</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>93</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>92</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>コピー</string>\n\t\t<string>c</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>copy:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>99</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>96</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>98</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>81</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>97</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>スペルチェック</string>\n\t\t<string>;</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>checkSpelling:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>104</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>101</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>103</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>102</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>ペースト</string>\n\t\t<string>v</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>paste:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>109</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>106</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>107</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>108</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>181</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>207</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>205</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>読み上げ中止</string>\n\t\t<string>stopSpeaking:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>114</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>111</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>113</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>112</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>カット</string>\n\t\t<string>x</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>cut:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>119</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>116</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>118</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>81</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>117</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>スペル…</string>\n\t\t<string>:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>showGuessPanel:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>124</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>121</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>123</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>122</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>やり直し</string>\n\t\t<string>Z</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>redo:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>129</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>126</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>128</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>127</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>すべてを選択</string>\n\t\t<string>a</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>selectAll:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>133</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>131</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>107</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>132</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>読み上げ開始</string>\n\t\t<string>startSpeaking:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>137</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>135</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>136</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>削除</string>\n\t\t<string>delete:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>141</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>139</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>12</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>140</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>拡大／縮小</string>\n\t\t<string>performZoom:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>147</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>143</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>146</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>144</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTag</key>\n\t\t\t<integer>1</integer>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>145</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>181</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>199</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>197</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>検索…</string>\n\t\t<string>f</string>\n\t\t<string>performFindPanelAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>147</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>149</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>151</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>144</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTag</key>\n\t\t\t<integer>2</integer>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>150</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>次を検索</string>\n\t\t<string>g</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>147</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>153</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>155</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>144</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTag</key>\n\t\t\t<integer>3</integer>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>154</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>前を検索</string>\n\t\t<string>G</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>147</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>157</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>159</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>144</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTag</key>\n\t\t\t<integer>7</integer>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>158</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>選択部分で検索</string>\n\t\t<string>e</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>164</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>161</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>163</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>144</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>162</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>選択部分へジャンプ</string>\n\t\t<string>j</string>\n\t\t<string>centerSelectionInVisibleArea:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>169</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>166</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>168</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1572864</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>167</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>スタイルを合わせてペースト</string>\n\t\t<string>V</string>\n\t\t<string>pasteAsPlainText:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>174</integer>\n\t\t\t</dict>\n\t\t\t<key>NSDestination</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>171</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>173</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>5</integer>\n\t\t\t</dict>\n\t\t\t<key>NSClassName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>172</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>DropletLauncherDelegate</string>\n\t\t<string>delegate</string>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSNibOutletConnector</string>\n\t\t\t\t<string>NSNibConnector</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSNibOutletConnector</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSMutableArray</string>\n\t\t\t\t<string>NSArray</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSMutableArray</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>106</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>177</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>67</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>48</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>171</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>75</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>153</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>85</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>186</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>116</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>91</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>126</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>96</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>189</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>36</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>184</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>208</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>41</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>157</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>204</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>211</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>213</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>214</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>195</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>42</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>25</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>219</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>121</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>139</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>30</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>231</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>101</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>234</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>161</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>143</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>47</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>80</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>71</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>194</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>187</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>196</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>166</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>131</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>220</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>248</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>227</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>81</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>149</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>246</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>58</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>200</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>250</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>111</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>226</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>135</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>223</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>218</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>239</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>243</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>107</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>最近使った項目を開く</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>47</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<string>_NSRecentDocumentsMenu</string>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSMenu</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSMenu</string>\n\t\t</dict>\n\t\t<string>ウインドウ</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>139</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>184</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>25</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>12</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>_NSWindowsMenu</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>188</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>187</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>12</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>182</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>181</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>238</integer>\n\t\t\t</dict>\n\t\t\t<key>NSName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>252</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>237</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>191</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>190</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>環境設定…</string>\n\t\t<string>,</string>\n\t\t<string>編集</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>85</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>121</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>194</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>111</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>91</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>101</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>166</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>135</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>126</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>195</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>196</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>200</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>204</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>198</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>144</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>197</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>検索</string>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>143</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>149</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>153</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>157</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>161</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>202</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>81</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>201</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>スペル</string>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>116</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>96</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>80</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>206</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>107</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>205</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>読み上げ</string>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>131</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>106</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>210</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>209</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>保存</string>\n\t\t<string>s</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>212</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>187</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>192</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>216</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>187</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>215</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>新規アプリケーション</string>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>58</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>218</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>189</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>219</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>220</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>226</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>67</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>71</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>227</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>222</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>223</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>221</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>サービス</string>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>181</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>224</integer>\n\t\t\t</dict>\n\t\t\t<key>NSName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>225</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>221</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<string>_NSServicesMenu</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>_NSAppleMenu</string>\n\t\t<string>ヘルプ</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>41</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>233</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>232</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>別名で保存…</string>\n\t\t<string>S</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>236</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>235</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>開く…</string>\n\t\t<string>o</string>\n\t\t<string>ドロップレットランチャー</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>214</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>239</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>211</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>186</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>250</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>241</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>187</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>240</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>ファイル</string>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>243</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>234</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>246</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>213</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>75</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>208</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>231</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>248</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>177</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>36</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>30</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>245</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>244</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>新しいファイル</string>\n\t\t<string>n</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>247</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>48</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>178</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>249</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>元に戻す</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>251</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>187</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>42</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>229</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>submenuAction:</string>\n\t\t<string>_NSMainMenu</string>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSArray</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSArray</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>107</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>246</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>186</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>187</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>81</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>81</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>211</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>42</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>187</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>187</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>250</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>48</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>81</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>107</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>214</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>239</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>200</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>187</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>196</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>220</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>187</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>204</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>171</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>42</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>81</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>75</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>248</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>96</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>234</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>200</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>213</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>80</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>250</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>30</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>189</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>231</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>36</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>243</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>41</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>116</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>184</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>187</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>208</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>177</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>239</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>172</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>257</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>259</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>260</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>261</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>262</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>263</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>264</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>260</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>264</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>265</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>266</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>267</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>268</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>269</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>270</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>271</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>272</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>273</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>274</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>260</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>275</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>260</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>276</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>277</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>278</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>260</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>258</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSNull</string>\n\t\t\t\t<string>%NSNull</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSNull</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>2</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string></string>\n\t\t</dict>\n\t\t<string>NSMenu</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>1</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>10</string>\n\t\t</dict>\n\t\t<string>NSMenuItem</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>7</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>File's Owner</string>\n\t\t</dict>\n\t\t<string>NSMenuItem2</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>1</string>\n\t\t</dict>\n\t\t<string>1111</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>6</string>\n\t\t</dict>\n\t\t<string>121</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>8</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>5</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>9</string>\n\t\t</dict>\n\t\t<string>NSMenuItem1</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>MainMenu</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>3</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>2</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>61</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>48</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>177</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>218</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>131</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>161</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>115</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>213</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>66</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>106</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>135</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>200</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>194</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>148</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>70</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>219</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>204</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>214</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>100</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>46</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>47</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>101</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>152</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>195</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>74</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>130</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>250</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>223</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>91</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>187</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>57</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>156</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>79</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>208</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>134</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>171</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>226</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>90</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>227</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>149</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>160</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>80</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>138</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>116</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>107</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>246</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>248</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>120</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>139</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>165</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>157</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>142</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>35</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>166</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>30</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>25</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>40</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>105</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>36</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>189</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>75</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>243</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>10</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>41</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>110</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>126</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>67</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>84</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>58</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>111</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>220</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>186</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>96</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>239</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>95</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>85</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>196</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>143</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>71</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>184</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>211</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>121</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>125</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>170</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>51</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>234</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>231</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>153</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>24</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>81</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>42</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>29</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>283</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>284</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>285</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>286</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>287</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>288</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>289</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>290</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>291</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>292</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>293</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>294</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>295</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>296</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>297</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>298</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>299</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>300</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>301</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>302</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>303</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>304</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>305</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>306</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>307</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>308</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>309</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>310</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>311</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>312</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>313</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>314</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>315</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>316</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>317</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>318</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>319</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>320</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>321</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>322</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>323</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>324</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>325</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>326</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>327</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>328</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>329</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>330</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>331</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>332</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>333</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>334</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>335</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>336</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>337</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>338</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>339</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>340</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>341</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>342</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>343</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>344</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>345</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>346</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>347</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>348</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>349</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>350</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>351</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>352</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>353</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>354</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>355</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>356</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>357</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>358</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>359</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>360</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>361</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>362</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>363</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>364</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>365</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>366</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>367</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>368</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>369</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>370</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>371</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>372</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>373</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>374</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>375</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>376</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>377</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>378</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>379</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>380</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>381</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>382</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>383</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<integer>146</integer>\n\t\t<integer>125</integer>\n\t\t<integer>74</integer>\n\t\t<integer>236</integer>\n\t\t<integer>196</integer>\n\t\t<integer>210</integer>\n\t\t<integer>230</integer>\n\t\t<integer>79</integer>\n\t\t<integer>152</integer>\n\t\t<integer>195</integer>\n\t\t<integer>202</integer>\n\t\t<integer>81</integer>\n\t\t<integer>216</integer>\n\t\t<integer>206</integer>\n\t\t<integer>242</integer>\n\t\t<integer>153</integer>\n\t\t<integer>143</integer>\n\t\t<integer>211</integer>\n\t\t<integer>56</integer>\n\t\t<integer>226</integer>\n\t\t<integer>127</integer>\n\t\t<integer>24</integer>\n\t\t<integer>126</integer>\n\t\t<integer>203</integer>\n\t\t<integer>243</integer>\n\t\t<integer>214</integer>\n\t\t<integer>193</integer>\n\t\t<integer>145</integer>\n\t\t<integer>233</integer>\n\t\t<integer>103</integer>\n\t\t<integer>130</integer>\n\t\t<integer>197</integer>\n\t\t<integer>29</integer>\n\t\t<integer>142</integer>\n\t\t<integer>244</integer>\n\t\t<integer>222</integer>\n\t\t<integer>75</integer>\n\t\t<integer>205</integer>\n\t\t<integer>235</integer>\n\t\t<integer>248</integer>\n\t\t<integer>220</integer>\n\t\t<integer>144</integer>\n\t\t<integer>224</integer>\n\t\t<integer>149</integer>\n\t\t<integer>208</integer>\n\t\t<integer>245</integer>\n\t\t<integer>219</integer>\n\t\t<integer>240</integer>\n\t\t<integer>204</integer>\n\t\t<integer>212</integer>\n\t\t<integer>124</integer>\n\t\t<integer>112</integer>\n\t\t<integer>231</integer>\n\t\t<integer>239</integer>\n\t\t<integer>247</integer>\n\t\t<integer>221</integer>\n\t\t<integer>241</integer>\n\t\t<integer>23</integer>\n\t\t<integer>87</integer>\n\t\t<integer>246</integer>\n\t\t<integer>78</integer>\n\t\t<integer>5</integer>\n\t\t<integer>122</integer>\n\t\t<integer>227</integer>\n\t\t<integer>77</integer>\n\t\t<integer>129</integer>\n\t\t<integer>73</integer>\n\t\t<integer>82</integer>\n\t\t<integer>37</integer>\n\t\t<integer>111</integer>\n\t\t<integer>228</integer>\n\t\t<integer>198</integer>\n\t\t<integer>134</integer>\n\t\t<integer>223</integer>\n\t\t<integer>58</integer>\n\t\t<integer>199</integer>\n\t\t<integer>1</integer>\n\t\t<integer>131</integer>\n\t\t<integer>19</integer>\n\t\t<integer>201</integer>\n\t\t<integer>83</integer>\n\t\t<integer>225</integer>\n\t\t<integer>207</integer>\n\t\t<integer>218</integer>\n\t\t<integer>209</integer>\n\t\t<integer>150</integer>\n\t\t<integer>92</integer>\n\t\t<integer>217</integer>\n\t\t<integer>215</integer>\n\t\t<integer>232</integer>\n\t\t<integer>249</integer>\n\t\t<integer>139</integer>\n\t\t<integer>72</integer>\n\t\t<integer>80</integer>\n\t\t<integer>136</integer>\n\t\t<integer>213</integer>\n\t\t<integer>39</integer>\n\t\t<integer>200</integer>\n\t\t<integer>106</integer>\n\t\t<integer>57</integer>\n\t\t<integer>86</integer>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSIBObjectData</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSIBObjectData</string>\n\t\t</dict>\n\t</array>\n\t<key>$top</key>\n\t<dict>\n\t\t<key>IB.objectdata</key>\n\t\t<dict>\n\t\t\t<key>CF$UID</key>\n\t\t\t<integer>1</integer>\n\t\t</dict>\n\t</dict>\n\t<key>$version</key>\n\t<integer>100000</integer>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/ja.lproj/InfoPlist.strings",
    "content": "/* Localized versions of Info.plist keys */\n\nCFBundleName = \"FTPConnection\";\nNSHumanReadableCopyright = \"© __MyCompanyName__, 2004\";"
  },
  {
    "path": "Example/ja.lproj/Localizable.strings",
    "content": "/* ssh host key changed */\n\"%@'s fingerprint does not match the one on record. If the server has changed its key, then this is to be expected. If not then you should check with the system administrator before proceeding.\\nThe new fingerprint is %@.\\nDo you wish to connect to the server?\" = \"%1$@ の公開鍵が記録されているものと照合しません。サーバー側で鍵を変更した場合は、このようなエラーが起こります。もしそうでない場合は、まずシステム管理者に確認してください。\\n新しい公開鍵は %2$@ です。\\nサーバーに接続しますか？\";\n\n/* authorise */\n\"%@\\nWhat would you like to do?\" = \"%@\\nどうしますか？\";\n\n/* ConnectionOpenPanel */\n\"A Connection Error Occurred\" = \"接続エラーが起こりました\";\n\n/* FTP Abort */\n\"Action Aborted. Local Error\" = \"操作が取り消されました。ローカルエラー\";\n\n/* FTP no data stream types available */\n\"All data connection modes have been exhausted. Check with the server administrator.\" = \"あらゆる接続モードでの接続に失敗しました。サーバ管理者にお問い合わせください。\";\n\n/* WebDAV Create Directory Error\n   MobileMe Create Directory Error */\n\n\"An intermediate directory does not exist and needs to be created before the current directory\" = \"現在のディレクトリの上位にもう一つのディレクトリを作成する必要があります。\";\n\n/* WebDAV Create Directory Error\n   MobileMe Create Directory Error */\n\n\"An unknown error occurred\" = \"予期せぬエラーが起こりました\";\n\n/* multiple connection joiner */\n\"and\" = \"と\";\n\n/* close window */\n\"Are you sure you want to stop the upload?\" = \"アップロードを中断してもよろしいですか？\";\n\n/* failed pk authentication for ssh */\n\"Authentication by Public Key Failed\" = \"公開鍵での認証に失敗しました\";\n\n/* failed authentication for ssh */\n\"Authentication Failed. Do you have permission to access this server via SFTP?\" = \"認証に失敗しました。このサーバに SFTP 接続する権限を持っていますか？\";\n\n/* authorise */\n\"Authorize\" = \"認証\";\n\n/* authorise */\n\"Authorize Connection?\" = \"接続認証しますか？\";\n\n/* connection type */\n\"auto\" = \"自動\";\n\n/* config */\n\"Bad Configuration\" = \"設定が悪い\";\n\n/* error */\n\"Bad Droplet\" = \"ドロップレットが悪い\";\n\n/* sftp last error */\n\"Bad Message\" = \"間違ったメッセージ\";\n\n/* Transfer Controller */\n\"Bad Password.\" = \"パスワードが間違い\";\n\n/* filesize: bytes */\n\"bytes\" = \"バイト\";\n\n/* authorise */\n\"Cancel\" = \"キャンセル\";\n\n/* FTP upload error */\n\"Cannot Upload File. Storage quota on server exceeded\" = \"ファイルをアップロードできません。サーバの保存容量を超過しています。\";\n\n/* transfer controller\n   connected message */\n\n\"Connected to %@\" = \"%@ に接続\";\n\n/* file transcript */\n\"Connected to File System\\n\" = \"ファイルシステム\\nに接続中\";\n\n/* connection string */\n\"Connecting to %@\" = \"%@ に接続中\";\n\n/* file transcript */\n\"Connecting…\\n\" = \"n\\に接続中…\";\n\n/* sftp last error */\n\"Connection Lost\" = \"接続が途絶えました\";\n\n/* close window */\n\"Continue Upload\" = \"アップロードを継続\";\n\n/* file transcript */\n\"Copying %@ to %@\\n\" = \"%1$@ から %2$@へコピー\\n\";\n\n/* FileConnection set permissions error */\n\"Could not change file permissions\" = \"ファイルのアクセス権を変更できませんでした\";\n\n/* FileConnection create directory error */\n\"Could not create directory\" = \"ディレクトリを作成できませんでした\";\n\n/* config */\n\"Couldn't find configuration file specified\\n %@\" = \"指定した設定ファイルが見つかりませんでした\\n %@\";\n\n/* file transcript */\n\"Create Directory %@ (%lo)\\n\" = \"ディレクトリを作成 %1$@ (%2$lo)\\n\";\n\n/* FTP Create directory error */\n\"Create directory operation failed\" = \"ディレクトリ作成の操作に失敗しました\";\n\n/* Failed to open a data stream connection */\n\"Data Stream Timed Out\" = \"データストリームのタイムアウト\";\n\n/* file transcript */\n\"Deleting File %@\\n\" = \"ファイル削除 %@\\n\";\n\n/* sftp last error */\n\"Directory not empty\" = \"ディレクトリが空ではありません\";\n\n/* status */\n\"Disconnected\" = \"切断\";\n\n/* transfer controller */\n\"Disconnected from %@\" = \"%@ から切断\";\n\n/* filesize: exabytes */\n\"EB\" = \"EB\";\n\n/* sftp last error */\n\"End of File\" = \"ファイルの終わり\";\n\n/* sftp last error */\n\"Error INVAL\" = \"INVAL エラー\";\n\n/* Directory Parsing Error */\n\"Error parsing directory listing\" = \"ディレクトリリストの解析エラー\";\n\n/* FTP no data streams available */\n\"Exhausted all connection types to server. Please contact server administrator\" = \"すべてのサーバ接続タイプでの接続に失敗しました。サーバ管理者に連絡してください。\";\n\n/* Bad ftp command */\n\"Failed to change to directory\" = \"ディレクトリへの移動に失敗しました\";\n\n/* sftp failure to create dir */\n\"Failed to create directory\" = \"ディレクトリの作成に失敗しました\";\n\n/* couldn't delete the file\n   MobileMe Directory Deletion Error\n   WebDAV Directory Deletion Error */\n\n\n\"Failed to delete directory\" = \"ディレクトリの削除に失敗しました\";\n\n/* error for deleting a directory */\n\"Failed to delete directory: %@\" = \"ディレクトリ削除に失敗：%@\";\n\n/* couldn't delete the file\n   MobileMe file deletion error\n   WebDAV File Deletion Error */\n\n\n\"Failed to delete file\" = \"ファイルの削除に失敗しました\";\n\n/* error for deleting a file */\n\"Failed to delete file: %@\" = \"ファイル削除に失敗：%@\";\n\n/* failed to find the id_dsa.pub */\n\"Failed to find public key in %@. If you have a custom named key, please set the User Default key SSHPublicKey.\" = \"%@ で公開鍵を見つけることができませんでした。カスタマイズされた鍵をお持ちの場合は、ユーザデフォルト鍵を SSHPublicKey に設定してください。\";\n\n/* failed authentication for ssh */\n\"Failed to initialize SFTP Subsystem. Do you have permission to access this server via SFTP?\" = \"SFTP のサブシステムの初期化に失敗しました。このサーバへの SFTP でのアクセス権限を持っていますか？\";\n\n/* No MobileMe account or password */\n\"Failed to retrieve MobileMe account details\" = \"MobileMe アカウント詳細の取得に失敗しました\";\n\n/* FileConnection copy data error */\n\"Failed to upload data\" = \"データアップロードに失敗\";\n\n/* error transferring */\n\"Failed to verify file transferred successfully\" = \"ファイル転送成功の確認に失敗\";\n\n/* sftp error */\n\"Failed to write all data\" = \"データを全て書き込みに失敗\";\n\n/* sftp last error */\n\"Failure\" = \"失敗\";\n\n/* FTP file download error */\n\"File %@ does not exist on server\" = \"ファイル %@ はサーバに存在しません\";\n\n/* FTP error */\n\"File / Directory does not exist\" = \"ファイル／ディレクトリーがありません\";\n\n/* FileConnection error */\n\"File Already Exists\" = \"ファイルは既に存在します\";\n\n/* sftp last error */\n\"File already exists\" = \"ファイルはすでに存在します\";\n\n/* FTP file in use */\n\"File in Use\" = \"ファイルが使用中です\";\n\n/* FTP Upload error */\n\"Filename not Allowed\" = \"このファイル名は使用できません\";\n\n/* FTP service timed out */\n\"FTP service not available; Remote server has closed connection\" = \"FTP サービスがありません; リモートサーバーは接続を切断しました。\";\n\n/* FTP no service */\n\"FTP Service Unavailable\" = \"FTP サービスが使用できません\";\n\n/* filesize: gigabytes */\n\"GB\" = \"GB\";\n\n/* transfer controller */\n\"Hide Files\" = \"ファイルを隠す\";\n\n/* Couldn't open the port to the host */\n\"Host Unavailable\" = \"ホストが利用できません\";\n\n/* WebDAV Create Directory Error\n   MobileMe Create Directory Error */\n\n\"Insufficient storage space available\" = \"保存スペースが十分ではありません\";\n\n/* FTP Error */\n\"Invalid Account name\" = \"アカウント名が無効です\";\n\n/* sftp last error */\n\"Invalid filename\" = \"ファイル名が無効です\";\n\n/* sftp last error */\n\"Invalid Handle\" = \"ハンドルが無効です\";\n\n/* Stream Error before opening */\n\"Is the service running on the server\" = \"サーバーは稼働していますか？\";\n\n/* filesize: kilobytes */\n\"Kilobytes\" = \"キロバイト\";\n\n/* sftp last error */\n\"Link Loop\" = \"リンクループ\";\n\n/* FTP download error */\n\"Local File already exists\" = \"このローカルファイルはすでに存在します\";\n\n/* sftp last error */\n\"Lock Conflict\" = \"ロックコンフリクト\";\n\n/* filesize: megabytes */\n\"MB\" = \"MB\";\n\n/* sftp last error */\n\"Method not Supported\" = \"サポートされていないメソッド\";\n\n/* new cat name */\n\"New Category\" = \"新規カテゴリー\";\n\n/* config */\n\"No configuration file specified\" = \"設定ファイルが指定されていません\";\n\n/* sftp last error */\n\"No Connection\" = \"コネクションがありません\";\n\n/* failed to find a connection class */\n\"No connection available for requested connection type\" = \"この接続タイプは有効ではありません\";\n\n/* failed to find a connection class */\n\"No connection available for requested port\" = \"このポートでの接続は有効ではありません\";\n\n/* failed to find a connection class */\n\"No connection available for requested protocol\" = \"このプロトコルでの接続は有効ではありません\";\n\n/* sftp last error */\n\"No Media\" = \"メディアがありません\";\n\n/* sftp last error */\n\"No space left on remote machine\" = \"リモートマシンにスペースがありません\";\n\n/* FTP Error */\n\"No Storage Space Available\" = \"保存スペースがありません\";\n\n/* sftp last error */\n\"No such file\" = \"そのようなファイルはありません\";\n\n/* sftp last error */\n\"No such path\" = \"そのようなパスはありません\";\n\n/* sftp last error */\n\"Not a directory\" = \"ディレクトリがありません\";\n\n/* FTP Error */\n\"Not Logged In\" = \"ログインしていません\";\n\n/* sftp last error\n   OK */\n\n\"OK\" = \"OK\";\n\n/* sftp last error */\n\"Operation Unsupported\" = \"この動作は未サポートです\";\n\n/* WebDAV Uploading Error\n   MobileMe File Uploading Error */\n\n\"Parent Folder does not exist\" = \"上位フォルダが存在しません\";\n\n/* No comment provided by engineer. */\n\"Password was not accepted.\" = \"パスワードが承認されませんでした\";\n\n/* filesize: petabytes */\n\"PB\" = \"PB\";\n\n/* sftp last error */\n\"Permission Denied\" = \"認証失敗\";\n\n/* config\n   error */\n\n\"Quit\" = \"終了\";\n\n/* sftp last error */\n\"Quota exceeded\" = \"割り当て超過\";\n\n/* file transcript */\n\"Renaming %@ to %@\\n\" = \"%1$@ を %2$@\\n　に改名\";\n\n/* FTP Error */\n\"Request Aborted. Page Type Unknown\" = \"要求は中止されました。不明のページタイプ\";\n\n/* sftp last error */\n\"Request Denied\" = \"リクエスト却下\";\n\n/* abbreviation for seconds, e.g. 12 MB/s */\n\"s\" = \"s\";\n\n/* category name */\n\"Saved Hosts\" = \"保存されたホスト\";\n\n/* No comment provided by engineer. */\n\"Secure Shell Connection Error\" = \"セキュアシェル接続エラー\";\n\n/* transfer controller */\n\"Show Files\" = \"ファイルを表示\";\n\n/* close window */\n\"Stop Upload\" = \"アップロードを停止\";\n\n/* close window */\n\"Stop Upload?\" = \"アップロードを停止しますか？\";\n\n/* Error creating stream */\n\"Stream Unavailable\" = \"ストリームは利用できません\";\n\n/* filesize: terabytes */\n\"TB\" = \"TB\";\n\n/* WebDAV Create Directory Error\n   MobileMe Create Directory Error */\n\n\"The body of the request is not supported\" = \"リクエストの本体はサポートされていません。\";\n\n/* sftp bad directory */\n\"The directory (%@) does not exist\" = \"ディレクトリ (%@) は存在しません\";\n\n/* WebDAV Create Directory Error\n   MobileMe Create Directory Error */\n\n\"The directory already exists\" = \"このディレクトリはすでに存在します\";\n\n/* WebDAV Create Directory Error\n   MobileMe Create Directory Error */\n\n\"The server does not allow the creation of directories at the current location\" = \"サーバはこの場所への新規ディレクトリの作成を許可していません\";\n\n/* No comment provided by engineer. */\n\"The SSH manager returned the following error message:\\n\\n%@\" = \"SSH マネージャーが以下のエラーを出しました:\\n\\n%@\";\n\n/* error transferring */\n\"The transferred file has a size of 0.\" = \"転送されたファイルのサイズが0となっています\";\n\n/* MobileMe Directory Contents Error */\n\"There is no MobileMe access to the directory\" = \"このディレクトリへの MobileMe 接続はできません\";\n\n/* No WebDAV access to the specified path */\n\"There is no WebDAV access to the directory\" = \"このディレクトリへの WebDAV 接続はできません\";\n\n/* sftp error */\n\"There was an error with the SSH subsystem: \" = \"SSH サブシステムにエラーがあります:\";\n\n/* error */\n\"This droplet is missing the original application that created it. You will need to reinstall the original application.\" = \"ドロップレットを作成したときのアプリケーションがありません。そのアプリケーションを再インストールする必要があります。\";\n\n/* ssh authorise remote host fingerprint */\n\"This is the first time connecting to %@. It has a fingerprint of \\n%@. Do you wish to connect?\" = \"%1$@ に接続するのは今回が初めてです。次の公開鍵が設定されています：\\n%2$@. 接続しますか？\";\n\n/* time out */\n\"Timed Out waiting for remote host.\" = \"リモートホストの待ち時間がタイムアウトしました。\";\n\n/* Transfer Controller */\n\"Too many files had transfer problems\" = \"ファイル転送エラーが多すぎました。\";\n\n/* FileConnection failed to copy file */\n\"Unable to store data in file\" = \"データをファイルに保存できません\";\n\n/* WebDAV Error */\n\"Unknown Error Occurred\" = \"予期せぬエラーが起こりました\";\n\n/* sftp last error */\n\"Unknown Principle\" = \"Principle 不明\";\n\n/* status message */\n\"Uploading\" = \"アップロード\";\n\n/* status */\n\"Uploading %@\" = \"%@ をアップロード中\";\n\n/* No username or password */\n\"Username and Password are required for FTP connections\" = \"FTP ではユーザ名とパスワードが必要です\";\n\n/* No username or password */\n\"Username and Password are required for S3 connections\" = \"S3 接続にはユーザー名とパスワードが必要です\";\n\n/* No username or password */\n\"Username and Password are required for WebDAV connections\" = \"WebDAV ではユーザ名とパスワードが必要です\";\n\n/* No username or password */\n\"Username is required for SFTP connections\" = \"SFTP 接続ではユーザ名が必要です\";\n\n/* sftp last error */\n\"Write Protected\" = \"書き込み不可\";\n\n/* file transcript */\n\"Writing data to %@\\n\" = \"%@\\nにデータを書き込み中\";\n\n/* Bonjour Error */\n\"You can not add a child category to the Bonjour category.\" = \"Bonjour カテゴリ内にサブカテゴリを加えることはできません。\";\n\n/* Bonjour Error */\n\"You can not add a new host to the Bonjour category.\" = \"Bonjour カテゴリに新しいホストを追加できます。\";\n\n/* FTP file upload error */\n\"You do not have access to write file %@\" = \"%@ というファイルへのアクセス権がありません\";\n\n/* FTP Error */\n\"You need an Account to Upload Files\" = \"アップロードをするためにアカウントが必要です\";"
  },
  {
    "path": "Example/kex.c",
    "content": "/* Copyright (c) 2004-2006, Sara Golemon <sarag@libssh2.org>\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms,\n * with or without modification, are permitted provided\n * that the following conditions are met:\n *\n *   Redistributions of source code must retain the above\n *   copyright notice, this list of conditions and the\n *   following disclaimer.\n *\n *   Redistributions in binary form must reproduce the above\n *   copyright notice, this list of conditions and the following\n *   disclaimer in the documentation and/or other materials\n *   provided with the distribution.\n *\n *   Neither the name of the copyright holder nor the names\n *   of any other contributors may be used to endorse or\n *   promote products derived from this software without\n *   specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND\n * CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES,\n * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE\n * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY\n * OF SUCH DAMAGE.\n */\n\n#include \"libssh2_priv.h\"\n\n/* TODO: Switch this to an inline and handle alloc() failures */\n/* Helper macro called from libssh2_kex_method_diffie_hellman_group1_sha1_key_exchange */\n#define LIBSSH2_KEX_METHOD_DIFFIE_HELLMAN_SHA1_HASH(value, reqlen, version)\t\\\n{\t\\\n\tlibssh2_sha1_ctx hash;\t\\\n\tunsigned long len = 0;\t\\\n\tif (!(value)) {\t\\\n\t\tvalue = LIBSSH2_ALLOC(session, reqlen + SHA_DIGEST_LENGTH); \\\n\t}\t\t\t\t\t\t\t\t\\\n\twhile (len < reqlen) {\t\t\t\t\t\t\\\n\t\tlibssh2_sha1_init(&hash);\t\t\t\t\\\n\t\tlibssh2_sha1_update(hash, k_value, k_value_len);\t\\\n\t\tlibssh2_sha1_update(hash, h_sig_comp, SHA_DIGEST_LENGTH); \\\n\t\tif (len > 0) {\t\t\t\t\t\t\\\n\t\t\tlibssh2_sha1_update(hash, value, len);\t\t\\\n\t\t}\telse {\t\t\t\t\t\t\\\n\t\t\tlibssh2_sha1_update(hash, (version), 1);\t\\\n\t\t\tlibssh2_sha1_update(hash, session->session_id, session->session_id_len); \\\n\t\t}\t\t\t\t\t\t\t\\\n\t\tlibssh2_sha1_final(hash, (value) + len);\t\t\\\n\t\tlen += SHA_DIGEST_LENGTH;\t\t\t\t\\\n\t}\t\t\t\t\t\t\t\t\\\n}\n\n/* {{{ libssh2_kex_method_diffie_hellman_groupGP_sha1_key_exchange\n * Diffie Hellman Key Exchange, Group Agnostic\n */\nstatic int libssh2_kex_method_diffie_hellman_groupGP_sha1_key_exchange(LIBSSH2_SESSION *session, _libssh2_bn *g, _libssh2_bn *p, int group_order,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tunsigned char packet_type_init, unsigned char packet_type_reply,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tunsigned char *midhash, unsigned long midhash_len)\n{\n\tunsigned char *e_packet = NULL, *s_packet = NULL, *tmp, h_sig_comp[SHA_DIGEST_LENGTH], c;\n\tunsigned long e_packet_len, s_packet_len, tmp_len;\n\tint ret = 0;\n\t_libssh2_bn_ctx *ctx = _libssh2_bn_ctx_new();\n\t_libssh2_bn *x = _libssh2_bn_init(); /* Random from client */\n\t_libssh2_bn *e = _libssh2_bn_init(); /* g^x mod p */\n\t_libssh2_bn *f = _libssh2_bn_init(); /* g^(Random from server) mod p */\n\t_libssh2_bn *k = _libssh2_bn_init(); /* The shared secret: f^x mod p */\n\tunsigned char *s, *f_value, *k_value = NULL, *h_sig;\n\tunsigned long f_value_len, k_value_len, h_sig_len;\n\tlibssh2_sha1_ctx exchange_hash;\n\n\t/* Generate x and e */\n\t_libssh2_bn_rand(x, group_order, 0, -1);\n\t_libssh2_bn_mod_exp(e, g, x, p, ctx);\n\n\t/* Send KEX init */\n\te_packet_len = _libssh2_bn_bytes(e) + 6; /* packet_type(1) + String Length(4) + leading 0(1) */\n\tif (_libssh2_bn_bits(e) % 8) {\n\t\t/* Leading 00 not needed */\n\t\te_packet_len--;\n\t}\n\te_packet = LIBSSH2_ALLOC(session, e_packet_len);\n\tif (!e_packet) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Out of memory error\", 0);\n\t\tret = -1;\n\t\tgoto clean_exit;\n\t}\n\te_packet[0] = packet_type_init;\n\tlibssh2_htonu32(e_packet + 1, e_packet_len - 5);\n\tif (_libssh2_bn_bits(e) % 8) {\n\t\t_libssh2_bn_to_bin(e, e_packet + 5);\n\t} else {\n\t\te_packet[5] = 0;\n\t\t_libssh2_bn_to_bin(e, e_packet + 6);\n\t}\n\n#ifdef LIBSSH2_DEBUG_KEX\n\t_libssh2_debug(session, LIBSSH2_DBG_KEX, \"Sending KEX packet %d\", (int)packet_type_init);\n#endif\n\tif (libssh2_packet_write(session, e_packet, e_packet_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send KEX init message\", 0);\n\t\tret = -11;\n\t\tgoto clean_exit;\n\t}\n\n\tif (session->burn_optimistic_kexinit) {\n\t\t/* The first KEX packet to come along will be the guess initially sent by the server\n\t\t * That guess turned out to be wrong so we need to silently ignore it */\n\t\tint burn_type;\n#ifdef LIBSSH2_DEBUG_KEX\n\t_libssh2_debug(session, LIBSSH2_DBG_KEX, \"Waiting for badly guessed KEX packet (to be ignored)\");\n#endif\n\t\tburn_type = libssh2_packet_burn(session);\n\t\tif (burn_type <= 0) {\n\t\t\t/* Failed to receive a packet */\n\t\t\tret = -1;\n\t\t\tgoto clean_exit;\n\t\t}\n\t\tsession->burn_optimistic_kexinit = 0;\n\n#ifdef LIBSSH2_DEBUG_KEX\n\t_libssh2_debug(session, LIBSSH2_DBG_KEX, \"Burnt packet of type: %02x\", (unsigned int)burn_type);\n#endif\n\t}\n\n\t/* Wait for KEX reply */\n\tif (libssh2_packet_require(session, packet_type_reply, &s_packet, &s_packet_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_TIMEOUT, \"Timed out waiting for KEX reply\", 0);\n\t\tret = -1;\n\t\tgoto clean_exit;\n\t}\n\n\t/* Parse KEXDH_REPLY */\n\ts = s_packet + 1;\n\n\tsession->server_hostkey_len = libssh2_ntohu32(s);\t\t\ts += 4;\n\tsession->server_hostkey = LIBSSH2_ALLOC(session, session->server_hostkey_len);\n\tif (!session->server_hostkey) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for a copy of the host key\", 0);\n\t\tret = -1;\n\t\tgoto clean_exit;\n\t}\n\tmemcpy(session->server_hostkey, s, session->server_hostkey_len);\n\ts += session->server_hostkey_len;\n\n#if LIBSSH2_MD5\n{\n\tlibssh2_md5_ctx fingerprint_ctx;\n\n\tlibssh2_md5_init(&fingerprint_ctx);\n\tlibssh2_md5_update(fingerprint_ctx, session->server_hostkey, session->server_hostkey_len);\n\tlibssh2_md5_final(fingerprint_ctx, session->server_hostkey_md5);\n}\n#ifdef LIBSSH2_DEBUG_KEX\n{\n\tchar fingerprint[50], *fprint = fingerprint;\n\tint i;\n\tfor(i = 0; i < 16; i++, fprint += 3) {\n\t\tsnprintf(fprint, 4, \"%02x:\", session->server_hostkey_md5[i]);\n\t}\n\t*(--fprint) = '\\0';\n\t_libssh2_debug(session, LIBSSH2_DBG_KEX, \"Server's MD5 Fingerprint: %s\", fingerprint);\n}\n#endif /* LIBSSH2_DEBUG_KEX */\n#endif /* ! LIBSSH2_MD5 */\n\n{\n\tlibssh2_sha1_ctx fingerprint_ctx;\n\n\tlibssh2_sha1_init(&fingerprint_ctx);\n\tlibssh2_sha1_update (fingerprint_ctx, session->server_hostkey, session->server_hostkey_len);\n\tlibssh2_sha1_final(fingerprint_ctx, session->server_hostkey_sha1);\n}\n#ifdef LIBSSH2_DEBUG_KEX\n{\n\tchar fingerprint[64], *fprint = fingerprint;\n\tint i;\n\tfor(i = 0; i < 20; i++, fprint += 3) {\n\t\tsnprintf(fprint, 4, \"%02x:\", session->server_hostkey_sha1[i]);\n\t}\n\t*(--fprint) = '\\0';\n\t_libssh2_debug(session, LIBSSH2_DBG_KEX, \"Server's SHA1 Fingerprint: %s\", fingerprint);\n}\n#endif /* LIBSSH2_DEBUG_KEX */\n\n\tif (session->hostkey->init(session, session->server_hostkey, session->server_hostkey_len, &session->server_hostkey_abstract)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_HOSTKEY_INIT, \"Unable to initialize hostkey importer\", 0);\n\t\tret = -1;\n\t\tgoto clean_exit;\n\t}\n\n\tf_value_len = libssh2_ntohu32(s);\t\t\t\t\t\t\ts += 4;\n\tf_value = s;\t\t\t\t\t\t\t\t\t\t\t\ts += f_value_len;\n\t_libssh2_bn_from_bin(f, f_value_len, f_value);\n\n\th_sig_len = libssh2_ntohu32(s);\t\t\t\t\t\t\t\ts += 4;\n\th_sig = s;\n\n\t/* Compute the shared secret */\n\t_libssh2_bn_mod_exp(k, f, x, p, ctx);\n\tk_value_len = _libssh2_bn_bytes(k) + 5;\n\tif (_libssh2_bn_bits(k) % 8) {\n\t\t/* don't need leading 00 */\n\t\tk_value_len--;\n\t}\n\tk_value = LIBSSH2_ALLOC(session, k_value_len);\n\tif (!k_value) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate buffer for K\", 0);\n\t\tret = -1;\n\t\tgoto clean_exit;\n\t}\n\tlibssh2_htonu32(k_value, k_value_len - 4);\n\tif (_libssh2_bn_bits(k) % 8) {\n\t\t_libssh2_bn_to_bin(k, k_value + 4);\n\t} else {\n\t\tk_value[4] = 0;\n\t\t_libssh2_bn_to_bin(k, k_value + 5);\n\t}\n\n\tlibssh2_sha1_init(&exchange_hash);\n\tif (session->local.banner) {\n\t\tlibssh2_htonu32(h_sig_comp,\n\t\t\t\tstrlen((char *)session->local.banner) - 2);\n\t\tlibssh2_sha1_update(exchange_hash, h_sig_comp, 4);\n\t\tlibssh2_sha1_update(exchange_hash, (char *)session->local.banner,\n\t\t\t    strlen((char *)session->local.banner) - 2);\n\t} else {\n\t\tlibssh2_htonu32(h_sig_comp, sizeof(LIBSSH2_SSH_DEFAULT_BANNER) - 1);\n\t\tlibssh2_sha1_update(exchange_hash, h_sig_comp, 4);\n\t\tlibssh2_sha1_update(exchange_hash, LIBSSH2_SSH_DEFAULT_BANNER,\n\t\t\t    sizeof(LIBSSH2_SSH_DEFAULT_BANNER) - 1);\n\t}\n\n\tlibssh2_htonu32(h_sig_comp, strlen((char *)session->remote.banner));\n\tlibssh2_sha1_update(exchange_hash, h_sig_comp, 4);\n\tlibssh2_sha1_update(exchange_hash, session->remote.banner,\n\t\t    strlen((char *)session->remote.banner));\n\n\tlibssh2_htonu32(h_sig_comp, session->local.kexinit_len);\n\tlibssh2_sha1_update(exchange_hash,\t\th_sig_comp,\t\t\t\t\t\t\t4);\n\tlibssh2_sha1_update(exchange_hash,\t\tsession->local.kexinit,\t\t\t\tsession->local.kexinit_len);\n\n\tlibssh2_htonu32(h_sig_comp, session->remote.kexinit_len);\n\tlibssh2_sha1_update(exchange_hash,\t\th_sig_comp,\t\t\t\t\t\t\t4);\n\tlibssh2_sha1_update(exchange_hash,\t\tsession->remote.kexinit,\t\t\tsession->remote.kexinit_len);\n\n\tlibssh2_htonu32(h_sig_comp, session->server_hostkey_len);\n\tlibssh2_sha1_update(exchange_hash,\t\th_sig_comp,\t\t\t\t\t\t\t4);\n\tlibssh2_sha1_update(exchange_hash,\t\tsession->server_hostkey,\t\t\tsession->server_hostkey_len);\n\n\tif (packet_type_init == SSH_MSG_KEX_DH_GEX_INIT) {\n\t\t/* diffie-hellman-group-exchange hashes additional fields */\n#ifdef LIBSSH2_DH_GEX_NEW\n\t\tlibssh2_htonu32(h_sig_comp,\t\tLIBSSH2_DH_GEX_MINGROUP);\n\t\tlibssh2_htonu32(h_sig_comp + 4,\tLIBSSH2_DH_GEX_OPTGROUP);\n\t\tlibssh2_htonu32(h_sig_comp + 8, LIBSSH2_DH_GEX_MAXGROUP);\n\t\tlibssh2_sha1_update(exchange_hash,\th_sig_comp,\t\t\t\t\t\t\t12);\n#else\n\t\tlibssh2_htonu32(h_sig_comp,\t\tLIBSSH2_DH_GEX_OPTGROUP);\n\t\tlibssh2_sha1_update(exchange_hash,\th_sig_comp,\t\t\t\t\t\t\t4);\n#endif\n\t}\n\n\tif (midhash) {\n\t\tlibssh2_sha1_update(exchange_hash, midhash,\t\t\t\t\t\t\tmidhash_len);\n\t}\n\n\tlibssh2_sha1_update(exchange_hash,\t\te_packet + 1,\t\t\t\t\t\te_packet_len - 1);\n\n\tlibssh2_htonu32(h_sig_comp, f_value_len);\n\tlibssh2_sha1_update(exchange_hash,\t\th_sig_comp,\t\t\t\t\t\t\t4);\n\tlibssh2_sha1_update(exchange_hash,\t\tf_value,\t\t\t\t\t\t\tf_value_len);\n\n\tlibssh2_sha1_update(exchange_hash,\t\tk_value,\t\t\t\t\t\t\tk_value_len);\n\n\tlibssh2_sha1_final(exchange_hash, h_sig_comp);\n\n\tif (session->hostkey->sig_verify(session, h_sig, h_sig_len, h_sig_comp, 20, &session->server_hostkey_abstract)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_HOSTKEY_SIGN, \"Unable to verify hostkey signature\", 0);\n\t\tret = -1;\n\t\tgoto clean_exit;\n\t}\n\n#ifdef LIBSSH2_DEBUG_KEX\n\t_libssh2_debug(session, LIBSSH2_DBG_KEX, \"Sending NEWKEYS message\");\n#endif\n\tc = SSH_MSG_NEWKEYS;\n\tif (libssh2_packet_write(session, &c, 1)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send NEWKEYS message\", 0);\n\t\tret = -1;\n\t\tgoto clean_exit;\n\t}\n\n\tif (libssh2_packet_require(session, SSH_MSG_NEWKEYS, &tmp, &tmp_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_TIMEOUT, \"Timed out waiting for NEWKEYS\", 0);\n\t\tret = -1;\n\t\tgoto clean_exit;\n\t}\n\t/* The first key exchange has been performed, switch to active crypt/comp/mac mode */\n\tsession->state |= LIBSSH2_STATE_NEWKEYS;\n#ifdef LIBSSH2_DEBUG_KEX\n\t_libssh2_debug(session, LIBSSH2_DBG_KEX, \"Received NEWKEYS message\");\n#endif\n\n\t/* This will actually end up being just packet_type(1) for this packet type anyway */\n\tLIBSSH2_FREE(session, tmp);\n\n\tif (!session->session_id) {\n\t\tsession->session_id = LIBSSH2_ALLOC(session, SHA_DIGEST_LENGTH);\n\t\tif (!session->session_id) {\n\t\t\tret = -1;\n\t\t\tgoto clean_exit;\n\t\t}\n\t\tmemcpy(session->session_id, h_sig_comp, SHA_DIGEST_LENGTH);\n\t\tsession->session_id_len = SHA_DIGEST_LENGTH;\n#ifdef LIBSSH2_DEBUG_KEX\n\t_libssh2_debug(session, LIBSSH2_DBG_KEX, \"session_id calculated\");\n#endif\n\t}\n\n\t/* Cleanup any existing cipher */\n\tif (session->local.crypt->dtor) {\n\t\tsession->local.crypt->dtor(session, &session->local.crypt_abstract);\n\t}\n\n\t/* Calculate IV/Secret/Key for each direction */\n\tif (session->local.crypt->init) {\n\t\tunsigned char *iv = NULL, *secret = NULL;\n\t\tint free_iv = 0, free_secret = 0;\n\n\t\tLIBSSH2_KEX_METHOD_DIFFIE_HELLMAN_SHA1_HASH(iv, session->local.crypt->iv_len, \"A\");\n\t\tLIBSSH2_KEX_METHOD_DIFFIE_HELLMAN_SHA1_HASH(secret, session->local.crypt->secret_len, \"C\");\n\t\tif (session->local.crypt->init(session, session->local.crypt, iv, &free_iv, secret, &free_secret, 1, &session->local.crypt_abstract)) {\n\t\t  LIBSSH2_FREE(session, iv);\n\t\t  LIBSSH2_FREE(session, secret);\n\t\t  ret = -1;\n\t\t  goto clean_exit;\n\t\t}\n\n\t\tif (free_iv) {\n\t\t\tmemset(iv, 0, session->local.crypt->iv_len);\n\t\t\tLIBSSH2_FREE(session, iv);\n\t\t}\n\n\t\tif (free_secret) {\n\t\t\tmemset(secret, 0, session->local.crypt->secret_len);\n\t\t\tLIBSSH2_FREE(session, secret);\n\t\t}\n\t}\n#ifdef LIBSSH2_DEBUG_KEX\n\t_libssh2_debug(session, LIBSSH2_DBG_KEX, \"Client to Server IV and Key calculated\");\n#endif\n\n\tif (session->remote.crypt->dtor) {\n\t\t/* Cleanup any existing cipher */\n\t\tsession->remote.crypt->dtor(session, &session->remote.crypt_abstract);\n\t}\n\n\tif (session->remote.crypt->init) {\n\t\tunsigned char *iv = NULL, *secret = NULL;\n\t\tint free_iv = 0, free_secret = 0;\n\n\t\tLIBSSH2_KEX_METHOD_DIFFIE_HELLMAN_SHA1_HASH(iv, session->remote.crypt->iv_len, \"B\");\n\t\tLIBSSH2_KEX_METHOD_DIFFIE_HELLMAN_SHA1_HASH(secret, session->remote.crypt->secret_len, \"D\");\n\t\tif (session->remote.crypt->init(session, session->remote.crypt, iv, &free_iv, secret, &free_secret, 0, &session->remote.crypt_abstract)) {\n\t\t  LIBSSH2_FREE(session, iv);\n\t\t  LIBSSH2_FREE(session, secret);\n\t\t  ret = -1;\n\t\t  goto clean_exit;\n\t\t}\n\n\t\tif (free_iv) {\n\t\t\tmemset(iv, 0, session->remote.crypt->iv_len);\n\t\t\tLIBSSH2_FREE(session, iv);\n\t\t}\n\n\t\tif (free_secret) {\n\t\t\tmemset(secret, 0, session->remote.crypt->secret_len);\n\t\t\tLIBSSH2_FREE(session, secret);\n\t\t}\n\t}\n#ifdef LIBSSH2_DEBUG_KEX\n\t_libssh2_debug(session, LIBSSH2_DBG_KEX, \"Server to Client IV and Key calculated\");\n#endif\n\n\tif (session->local.mac->dtor) {\n\t\tsession->local.mac->dtor(session, &session->local.mac_abstract);\n\t}\n\n\tif (session->local.mac->init) {\n\t\tunsigned char *key = NULL;\n\t\tint free_key = 0;\n\n\t\tLIBSSH2_KEX_METHOD_DIFFIE_HELLMAN_SHA1_HASH(key, session->local.mac->key_len, \"E\");\n\t\tsession->local.mac->init(session, key, &free_key, &session->local.mac_abstract);\n\n\t\tif (free_key) {\n\t\t\tmemset(key, 0, session->local.mac->key_len);\n\t\t\tLIBSSH2_FREE(session, key);\n\t\t}\n\t}\n#ifdef LIBSSH2_DEBUG_KEX\n\t_libssh2_debug(session, LIBSSH2_DBG_KEX, \"Client to Server HMAC Key calculated\");\n#endif\n\n\tif (session->remote.mac->dtor) {\n\t\tsession->remote.mac->dtor(session, &session->remote.mac_abstract);\n\t}\n\n\tif (session->remote.mac->init) {\n\t\tunsigned char *key = NULL;\n\t\tint free_key = 0;\n\n\t\tLIBSSH2_KEX_METHOD_DIFFIE_HELLMAN_SHA1_HASH(key, session->remote.mac->key_len, \"F\");\n\t\tsession->remote.mac->init(session, key, &free_key, &session->remote.mac_abstract);\n\n\t\tif (free_key) {\n\t\t\tmemset(key, 0, session->remote.mac->key_len);\n\t\t\tLIBSSH2_FREE(session, key);\n\t\t}\n\t}\n#ifdef LIBSSH2_DEBUG_KEX\n\t_libssh2_debug(session, LIBSSH2_DBG_KEX, \"Server to Client HMAC Key calculated\");\n#endif\n\n clean_exit:\n\t_libssh2_bn_free(x);\n\t_libssh2_bn_free(e);\n\t_libssh2_bn_free(f);\n\t_libssh2_bn_free(k);\n\t_libssh2_bn_ctx_free(ctx);\n\n\tif (e_packet) {\n\t\tLIBSSH2_FREE(session, e_packet);\n\t}\n\n\tif (s_packet) {\n\t\tLIBSSH2_FREE(session, s_packet);\n\t}\n\n\tif (k_value) {\n\t\tLIBSSH2_FREE(session, k_value);\n\t}\n\n\tif (session->server_hostkey) {\n\t\tLIBSSH2_FREE(session, session->server_hostkey);\n\t\tsession->server_hostkey = NULL;\n\t}\n\n\treturn ret;\n}\n/* }}} */\n\n/* {{{ libssh2_kex_method_diffie_hellman_group1_sha1_key_exchange\n * Diffie-Hellman Group1 (Actually Group2) Key Exchange using SHA1\n */\nstatic int libssh2_kex_method_diffie_hellman_group1_sha1_key_exchange(LIBSSH2_SESSION *session)\n{\n\tunsigned char p_value[128] = {\n\t\t0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\n\t\t0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, 0xC2, 0x34,\n\t\t0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1,\n\t\t0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74,\n\t\t0x02, 0x0B, 0xBE, 0xA6, 0x3B, 0x13, 0x9B, 0x22,\n\t\t0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD,\n\t\t0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B,\n\t\t0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, 0x37,\n\t\t0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45,\n\t\t0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6,\n\t\t0xF4, 0x4C, 0x42, 0xE9, 0xA6, 0x37, 0xED, 0x6B,\n\t\t0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED,\n\t\t0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5,\n\t\t0xAE, 0x9F, 0x24, 0x11, 0x7C, 0x4B, 0x1F, 0xE6,\n\t\t0x49, 0x28, 0x66, 0x51, 0xEC, 0xE6, 0x53, 0x81,\n\t\t0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };\n\t/* g == 2 */\n\t_libssh2_bn *p = _libssh2_bn_init(); /* SSH2 defined value (p_value) */\n\t_libssh2_bn *g = _libssh2_bn_init(); /* SSH2 defined value (2) */\n\tint ret;\n\n\t/* Initialize P and G */\n\t_libssh2_bn_set_word(g, 2);\n\t_libssh2_bn_from_bin(p, 128, p_value);\n\n#ifdef LIBSSH2_DEBUG_KEX\n\t_libssh2_debug(session, LIBSSH2_DBG_KEX, \"Initiating Diffie-Hellman Group1 Key Exchange\");\n#endif\n\tret = libssh2_kex_method_diffie_hellman_groupGP_sha1_key_exchange(session, g, p, 128, SSH_MSG_KEXDH_INIT, SSH_MSG_KEXDH_REPLY, NULL, 0);\n\n\t_libssh2_bn_free(p);\n\t_libssh2_bn_free(g);\n\n\treturn ret;\n}\n/* }}} */\n\n/* {{{ libssh2_kex_method_diffie_hellman_group14_sha1_key_exchange\n * Diffie-Hellman Group14 Key Exchange using SHA1\n */\nstatic int libssh2_kex_method_diffie_hellman_group14_sha1_key_exchange(LIBSSH2_SESSION *session)\n{\n\tunsigned char p_value[256] = {\n\t\t0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\n\t\t0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, 0xC2, 0x34,\n\t\t0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1,\n \t\t0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74,\n\t\t0x02, 0x0B, 0xBE, 0xA6, 0x3B, 0x13, 0x9B, 0x22,\n\t\t0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD,\n\t\t0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B,\n\t\t0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, 0x37,\n\t\t0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45,\n\t\t0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6,\n\t\t0xF4, 0x4C, 0x42, 0xE9, 0xA6, 0x37, 0xED, 0x6B,\n\t\t0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED,\n\t\t0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5,\n\t\t0xAE, 0x9F, 0x24, 0x11, 0x7C, 0x4B, 0x1F, 0xE6,\n\t\t0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, 0x3D,\n\t\t0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, 0xBF, 0x05,\n\t\t0x98, 0xDA, 0x48, 0x36, 0x1C, 0x55, 0xD3, 0x9A,\n\t\t0x69, 0x16, 0x3F, 0xA8, 0xFD, 0x24, 0xCF, 0x5F,\n\t\t0x83, 0x65, 0x5D, 0x23, 0xDC, 0xA3, 0xAD, 0x96,\n\t\t0x1C, 0x62, 0xF3, 0x56, 0x20, 0x85, 0x52, 0xBB,\n\t\t0x9E, 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D,\n\t\t0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, 0x04,\n\t\t0xF1, 0x74, 0x6C, 0x08, 0xCA, 0x18, 0x21, 0x7C,\n\t\t0x32, 0x90, 0x5E, 0x46, 0x2E, 0x36, 0xCE, 0x3B,\n\t\t0xE3, 0x9E, 0x77, 0x2C, 0x18, 0x0E, 0x86, 0x03,\n\t\t0x9B, 0x27, 0x83, 0xA2, 0xEC, 0x07, 0xA2, 0x8F,\n\t\t0xB5, 0xC5, 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9,\n\t\t0xDE, 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18,\n\t\t0x39, 0x95, 0x49, 0x7C, 0xEA, 0x95, 0x6A, 0xE5,\n\t\t0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, 0x05, 0x10,\n\t\t0x15, 0x72, 0x8E, 0x5A, 0x8A, 0xAC, 0xAA, 0x68,\n\t\t0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };\n\t/* g == 2 */\n\t_libssh2_bn *p = _libssh2_bn_init(); /* SSH2 defined value (p_value) */\n\t_libssh2_bn *g = _libssh2_bn_init(); /* SSH2 defined value (2) */\n\tint ret;\n\n\t/* Initialize P and G */\n\t_libssh2_bn_set_word(g, 2);\n\t_libssh2_bn_from_bin(p, 256, p_value);\n\n#ifdef LIBSSH2_DEBUG_KEX\n\t_libssh2_debug(session, LIBSSH2_DBG_KEX, \"Initiating Diffie-Hellman Group14 Key Exchange\");\n#endif\n\tret = libssh2_kex_method_diffie_hellman_groupGP_sha1_key_exchange(session, g, p, 256, SSH_MSG_KEXDH_INIT, SSH_MSG_KEXDH_REPLY, NULL, 0);\n\n\t_libssh2_bn_free(p);\n\t_libssh2_bn_free(g);\n\n\treturn ret;\n}\n/* }}} */\n\n/* {{{ libssh2_kex_method_diffie_hellman_group_exchange_sha1_key_exchange\n * Diffie-Hellman Group Exchange Key Exchange using SHA1\n * Negotiates random(ish) group for secret derivation\n */\nstatic int libssh2_kex_method_diffie_hellman_group_exchange_sha1_key_exchange(LIBSSH2_SESSION *session)\n{\n\tunsigned char request[13], *s, *data;\n\tunsigned long data_len, p_len, g_len, request_len;\n\t_libssh2_bn *p = _libssh2_bn_init ();\n\t_libssh2_bn *g = _libssh2_bn_init ();\n\tint ret;\n\n\t/* Ask for a P and G pair */\n#ifdef LIBSSH2_DH_GEX_NEW\n\trequest[0] = SSH_MSG_KEX_DH_GEX_REQUEST;\n\tlibssh2_htonu32(request + 1, LIBSSH2_DH_GEX_MINGROUP);\n\tlibssh2_htonu32(request + 5, LIBSSH2_DH_GEX_OPTGROUP);\n\tlibssh2_htonu32(request\t+ 9, LIBSSH2_DH_GEX_MAXGROUP);\n\trequest_len = 13;\n#ifdef LIBSSH2_DEBUG_KEX\n\t_libssh2_debug(session, LIBSSH2_DBG_KEX, \"Initiating Diffie-Hellman Group-Exchange (New Method)\");\n#endif\n#else\n\trequest[0] = SSH_MSG_KEX_DH_GEX_REQUEST_OLD;\n\tlibssh2_htonu32(request + 1, LIBSSH2_DH_GEX_OPTGROUP);\n\trequest_len = 5;\n#ifdef LIBSSH2_DEBUG_KEX\n\t_libssh2_debug(session, LIBSSH2_DBG_KEX, \"Initiating Diffie-Hellman Group-Exchange (Old Method)\");\n#endif\n#endif\n\n\tif (libssh2_packet_write(session, request, request_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send Group Exchange Request\", 0);\n\t\tret = -1;\n\t\tgoto dh_gex_clean_exit;\n\t}\t\n\n\tif (libssh2_packet_require(session, SSH_MSG_KEX_DH_GEX_GROUP, &data, &data_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_TIMEOUT, \"Timeout waiting for GEX_GROUP reply\", 0);\n\t\tret = -1;\n\t\tgoto dh_gex_clean_exit;\n\t}\n\n\ts = data + 1;\n\tp_len = libssh2_ntohu32(s);\t\t\t\t\t\ts += 4;\n\t_libssh2_bn_from_bin(p, p_len, s);\t\t\t\t\ts += p_len;\n\n\tg_len = libssh2_ntohu32(s);\t\t\t\t\t\ts += 4;\n\t_libssh2_bn_from_bin(g, g_len, s);\t\t\t\t\ts += g_len;\n\n\tret = libssh2_kex_method_diffie_hellman_groupGP_sha1_key_exchange(session, g, p, p_len, SSH_MSG_KEX_DH_GEX_INIT, SSH_MSG_KEX_DH_GEX_REPLY, data + 1, data_len - 1);\n\n\tLIBSSH2_FREE(session, data);\n\n dh_gex_clean_exit:\n\t_libssh2_bn_free(g);\n\t_libssh2_bn_free(p);\n\n\treturn ret;\n}\n/* }}} */\n\n#define LIBSSH2_KEX_METHOD_FLAG_REQ_ENC_HOSTKEY\t\t0x0001\n#define LIBSSH2_KEX_METHOD_FLAG_REQ_SIGN_HOSTKEY\t0x0002\n\nLIBSSH2_KEX_METHOD libssh2_kex_method_diffie_helman_group1_sha1 = {\n\t\"diffie-hellman-group1-sha1\",\n\tlibssh2_kex_method_diffie_hellman_group1_sha1_key_exchange,\n\tLIBSSH2_KEX_METHOD_FLAG_REQ_SIGN_HOSTKEY,\n};\n\nLIBSSH2_KEX_METHOD libssh2_kex_method_diffie_helman_group14_sha1 = {\n\t\"diffie-hellman-group14-sha1\",\n\tlibssh2_kex_method_diffie_hellman_group14_sha1_key_exchange,\n\tLIBSSH2_KEX_METHOD_FLAG_REQ_SIGN_HOSTKEY,\n};\n\nLIBSSH2_KEX_METHOD libssh2_kex_method_diffie_helman_group_exchange_sha1 = {\n\t\"diffie-hellman-group-exchange-sha1\",\n\tlibssh2_kex_method_diffie_hellman_group_exchange_sha1_key_exchange,\n\tLIBSSH2_KEX_METHOD_FLAG_REQ_SIGN_HOSTKEY,\n};\n\nLIBSSH2_KEX_METHOD *libssh2_kex_methods[] = {\n\t&libssh2_kex_method_diffie_helman_group14_sha1,\n\t&libssh2_kex_method_diffie_helman_group_exchange_sha1,\n\t&libssh2_kex_method_diffie_helman_group1_sha1,\n\tNULL\n};\n\ntypedef struct _LIBSSH2_COMMON_METHOD {\n\tchar *name;\n} LIBSSH2_COMMON_METHOD;\n\n/* {{{ libssh2_kex_method_strlen\n * Calculate the length of a particular method list's resulting string\n * Includes SUM(strlen() of each individual method plus 1 (for coma)) - 1 (because the last coma isn't used)\n * Another sign of bad coding practices gone mad.  Pretend you don't see this.\n */\nstatic size_t libssh2_kex_method_strlen(LIBSSH2_COMMON_METHOD **method)\n{\n\tsize_t len = 0;\n\n\tif (!method || !*method) {\n\t\treturn 0;\n\t}\n\n\twhile (*method && (*method)->name) {\n\t\tlen += strlen((*method)->name) + 1;\n\t\tmethod++;\n\t}\n\n\treturn len - 1;\n}\n/* }}} */\n\n/* {{{ libssh2_kex_method_list\n * Generate formatted preference list in buf\n */\nstatic size_t libssh2_kex_method_list(unsigned char *buf, size_t list_strlen, LIBSSH2_COMMON_METHOD **method)\n{\n\tlibssh2_htonu32(buf, list_strlen);\n\tbuf += 4;\n\n\tif (!method || !*method) {\n\t\treturn 4;\n\t}\n\n\twhile (*method && (*method)->name) {\n\t\tint mlen = strlen((*method)->name);\n\t\tmemcpy(buf, (*method)->name, mlen);\n\t\tbuf += mlen;\n\t\t*(buf++) = ',';\n\t\tmethod++;\n\t}\n\n\treturn list_strlen + 4;\n}\n/* }}} */\n\n#define LIBSSH2_METHOD_PREFS_LEN(prefvar, defaultvar)\t((prefvar) ? strlen(prefvar) : libssh2_kex_method_strlen((LIBSSH2_COMMON_METHOD**)(defaultvar)))\n#define LIBSSH2_METHOD_PREFS_STR(buf, prefvarlen, prefvar, defaultvar)\t\\\n\tif (prefvar) {\t\\\n\t\tlibssh2_htonu32((buf), (prefvarlen));\t\\\n\t\tbuf += 4;\t\\\n\t\tmemcpy((buf), (prefvar), (prefvarlen));\t\\\n\t\tbuf += (prefvarlen);\t\\\n\t} else {\t\\\n\t\tbuf += libssh2_kex_method_list((buf), (prefvarlen),\t(LIBSSH2_COMMON_METHOD**)(defaultvar));\t\\\n\t}\n\n/* {{{ libssh2_kexinit\n * Send SSH_MSG_KEXINIT packet\n */\nstatic int libssh2_kexinit(LIBSSH2_SESSION *session)\n{\n\tsize_t data_len = 62; /* packet_type(1) + cookie(16) + first_packet_follows(1) + reserved(4) + length longs(40) */\n\tsize_t kex_len,\t\t\thostkey_len = 0;\n\tsize_t crypt_cs_len,\tcrypt_sc_len;\n\tsize_t comp_cs_len,\t\tcomp_sc_len;\n\tsize_t mac_cs_len,\t\tmac_sc_len;\n\tsize_t lang_cs_len,\t\tlang_sc_len;\n\tunsigned char *data, *s;\n\n\tkex_len\t\t\t= LIBSSH2_METHOD_PREFS_LEN(session->kex_prefs,\t\t\tlibssh2_kex_methods);\n\thostkey_len\t\t= LIBSSH2_METHOD_PREFS_LEN(session->hostkey_prefs,\t\tlibssh2_hostkey_methods());\n\tcrypt_cs_len\t= LIBSSH2_METHOD_PREFS_LEN(session->local.crypt_prefs,\tlibssh2_crypt_methods());\n\tcrypt_sc_len\t= LIBSSH2_METHOD_PREFS_LEN(session->remote.crypt_prefs,\tlibssh2_crypt_methods());\n\tmac_cs_len\t\t= LIBSSH2_METHOD_PREFS_LEN(session->local.mac_prefs,\tlibssh2_mac_methods());\n\tmac_sc_len\t\t= LIBSSH2_METHOD_PREFS_LEN(session->remote.mac_prefs,\tlibssh2_mac_methods());\n\tcomp_cs_len\t\t= LIBSSH2_METHOD_PREFS_LEN(session->local.comp_prefs,\tlibssh2_comp_methods());\n\tcomp_sc_len\t\t= LIBSSH2_METHOD_PREFS_LEN(session->remote.comp_prefs,\tlibssh2_comp_methods());\n\tlang_cs_len\t\t= LIBSSH2_METHOD_PREFS_LEN(session->local.lang_prefs,\tNULL);\n\tlang_sc_len\t\t= LIBSSH2_METHOD_PREFS_LEN(session->remote.lang_prefs,\tNULL);\n\n\tdata_len += kex_len\t\t\t+ hostkey_len + \\\n\t\t\t\tcrypt_cs_len\t+ crypt_sc_len + \\\n\t\t\t\tcomp_cs_len\t\t+ comp_sc_len + \\\n\t\t\t\tmac_cs_len\t\t+ mac_sc_len + \\\n\t\t\t\tlang_cs_len\t\t+ lang_sc_len;\n\n\ts = data = LIBSSH2_ALLOC(session, data_len);\n\tif (!data) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory\", 0);\n\t\treturn -1;\n\t}\n\n\t*(s++) = SSH_MSG_KEXINIT;\n\n\tlibssh2_random(s, 16);\n\ts += 16;\n\n\t/* Ennumerating through these lists twice is probably (certainly?) inefficient from a CPU standpoint, but it saves multiple malloc/realloc calls */\n\tLIBSSH2_METHOD_PREFS_STR(s, kex_len,\t\tsession->kex_prefs,\t\t\t\tlibssh2_kex_methods);\n\tLIBSSH2_METHOD_PREFS_STR(s, hostkey_len,\tsession->hostkey_prefs,\t\t\tlibssh2_hostkey_methods());\n\tLIBSSH2_METHOD_PREFS_STR(s, crypt_cs_len,\tsession->local.crypt_prefs,\t\tlibssh2_crypt_methods());\n\tLIBSSH2_METHOD_PREFS_STR(s, crypt_sc_len,\tsession->remote.crypt_prefs,\tlibssh2_crypt_methods());\n\tLIBSSH2_METHOD_PREFS_STR(s, mac_cs_len,\t\tsession->local.mac_prefs,\t\tlibssh2_mac_methods());\n\tLIBSSH2_METHOD_PREFS_STR(s, mac_sc_len,\t\tsession->remote.mac_prefs,\t\tlibssh2_mac_methods());\n\tLIBSSH2_METHOD_PREFS_STR(s, comp_cs_len,\tsession->local.comp_prefs,\t\tlibssh2_comp_methods());\n\tLIBSSH2_METHOD_PREFS_STR(s, comp_sc_len,\tsession->remote.comp_prefs,\t\tlibssh2_comp_methods());\n\tLIBSSH2_METHOD_PREFS_STR(s, lang_cs_len,\tsession->local.lang_prefs,\t\tNULL);\n\tLIBSSH2_METHOD_PREFS_STR(s, lang_sc_len,\tsession->remote.lang_prefs,\t\tNULL);\n\n\t/* No optimistic KEX packet follows */\n\t/* Deal with optimistic packets\n\t * session->flags |= KEXINIT_OPTIMISTIC\n\t * session->flags |= KEXINIT_METHODSMATCH\n\t */\n\t*(s++) = 0;\n\n\t/* Reserved == 0 */\n\t*(s++) = 0;\n\t*(s++) = 0;\n\t*(s++) = 0;\n\t*(s++) = 0;\n\n#ifdef LIBSSH2_DEBUG_KEX\n{\n\t/* Funnily enough, they'll all \"appear\" to be '\\0' terminated */\n\tchar *p = data + 21; /* type(1) + cookie(16) + len(4) */\n\n\t_libssh2_debug(session, LIBSSH2_DBG_KEX, \"Sent KEX: %s\", p);\t\t\t\tp += kex_len + 4;\n\t_libssh2_debug(session, LIBSSH2_DBG_KEX, \"Sent HOSTKEY: %s\", p);\t\t\tp += hostkey_len + 4;\n\t_libssh2_debug(session, LIBSSH2_DBG_KEX, \"Sent CRYPT_CS: %s\", p);\t\t\tp += crypt_cs_len + 4;\n\t_libssh2_debug(session, LIBSSH2_DBG_KEX, \"Sent CRYPT_SC: %s\", p);\t\t\tp += crypt_sc_len + 4;\n\t_libssh2_debug(session, LIBSSH2_DBG_KEX, \"Sent MAC_CS: %s\", p);\t\t\t\tp += mac_cs_len + 4;\n\t_libssh2_debug(session, LIBSSH2_DBG_KEX, \"Sent MAC_SC: %s\", p);\t\t\t\tp += mac_sc_len + 4;\n\t_libssh2_debug(session, LIBSSH2_DBG_KEX, \"Sent COMP_CS: %s\", p);\t\t\tp += comp_cs_len + 4;\n\t_libssh2_debug(session, LIBSSH2_DBG_KEX, \"Sent COMP_SC: %s\", p);\t\t\tp += comp_sc_len + 4;\n\t_libssh2_debug(session, LIBSSH2_DBG_KEX, \"Sent LANG_CS: %s\", p);\t\t\tp += lang_cs_len + 4;\n\t_libssh2_debug(session, LIBSSH2_DBG_KEX, \"Sent LANG_SC: %s\", p);\t\t\tp += lang_sc_len + 4;\n}\n#endif /* LIBSSH2_DEBUG_KEX */\n\tif (libssh2_packet_write(session, data, data_len)) {\n\t\tLIBSSH2_FREE(session, data);\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send KEXINIT packet to remote host\", 0);\n\t\treturn -1;\n\t}\n\n\tif (session->local.kexinit) {\n\t\tLIBSSH2_FREE(session, session->local.kexinit);\n\t}\n\n\tsession->local.kexinit = data;\n\tsession->local.kexinit_len = data_len;\n\n\treturn 0;\n}\n/* }}}  */\n\n/* {{{ libssh2_kex_agree_instr\n * Kex specific variant of strstr()\n * Needle must be preceed by BOL or ',', and followed by ',' or EOL\n */\nstatic unsigned char *libssh2_kex_agree_instr(unsigned char *haystack, unsigned long haystack_len,\n\t\t\t\t\t\t\t\t\t\t\t  unsigned char *needle, unsigned long needle_len)\n{\n\tunsigned char *s;\n\n\t/* Haystack too short to bother trying */\n\tif (haystack_len < needle_len) {\n\t\treturn NULL;\n\t}\n\n\t/* Needle at start of haystack */\n\tif ((strncmp((const char *)haystack, (const char *)needle, needle_len) == 0) &&\n\t\t(needle_len == haystack_len || haystack[needle_len] == ',')) {\n\t\treturn haystack;\n\t}\n\n\ts = haystack;\n\t/* Search until we run out of comas or we run out of haystack,\n\t   whichever comes first */\n\twhile ((s = (unsigned char *)strchr((const char *)s, ',')) && ((haystack_len - (s - haystack)) > needle_len)) {\n\t\ts++;\n\t\t/* Needle at X position */\n\t\tif ((strncmp((const char *)s, (const char *)needle, needle_len) == 0) &&\n\t\t\t(((s - haystack) + needle_len) == haystack_len || s[needle_len] == ',')) {\n\t\t\treturn s;\n\t\t}\n\t}\n\n\treturn NULL;\n}\n/* }}} */\n\n/* {{{ libssh2_get_method_by_name\n */\nstatic LIBSSH2_COMMON_METHOD *libssh2_get_method_by_name(char *name, int name_len, LIBSSH2_COMMON_METHOD **methodlist)\n{\n\twhile (*methodlist) {\n\t\tif ((strlen((*methodlist)->name) == name_len) &&\n\t\t\t(strncmp((*methodlist)->name, name, name_len) == 0)) {\n\t\t\treturn *methodlist;\n\t\t}\n\t\tmethodlist++;\n\t}\n\treturn NULL;\n}\n/* }}} */\n\n/* {{{ libssh2_kex_agree_hostkey\n * Agree on a Hostkey which works with this kex\n */\nstatic int libssh2_kex_agree_hostkey(LIBSSH2_SESSION *session, unsigned long kex_flags, unsigned char *hostkey, unsigned long hostkey_len)\n{\n\tLIBSSH2_HOSTKEY_METHOD\t**hostkeyp\t= libssh2_hostkey_methods();\n\tunsigned char *s;\n\n\tif (session->hostkey_prefs) {\n\t\ts = (unsigned char *)session->hostkey_prefs;\n\n\t\twhile (s && *s) {\n\t\t\tunsigned char *p = (unsigned char *)strchr((const char *)s, ',');\n\t\t\tint method_len = (p ? (p - s) : strlen((const char *)s));\n\t\t\tif (libssh2_kex_agree_instr(hostkey, hostkey_len, s, method_len)) {\n\t\t\t\tLIBSSH2_HOSTKEY_METHOD *method = (LIBSSH2_HOSTKEY_METHOD*)libssh2_get_method_by_name((char *)s, method_len, (LIBSSH2_COMMON_METHOD**)hostkeyp);\n\n\t\t\t\tif (!method) {\n\t\t\t\t\t/* Invalid method -- Should never be reached */\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n\n\t\t\t\t/* So far so good, but does it suit our purposes? (Encrypting vs Signing) */\n\t\t\t\tif (((kex_flags & LIBSSH2_KEX_METHOD_FLAG_REQ_ENC_HOSTKEY) == 0) ||\n\t\t\t\t\t(method->encrypt)) {\n\t\t\t\t\t/* Either this hostkey can do encryption or this kex just doesn't require it */\n\t\t\t\t\tif (((kex_flags & LIBSSH2_KEX_METHOD_FLAG_REQ_SIGN_HOSTKEY) == 0) ||\n\t\t\t\t\t\t(method->sig_verify)) {\n\t\t\t\t\t\t/* Either this hostkey can do signing or this kex just doesn't require it */\n\t\t\t\t\t\tsession->hostkey = method;\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ts = p ? p + 1 : NULL;\n\t\t}\n\t\treturn -1;\n\t}\n\n\twhile (hostkeyp && (*hostkeyp)->name) {\n\t\ts = libssh2_kex_agree_instr(hostkey, hostkey_len, (unsigned char *)(*hostkeyp)->name, strlen((*hostkeyp)->name));\n\t\tif (s) {\n\t\t\t/* So far so good, but does it suit our purposes? (Encrypting vs Signing) */\n\t\t\tif (((kex_flags & LIBSSH2_KEX_METHOD_FLAG_REQ_ENC_HOSTKEY) == 0) ||\n\t\t\t\t((*hostkeyp)->encrypt)) {\n\t\t\t\t/* Either this hostkey can do encryption or this kex just doesn't require it */\n\t\t\t\tif (((kex_flags & LIBSSH2_KEX_METHOD_FLAG_REQ_SIGN_HOSTKEY) == 0) ||\n\t\t\t\t\t((*hostkeyp)->sig_verify)) {\n\t\t\t\t\t/* Either this hostkey can do signing or this kex just doesn't require it */\n\t\t\t\t\tsession->hostkey = *hostkeyp;\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\thostkeyp++;\n\t}\n\n\treturn -1;\n}\n/* }}} */\n\n/* {{{ libssh2_kex_agree_kex_hostkey\n * Agree on a Key Exchange method and a hostkey encoding type\n */\nstatic int libssh2_kex_agree_kex_hostkey(LIBSSH2_SESSION *session, unsigned char *kex, unsigned long kex_len,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   unsigned char *hostkey, unsigned long hostkey_len)\n{\n\tLIBSSH2_KEX_METHOD **kexp = libssh2_kex_methods;\n\tunsigned char *s;\n\n\tif (session->kex_prefs) {\n\t\ts = (unsigned char *)session->kex_prefs;\n\n\t\twhile (s && *s) {\n\t\t\tunsigned char *q, *p = (unsigned char *)strchr((const char *)s, ',');\n\t\t\tint method_len = (p ? (p - s) : strlen((const char *)s));\n\t\t\tif ((q = libssh2_kex_agree_instr(kex, kex_len, s, method_len))) {\n\t\t\t\tLIBSSH2_KEX_METHOD *method = (LIBSSH2_KEX_METHOD*)libssh2_get_method_by_name((char *)s, method_len, (LIBSSH2_COMMON_METHOD**)kexp);\n\n\t\t\t\tif (!method) {\n\t\t\t\t\t/* Invalid method -- Should never be reached */\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n\n\t\t\t\t/* We've agreed on a key exchange method,\n\t\t\t\t * Can we agree on a hostkey that works with this kex?\n\t\t\t\t */\n\t\t\t\tif (libssh2_kex_agree_hostkey(session, method->flags, hostkey, hostkey_len) == 0) {\n\t\t\t\t\tsession->kex = method;\n\t\t\t\t\tif (session->burn_optimistic_kexinit && (kex == q)) {\n\t\t\t\t\t\t/* Server sent an optimistic packet,\n\t\t\t\t\t\t * and client agrees with preference\n\t\t\t\t\t\t * cancel burning the first KEX_INIT packet that comes in */\n\t\t\t\t\t\tsession->burn_optimistic_kexinit = 0;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ts = p ? p + 1 : NULL;\n\t\t}\n\t\treturn -1;\n\t}\n\n\twhile (*kexp && (*kexp)->name) {\n\t\ts = libssh2_kex_agree_instr(kex, kex_len, (unsigned char *)(*kexp)->name, strlen((*kexp)->name));\n\t\tif (s) {\n\t\t\t/* We've agreed on a key exchange method,\n\t\t\t * Can we agree on a hostkey that works with this kex?\n\t\t\t */\n\t\t\tif (libssh2_kex_agree_hostkey(session, (*kexp)->flags, hostkey, hostkey_len) == 0) {\n\t\t\t\tsession->kex = *kexp;\n\t\t\t\tif (session->burn_optimistic_kexinit && (kex == s)) {\n\t\t\t\t\t/* Server sent an optimistic packet,\n\t\t\t\t\t * and client agrees with preference\n\t\t\t\t\t * cancel burning the first KEX_INIT packet that comes in */\n\t\t\t\t\tsession->burn_optimistic_kexinit = 0;\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t\tkexp++;\n\t}\n\treturn -1;\n}\n/* }}} */\n\n/* {{{ libssh2_kex_agree_crypt\n * Agree on a cipher algo\n */\nstatic int libssh2_kex_agree_crypt(LIBSSH2_SESSION *session,\n\t\t\t\t   libssh2_endpoint_data *endpoint,\n\t\t\t\t   unsigned char *crypt,\n\t\t\t\t   unsigned long crypt_len)\n{\n\tLIBSSH2_CRYPT_METHOD **cryptp = libssh2_crypt_methods();\n\tunsigned char *s;\n\n\tif (endpoint->crypt_prefs) {\n\t\ts = (unsigned char *)endpoint->crypt_prefs;\n\n\t\twhile (s && *s) {\n\t\t\tunsigned char *p = (unsigned char *)strchr((const char *)s, ',');\n\t\t\tint method_len = (p ? (p - s) : strlen((const char *)s));\n\n\t\t\tif (libssh2_kex_agree_instr(crypt, crypt_len, s, method_len)) {\n\t\t\t\tLIBSSH2_CRYPT_METHOD *method =\n\t\t\t\t\t(LIBSSH2_CRYPT_METHOD*)libssh2_get_method_by_name((char *)s, method_len, (LIBSSH2_COMMON_METHOD**)cryptp);\n\n\t\t\t\tif (!method) {\n\t\t\t\t\t/* Invalid method -- Should never be reached */\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n\n\t\t\t\tendpoint->crypt = method;\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\ts = p ? p + 1 : NULL;\n\t\t}\n\t\treturn -1;\n\t}\n\n\twhile (*cryptp && (*cryptp)->name) {\n\t\ts = libssh2_kex_agree_instr(crypt, crypt_len, (unsigned char *)(*cryptp)->name, strlen((*cryptp)->name));\n\t\tif (s) {\n\t\t\tendpoint->crypt = *cryptp;\n\t\t\treturn 0;\n\t\t}\n\t\tcryptp++;\n\t}\n\n\treturn -1;\n}\n/* }}} */\n\n/* {{{ libssh2_kex_agree_mac\n * Agree on a message authentication hash\n */\nstatic int libssh2_kex_agree_mac(LIBSSH2_SESSION *session, libssh2_endpoint_data *endpoint, unsigned char *mac, unsigned long mac_len)\n{\n\tLIBSSH2_MAC_METHOD **macp = libssh2_mac_methods();\n\tunsigned char *s;\n\n\tif (endpoint->mac_prefs) {\n\t\ts = (unsigned char *)endpoint->mac_prefs;\n\n\t\twhile (s && *s) {\n\t\t\tunsigned char *p = (unsigned char *)strchr((const char *)s, ',');\n\t\t\tint method_len = (p ? (p - s) : strlen((const char *)s));\n\n\t\t\tif (libssh2_kex_agree_instr(mac, mac_len, s, method_len)) {\n\t\t\t\tLIBSSH2_MAC_METHOD *method = (LIBSSH2_MAC_METHOD*)libssh2_get_method_by_name((char *)s, method_len, (LIBSSH2_COMMON_METHOD**)macp);\n\n\t\t\t\tif (!method) {\n\t\t\t\t\t/* Invalid method -- Should never be reached */\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n\n\t\t\t\tendpoint->mac = method;\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\ts = p ? p + 1 : NULL;\n\t\t}\n\t\treturn -1;\n\t}\n\n\twhile (*macp && (*macp)->name) {\n\t\ts = libssh2_kex_agree_instr(mac, mac_len, (unsigned char *)(*macp)->name, strlen((*macp)->name));\n\t\tif (s) {\n\t\t\tendpoint->mac = *macp;\n\t\t\treturn 0;\n\t\t}\n\t\tmacp++;\n\t}\n\n\treturn -1;\n}\n/* }}} */\n\n/* {{{ libssh2_kex_agree_comp\n * Agree on a compression scheme\n */\nstatic int libssh2_kex_agree_comp(LIBSSH2_SESSION *session, libssh2_endpoint_data *endpoint, unsigned char *comp, unsigned long comp_len)\n{\n\tLIBSSH2_COMP_METHOD **compp = libssh2_comp_methods();\n\tunsigned char *s;\n\n\tif (endpoint->comp_prefs) {\n\t\ts = (unsigned char *)endpoint->comp_prefs;\n\n\t\twhile (s && *s) {\n\t\t\tunsigned char *p = (unsigned char *)strchr((const char *)s, ',');\n\t\t\tint method_len = (p ? (p - s) : strlen((const char *)s));\n\n\t\t\tif (libssh2_kex_agree_instr(comp, comp_len, s, method_len)) {\n\t\t\t\tLIBSSH2_COMP_METHOD *method = (LIBSSH2_COMP_METHOD*)libssh2_get_method_by_name((char *)s, method_len, (LIBSSH2_COMMON_METHOD**)compp);\n\n\t\t\t\tif (!method) {\n\t\t\t\t\t/* Invalid method -- Should never be reached */\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n\n\t\t\t\tendpoint->comp = method;\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\ts = p ? p + 1 : NULL;\n\t\t}\n\t\treturn -1;\n\t}\n\n\twhile (*compp && (*compp)->name) {\n\t\ts = libssh2_kex_agree_instr(comp, comp_len, (unsigned char *)(*compp)->name, strlen((*compp)->name));\n\t\tif (s) {\n\t\t\tendpoint->comp = *compp;\n\t\t\treturn 0;\n\t\t}\n\t\tcompp++;\n\t}\n\n\treturn -1;\n}\n/* }}} */\n\n/* TODO: When in server mode we need to turn this logic on its head\n * The Client gets to make the final call on \"agreed methods\"\n */\n\n/* {{{ libssh2_kex_agree_methods\n * Decide which specific method to use of the methods offered by each party\n */\nstatic int libssh2_kex_agree_methods(LIBSSH2_SESSION *session, unsigned char *data, unsigned data_len)\n{\n\tunsigned char *kex, *hostkey, *crypt_cs, *crypt_sc, *comp_cs, *comp_sc, *mac_cs, *mac_sc, *lang_cs, *lang_sc;\n\tsize_t kex_len, hostkey_len, crypt_cs_len, crypt_sc_len, comp_cs_len, comp_sc_len, mac_cs_len, mac_sc_len, lang_cs_len, lang_sc_len;\n\tunsigned char *s = data;\n\n\t/* Skip packet_type, we know it already */\n\ts++;\n\n\t/* Skip cookie, don't worry, it's preserved in the kexinit field */\n\ts += 16;\n\n\t/* Locate each string */\n\tkex_len\t\t\t= libssh2_ntohu32(s);\t\tkex\t\t\t= s + 4;\t\ts += 4 + kex_len;\n\thostkey_len\t\t= libssh2_ntohu32(s);\t\thostkey\t\t= s + 4;\t\ts += 4 + hostkey_len;\n\tcrypt_cs_len\t= libssh2_ntohu32(s);\t\tcrypt_cs\t= s + 4;\t\ts += 4 + crypt_cs_len;\n\tcrypt_sc_len\t= libssh2_ntohu32(s);\t\tcrypt_sc\t= s + 4;\t\ts += 4 + crypt_sc_len;\n\tmac_cs_len\t\t= libssh2_ntohu32(s);\t\tmac_cs\t\t= s + 4;\t\ts += 4 + mac_cs_len;\n\tmac_sc_len\t\t= libssh2_ntohu32(s);\t\tmac_sc\t\t= s + 4;\t\ts += 4 + mac_sc_len;\n\tcomp_cs_len\t\t= libssh2_ntohu32(s);\t\tcomp_cs\t\t= s + 4;\t\ts += 4 + comp_cs_len;\n\tcomp_sc_len\t\t= libssh2_ntohu32(s);\t\tcomp_sc\t\t= s + 4;\t\ts += 4 + comp_sc_len;\n\tlang_cs_len\t\t= libssh2_ntohu32(s);\t\tlang_cs\t\t= s + 4;\t\ts += 4 + lang_cs_len;\n\tlang_sc_len\t\t= libssh2_ntohu32(s);\t\tlang_sc\t\t= s + 4;\t\ts += 4 + lang_sc_len;\n\n\t/* If the server sent an optimistic packet, assume that it guessed wrong.\n\t * If the guess is determined to be right (by libssh2_kex_agree_kex_hostkey)\n\t * This flag will be reset to zero so that it's not ignored */\n\tsession->burn_optimistic_kexinit = *(s++);\n\t/* Next uint32 in packet is all zeros (reserved) */\n\n\tif (libssh2_kex_agree_kex_hostkey(session, kex, kex_len, hostkey, hostkey_len)) {\n\t\treturn -1;\n\t}\n\n\tif (libssh2_kex_agree_crypt(session, &session->local,  crypt_cs, crypt_cs_len) ||\n\t\tlibssh2_kex_agree_crypt(session, &session->remote, crypt_sc, crypt_sc_len)) {\n\t\treturn -1;\n\t}\n\n\tif (libssh2_kex_agree_mac(session, &session->local,  mac_cs, mac_cs_len) ||\n\t\tlibssh2_kex_agree_mac(session, &session->remote, mac_sc, mac_sc_len)) {\n\t\treturn -1;\n\t}\n\n\tif (libssh2_kex_agree_comp(session, &session->local,  comp_cs, comp_cs_len) ||\n\t\tlibssh2_kex_agree_comp(session, &session->remote, comp_sc, comp_sc_len)) {\n\t\treturn -1;\n\t}\n\n\tif (libssh2_kex_agree_lang(session, &session->local,  lang_cs, lang_cs_len) ||\n\t\tlibssh2_kex_agree_lang(session, &session->remote, lang_sc, lang_sc_len)) {\n\t\treturn -1;\n\t}\n\n#ifdef LIBSSH2_DEBUG_KEX\n\t_libssh2_debug(session, LIBSSH2_DBG_KEX, \"Agreed on KEX method: %s\", session->kex->name);\n\t_libssh2_debug(session, LIBSSH2_DBG_KEX, \"Agreed on HOSTKEY method: %s\", session->hostkey->name);\n\t_libssh2_debug(session, LIBSSH2_DBG_KEX, \"Agreed on CRYPT_CS method: %s\", session->local.crypt->name);\n\t_libssh2_debug(session, LIBSSH2_DBG_KEX, \"Agreed on CRYPT_SC method: %s\", session->remote.crypt->name);\n\t_libssh2_debug(session, LIBSSH2_DBG_KEX, \"Agreed on MAC_CS method: %s\", session->local.mac->name);\n\t_libssh2_debug(session, LIBSSH2_DBG_KEX, \"Agreed on MAC_SC method: %s\", session->remote.mac->name);\n\t_libssh2_debug(session, LIBSSH2_DBG_KEX, \"Agreed on COMP_CS method: %s\", session->local.comp->name);\n\t_libssh2_debug(session, LIBSSH2_DBG_KEX, \"Agreed on COMP_SC method: %s\", session->remote.comp->name);\n\t_libssh2_debug(session, LIBSSH2_DBG_KEX, \"Agreed on LANG_CS method:\"); /* None yet */\n\t_libssh2_debug(session, LIBSSH2_DBG_KEX, \"Agreed on LANG_SC method:\"); /* None yet */\n#endif\n\n\t/* Initialize compression layer */\n\tif (session->local.comp && session->local.comp->init &&\n\t\tsession->local.comp->init(session, 1, &session->local.comp_abstract)) {\n\t\treturn -1;\n\t}\n\n\tif (session->remote.comp && session->remote.comp->init &&\n\t\tsession->remote.comp->init(session, 0, &session->remote.comp_abstract)) {\n\t\treturn -1;\n\t}\n\n\treturn 0;\n}\n/* }}} */\n\n/* {{{ libssh2_kex_exchange\n * Exchange keys\n * Returns 0 on success, non-zero on failure\n */\nint libssh2_kex_exchange(LIBSSH2_SESSION *session, int reexchange) /* session->flags |= SERVER */\n{\n\tunsigned char *data;\n\tunsigned long data_len;\n\n\t/* Prevent loop in packet_add() */\n\tsession->state |= LIBSSH2_STATE_EXCHANGING_KEYS;\n\n\tif (reexchange) {\n\t\tsession->kex = NULL;\n\n\t\tif (session->hostkey && session->hostkey->dtor) {\n\t\t\tsession->hostkey->dtor(session, &session->server_hostkey_abstract);\n\t\t}\n\t\tsession->hostkey = NULL;\n\t}\n\n\tif (!session->kex || !session->hostkey) {\n\t\t/* Preserve in case of failure */\n\t\tunsigned char *oldlocal = session->local.kexinit;\n\t\tunsigned long oldlocal_len = session->local.kexinit_len;\n\n\t\tsession->local.kexinit = NULL;\n\t\tif (libssh2_kexinit(session)) {\n\t\t\tsession->local.kexinit = oldlocal;\n\t\t\tsession->local.kexinit_len = oldlocal_len;\n\t\t\treturn -1;\n\t\t}\n\n\t\tif (libssh2_packet_require(session, SSH_MSG_KEXINIT, &data, &data_len)) {\n\t\t\tif (session->local.kexinit) {\n\t\t\t\tLIBSSH2_FREE(session, session->local.kexinit);\n\t\t\t}\n\t\t\tsession->local.kexinit = oldlocal;\n\t\t\tsession->local.kexinit_len = oldlocal_len;\n\t\t\treturn -1;\n\t\t}\n\n\t\tif (session->remote.kexinit) {\n\t\t\tLIBSSH2_FREE(session, session->remote.kexinit);\n\t\t}\n\t\tsession->remote.kexinit = data;\n\t\tsession->remote.kexinit_len = data_len;\n\n\t\tif (libssh2_kex_agree_methods(session, data, data_len)) {\n\t\t\treturn -1;\n\t\t}\n\t}\n\n\tif (session->kex->exchange_keys(session)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_KEY_EXCHANGE_FAILURE, \"Unrecoverable error exchanging keys\", 0);\n\t\treturn -1;\n\t}\n\n\t/* Done with kexinit buffers */\n\tif (session->local.kexinit) {\n\t\tLIBSSH2_FREE(session, session->local.kexinit);\n\t\tsession->local.kexinit = NULL;\n\t}\n\tif (session->remote.kexinit) {\n\t\tLIBSSH2_FREE(session, session->remote.kexinit);\n\t\tsession->remote.kexinit = NULL;\n\t}\n\n\tsession->state &= ~LIBSSH2_STATE_EXCHANGING_KEYS;\n\n\treturn 0;\n}\n/* }}} */\n\n/* {{{ libssh2_session_method_pref\n * Set preferred method\n */\nLIBSSH2_API int libssh2_session_method_pref(LIBSSH2_SESSION *session, int method_type, const char *prefs)\n{\n\tchar **prefvar, *s, *newprefs;\n\tint prefs_len = strlen(prefs);\n\tLIBSSH2_COMMON_METHOD **mlist;\n\n\tswitch (method_type) {\n\t\tcase LIBSSH2_METHOD_KEX:\n\t\t\tprefvar = &session->kex_prefs;\n\t\t\tmlist = (LIBSSH2_COMMON_METHOD**)libssh2_kex_methods;\n\t\t\tbreak;\n\t\tcase LIBSSH2_METHOD_HOSTKEY:\n\t\t\tprefvar = &session->hostkey_prefs;\n\t\t\tmlist = (LIBSSH2_COMMON_METHOD**)libssh2_hostkey_methods();\n\t\t\tbreak;\n\t\tcase LIBSSH2_METHOD_CRYPT_CS:\n\t\t\tprefvar = &session->local.crypt_prefs;\n\t\t\tmlist = (LIBSSH2_COMMON_METHOD**)libssh2_crypt_methods();\n\t\t\tbreak;\n\t\tcase LIBSSH2_METHOD_CRYPT_SC:\n\t\t\tprefvar = &session->remote.crypt_prefs;\n\t\t\tmlist = (LIBSSH2_COMMON_METHOD**)libssh2_crypt_methods();\n\t\t\tbreak;\n\t\tcase LIBSSH2_METHOD_MAC_CS:\n\t\t\tprefvar = &session->local.mac_prefs;\n\t\t\tmlist = (LIBSSH2_COMMON_METHOD**)libssh2_mac_methods();\n\t\t\tbreak;\n\t\tcase LIBSSH2_METHOD_MAC_SC:\n\t\t\tprefvar = &session->remote.mac_prefs;\n\t\t\tmlist = (LIBSSH2_COMMON_METHOD**)libssh2_mac_methods();\n\t\t\tbreak;\n\t\tcase LIBSSH2_METHOD_COMP_CS:\n\t\t\tprefvar = &session->local.comp_prefs;\n\t\t\tmlist = (LIBSSH2_COMMON_METHOD**)libssh2_comp_methods();\n\t\t\tbreak;\n\t\tcase LIBSSH2_METHOD_COMP_SC:\n\t\t\tprefvar = &session->remote.comp_prefs;\n\t\t\tmlist = (LIBSSH2_COMMON_METHOD**)libssh2_comp_methods();\n\t\t\tbreak;\n\t\tcase LIBSSH2_METHOD_LANG_CS:\n\t\t\tprefvar = &session->local.lang_prefs;\n\t\t\tmlist = NULL;\n\t\t\tbreak;\n\t\tcase LIBSSH2_METHOD_LANG_SC:\n\t\t\tprefvar = &session->remote.lang_prefs;\n\t\t\tmlist = NULL;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_INVAL, \"Invalid parameter specified for method_type\", 0);\n\t\t\treturn -1;\n\t}\n\n\ts = newprefs = LIBSSH2_ALLOC(session, prefs_len + 1);\n\tif (!newprefs) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Error allocated space for method preferences\", 0);\n\t\treturn -1;\n\t}\n\tmemcpy(s, prefs, prefs_len + 1);\n\n\twhile (s && *s) {\n\t\tchar *p = strchr(s, ',');\n\t\tint method_len = p ? (p - s) : strlen(s);\n\n\t\tif (!libssh2_get_method_by_name(s, method_len, mlist)) {\n\t\t\t/* Strip out unsupported method */\n\t\t\tif (p) {\n\t\t\t\tmemcpy(s, p + 1, strlen(s) - method_len);\n\t\t\t} else {\n\t\t\t\tif (s > newprefs) {\n\t\t\t\t\t*(--s) = '\\0';\n\t\t\t\t} else {\n\t\t\t\t\t*s = '\\0';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ts = p ? (p + 1) : NULL;\n\t}\n\n\tif (strlen(newprefs) == 0) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_METHOD_NOT_SUPPORTED, \"The requested method(s) are not currently supported\", 0);\n\t\tLIBSSH2_FREE(session, newprefs);\n\t\treturn -1;\n\t}\n\n\tif (*prefvar) {\n\t\tLIBSSH2_FREE(session, *prefvar);\n\t}\n\t*prefvar = newprefs;\n\n\treturn 0;\n}\n/* }}} */\n"
  },
  {
    "path": "Example/ktlogviewer_main.m",
    "content": "//\n//  ktlogviewer_main.m\n//  Connection\n//\n//  Created by Greg Hulands on 29/09/06.\n//  Copyright 2006 __MyCompanyName__. All rights reserved.\n//\n\n#import <Cocoa/Cocoa.h>\n\nint main(int argc, char *argv[])\n{\n    return NSApplicationMain(argc,  (const char **) argv);\n}\n"
  },
  {
    "path": "Example/libssh2.h",
    "content": "/* Copyright (c) 2004-2006, Sara Golemon <sarag@libssh2.org>\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms,\n * with or without modification, are permitted provided\n * that the following conditions are met:\n *\n *   Redistributions of source code must retain the above\n *   copyright notice, this list of conditions and the\n *   following disclaimer.\n *\n *   Redistributions in binary form must reproduce the above\n *   copyright notice, this list of conditions and the following\n *   disclaimer in the documentation and/or other materials\n *   provided with the distribution.\n *\n *   Neither the name of the copyright holder nor the names\n *   of any other contributors may be used to endorse or\n *   promote products derived from this software without\n *   specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND\n * CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES,\n * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE\n * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY\n * OF SUCH DAMAGE.\n */\n\n#ifndef LIBSSH2_H\n#define LIBSSH2_H 1\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#include <stddef.h>\n#include <string.h>\n#include <sys/stat.h>\n\n/* Allow alternate API prefix from CFLAGS or calling app */\n#ifndef LIBSSH2_API\n# ifdef LIBSSH2_WIN32\n#  ifdef LIBSSH2_LIBRARY\n#   define LIBSSH2_API __declspec(dllexport)\n#  else\n#   define LIBSSH2_API __declspec(dllimport)\n#  endif /* LIBSSH2_LIBRARY */\n# else /* !LIBSSH2_WIN32 */\n#  define LIBSSH2_API\n# endif /* LIBSSH2_WIN32 */\n#endif /* LIBSSH2_API */\n\n#if defined(LIBSSH2_DARWIN) || (defined(LIBSSH2_WIN32) && !defined(_MSC_VER))\n# include <sys/uio.h>\n#endif\n\n#if defined(LIBSSH2_WIN32) && _MSC_VER < 1300\ntypedef unsigned __int64 libssh2_uint64_t;\ntypedef __int64 libssh2_int64_t;\n#else\ntypedef unsigned long long libssh2_uint64_t;\ntypedef long long libssh2_int64_t;\n#endif\n\n#define LIBSSH2_VERSION\t\t\t\t\t\t\t\t\"0.14\"\n#define LIBSSH2_APINO\t\t\t\t\t\t\t\t200507211326\n\n/* Part of every banner, user specified or not */\n#define LIBSSH2_SSH_BANNER\t\t\t\t\t\t\t\"SSH-2.0-libssh2_\" LIBSSH2_VERSION\n\n/* We *could* add a comment here if we so chose */\n#define LIBSSH2_SSH_DEFAULT_BANNER\t\t\t\t\tLIBSSH2_SSH_BANNER\n#define LIBSSH2_SSH_DEFAULT_BANNER_WITH_CRLF\t\tLIBSSH2_SSH_DEFAULT_BANNER \"\\r\\n\"\n\n/* Default generate and safe prime sizes for diffie-hellman-group-exchange-sha1 */\n#define LIBSSH2_DH_GEX_MINGROUP     1024\n#define LIBSSH2_DH_GEX_OPTGROUP     1536\n#define LIBSSH2_DH_GEX_MAXGROUP     2048\n\n/* Defaults for pty requests */\n#define LIBSSH2_TERM_WIDTH\t\t80\n#define LIBSSH2_TERM_HEIGHT\t\t24\n#define LIBSSH2_TERM_WIDTH_PX\t0\n#define LIBSSH2_TERM_HEIGHT_PX\t0\n\n/* 1/4 second */\n#define LIBSSH2_SOCKET_POLL_UDELAY\t\t250000\n/* 0.25 * 120 == 30 seconds */\n#define LIBSSH2_SOCKET_POLL_MAXLOOPS\t120\n\n/* Maximum size to allow a payload to compress to, plays it safe by falling short of spec limits */\n#define LIBSSH2_PACKET_MAXCOMP\t\t32000\n\n/* Maximum size to allow a payload to deccompress to, plays it safe by allowing more than spec requires */\n#define LIBSSH2_PACKET_MAXDECOMP\t40000\n\n/* Maximum size for an inbound compressed payload, plays it safe by overshooting spec limits */\n#define LIBSSH2_PACKET_MAXPAYLOAD\t40000\n\n/* Malloc callbacks */\n#define LIBSSH2_ALLOC_FUNC(name)\t\t\t\t\tvoid *name(size_t count, void **abstract)\n#define LIBSSH2_REALLOC_FUNC(name)\t\t\t\t\tvoid *name(void *ptr, size_t count, void **abstract)\n#define LIBSSH2_FREE_FUNC(name)\t\t\t\t\t\tvoid name(void *ptr, void **abstract)\n\ntypedef struct _LIBSSH2_USERAUTH_KBDINT_PROMPT\n{\n\tchar* text;\n\tunsigned int length;\n\tunsigned char echo;\n} LIBSSH2_USERAUTH_KBDINT_PROMPT;\n\ntypedef struct _LIBSSH2_USERAUTH_KBDINT_RESPONSE\n{\n\tchar* text;\n\tunsigned int length;\n} LIBSSH2_USERAUTH_KBDINT_RESPONSE;\n\n/* 'keyboard-interactive' authentication callback */\n#define LIBSSH2_USERAUTH_KBDINT_RESPONSE_FUNC(name_) void name_(const char* name, int name_len, const char* instruction, int instruction_len, int num_prompts, const LIBSSH2_USERAUTH_KBDINT_PROMPT* prompts, LIBSSH2_USERAUTH_KBDINT_RESPONSE* responses, void **abstract)\n\n/* Callbacks for reading and writing to a custom stream */\n#define LIBSSH2_WRITE_FUNC(name)\t\t\t\t\t\t\tint name(uint8_t *buffer, int length, LIBSSH2_SESSION *session, void *userInfo)\n#define LIBSSH2_READ_FUNC(name)\t\t\t\t\t\t\t\tint name(uint8_t *buffer, int length, LIBSSH2_SESSION *session, void *userInfo)\n\n/* Callbacks for special SSH packets */\n#define LIBSSH2_IGNORE_FUNC(name)\t\t\t\t\tvoid name(LIBSSH2_SESSION *session, const char *message, int message_len, void **abstract)\n#define LIBSSH2_DEBUG_FUNC(name)\t\t\t\t\tvoid name(LIBSSH2_SESSION *session, int always_display, const char *message, int message_len, const char *language, int language_len,void **abstract)\n#define LIBSSH2_DISCONNECT_FUNC(name)\t\t\t\tvoid name(LIBSSH2_SESSION *session, int reason, const char *message, int message_len, const char *language, int language_len, void **abstract)\n#define LIBSSH2_PASSWD_CHANGEREQ_FUNC(name)\t\t\tvoid name(LIBSSH2_SESSION *session, char **newpw, int *newpw_len, void **abstract)\n#define LIBSSH2_MACERROR_FUNC(name)\t\t\t\t\tint\t name(LIBSSH2_SESSION *session, const char *packet, int packet_len, void **abstract)\n#define LIBSSH2_X11_OPEN_FUNC(name)\t\t\t\t\tvoid name(LIBSSH2_SESSION *session, LIBSSH2_CHANNEL *channel, char *shost, int sport, void **abstract)\n\n#define LIBSSH2_CHANNEL_CLOSE_FUNC(name)\t\t\tvoid name(LIBSSH2_SESSION *session, void **session_abstract, LIBSSH2_CHANNEL *channel, void **channel_abstract)\n\n/* libssh2_session_callback_set() constants */\n#define LIBSSH2_CALLBACK_IGNORE\t\t\t\t0\n#define LIBSSH2_CALLBACK_DEBUG\t\t\t\t1\n#define LIBSSH2_CALLBACK_DISCONNECT\t\t\t2\n#define LIBSSH2_CALLBACK_MACERROR\t\t\t3\n#define LIBSSH2_CALLBACK_X11\t\t\t\t4\n\n/* libssh2_session_method_pref() constants */\n#define LIBSSH2_METHOD_KEX\t\t\t0\n#define LIBSSH2_METHOD_HOSTKEY\t\t1\n#define LIBSSH2_METHOD_CRYPT_CS\t\t2\n#define LIBSSH2_METHOD_CRYPT_SC\t\t3\n#define LIBSSH2_METHOD_MAC_CS\t\t4\n#define LIBSSH2_METHOD_MAC_SC\t\t5\n#define LIBSSH2_METHOD_COMP_CS\t\t6\n#define LIBSSH2_METHOD_COMP_SC\t\t7\n#define LIBSSH2_METHOD_LANG_CS\t\t8\n#define LIBSSH2_METHOD_LANG_SC\t\t9\n\n/* session.flags bits */\n#define LIBSSH2_FLAG_SIGPIPE\t\t0x00000001\n\ntypedef struct _LIBSSH2_SESSION\t\t\t\t\t\tLIBSSH2_SESSION;\ntypedef struct _LIBSSH2_CHANNEL\t\t\t\t\t\tLIBSSH2_CHANNEL;\ntypedef struct _LIBSSH2_LISTENER\t\t\t\t\tLIBSSH2_LISTENER;\n\ntypedef struct _LIBSSH2_POLLFD {\n\tunsigned char type; /* LIBSSH2_POLLFD_* below */\n\n\tunion {\n\t\tint socket; /* File descriptors -- examined with system select() call */\n\t\tLIBSSH2_CHANNEL *channel; /* Examined by checking internal state */\n\t\tLIBSSH2_LISTENER *listener; /* Read polls only -- are inbound connections waiting to be accepted? */\n\t} fd;\n\n\tunsigned long events; /* Requested Events */\n\tunsigned long revents; /* Returned Events */\n} LIBSSH2_POLLFD;\n\n/* Poll FD Descriptor Types */\n#define LIBSSH2_POLLFD_SOCKET\t\t1\n#define LIBSSH2_POLLFD_CHANNEL\t\t2\n#define LIBSSH2_POLLFD_LISTENER\t\t3\n\n/* Note: Win32 Doesn't actually have a poll() implementation, so some of these values are faked with select() data */\n/* Poll FD events/revents -- Match sys/poll.h where possible */\n#define LIBSSH2_POLLFD_POLLIN\t\t\t0x0001\t\t/* Data available to be read or connection available -- All */\n#define LIBSSH2_POLLFD_POLLPRI\t\t\t0x0002\t\t/* Priority data available to be read -- Socket only */\n#define LIBSSH2_POLLFD_POLLEXT\t\t\t0x0002\t\t/* Extended data available to be read -- Channel only */\n#define LIBSSH2_POLLFD_POLLOUT\t\t\t0x0004\t\t/* Can may be written -- Socket/Channel */\n/* revents only */\n#define LIBSSH2_POLLFD_POLLERR\t\t\t0x0008\t\t/* Error Condition -- Socket */\n#define LIBSSH2_POLLFD_POLLHUP\t\t\t0x0010\t\t/* HangUp/EOF -- Socket */\n#define LIBSSH2_POLLFD_SESSION_CLOSED\t0x0010\t\t/* Session Disconnect */\n#define LIBSSH2_POLLFD_POLLNVAL\t\t\t0x0020\t\t/* Invalid request -- Socket Only */\n#define LIBSSH2_POLLFD_POLLEX\t\t\t0x0040\t\t/* Exception Condition -- Socket/Win32 */\n#define LIBSSH2_POLLFD_CHANNEL_CLOSED\t0x0080\t\t/* Channel Disconnect */\n#define LIBSSH2_POLLFD_LISTENER_CLOSED\t0x0080\t\t/* Listener Disconnect */\n\n/* Hash Types */\n#define LIBSSH2_HOSTKEY_HASH_MD5\t\t\t\t\t\t\t1\n#define LIBSSH2_HOSTKEY_HASH_SHA1\t\t\t\t\t\t\t2\n\n/* Disconnect Codes (defined by SSH protocol) */\n#define SSH_DISCONNECT_HOST_NOT_ALLOWED_TO_CONNECT\t\t\t1\n#define SSH_DISCONNECT_PROTOCOL_ERROR\t\t\t\t\t\t2\n#define SSH_DISCONNECT_KEY_EXCHANGE_FAILED\t\t\t\t\t3\n#define SSH_DISCONNECT_RESERVED\t\t\t\t\t\t\t\t4\n#define SSH_DISCONNECT_MAC_ERROR\t\t\t\t\t\t\t5\n#define SSH_DISCONNECT_COMPRESSION_ERROR\t\t\t\t\t6\n#define SSH_DISCONNECT_SERVICE_NOT_AVAILABLE\t\t\t\t7\n#define SSH_DISCONNECT_PROTOCOL_VERSION_NOT_SUPPORTED\t\t8\n#define SSH_DISCONNECT_HOST_KEY_NOT_VERIFIABLE\t\t\t\t9\n#define SSH_DISCONNECT_CONNECTION_LOST\t\t\t\t\t\t10\n#define SSH_DISCONNECT_BY_APPLICATION\t\t\t\t\t\t11\n#define SSH_DISCONNECT_TOO_MANY_CONNECTIONS\t\t\t\t\t12\n#define SSH_DISCONNECT_AUTH_CANCELLED_BY_USER\t\t\t\t13\n#define SSH_DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE\t\t14\n#define SSH_DISCONNECT_ILLEGAL_USER_NAME\t\t\t\t\t15\n\n/* Error Codes (defined by libssh2) */\n#define LIBSSH2_ERROR_SOCKET_NONE\t\t\t\t-1\n#define LIBSSH2_ERROR_BANNER_NONE\t\t\t\t-2\n#define LIBSSH2_ERROR_BANNER_SEND\t\t\t\t-3\n#define LIBSSH2_ERROR_INVALID_MAC\t\t\t\t-4\n#define LIBSSH2_ERROR_KEX_FAILURE\t\t\t\t-5\n#define LIBSSH2_ERROR_ALLOC\t\t\t\t\t\t-6\n#define LIBSSH2_ERROR_SOCKET_SEND\t\t\t\t-7\n#define LIBSSH2_ERROR_KEY_EXCHANGE_FAILURE\t\t-8\n#define LIBSSH2_ERROR_TIMEOUT\t\t\t\t\t-9\n#define LIBSSH2_ERROR_HOSTKEY_INIT\t\t\t\t-10\n#define LIBSSH2_ERROR_HOSTKEY_SIGN\t\t\t\t-11\n#define LIBSSH2_ERROR_DECRYPT\t\t\t\t\t-12\n#define LIBSSH2_ERROR_SOCKET_DISCONNECT\t\t\t-13\n#define LIBSSH2_ERROR_PROTO\t\t\t\t\t\t-14\n#define LIBSSH2_ERROR_PASSWORD_EXPIRED\t\t\t-15\n#define LIBSSH2_ERROR_FILE\t\t\t\t\t\t-16\n#define LIBSSH2_ERROR_METHOD_NONE\t\t\t\t-17\n#define LIBSSH2_ERROR_PUBLICKEY_UNRECOGNIZED\t-18\n#define LIBSSH2_ERROR_PUBLICKEY_UNVERIFIED\t\t-19\n#define LIBSSH2_ERROR_CHANNEL_OUTOFORDER\t\t-20\n#define LIBSSH2_ERROR_CHANNEL_FAILURE\t\t\t-21\n#define LIBSSH2_ERROR_CHANNEL_REQUEST_DENIED\t-22\n#define LIBSSH2_ERROR_CHANNEL_UNKNOWN\t\t\t-23\n#define LIBSSH2_ERROR_CHANNEL_WINDOW_EXCEEDED\t-24\n#define LIBSSH2_ERROR_CHANNEL_PACKET_EXCEEDED\t-25\n#define LIBSSH2_ERROR_CHANNEL_CLOSED\t\t\t-26\n#define LIBSSH2_ERROR_CHANNEL_EOF_SENT\t\t\t-27\n#define LIBSSH2_ERROR_SCP_PROTOCOL\t\t\t\t-28\n#define LIBSSH2_ERROR_ZLIB\t\t\t\t\t\t-29\n#define LIBSSH2_ERROR_SOCKET_TIMEOUT\t\t\t-30\n#define LIBSSH2_ERROR_SFTP_PROTOCOL\t\t\t\t-31\n#define LIBSSH2_ERROR_REQUEST_DENIED\t\t\t-32\n#define LIBSSH2_ERROR_METHOD_NOT_SUPPORTED\t\t-33\n#define LIBSSH2_ERROR_INVAL\t\t\t\t\t\t-34\n#define LIBSSH2_ERROR_INVALID_POLL_TYPE\t\t\t-35\n#define LIBSSH2_ERROR_PUBLICKEY_PROTOCOL\t\t-36\n\n/* Session API */\nLIBSSH2_API LIBSSH2_SESSION *libssh2_session_init_ex(LIBSSH2_ALLOC_FUNC((*my_alloc)), LIBSSH2_FREE_FUNC((*my_free)), LIBSSH2_REALLOC_FUNC((*my_realloc)), void *abstract);\n#define libssh2_session_init()\t\t\t\t\t\tlibssh2_session_init_ex(NULL, NULL, NULL, NULL)\nLIBSSH2_API void **libssh2_session_abstract(LIBSSH2_SESSION *session);\n/* Custom Read/Write functors */\nLIBSSH2_API void libssh2_session_set_user_info(LIBSSH2_SESSION *session, void *ui);\nLIBSSH2_API void libssh2_session_set_write(LIBSSH2_SESSION *session, void *callback);\nLIBSSH2_API void libssh2_session_set_read(LIBSSH2_SESSION *session, void *callback);\n\nLIBSSH2_API void *libssh2_session_callback_set(LIBSSH2_SESSION *session, int cbtype, void *callback);\nLIBSSH2_API int libssh2_banner_set(LIBSSH2_SESSION *session, const char *banner);\n\nLIBSSH2_API int libssh2_session_startup(LIBSSH2_SESSION *session, int socket);\nLIBSSH2_API int libssh2_session_disconnect_ex(LIBSSH2_SESSION *session, int reason, const char *description, const char *lang);\n#define libssh2_session_disconnect(session, description)\tlibssh2_session_disconnect_ex((session), SSH_DISCONNECT_BY_APPLICATION, (description), \"\")\nLIBSSH2_API void libssh2_session_free(LIBSSH2_SESSION *session);\n\nLIBSSH2_API const char *libssh2_hostkey_hash(LIBSSH2_SESSION *session, int hash_type);\n\nLIBSSH2_API int libssh2_session_method_pref(LIBSSH2_SESSION *session, int method_type, const char *prefs);\nLIBSSH2_API const char *libssh2_session_methods(LIBSSH2_SESSION *session, int method_type);\nLIBSSH2_API int libssh2_session_last_error(LIBSSH2_SESSION *session, char **errmsg, int *errmsg_len, int want_buf);\n\nLIBSSH2_API int libssh2_session_flag(LIBSSH2_SESSION *session, int flag, int value);\n\n/* Userauth API */\nLIBSSH2_API char *libssh2_userauth_list(LIBSSH2_SESSION *session, const char *username, unsigned int username_len);\nLIBSSH2_API int libssh2_userauth_authenticated(LIBSSH2_SESSION *session);\nLIBSSH2_API int libssh2_userauth_password_ex(LIBSSH2_SESSION *session, const char *username, unsigned int username_len, const char *password, unsigned int password_len, LIBSSH2_PASSWD_CHANGEREQ_FUNC((*passwd_change_cb)));\n#define libssh2_userauth_password(session, username, password)\tlibssh2_userauth_password_ex((session), (username), strlen(username), (password), strlen(password), NULL)\n\nLIBSSH2_API int libssh2_userauth_publickey_fromfile_ex(LIBSSH2_SESSION *session, const char *username, unsigned int username_len,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t const char *publickey, const char *privatekey,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t const char *passphrase);\n#define libssh2_userauth_publickey_fromfile(session, username, publickey, privatekey, passphrase)\t\\\n\t\tlibssh2_userauth_publickey_fromfile_ex((session), (username), strlen(username), (publickey), (privatekey), (passphrase))\nLIBSSH2_API int libssh2_userauth_hostbased_fromfile_ex(LIBSSH2_SESSION *session, const char *username, unsigned int username_len,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t const char *publickey, const char *privatekey,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t const char *passphrase,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t const char *hostname, unsigned int hostname_len,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t const char *local_username, unsigned int local_username_len);\n#define libssh2_userauth_hostbased_fromfile(session, username, publickey, privatekey, passphrase, hostname)\t\\\n\t\tlibssh2_userauth_hostbased_fromfile_ex((session), (username), strlen(username), (publickey), (privatekey), (passphrase), (hostname), strlen(hostname), (username), strlen(username))\n\n/*\n * response_callback is provided with filled by library prompts array,\n * but client must allocate and fill individual responses. Responses\n * array is already allocated. Responses data will be freed by libssh2\n * after callback return, but before subsequent callback invokation.\n */\nLIBSSH2_API int libssh2_userauth_keyboard_interactive_ex(LIBSSH2_SESSION* session, const char *username, unsigned int username_len,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t LIBSSH2_USERAUTH_KBDINT_RESPONSE_FUNC((*response_callback)));\n#define libssh2_userauth_keyboard_interactive(session, username, response_callback) \\\n        libssh2_userauth_keyboard_interactive_ex((session), (username), strlen(username), (response_callback))\n\nLIBSSH2_API int libssh2_poll(LIBSSH2_POLLFD *fds, unsigned int nfds, long timeout);\n\n/* Channel API */\n#define LIBSSH2_CHANNEL_WINDOW_DEFAULT\t65536\n#define LIBSSH2_CHANNEL_PACKET_DEFAULT\t16384\n#define LIBSSH2_CHANNEL_MINADJUST\t\t1024\n\n/* Extended Data Handling */\n#define LIBSSH2_CHANNEL_EXTENDED_DATA_NORMAL\t\t0\n#define LIBSSH2_CHANNEL_EXTENDED_DATA_IGNORE\t\t1\n#define LIBSSH2_CHANNEL_EXTENDED_DATA_MERGE\t\t\t2\n\n#define SSH_EXTENDED_DATA_STDERR 1\n\nLIBSSH2_API LIBSSH2_CHANNEL *libssh2_channel_open_ex(LIBSSH2_SESSION *session, const char *channel_type, unsigned int channel_type_len, unsigned int window_size, unsigned int packet_size, const char *message, unsigned int message_len);\n#define libssh2_channel_open_session(session)\tlibssh2_channel_open_ex((session), \"session\", sizeof(\"session\") - 1, LIBSSH2_CHANNEL_WINDOW_DEFAULT, LIBSSH2_CHANNEL_PACKET_DEFAULT, NULL, 0)\n\nLIBSSH2_API LIBSSH2_CHANNEL *libssh2_channel_direct_tcpip_ex(LIBSSH2_SESSION *session, char *host, int port, char *shost, int sport);\n#define libssh2_channel_direct_tcpip(session, host, port)\tlibssh2_channel_direct_tcpip_ex((session), (host), (port), \"127.0.0.1\", 22)\n\nLIBSSH2_API LIBSSH2_LISTENER *libssh2_channel_forward_listen_ex(LIBSSH2_SESSION *session, char *host, int port, int *bound_port, int queue_maxsize);\n#define libssh2_channel_forward_listen(session, port)\t\t\tlibssh2_channel_forward_listen_ex((session), NULL, (port), NULL, 16)\n\nLIBSSH2_API int libssh2_channel_forward_cancel(LIBSSH2_LISTENER *listener);\n\nLIBSSH2_API LIBSSH2_CHANNEL *libssh2_channel_forward_accept(LIBSSH2_LISTENER *listener);\n\nLIBSSH2_API int libssh2_channel_setenv_ex(LIBSSH2_CHANNEL *channel, char *varname, unsigned int varname_len, char *value, unsigned int value_len);\n#define libssh2_channel_setenv(channel, varname, value) libssh2_channel_setenv_ex((channel), (varname), strlen(varname), (value), strlen(value))\n\nLIBSSH2_API int libssh2_channel_request_pty_ex(LIBSSH2_CHANNEL *channel, char *term, unsigned int term_len, char *modes, unsigned int modes_len, int width, int height, int width_px, int height_px);\n#define libssh2_channel_request_pty(channel, term)\tlibssh2_channel_request_pty_ex((channel), (term), strlen(term), NULL, 0, LIBSSH2_TERM_WIDTH, LIBSSH2_TERM_HEIGHT, LIBSSH2_TERM_WIDTH_PX, LIBSSH2_TERM_HEIGHT_PX)\n\nLIBSSH2_API int libssh2_channel_x11_req_ex(LIBSSH2_CHANNEL *channel, int single_connection, char *auth_proto, char *auth_cookie, int screen_number);\n#define libssh2_channel_x11_req(channel, screen_number)\tlibssh2_channel_x11_req_ex((channel), 0, NULL, NULL, (screen_number))\n\nLIBSSH2_API int libssh2_channel_process_startup(LIBSSH2_CHANNEL *channel, const char *request, unsigned int request_len, const char *message, unsigned int message_len);\n#define libssh2_channel_shell(channel)\t\t\t\t\tlibssh2_channel_process_startup((channel), \"shell\", sizeof(\"shell\") - 1, NULL, 0)\n#define libssh2_channel_exec(channel, command)\t\t\tlibssh2_channel_process_startup((channel), \"exec\", sizeof(\"exec\") - 1, (command), strlen(command))\n#define libssh2_channel_subsystem(channel, subsystem)\tlibssh2_channel_process_startup((channel), \"subsystem\", sizeof(\"subsystem\") - 1, (subsystem), strlen(subsystem))\n\nLIBSSH2_API int libssh2_channel_read_ex(LIBSSH2_CHANNEL *channel, int stream_id, char *buf, size_t buflen);\n#define libssh2_channel_read(channel, buf, buflen)\t\t\t\t\tlibssh2_channel_read_ex((channel), 0, (char *)(buf), (buflen))\n#define libssh2_channel_read_stderr(channel, buf, buflen)\t\t\tlibssh2_channel_read_ex((channel), SSH_EXTENDED_DATA_STDERR, (buf), (buflen))\n\nLIBSSH2_API int libssh2_poll_channel_read(LIBSSH2_CHANNEL *channel, int extended);\n\nLIBSSH2_API unsigned long libssh2_channel_window_read_ex(LIBSSH2_CHANNEL *channel, unsigned long *read_avail, unsigned long *window_size_initial);\n#define libssh2_channel_window_read(channel)\t\t\tlibssh2_channel_window_read_ex((channel), NULL, NULL)\n\nLIBSSH2_API unsigned long libssh2_channel_receive_window_adjust(LIBSSH2_CHANNEL *channel, unsigned long adjustment, unsigned char force);\n\nLIBSSH2_API int libssh2_channel_write_ex(LIBSSH2_CHANNEL *channel, int stream_id, const char *buf, size_t buflen);\n#define libssh2_channel_write(channel, buf, buflen)\t\t\t\t\tlibssh2_channel_write_ex((channel), 0, (char *)(buf), (buflen))\n#define libssh2_channel_write_stderr(channel, buf, buflen)\t\t\tlibssh2_channel_write_ex((channel), SSH_EXTENDED_DATA_STDERR, (buf), (buflen))\n\nLIBSSH2_API unsigned long libssh2_channel_window_write_ex(LIBSSH2_CHANNEL *channel, unsigned long *window_size_initial);\n#define libssh2_channel_window_write(channel)\t\t\tlibssh2_channel_window_write_ex((channel), NULL)\n\nLIBSSH2_API void libssh2_channel_set_blocking(LIBSSH2_CHANNEL *channel, int blocking);\nLIBSSH2_API void libssh2_channel_handle_extended_data(LIBSSH2_CHANNEL *channel, int ignore_mode);\n/* libssh2_channel_ignore_extended_data() is defined below for BC with version 0.1\n * Future uses should use libssh2_channel_handle_extended_data() directly\n * if LIBSSH2_CHANNEL_EXTENDED_DATA_MERGE is passed, extended data will be read (FIFO) from the standard data channel\n */\n/* DEPRECATED */\n#define libssh2_channel_ignore_extended_data(channel, ignore)\t\tlibssh2_channel_handle_extended_data((channel), (ignore) ? LIBSSH2_CHANNEL_EXTENDED_DATA_IGNORE : LIBSSH2_CHANNEL_EXTENDED_DATA_NORMAL )\n\n#define LIBSSH2_CHANNEL_FLUSH_EXTENDED_DATA \t-1\n#define LIBSSH2_CHANNEL_FLUSH_ALL\t\t\t\t-2\nLIBSSH2_API int libssh2_channel_flush_ex(LIBSSH2_CHANNEL *channel, int streamid);\n#define libssh2_channel_flush(channel)\t\t\tlibssh2_channel_flush_ex((channel), 0)\n#define libssh2_channel_flush_stderr(channel)\tlibssh2_channel_flush_ex((channel), SSH_EXTENDED_DATA_STDERR)\nLIBSSH2_API int libssh2_channel_get_exit_status(LIBSSH2_CHANNEL* channel);\n\nLIBSSH2_API int libssh2_channel_send_eof(LIBSSH2_CHANNEL *channel);\nLIBSSH2_API int libssh2_channel_eof(LIBSSH2_CHANNEL *channel);\nLIBSSH2_API int libssh2_channel_close(LIBSSH2_CHANNEL *channel);\nLIBSSH2_API int libssh2_channel_wait_closed(LIBSSH2_CHANNEL *channel);\nLIBSSH2_API int libssh2_channel_free(LIBSSH2_CHANNEL *channel);\n\nLIBSSH2_API LIBSSH2_CHANNEL *libssh2_scp_recv(LIBSSH2_SESSION *session, const char *path, struct stat *sb);\nLIBSSH2_API LIBSSH2_CHANNEL *libssh2_scp_send_ex(LIBSSH2_SESSION *session, const char *path, int mode, size_t size, long mtime, long atime);\n#define libssh2_scp_send(session, path, mode, size)\t\t\t\t\tlibssh2_scp_send_ex((session), (path), (mode), (size), 0, 0)\n\nLIBSSH2_API int libssh2_base64_decode(LIBSSH2_SESSION *session, char **dest, unsigned int *dest_len, char *src, unsigned int src_len);\n\n#ifdef __cplusplus\n} /* extern \"C\" */\n#endif\n\n#endif /* LIBSSH2_H */\n"
  },
  {
    "path": "Example/libssh2_config.h",
    "content": "/* include/libssh2_config.h.  Generated by configure.  */\n/* include/libssh2_config.h.in.  Generated from configure.in by autoheader.  */\n\n/* Define to 1 if you have the <errno.h> header file. */\n#define HAVE_ERRNO_H 1\n\n/* Define to 1 if you have the <fcntl.h> header file. */\n#define HAVE_FCNTL_H 1\n\n/* Define to 1 if you have the `gettimeofday' function. */\n#define HAVE_GETTIMEOFDAY 1\n\n/* Define to 1 if you have the <inttypes.h> header file. */\n#define HAVE_INTTYPES_H 1\n\n/* Define to 1 if you have the <memory.h> header file. */\n#define HAVE_MEMORY_H 1\n\n/* Define to 1 if you have the `poll' function. */\n#define HAVE_POLL 1\n\n/* Define to 1 if you have the `select' function. */\n#define HAVE_SELECT 1\n\n/* Define to 1 if you have the <stdint.h> header file. */\n#define HAVE_STDINT_H 1\n\n/* Define to 1 if you have the <stdio.h> header file. */\n#define HAVE_STDIO_H 1\n\n/* Define to 1 if you have the <stdlib.h> header file. */\n#define HAVE_STDLIB_H 1\n\n/* Define to 1 if you have the <strings.h> header file. */\n#define HAVE_STRINGS_H 1\n\n/* Define to 1 if you have the <string.h> header file. */\n#define HAVE_STRING_H 1\n\n/* Define to 1 if you have the <sys/select.h> header file. */\n#define HAVE_SYS_SELECT_H 1\n\n/* Define to 1 if you have the <sys/stat.h> header file. */\n#define HAVE_SYS_STAT_H 1\n\n/* Define to 1 if you have the <sys/types.h> header file. */\n#define HAVE_SYS_TYPES_H 1\n\n/* Define to 1 if you have the <sys/uio.h> header file. */\n#define HAVE_SYS_UIO_H 1\n\n/* Define to 1 if you have the <unistd.h> header file. */\n#define HAVE_UNISTD_H 1\n\n/* Enable \"none\" cipher -- NOT RECOMMENDED */\n/* #undef LIBSSH2_CRYPT_NONE */\n\n/* Output connection layer debugging info to stderr */\n/* #undef LIBSSH2_DEBUG_CONNECTION */\n//#define LIBSSH2_DEBUG_CONNECTION\n\n/* Output failure events to stderr */\n/* #undef LIBSSH2_DEBUG_ERRORS */\n\n/* Output Key Exchange debugging info to stderr */\n/* #undef LIBSSH2_DEBUG_KEX */\n\n/* Output publickey subsystem debugging info to stderr */\n/* #undef LIBSSH2_DEBUG_PUBLICKEY */\n\n/* Output scp subsystem debugging info to stderr */\n/* #undef LIBSSH2_DEBUG_SCP */\n\n/* Output sftp subsystem debugging info to stderr */\n/* #undef LIBSSH2_DEBUG_SFTP */\n\n/* Output transport layer debugging info to stderr */\n/* #undef LIBSSH2_DEBUG_TRANSPORT */\n\n/* Output userauth layer debugging info to stderr */\n/* #undef LIBSSH2_DEBUG_USERAUTH */\n\n/* Enable newer diffie-hellman-group-exchange-sha1 syntax */\n#define LIBSSH2_DH_GEX_NEW 1\n\n/* Compile in zlib support */\n#define LIBSSH2_HAVE_ZLIB 1\n\n/* Enable \"none\" MAC -- NOT RECOMMENDED */\n/* #undef LIBSSH2_MAC_NONE */\n\n/* Define to the address where bug reports for this package should be sent. */\n#define PACKAGE_BUGREPORT \"sarag@libssh2.org\"\n\n/* Define to the full name of this package. */\n#define PACKAGE_NAME \"libssh2\"\n\n/* Define to the full name and version of this package. */\n#define PACKAGE_STRING \"libssh2 0.14\"\n\n/* Define to the one symbol short name of this package. */\n#define PACKAGE_TARNAME \"libssh2\"\n\n/* Define to the version of this package. */\n#define PACKAGE_VERSION \"0.14\"\n\n/* Define to 1 if you have the ANSI C header files. */\n#define STDC_HEADERS 1\n\n/* Define to 1 if your processor stores words with the most significant byte\n   first (like Motorola and SPARC, unlike Intel and VAX). */\n#define WORDS_BIGENDIAN 1\n\n/* Define to empty if `const' does not conform to ANSI C. */\n/* #undef const */\n"
  },
  {
    "path": "Example/libssh2_priv.h",
    "content": "/* Copyright (c) 2004-2007, Sara Golemon <sarag@libssh2.org>\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms,\n * with or without modification, are permitted provided\n * that the following conditions are met:\n *\n *   Redistributions of source code must retain the above\n *   copyright notice, this list of conditions and the\n *   following disclaimer.\n *\n *   Redistributions in binary form must reproduce the above\n *   copyright notice, this list of conditions and the following\n *   disclaimer in the documentation and/or other materials\n *   provided with the distribution.\n *\n *   Neither the name of the copyright holder nor the names\n *   of any other contributors may be used to endorse or\n *   promote products derived from this software without\n *   specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND\n * CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES,\n * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE\n * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY\n * OF SUCH DAMAGE.\n */\n\n#ifndef LIBSSH2_PRIV_H\n#define LIBSSH2_PRIV_H 1\n\n#define LIBSSH2_LIBRARY\n#include \"libssh2_config.h\"\n#include \"libssh2.h\"\n\n#include <stdio.h>\n\n#ifndef WIN32\n#include <sys/socket.h>\n#endif\n\n#ifdef LIBSSH2_LIBGCRYPT\n#include \"libgcrypt.h\"\n#else\n#include \"openssl.h\"\n#endif\n\n#define LIBSSH2_ALLOC(session, count)\t\t\t\t\t\t\t\tsession->alloc((count), &(session)->abstract)\n#define LIBSSH2_REALLOC(session, ptr, count)\t\t\t\t\t\t((ptr) ? session->realloc((ptr), (count), &(session)->abstract) : session->alloc((count), &(session)->abstract))\n#define LIBSSH2_FREE(session, ptr)\t\t\t\t\t\t\t\t\tsession->free((ptr), &(session)->abstract)\n\n#define LIBSSH2_IGNORE(session, data, datalen)\t\t\t\t\t\tsession->ssh_msg_ignore((session), (data), (datalen), &(session)->abstract)\n#define LIBSSH2_DEBUG(session, always_display, message, message_len, language, language_len)\t\\\n\t\t\t\tsession->ssh_msg_disconnect((session), (always_display), (message), (message_len), (language), (language_len), &(session)->abstract)\n#define LIBSSH2_DISCONNECT(session, reason, message, message_len, language, language_len)\t\\\n\t\t\t\tsession->ssh_msg_disconnect((session), (reason), (message), (message_len), (language), (language_len), &(session)->abstract)\n\n#define LIBSSH2_MACERROR(session, data, datalen)\t\t\t\t\tsession->macerror((session), (data), (datalen), &(session)->abstract)\n#define LIBSSH2_X11_OPEN(channel, shost, sport)\t\t\t\t\t\tchannel->session->x11(((channel)->session), (channel), (shost), (sport), (&(channel)->session->abstract))\n\n#define LIBSSH2_CHANNEL_CLOSE(session, channel)\t\t\t\t\t\tchannel->close_cb((session), &(session)->abstract, (channel), &(channel)->abstract)\n\n#define LIBSSH2_WRITE(session, buffer, length)\t\t\t\t\t\tsession->ssh_write((uint8_t *)buffer, length, session, session->userInfo)\n#define LIBSSH2_READ(session, buffer, length)\t\t\t\t\t\tsession->ssh_read((uint8_t *)buffer, length, session, session->userInfo)\n\ntypedef struct _LIBSSH2_KEX_METHOD\t\t\tLIBSSH2_KEX_METHOD;\ntypedef struct _LIBSSH2_HOSTKEY_METHOD\t\tLIBSSH2_HOSTKEY_METHOD;\ntypedef struct _LIBSSH2_MAC_METHOD\t\t\tLIBSSH2_MAC_METHOD;\ntypedef struct _LIBSSH2_CRYPT_METHOD\t\tLIBSSH2_CRYPT_METHOD;\ntypedef struct _LIBSSH2_COMP_METHOD\t\t\tLIBSSH2_COMP_METHOD;\n\ntypedef struct _LIBSSH2_PACKET\t\t\t\tLIBSSH2_PACKET;\ntypedef struct _LIBSSH2_PACKET_BRIGADE\t\tLIBSSH2_PACKET_BRIGADE;\ntypedef struct _LIBSSH2_CHANNEL_BRIGADE\t\tLIBSSH2_CHANNEL_BRIGADE;\n\nstruct _LIBSSH2_PACKET {\n\tunsigned char type;\n\n\t/* Unencrypted Payload (no type byte, no padding, just the facts ma'am) */\n\tunsigned char *data;\n\tunsigned long data_len;\n\n\t/* Where to start reading data from,\n\t * used for channel data that's been partially consumed */\n\tunsigned long data_head;\n\n\t/* Can the message be confirmed? */\n\tint mac;\n\n\tLIBSSH2_PACKET_BRIGADE *brigade;\n\n\tLIBSSH2_PACKET *next, *prev;\n};\n\nstruct _LIBSSH2_PACKET_BRIGADE {\n\tLIBSSH2_PACKET *head, *tail;\n};\n\ntypedef struct _libssh2_channel_data {\n\t/* Identifier */\n\tunsigned long id;\n\n\t/* Limits and restrictions */\n\tunsigned long window_size_initial, window_size, packet_size;\n\n\t/* Set to 1 when CHANNEL_CLOSE / CHANNEL_EOF sent/received */\n\tchar close, eof, extended_data_ignore_mode;\n} libssh2_channel_data;\n\nstruct _LIBSSH2_CHANNEL {\n\tunsigned char *channel_type;\n\tunsigned channel_type_len;\n\n\tint blocking;\n\n\t/* channel's program exit status */\n\tint exit_status;\n\n\tlibssh2_channel_data local, remote;\n\tunsigned long adjust_queue; /* Amount of bytes to be refunded to receive window (but not yet sent) */\n\n\tLIBSSH2_SESSION *session;\n\n\tLIBSSH2_CHANNEL *next, *prev;\n\n\tvoid *abstract;\n\tLIBSSH2_CHANNEL_CLOSE_FUNC((*close_cb));\n};\n\nstruct _LIBSSH2_CHANNEL_BRIGADE {\n\tLIBSSH2_CHANNEL *head, *tail;\n};\n\nstruct _LIBSSH2_LISTENER {\n\tLIBSSH2_SESSION *session;\n\n\tchar *host;\n\tint port;\n\n\tLIBSSH2_CHANNEL *queue;\n\tint queue_size;\n\tint queue_maxsize;\n\n\tLIBSSH2_LISTENER *prev, *next;\n};\n\ntypedef struct _libssh2_endpoint_data {\n\tunsigned char *banner;\n\n\tunsigned char *kexinit;\n\tunsigned long kexinit_len;\n\n\tLIBSSH2_CRYPT_METHOD *crypt;\n\tvoid *crypt_abstract;\n\n\tLIBSSH2_MAC_METHOD *mac;\n\tunsigned long seqno;\n\tvoid *mac_abstract;\n\n\tLIBSSH2_COMP_METHOD *comp;\n\tvoid *comp_abstract;\n\n\t/* Method Preferences -- NULL yields \"load order\" */\n\tchar *crypt_prefs;\n\tchar *mac_prefs;\n\tchar *comp_prefs;\n\tchar *lang_prefs;\n} libssh2_endpoint_data;\n\nstruct _LIBSSH2_SESSION {\n\t/* Memory management callbacks */\n\tvoid *abstract;\n\tLIBSSH2_ALLOC_FUNC((*alloc));\n\tLIBSSH2_REALLOC_FUNC((*realloc));\n\tLIBSSH2_FREE_FUNC((*free));\n\t\n\t/* Read/Write callbacks */\n\tLIBSSH2_WRITE_FUNC((*ssh_write));\n\tLIBSSH2_READ_FUNC((*ssh_read));\n\tvoid *userInfo;\n\t\n\t/* Other callbacks */\n\tLIBSSH2_IGNORE_FUNC((*ssh_msg_ignore));\n\tLIBSSH2_DEBUG_FUNC((*ssh_msg_debug));\n\tLIBSSH2_DISCONNECT_FUNC((*ssh_msg_disconnect));\n\tLIBSSH2_MACERROR_FUNC((*macerror));\n\tLIBSSH2_X11_OPEN_FUNC((*x11));\n\n\t/* Method preferences -- NULL yields \"load order\" */\n\tchar *kex_prefs;\n\tchar *hostkey_prefs;\n\n\tint state;\n\tint flags;\n\n\t/* Agreed Key Exchange Method */\n\tLIBSSH2_KEX_METHOD *kex;\n\tint burn_optimistic_kexinit:1;\n\n\tunsigned char *session_id;\n\tunsigned long session_id_len;\n\n\t/* Server's public key */\n\tLIBSSH2_HOSTKEY_METHOD *hostkey;\n\tvoid *server_hostkey_abstract;\n\n\t/* Either set with libssh2_session_hostkey() (for server mode)\n\t * Or read from server in (eg) KEXDH_INIT (for client mode)\n\t */\n\tunsigned char *server_hostkey;\n\tunsigned long server_hostkey_len;\n#if LIBSSH2_MD5\n\tunsigned char server_hostkey_md5[MD5_DIGEST_LENGTH];\n#endif /* ! LIBSSH2_MD5 */\n\tunsigned char server_hostkey_sha1[SHA_DIGEST_LENGTH];\n\n\t/* (remote as source of data -- packet_read ) */\n\tlibssh2_endpoint_data remote;\n\n\t/* (local as source of data -- packet_write ) */\n\tlibssh2_endpoint_data local;\n\n\t/* Inbound Data buffer -- Sometimes the packet that comes in isn't the packet we're ready for */\n\tLIBSSH2_PACKET_BRIGADE packets;\n\n\t/* Active connection channels */\n\tLIBSSH2_CHANNEL_BRIGADE channels;\n\tunsigned long next_channel;\n\n\tLIBSSH2_LISTENER *listeners;\n\n\t/* Actual I/O socket */\n\tint socket_fd;\n\tint socket_block;\n\tint socket_state;\n\n\t/* Error tracking */\n\tchar *err_msg;\n\tunsigned long err_msglen;\n\tint err_should_free;\n\tint err_code;\n};\n\n/* session.state bits */\n#define LIBSSH2_STATE_EXCHANGING_KEYS\t0x00000001\n#define LIBSSH2_STATE_NEWKEYS\t\t\t0x00000002\n#define LIBSSH2_STATE_AUTHENTICATED\t\t0x00000004\n\n/* session.flag helpers */\n#ifdef MSG_NOSIGNAL\n#define LIBSSH2_SOCKET_SEND_FLAGS(session)\t\t(((session)->flags & LIBSSH2_FLAG_SIGPIPE) ? 0 : MSG_NOSIGNAL)\n#define LIBSSH2_SOCKET_RECV_FLAGS(session)\t\t(((session)->flags & LIBSSH2_FLAG_SIGPIPE) ? 0 : MSG_NOSIGNAL)\n#else\n/* If MSG_NOSIGNAL isn't defined we're SOL on blocking SIGPIPE */\n#define LIBSSH2_SOCKET_SEND_FLAGS(session)\t\t0\n#define LIBSSH2_SOCKET_RECV_FLAGS(session)\t\t0\n#endif\n\n/* libssh2 extensible ssh api, ultimately I'd like to allow loading additional methods via .so/.dll */\n\nstruct _LIBSSH2_KEX_METHOD {\n\tconst char *name;\n\n\t/* Key exchange, populates session->* and returns 0 on success, non-0 on error */\n\tint (*exchange_keys)(LIBSSH2_SESSION *session);\n\n\tlong flags;\n};\n\nstruct _LIBSSH2_HOSTKEY_METHOD {\n\tconst char *name;\n\tunsigned long hash_len;\n\n\tint (*init)(LIBSSH2_SESSION *session, unsigned char *hostkey_data, unsigned long hostkey_data_len, void **abstract);\n\tint (*initPEM)(LIBSSH2_SESSION *session, const char *privkeyfile, unsigned const char *passphrase, void **abstract);\n\tint (*sig_verify)(LIBSSH2_SESSION *session, const unsigned char *sig, unsigned long sig_len, const unsigned char *m, unsigned long m_len, void **abstract);\n\tint (*signv)(LIBSSH2_SESSION *session, unsigned char **signature, unsigned long *signature_len, unsigned long veccount, const struct iovec datavec[], void **abstract);\n\tint (*encrypt)(LIBSSH2_SESSION *session, unsigned char **dst, unsigned long *dst_len, const unsigned char *src, unsigned long src_len, void **abstract);\n\tint (*dtor)(LIBSSH2_SESSION *session, void **abstract);\n};\n\nstruct _LIBSSH2_CRYPT_METHOD {\n\tconst char *name;\n\n\tint blocksize;\n\n\t/* iv and key sizes (-1 for variable length) */\n\tint iv_len;\n\tint secret_len;\n\n\tlong flags;\n\n\tint (*init)(LIBSSH2_SESSION *session, LIBSSH2_CRYPT_METHOD *method, unsigned char *iv, int *free_iv, unsigned char *secret, int *free_secret, int encrypt, void **abstract);\n\tint (*crypt)(LIBSSH2_SESSION *session, unsigned char *block, void **abstract);\n\tint (*dtor)(LIBSSH2_SESSION *session, void **abstract);\n\n\t_libssh2_cipher_type(algo);\n};\n\nstruct _LIBSSH2_COMP_METHOD {\n\tconst char *name;\n\n\tint (*init)(LIBSSH2_SESSION *session, int compress, void **abstract);\n\tint (*comp)(LIBSSH2_SESSION *session, int compress, unsigned char **dest, unsigned long *dest_len, unsigned long payload_limit, int *free_dest,\n\t\t\t\t\t\t\t\t\t\t\t\t  const unsigned char *src, unsigned long src_len, void **abstract);\n\tint (*dtor)(LIBSSH2_SESSION *session, int compress, void **abstract);\n};\n\nstruct _LIBSSH2_MAC_METHOD {\n\tconst char *name;\n\n\t/* The length of a given MAC packet */\n\tint mac_len;\n\n\t/* integrity key length */\n\tint key_len;\n\n\t/* Message Authentication Code Hashing algo */\n\tint (*init)(LIBSSH2_SESSION *session, unsigned char *key, int *free_key, void **abstract);\n\tint (*hash)(LIBSSH2_SESSION *session, unsigned char *buf, unsigned long seqno, const unsigned char *packet, unsigned long packet_len, const unsigned char *addtl, unsigned long addtl_len, void **abstract);\n\tint (*dtor)(LIBSSH2_SESSION *session, void **abstract);\n};\n\n#if defined(LIBSSH2_DEBUG_TRANSPORT) || defined(LIBSSH2_DEBUG_KEX) || defined(LIBSSH2_DEBUG_USERAUTH) || defined(LIBSSH2_DEBUG_CONNECTION) || defined(LIBSSH2_DEBUG_SCP) || defined(LIBSSH2_DEBUG_SFTP) || defined(LIBSSH2_DEBUG_ERRORS)\n#define LIBSSH2_DEBUG_ENABLED\n\n/* Internal debugging contexts -- Used with --enable-debug-* */\n#define LIBSSH2_DBG_TRANS\t\t\t\t\t\t1\n#define LIBSSH2_DBG_KEX\t\t\t\t\t\t\t2\n#define LIBSSH2_DBG_AUTH\t\t\t\t\t\t3\n#define LIBSSH2_DBG_CONN\t\t\t\t\t\t4\n#define LIBSSH2_DBG_SCP\t\t\t\t\t\t\t5\n#define LIBSSH2_DBG_SFTP\t\t\t\t\t\t6\n#define LIBSSH2_DBG_ERROR\t\t\t\t\t\t7\n#define LIBSSH2_DBG_PUBLICKEY\t\t\t\t\t8\n\nvoid _libssh2_debug(LIBSSH2_SESSION *session, int context, const char *format, ...);\n\n#endif /* LIBSSH2_DEBUG_ENABLED */\n\n#ifdef LIBSSH2_DEBUG_ERRORS\n#define libssh2_error(session, errcode, errmsg, should_free)\t\\\n{ \\\n\tif (session->err_msg && session->err_should_free) { \\\n\t\tLIBSSH2_FREE(session, session->err_msg); \\\n\t} \\\n\tsession->err_msg = errmsg; \\\n\tsession->err_msglen = strlen(errmsg); \\\n\tsession->err_should_free = should_free; \\\n\tsession->err_code = errcode; \\\n\t_libssh2_debug(session, LIBSSH2_DBG_ERROR, \"%d - %s\", session->err_code, session->err_msg); \\\n}\n\n#else /* ! LIBSSH2_DEBUG_ERRORS */\n\n#define libssh2_error(session, errcode, errmsg, should_free)\t\\\n{ \\\n\tif (session->err_msg && session->err_should_free) { \\\n\t\tLIBSSH2_FREE(session, session->err_msg); \\\n\t} \\\n\tsession->err_msg = errmsg; \\\n\tsession->err_msglen = strlen(errmsg); \\\n\tsession->err_should_free = should_free; \\\n\tsession->err_code = errcode; \\\n}\n\n#endif /* LIBSSH2_DEBUG_ENABLED */\n\n\n#define LIBSSH2_SOCKET_UNKNOWN\t\t\t\t\t 1\n#define LIBSSH2_SOCKET_CONNECTED\t\t\t\t 0\n#define LIBSSH2_SOCKET_DISCONNECTED\t\t\t\t-1\n\n/* Initial packet state, prior to MAC check */\n#define LIBSSH2_MAC_UNCONFIRMED\t\t\t\t\t 1\n/* When MAC type is \"none\" (proto initiation phase) all packets are deemed \"confirmed\" */\n#define LIBSSH2_MAC_CONFIRMED\t\t\t\t\t 0\n/* Something very bad is going on */\n#define LIBSSH2_MAC_INVALID\t\t\t\t\t\t-1\n\n/* SSH Packet Types -- Defined by internet draft */\n/* Transport Layer */\n#define SSH_MSG_DISCONNECT\t\t\t\t\t\t\t1\n#define SSH_MSG_IGNORE\t\t\t\t\t\t\t\t2\n#define SSH_MSG_UNIMPLEMENTED\t\t\t\t\t\t3\n#define SSH_MSG_DEBUG\t\t\t\t\t\t\t\t4\n#define SSH_MSG_SERVICE_REQUEST\t\t\t\t\t\t5\n#define SSH_MSG_SERVICE_ACCEPT\t\t\t\t\t\t6\n\n#define SSH_MSG_KEXINIT\t\t\t\t\t\t\t\t20\n#define SSH_MSG_NEWKEYS\t\t\t\t\t\t\t\t21\n\n/* diffie-hellman-group1-sha1 */\n#define SSH_MSG_KEXDH_INIT\t\t\t\t\t\t\t30\n#define SSH_MSG_KEXDH_REPLY\t\t\t\t\t\t\t31\n\n/* diffie-hellman-group-exchange-sha1 */\n#define SSH_MSG_KEX_DH_GEX_REQUEST_OLD\t\t\t\t30\n#define SSH_MSG_KEX_DH_GEX_REQUEST\t\t\t\t\t34\n#define SSH_MSG_KEX_DH_GEX_GROUP\t\t\t\t\t31\n#define SSH_MSG_KEX_DH_GEX_INIT\t\t\t\t\t\t32\n#define SSH_MSG_KEX_DH_GEX_REPLY\t\t\t\t\t33\n\n/* User Authentication */\n#define SSH_MSG_USERAUTH_REQUEST\t\t\t\t\t50\n#define SSH_MSG_USERAUTH_FAILURE\t\t\t\t\t51\n#define SSH_MSG_USERAUTH_SUCCESS\t\t\t\t\t52\n#define SSH_MSG_USERAUTH_BANNER\t\t\t\t\t\t53\n\n/* \"public key\" method */\n#define SSH_MSG_USERAUTH_PK_OK\t\t\t\t\t\t60\n/* \"password\" method */\n#define SSH_MSG_USERAUTH_PASSWD_CHANGEREQ\t\t\t60\n/* \"keyboard-interactive\" method */\n#define SSH_MSG_USERAUTH_INFO_REQUEST\t\t\t\t60\n#define SSH_MSG_USERAUTH_INFO_RESPONSE\t\t\t\t61\n\n/* Channels */\n#define SSH_MSG_GLOBAL_REQUEST\t\t\t\t\t\t80\n#define SSH_MSG_REQUEST_SUCCESS\t\t\t\t\t\t81\n#define SSH_MSG_REQUEST_FAILURE\t\t\t\t\t\t82\n\n#define SSH_MSG_CHANNEL_OPEN\t\t\t\t\t\t90\n#define SSH_MSG_CHANNEL_OPEN_CONFIRMATION\t\t\t91\n#define SSH_MSG_CHANNEL_OPEN_FAILURE\t\t\t\t92\n#define SSH_MSG_CHANNEL_WINDOW_ADJUST\t\t\t\t93\n#define SSH_MSG_CHANNEL_DATA\t\t\t\t\t\t94\n#define SSH_MSG_CHANNEL_EXTENDED_DATA\t\t\t\t95\n#define SSH_MSG_CHANNEL_EOF\t\t\t\t\t\t\t96\n#define SSH_MSG_CHANNEL_CLOSE\t\t\t\t\t\t97\n#define SSH_MSG_CHANNEL_REQUEST\t\t\t\t\t\t98\n#define SSH_MSG_CHANNEL_SUCCESS\t\t\t\t\t\t99\n#define SSH_MSG_CHANNEL_FAILURE\t\t\t\t\t\t100\n\nvoid libssh2_session_shutdown(LIBSSH2_SESSION *session);\n\nunsigned long libssh2_ntohu32(const unsigned char *buf);\nlibssh2_uint64_t libssh2_ntohu64(const unsigned char *buf);\nvoid libssh2_htonu32(unsigned char *buf, unsigned long val);\nvoid libssh2_htonu64(unsigned char *buf, libssh2_uint64_t val);\n\nint libssh2_packet_read(LIBSSH2_SESSION *session, int block);\nint libssh2_packet_ask_ex(LIBSSH2_SESSION *session, unsigned char packet_type, unsigned char **data, unsigned long *data_len, unsigned long match_ofs, const unsigned char *match_buf, unsigned long match_len, int poll_socket);\n#define libssh2_packet_ask(session, packet_type, data, data_len, poll_socket)\t\\\n\t\tlibssh2_packet_ask_ex((session), (packet_type), (data), (data_len), 0, NULL, 0, (poll_socket))\nint libssh2_packet_askv_ex(LIBSSH2_SESSION *session, unsigned char *packet_types, unsigned char **data, unsigned long *data_len, unsigned long match_ofs, const unsigned char *match_buf, unsigned long match_len, int poll_socket);\n#define libssh2_packet_askv(session, packet_types, data, data_len, poll_socket)\t\\\n\t\tlibssh2_packet_askv_ex((session), (packet_types), (data), (data_len), 0, NULL, 0, (poll_socket))\nint libssh2_packet_require_ex(LIBSSH2_SESSION *session, unsigned char packet_type, unsigned char **data, unsigned long *data_len, unsigned long match_ofs, const unsigned char *match_buf, unsigned long match_len);\n#define libssh2_packet_require(session, packet_type, data, data_len)\t\t\t\\\n\t\tlibssh2_packet_require_ex((session), (packet_type), (data), (data_len), 0, NULL, 0)\nint libssh2_packet_requirev_ex(LIBSSH2_SESSION *session, unsigned char *packet_types, unsigned char **data, unsigned long *data_len, unsigned long match_ofs, const unsigned char *match_buf, unsigned long match_len);\n#define libssh2_packet_requirev(session, packet_types, data, data_len)\t\t\t\\\n\t\tlibssh2_packet_requirev_ex((session), (packet_types), (data), (data_len), 0, NULL, 0)\nint libssh2_packet_burn(LIBSSH2_SESSION *session);\nint libssh2_packet_write(LIBSSH2_SESSION *session, unsigned char *data, unsigned long data_len);\nint libssh2_kex_exchange(LIBSSH2_SESSION *session, int reexchange);\nunsigned long libssh2_channel_nextid(LIBSSH2_SESSION *session);\nLIBSSH2_CHANNEL *libssh2_channel_locate(LIBSSH2_SESSION *session, unsigned long channel_id);\n\n/* Let crypt.c/hostkey.c/comp.c/mac.c expose their method structs */\nLIBSSH2_CRYPT_METHOD **libssh2_crypt_methods(void);\nLIBSSH2_HOSTKEY_METHOD **libssh2_hostkey_methods(void);\nLIBSSH2_COMP_METHOD **libssh2_comp_methods(void);\nLIBSSH2_MAC_METHOD **libssh2_mac_methods(void);\n\n/* Language API doesn't exist yet.  Just act like we've agreed on a language */\n#define libssh2_kex_agree_lang(session, endpoint, str, str_len)\t0\n\n/* pem.c */\nint _libssh2_pem_parse (LIBSSH2_SESSION *session,\n\t\t\tconst char *headerbegin,\n\t\t\tconst char *headerend,\n\t\t\tFILE *fp,\n\t\t\tchar **data, unsigned int *datalen);\nint _libssh2_pem_decode_sequence (unsigned char **data, unsigned int *datalen);\nint _libssh2_pem_decode_integer (unsigned char **data, unsigned int *datalen,\n\t\t\t\t unsigned char **i, unsigned int *ilen);\n\n#endif /* LIBSSH2_H */\n"
  },
  {
    "path": "Example/libssh2_publickey.h",
    "content": "/* Copyright (c) 2004-2006, Sara Golemon <sarag@libssh2.org>\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms,\n * with or without modification, are permitted provided\n * that the following conditions are met:\n *\n *   Redistributions of source code must retain the above\n *   copyright notice, this list of conditions and the\n *   following disclaimer.\n *\n *   Redistributions in binary form must reproduce the above\n *   copyright notice, this list of conditions and the following\n *   disclaimer in the documentation and/or other materials\n *   provided with the distribution.\n *\n *   Neither the name of the copyright holder nor the names\n *   of any other contributors may be used to endorse or\n *   promote products derived from this software without\n *   specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND\n * CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES,\n * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE\n * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY\n * OF SUCH DAMAGE.\n */\n\n/* Note: This include file is only needed for using the\n * publickey SUBSYSTEM which is not the same as publickey\n * authentication.  For authentication you only need libssh2.h\n *\n * For more information on the publickey subsystem,\n * refer to IETF draft: secsh-publickey\n */\n\n#ifndef LIBSSH2_PUBLICKEY_H\n#define LIBSSH2_PUBLICKEY_H\t1\n\ntypedef struct _LIBSSH2_PUBLICKEY\t\t\t\tLIBSSH2_PUBLICKEY;\n\ntypedef struct _libssh2_publickey_attribute {\n\tchar *name;\n\tunsigned long name_len;\n\tchar *value;\n\tunsigned long value_len;\n\tchar mandatory;\n} libssh2_publickey_attribute;\n\ntypedef struct _libssh2_publickey_list {\n\tunsigned char *packet; /* For freeing */\n\n\tunsigned char *name;\n\tunsigned long name_len;\n\tunsigned char *blob;\n\tunsigned long blob_len;\n\tunsigned long num_attrs;\n\tlibssh2_publickey_attribute *attrs; /* free me */\n} libssh2_publickey_list;\n\n/* Generally use the first macro here, but if both name and value are string literals, you can use _fast() to take advantage of preprocessing */\n#define libssh2_publickey_attribute(name, value, mandatory) \t\t{ (name), strlen(name), (value), strlen(value), (mandatory) },\n#define libssh2_publickey_attribute_fast(name, value, mandatory)\t{ (name), sizeof(name) - 1, (value), sizeof(value) - 1, (mandatory) },\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* Publickey Subsystem */\nLIBSSH2_API LIBSSH2_PUBLICKEY *libssh2_publickey_init(LIBSSH2_SESSION *session);\n\nLIBSSH2_API int libssh2_publickey_add_ex(LIBSSH2_PUBLICKEY *pkey, const unsigned char *name, unsigned long name_len,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst unsigned char *blob, unsigned long blob_len, char overwrite,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tunsigned long num_attrs, libssh2_publickey_attribute attrs[]);\n#define libssh2_publickey_add(pkey, name, blob, blob_len, overwrite, num_attrs, attrs) \\\n\t\tlibssh2_publickey_add_ex((pkey), (name), strlen(name), (blob), (blob_len), (overwrite), (num_attrs), (attrs))\n\nLIBSSH2_API int libssh2_publickey_remove_ex(LIBSSH2_PUBLICKEY *pkey, const unsigned char *name, unsigned long name_len,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst unsigned char *blob, unsigned long blob_len);\n#define libssh2_publickey_remove(pkey, name, blob, blob_len) \\\n\t\tlibssh2_publickey_remove_ex((pkey), (name), strlen(name), (blob), (blob_len))\n\nLIBSSH2_API int libssh2_publickey_list_fetch(LIBSSH2_PUBLICKEY *pkey, unsigned long *num_keys, libssh2_publickey_list **pkey_list);\nLIBSSH2_API void libssh2_publickey_list_free(LIBSSH2_PUBLICKEY *pkey, libssh2_publickey_list *pkey_list);\n\nLIBSSH2_API void libssh2_publickey_shutdown(LIBSSH2_PUBLICKEY *pkey);\n\n#ifdef __cplusplus\n} /* extern \"C\" */\n#endif\n\n#endif /* ndef: LIBSSH2_PUBLICKEY_H */\n"
  },
  {
    "path": "Example/libssh2_sftp.h",
    "content": "/* Copyright (c) 2004-2006, Sara Golemon <sarag@libssh2.org>\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms,\n * with or without modification, are permitted provided\n * that the following conditions are met:\n *\n *   Redistributions of source code must retain the above\n *   copyright notice, this list of conditions and the\n *   following disclaimer.\n *\n *   Redistributions in binary form must reproduce the above\n *   copyright notice, this list of conditions and the following\n *   disclaimer in the documentation and/or other materials\n *   provided with the distribution.\n *\n *   Neither the name of the copyright holder nor the names\n *   of any other contributors may be used to endorse or\n *   promote products derived from this software without\n *   specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND\n * CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES,\n * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE\n * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY\n * OF SUCH DAMAGE.\n */\n\n#ifndef LIBSSH2_SFTP_H\n#define LIBSSH2_SFTP_H 1\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* Note: Version 6 was documented at the time of writing\n * However it was marked as \"DO NOT IMPLEMENT\" due to pending changes\n *\n * Let's start with Version 3 (The version found in OpenSSH) and go from there\n */\n#define LIBSSH2_SFTP_VERSION\t\t3\n#define LIBSSH2_SFTP_PACKET_MAXLEN\t40000\n\ntypedef struct _LIBSSH2_SFTP\t\t\t\tLIBSSH2_SFTP;\ntypedef struct _LIBSSH2_SFTP_HANDLE\t\t\tLIBSSH2_SFTP_HANDLE;\ntypedef struct _LIBSSH2_SFTP_ATTRIBUTES\t\tLIBSSH2_SFTP_ATTRIBUTES;\n\n/* Flags for open_ex() */\n#define LIBSSH2_SFTP_OPENFILE\t\t\t0\n#define LIBSSH2_SFTP_OPENDIR\t\t\t1\n\n/* Flags for rename_ex() */\n#define LIBSSH2_SFTP_RENAME_OVERWRITE\t0x00000001\n#define LIBSSH2_SFTP_RENAME_ATOMIC\t\t0x00000002\n#define LIBSSH2_SFTP_RENAME_NATIVE\t\t0x00000004\n\n/* Flags for stat_ex() */\n#define LIBSSH2_SFTP_STAT\t\t\t\t0\n#define LIBSSH2_SFTP_LSTAT\t\t\t\t1\n#define LIBSSH2_SFTP_SETSTAT\t\t\t2\n\n/* Flags for symlink_ex() */\n#define LIBSSH2_SFTP_SYMLINK\t\t\t0\n#define LIBSSH2_SFTP_READLINK\t\t\t1\n#define LIBSSH2_SFTP_REALPATH\t\t\t2\n\n/* SFTP attribute flag bits */\n#define LIBSSH2_SFTP_ATTR_SIZE\t\t\t\t0x00000001\n#define LIBSSH2_SFTP_ATTR_UIDGID\t\t\t0x00000002\n#define LIBSSH2_SFTP_ATTR_PERMISSIONS\t\t0x00000004\n#define LIBSSH2_SFTP_ATTR_ACMODTIME\t\t\t0x00000008\n#define LIBSSH2_SFTP_ATTR_EXTENDED\t\t\t0x80000000\n\nstruct _LIBSSH2_SFTP_ATTRIBUTES {\n\t/* If flags & ATTR_* bit is set, then the value in this struct will be meaningful\n\t * Otherwise it should be ignored\n\t */\n\tunsigned long flags;\n\n\tlibssh2_uint64_t filesize;\n\tunsigned long uid, gid;\n\tunsigned long permissions;\n\tunsigned long atime, mtime;\n};\n\n/* SFTP filetypes */\n#define LIBSSH2_SFTP_TYPE_REGULAR\t\t\t1\n#define LIBSSH2_SFTP_TYPE_DIRECTORY\t\t\t2\n#define LIBSSH2_SFTP_TYPE_SYMLINK\t\t\t3\n#define LIBSSH2_SFTP_TYPE_SPECIAL\t\t\t4\n#define LIBSSH2_SFTP_TYPE_UNKNOWN\t\t\t5\n#define LIBSSH2_SFTP_TYPE_SOCKET\t\t\t6\n#define LIBSSH2_SFTP_TYPE_CHAR_DEVICE\t\t7\n#define LIBSSH2_SFTP_TYPE_BLOCK_DEVICE\t\t8\n#define LIBSSH2_SFTP_TYPE_FIFO\t\t\t\t9\n\n/*\n * Reproduce the POSIX file modes here for systems that are not\n * POSIX compliant.  \n *\n * These is used in \"permissions\" of \"struct _LIBSSH2_SFTP_ATTRIBUTES\"\n */\n/* File type */\n#define\tLIBSSH2_SFTP_S_IFMT\t\t\t0170000\t\t/* type of file mask */\n#define\tLIBSSH2_SFTP_S_IFIFO\t\t0010000\t\t/* named pipe (fifo) */\n#define\tLIBSSH2_SFTP_S_IFCHR\t\t0020000\t\t/* character special */\n#define\tLIBSSH2_SFTP_S_IFDIR\t\t0040000\t\t/* directory */\n#define\tLIBSSH2_SFTP_S_IFBLK\t\t0060000\t\t/* block special */\n#define\tLIBSSH2_SFTP_S_IFREG\t\t0100000\t\t/* regular */\n#define\tLIBSSH2_SFTP_S_IFLNK\t\t0120000\t\t/* symbolic link */\n#define\tLIBSSH2_SFTP_S_IFSOCK\t\t0140000\t\t/* socket */\n\n/* File mode */\n/* Read, write, execute/search by owner */\n#define\tLIBSSH2_SFTP_S_IRWXU\t\t0000700\t\t/* RWX mask for owner */\n#define\tLIBSSH2_SFTP_S_IRUSR\t\t0000400\t\t/* R for owner */\n#define\tLIBSSH2_SFTP_S_IWUSR\t\t0000200\t\t/* W for owner */\n#define\tLIBSSH2_SFTP_S_IXUSR\t\t0000100\t\t/* X for owner */\n/* Read, write, execute/search by group */\n#define\tLIBSSH2_SFTP_S_IRWXG\t\t0000070\t\t/* RWX mask for group */\n#define\tLIBSSH2_SFTP_S_IRGRP\t\t0000040\t\t/* R for group */\n#define\tLIBSSH2_SFTP_S_IWGRP\t\t0000020\t\t/* W for group */\n#define\tLIBSSH2_SFTP_S_IXGRP\t\t0000010\t\t/* X for group */\n/* Read, write, execute/search by others */\n#define\tLIBSSH2_SFTP_S_IRWXO\t\t0000007\t\t/* RWX mask for other */\n#define\tLIBSSH2_SFTP_S_IROTH\t\t0000004\t\t/* R for other */\n#define\tLIBSSH2_SFTP_S_IWOTH\t\t0000002\t\t/* W for other */\n#define\tLIBSSH2_SFTP_S_IXOTH\t\t0000001\t\t/* X for other */\n\n/* SFTP File Transfer Flags -- (e.g. flags parameter to sftp_open())\n * Danger will robinson... APPEND doesn't have any effect on OpenSSH servers */\n#define LIBSSH2_FXF_READ\t\t\t\t\t\t0x00000001\n#define LIBSSH2_FXF_WRITE\t\t\t\t\t\t0x00000002\n#define LIBSSH2_FXF_APPEND\t\t\t\t\t\t0x00000004\n#define LIBSSH2_FXF_CREAT\t\t\t\t\t\t0x00000008\n#define LIBSSH2_FXF_TRUNC\t\t\t\t\t\t0x00000010\n#define LIBSSH2_FXF_EXCL\t\t\t\t\t\t0x00000020\n\n/* SFTP Status Codes (returned by libssh2_sftp_last_error() ) */\n#define LIBSSH2_FX_OK\t\t\t\t\t\t0\n#define LIBSSH2_FX_EOF\t\t\t\t\t\t1\n#define LIBSSH2_FX_NO_SUCH_FILE\t\t\t\t2\n#define LIBSSH2_FX_PERMISSION_DENIED\t\t3\n#define LIBSSH2_FX_FAILURE\t\t\t\t\t4\n#define LIBSSH2_FX_BAD_MESSAGE\t\t\t\t5\n#define LIBSSH2_FX_NO_CONNECTION\t\t\t6\n#define LIBSSH2_FX_CONNECTION_LOST\t\t\t7\n#define LIBSSH2_FX_OP_UNSUPPORTED\t\t\t8\n#define LIBSSH2_FX_INVALID_HANDLE\t\t\t9\n#define LIBSSH2_FX_NO_SUCH_PATH\t\t\t\t10\n#define LIBSSH2_FX_FILE_ALREADY_EXISTS\t\t11\n#define LIBSSH2_FX_WRITE_PROTECT\t\t\t12\n#define LIBSSH2_FX_NO_MEDIA\t\t\t\t\t13\n#define LIBSSH2_FX_NO_SPACE_ON_FILESYSTEM\t14\n#define LIBSSH2_FX_QUOTA_EXCEEDED\t\t\t15\n#define LIBSSH2_FX_UNKNOWN_PRINCIPLE\t\t16\n#define LIBSSH2_FX_LOCK_CONFlICT\t\t\t17\n#define LIBSSH2_FX_DIR_NOT_EMPTY\t\t\t18\n#define LIBSSH2_FX_NOT_A_DIRECTORY\t\t\t19\n#define LIBSSH2_FX_INVALID_FILENAME\t\t\t20\n#define LIBSSH2_FX_LINK_LOOP\t\t\t\t21\n\n/* SFTP API */\nLIBSSH2_API LIBSSH2_SFTP *libssh2_sftp_init(LIBSSH2_SESSION *session);\nLIBSSH2_API int libssh2_sftp_shutdown(LIBSSH2_SFTP *sftp);\nLIBSSH2_API unsigned long libssh2_sftp_last_error(LIBSSH2_SFTP *sftp);\n\n/* File / Directory Ops */\nLIBSSH2_API LIBSSH2_SFTP_HANDLE *libssh2_sftp_open_ex(LIBSSH2_SFTP *sftp, char *filename, unsigned int filename_len, unsigned long flags, long mode, int open_type);\n#define libssh2_sftp_open(sftp, filename, flags, mode)\t\t\tlibssh2_sftp_open_ex((sftp), (char *)(filename), strlen((char *)filename), (flags), (mode), LIBSSH2_SFTP_OPENFILE)\n#define libssh2_sftp_opendir(sftp, path)\t\t\t\t\t\tlibssh2_sftp_open_ex((sftp), (char *)(path), strlen((char *)path), 0, 0, LIBSSH2_SFTP_OPENDIR)\n\nLIBSSH2_API size_t libssh2_sftp_read(LIBSSH2_SFTP_HANDLE *handle, char *buffer, size_t buffer_maxlen);\nLIBSSH2_API int libssh2_sftp_readdir(LIBSSH2_SFTP_HANDLE *handle, char *buffer, size_t buffer_maxlen, LIBSSH2_SFTP_ATTRIBUTES *attrs);\nLIBSSH2_API size_t libssh2_sftp_write(LIBSSH2_SFTP_HANDLE *handle, const char *buffer, size_t count);\n\nLIBSSH2_API int libssh2_sftp_close_handle(LIBSSH2_SFTP_HANDLE *handle);\n#define libssh2_sftp_close(handle)\t\t\t\t\tlibssh2_sftp_close_handle(handle)\n#define libssh2_sftp_closedir(handle)\t\t\t\tlibssh2_sftp_close_handle(handle)\n\nLIBSSH2_API void libssh2_sftp_seek(LIBSSH2_SFTP_HANDLE *handle, size_t offset);\n#define libssh2_sftp_rewind(handle)\t\t\tlibssh2_sftp_seek((handle), 0)\n\nLIBSSH2_API size_t libssh2_sftp_tell(LIBSSH2_SFTP_HANDLE *handle);\n\nLIBSSH2_API int libssh2_sftp_fstat_ex(LIBSSH2_SFTP_HANDLE *handle, LIBSSH2_SFTP_ATTRIBUTES *attrs, int setstat);\n#define libssh2_sftp_fstat(handle, attrs)\t\t\t\tlibssh2_sftp_fstat_ex((handle), (attrs), 0)\n#define libssh2_sftp_fsetstat(handle, attrs)\t\t\tlibssh2_sftp_fstat_ex((handle), (attrs), 1)\n\n\n\n/* Miscellaneous Ops */\nLIBSSH2_API int libssh2_sftp_rename_ex(LIBSSH2_SFTP *sftp,\tchar *source_filename,\tunsigned int srouce_filename_len,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tchar *dest_filename,\tunsigned int dest_filename_len,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlong flags);\n#define libssh2_sftp_rename(sftp, sourcefile, destfile)\t\tlibssh2_sftp_rename_ex((sftp), (sourcefile), strlen(sourcefile), (destfile), strlen(destfile), \\\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tLIBSSH2_SFTP_RENAME_OVERWRITE | LIBSSH2_SFTP_RENAME_ATOMIC | LIBSSH2_SFTP_RENAME_NATIVE)\n\nLIBSSH2_API int libssh2_sftp_unlink_ex(LIBSSH2_SFTP *sftp, char *filename, unsigned int filename_len);\n#define libssh2_sftp_unlink(sftp, filename)\t\t\t\t\tlibssh2_sftp_unlink_ex((sftp), (filename), strlen(filename))\n\nLIBSSH2_API int libssh2_sftp_mkdir_ex(LIBSSH2_SFTP *sftp, char *path, unsigned int path_len, long mode);\n#define libssh2_sftp_mkdir(sftp, path, mode)\t\t\t\tlibssh2_sftp_mkdir_ex((sftp), (char *)(path), strlen((char *)path), (mode))\n\nLIBSSH2_API int libssh2_sftp_rmdir_ex(LIBSSH2_SFTP *sftp, char *path, unsigned int path_len);\n#define libssh2_sftp_rmdir(sftp, path)\t\t\t\t\t\tlibssh2_sftp_rmdir_ex((sftp), (path), strlen(path))\n\nLIBSSH2_API int libssh2_sftp_stat_ex(LIBSSH2_SFTP *sftp, char *path, unsigned int path_len, int stat_type, LIBSSH2_SFTP_ATTRIBUTES *attrs);\n#define libssh2_sftp_stat(sftp, path, attrs)\t\t\t\tlibssh2_sftp_stat_ex((sftp), (path), strlen(path), LIBSSH2_SFTP_STAT, (attrs))\n#define libssh2_sftp_lstat(sftp, path, attrs)\t\t\t\tlibssh2_sftp_stat_ex((sftp), (path), strlen(path), LIBSSH2_SFTP_LSTAT, (attrs))\n#define libssh2_sftp_setstat(sftp, path, attrs)\t\t\t\tlibssh2_sftp_stat_ex((sftp), (path), strlen(path), LIBSSH2_SFTP_SETSTAT, (attrs))\n\nLIBSSH2_API int libssh2_sftp_symlink_ex(LIBSSH2_SFTP *sftp, const char *path, unsigned int path_len, char *target, unsigned int target_len, int link_type);\n#define libssh2_sftp_symlink(sftp, orig, linkpath)\t\t\tlibssh2_sftp_symlink_ex((sftp), (orig), strlen(orig), (linkpath), strlen(linkpath), LIBSSH2_SFTP_SYMLINK)\n#define libssh2_sftp_readlink(sftp, path, target, maxlen)\tlibssh2_sftp_symlink_ex((sftp), (path), strlen(path), (target), (maxlen), LIBSSH2_SFTP_READLINK)\n#define libssh2_sftp_realpath(sftp, path, target, maxlen)\tlibssh2_sftp_symlink_ex((sftp), (path), strlen(path), (target), (maxlen), LIBSSH2_SFTP_REALPATH)\n\n#ifdef __cplusplus\n} /* extern \"C\" */\n#endif\n\n#endif /* LIBSSH2_SFTP_H */\n"
  },
  {
    "path": "Example/mac.c",
    "content": "/* Copyright (c) 2004-2007, Sara Golemon <sarag@libssh2.org>\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms,\n * with or without modification, are permitted provided\n * that the following conditions are met:\n *\n *   Redistributions of source code must retain the above\n *   copyright notice, this list of conditions and the\n *   following disclaimer.\n *\n *   Redistributions in binary form must reproduce the above\n *   copyright notice, this list of conditions and the following\n *   disclaimer in the documentation and/or other materials\n *   provided with the distribution.\n *\n *   Neither the name of the copyright holder nor the names\n *   of any other contributors may be used to endorse or\n *   promote products derived from this software without\n *   specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND\n * CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES,\n * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE\n * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY\n * OF SUCH DAMAGE.\n */\n\n#include \"libssh2_priv.h\"\n\n#ifdef LIBSSH2_MAC_NONE\n/* {{{ libssh2_mac_none_MAC\n * Minimalist MAC: No MAC\n */\nstatic int libssh2_mac_none_MAC(LIBSSH2_SESSION *session, unsigned char *buf, unsigned long seqno, \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t  const unsigned char *packet, unsigned long packet_len,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t  const unsigned char *addtl, unsigned long addtl_len, void **abstract)\n{\n\treturn 0;\n}\n/* }}} */\n\n\nstatic LIBSSH2_MAC_METHOD libssh2_mac_method_none = {\n\t\"none\",\n\t0,\n\t0,\n\tNULL,\n\tlibssh2_mac_none_MAC,\n\tNULL\n};\n#endif /* LIBSSH2_MAC_NONE */\n\n/* {{{ libssh2_mac_method_common_init\n * Initialize simple mac methods\n */\nstatic int libssh2_mac_method_common_init(LIBSSH2_SESSION *session, unsigned char *key, int *free_key, void **abstract)\n{\n\t*abstract = key;\n\t*free_key = 0;\n\t(void)session;\n\n\treturn 0;\n}\n/* }}} */\n\n/* {{{ libssh2_mac_method_common_dtor\n * Cleanup simple mac methods\n */\nstatic int libssh2_mac_method_common_dtor(LIBSSH2_SESSION *session, void **abstract)\n{\n\tif (*abstract) {\n\t\tLIBSSH2_FREE(session, *abstract);\n\t}\n\t*abstract = NULL;\n\n\treturn 0;\n}\n/* }}} */\n\n/* {{{ libssh2_mac_method_hmac_sha1_hash\n * Calculate hash using full sha1 value\n */\nstatic int libssh2_mac_method_hmac_sha1_hash(LIBSSH2_SESSION *session, unsigned char *buf, unsigned long seqno,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   const unsigned char *packet, unsigned long packet_len, \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   const unsigned char *addtl, unsigned long addtl_len, void **abstract)\n{\n\tlibssh2_hmac_ctx ctx;\n\tunsigned char seqno_buf[4];\n\t(void)session;\n\n\tlibssh2_htonu32(seqno_buf, seqno);\n\n\tlibssh2_hmac_sha1_init(&ctx, *abstract, 20);\n\tlibssh2_hmac_update(ctx, seqno_buf, 4);\n\tlibssh2_hmac_update(ctx, packet, packet_len);\n\tif (addtl && addtl_len) {\n\t\tlibssh2_hmac_update(ctx, addtl, addtl_len);\n\t}\n\tlibssh2_hmac_final(ctx, buf);\n\tlibssh2_hmac_cleanup(&ctx);\n\n\treturn 0;\n}\n/* }}} */\n\nstatic LIBSSH2_MAC_METHOD libssh2_mac_method_hmac_sha1 = {\n\t\"hmac-sha1\",\n\t20,\n\t20,\n\tlibssh2_mac_method_common_init,\n\tlibssh2_mac_method_hmac_sha1_hash,\n\tlibssh2_mac_method_common_dtor,\n};\n\n/* {{{ libssh2_mac_method_hmac_sha1_96_hash\n * Calculate hash using first 96 bits of sha1 value\n */\nstatic int libssh2_mac_method_hmac_sha1_96_hash(LIBSSH2_SESSION *session, unsigned char *buf, unsigned long seqno,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  const unsigned char *packet, unsigned long packet_len, \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  const unsigned char *addtl, unsigned long addtl_len, void **abstract)\n{\n\tunsigned char temp[SHA_DIGEST_LENGTH];\n\n\tlibssh2_mac_method_hmac_sha1_hash(session, temp, seqno, packet, packet_len, addtl, addtl_len, abstract);\n\tmemcpy(buf, (char *)temp, 96 / 8);\n\n\treturn 0;\n}\n/* }}} */\n\nstatic LIBSSH2_MAC_METHOD libssh2_mac_method_hmac_sha1_96 = {\n\t\"hmac-sha1-96\",\n\t12,\n\t20,\n\tlibssh2_mac_method_common_init,\n\tlibssh2_mac_method_hmac_sha1_96_hash,\n\tlibssh2_mac_method_common_dtor,\n};\n\n/* {{{ libssh2_mac_method_hmac_md5_hash\n * Calculate hash using full md5 value\n */\nstatic int libssh2_mac_method_hmac_md5_hash(LIBSSH2_SESSION *session, unsigned char *buf, unsigned long seqno,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  const unsigned char *packet, unsigned long packet_len, \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  const unsigned char *addtl, unsigned long addtl_len, void **abstract)\n{\n\tlibssh2_hmac_ctx ctx;\n\tunsigned char seqno_buf[4];\n\t(void)session;\n\n\tlibssh2_htonu32(seqno_buf, seqno);\n\n\tlibssh2_hmac_md5_init(&ctx, *abstract, 16);\n\tlibssh2_hmac_update(ctx, seqno_buf, 4);\n\tlibssh2_hmac_update(ctx, packet, packet_len);\n\tif (addtl && addtl_len) {\n\t\tlibssh2_hmac_update(ctx, addtl, addtl_len);\n\t}\n\tlibssh2_hmac_final(ctx, buf);\n\tlibssh2_hmac_cleanup(&ctx);\n\n\treturn 0;\n}\n/* }}} */\n\nstatic LIBSSH2_MAC_METHOD libssh2_mac_method_hmac_md5 = {\n\t\"hmac-md5\",\n\t16,\n\t16,\n\tlibssh2_mac_method_common_init,\n\tlibssh2_mac_method_hmac_md5_hash,\n\tlibssh2_mac_method_common_dtor,\n};\n\n/* {{{ libssh2_mac_method_hmac_md5_96_hash\n * Calculate hash using first 96 bits of md5 value\n */\nstatic int libssh2_mac_method_hmac_md5_96_hash(LIBSSH2_SESSION *session, unsigned char *buf, unsigned long seqno,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t const unsigned char *packet, unsigned long packet_len,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t const unsigned char *addtl, unsigned long addtl_len, void **abstract)\n{\n\tunsigned char temp[MD5_DIGEST_LENGTH];\n\n\tlibssh2_mac_method_hmac_md5_hash(session, temp, seqno, packet, packet_len, addtl, addtl_len, abstract);\n\tmemcpy(buf, (char *)temp, 96 / 8);\n\n\treturn 0;\n}\n/* }}} */\n\nstatic LIBSSH2_MAC_METHOD libssh2_mac_method_hmac_md5_96 = {\n\t\"hmac-md5-96\",\n\t12,\n\t16,\n\tlibssh2_mac_method_common_init,\n\tlibssh2_mac_method_hmac_md5_96_hash,\n\tlibssh2_mac_method_common_dtor,\n};\n\n#if LIBSSH2_HMAC_RIPEMD\n/* {{{ libssh2_mac_method_hmac_ripemd160_hash\n * Calculate hash using ripemd160 value\n */\nstatic int libssh2_mac_method_hmac_ripemd160_hash(LIBSSH2_SESSION *session, unsigned char *buf, unsigned long seqno,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst unsigned char *packet, unsigned long packet_len,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst unsigned char *addtl, unsigned long addtl_len, void **abstract)\n{\n\tlibssh2_hmac_ctx ctx;\n\tunsigned char seqno_buf[4];\n\t(void)session;\n\n\tlibssh2_htonu32(seqno_buf, seqno);\n\n\tlibssh2_hmac_ripemd160_init(&ctx, *abstract, 20);\n\tlibssh2_hmac_update(ctx, seqno_buf, 4);\n\tlibssh2_hmac_update(ctx, packet, packet_len);\n\tif (addtl && addtl_len) {\n\t\tlibssh2_hmac_update(ctx, addtl, addtl_len);\n\t}\n\tlibssh2_hmac_final(ctx, buf);\n\tlibssh2_hmac_cleanup(&ctx);\n\n\treturn 0;\n}\n/* }}} */\n\nstatic LIBSSH2_MAC_METHOD libssh2_mac_method_hmac_ripemd160 = {\n\t\"hmac-ripemd160\",\n\t20,\n\t20,\n\tlibssh2_mac_method_common_init,\n\tlibssh2_mac_method_hmac_ripemd160_hash,\n\tlibssh2_mac_method_common_dtor,\n};\n\nstatic LIBSSH2_MAC_METHOD libssh2_mac_method_hmac_ripemd160_openssh_com = {\n\t\"hmac-ripemd160@openssh.com\",\n\t20,\n\t20,\n\tlibssh2_mac_method_common_init,\n\tlibssh2_mac_method_hmac_ripemd160_hash,\n\tlibssh2_mac_method_common_dtor,\n};\n#endif /* LIBSSH2_HMAC_RIPEMD */\n\nstatic LIBSSH2_MAC_METHOD *_libssh2_mac_methods[] = {\n\t&libssh2_mac_method_hmac_sha1,\n\t&libssh2_mac_method_hmac_sha1_96,\n\t&libssh2_mac_method_hmac_md5,\n\t&libssh2_mac_method_hmac_md5_96,\n#ifdef LIBSSH2_HMAC_RIPEMD\n\t&libssh2_mac_method_hmac_ripemd160,\n\t&libssh2_mac_method_hmac_ripemd160_openssh_com,\n#endif /* LIBSSH2_HMAC_RIPEMD */\n#ifdef LIBSSH2_MAC_NONE\n\t&libssh2_mac_method_none,\n#endif /* LIBSSH2_MAC_NONE */\n\tNULL\n};\n\nLIBSSH2_MAC_METHOD **libssh2_mac_methods(void) {\n\treturn _libssh2_mac_methods;\n}\n\n"
  },
  {
    "path": "Example/main.m",
    "content": "//\n//  main.m\n//  FTPConnection\n//\n//  Created by Greg Hulands on 3/12/04.\n//  Copyright __MyCompanyName__ 2004. All rights reserved.\n//\n\n#import <Cocoa/Cocoa.h>\n\nint main(int argc, char *argv[])\n{\n    return NSApplicationMain(argc,  (const char **) argv);\n}\n"
  },
  {
    "path": "Example/misc.c",
    "content": "/* Copyright (c) 2004-2006, Sara Golemon <sarag@libssh2.org>\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms,\n * with or without modification, are permitted provided\n * that the following conditions are met:\n *\n *   Redistributions of source code must retain the above\n *   copyright notice, this list of conditions and the\n *   following disclaimer.\n *\n *   Redistributions in binary form must reproduce the above\n *   copyright notice, this list of conditions and the following\n *   disclaimer in the documentation and/or other materials\n *   provided with the distribution.\n *\n *   Neither the name of the copyright holder nor the names\n *   of any other contributors may be used to endorse or\n *   promote products derived from this software without\n *   specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND\n * CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES,\n * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE\n * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY\n * OF SUCH DAMAGE.\n */\n\n#include \"libssh2_priv.h\"\n\n/* {{{ libssh2_ntohu32\n */\nunsigned long libssh2_ntohu32(const unsigned char *buf)\n{\n\treturn (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3];\n}\n/* }}} */\n\n/* {{{ libssh2_ntohu64\n * Note: Some 32-bit platforms have issues with bitops on long longs\n * Work around this by doing expensive (but safer) arithmetic ops with optimization defying parentheses\n */\nlibssh2_uint64_t libssh2_ntohu64(const unsigned char *buf)\n{\n\tunsigned long msl, lsl;\n\n\tmsl = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3];\n\tlsl = (buf[4] << 24) | (buf[5] << 16) | (buf[6] << 8) | buf[7];\n\n\treturn ((msl * 65536) * 65536) + lsl;\n}\n/* }}} */\n\n/* {{{ libssh2_htonu32\n */\nvoid libssh2_htonu32(unsigned char *buf, unsigned long value)\n{\n\tbuf[0] = (value >> 24) & 0xFF;\n\tbuf[1] = (value >> 16) & 0xFF;\n\tbuf[2] = (value >> 8) & 0xFF;\n\tbuf[3] = value & 0xFF;\n}\n/* }}} */\n\n/* {{{ libssh2_htonu64\n */\nvoid libssh2_htonu64(unsigned char *buf, libssh2_uint64_t value)\n{\n\tunsigned long msl = (value / 65536) / 65536;\n\n\tbuf[0] = (msl >> 24) & 0xFF;\n\tbuf[1] = (msl >> 16) & 0xFF;\n\tbuf[2] = (msl >> 8) & 0xFF;\n\tbuf[3] = msl & 0xFF;\n\n\tbuf[4] = (value >> 24) & 0xFF;\n\tbuf[5] = (value >> 16) & 0xFF;\n\tbuf[6] = (value >> 8) & 0xFF;\n\tbuf[7] = value & 0xFF;\n}\n/* }}} */\n\n/* Base64 Conversion */\n\n/* {{{ */\nstatic const char libssh2_base64_table[] =\n    { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n      'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',\n      'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',\n      'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',\n      '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/', '\\0'\n    };\n\nstatic const char libssh2_base64_pad = '=';\n\nstatic const short libssh2_base64_reverse_table[256] = {\n    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63,\n    52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1,\n    -1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,\n    15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,\n    -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,\n    41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1,\n    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1\n};\n/* }}} */\n\n\n/* {{{ libssh2_base64_decode\n * Decode a base64 chunk and store it into a newly alloc'd buffer\n */\nLIBSSH2_API int libssh2_base64_decode(LIBSSH2_SESSION *session, char **data, unsigned int *datalen,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tchar *src, unsigned int src_len)\n{\n\tunsigned char *s, *d;\n\tshort v;\n\tint i = 0, len = 0;\n\n\t*data = LIBSSH2_ALLOC(session, (3 * src_len / 4) + 1);\n\td = (unsigned char *)*data;\n\tif (!d) {\n\t\treturn -1;\n\t}\n\n\tfor(s = (unsigned char *)src; ((char*)s) < (src + src_len); s++) {\n\t\tif ((v = libssh2_base64_reverse_table[*s]) < 0) continue;\n\t\tswitch (i % 4) {\n\t\t\tcase 0:\n\t\t\t\td[len] = v << 2;\n\t\t\t\tbreak;\n\t\t\tcase 1:\n\t\t\t\td[len++] |= v >> 4;\n\t\t\t\td[len] = v << 4;\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\td[len++] |= v >> 2;\n\t\t\t\td[len] = v << 6;\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\td[len++] |= v;\n\t\t\t\tbreak;\n\t\t}\n\t\ti++;\n\t}\n\tif ((i % 4) == 1) {\n\t\t/* Invalid -- We have a byte which belongs exclusively to a partial octet */\n\t\tLIBSSH2_FREE(session, *data);\n\t\treturn -1;\n\t}\n\n\t*datalen = len;\n\treturn 0;\n}\n/* }}} */\n\n#ifdef LIBSSH2_DEBUG_ENABLED\n/* {{{ _libssh2_debug\n * Internal debug logging facility\n * Just writes to stderr until a good reason comes up to support anything else\n */\nvoid _libssh2_debug(LIBSSH2_SESSION *session, int context, const char *format, ...)\n{\n\tchar buffer[1536];\n\tint len;\n\tva_list vargs;\n\tchar *contexts[9] = {\t\"Unknown\",\n\t\t\t\t\t\t\t\"Transport\",\n\t\t\t\t\t\t\t\"Key Exhange\",\n\t\t\t\t\t\t\t\"Userauth\",\n\t\t\t\t\t\t\t\"Connection\",\n\t\t\t\t\t\t\t\"scp\",\n\t\t\t\t\t\t\t\"SFTP Subsystem\",\n\t\t\t\t\t\t\t\"Failure Event\",\n\t\t\t\t\t\t\t\"Publickey Subsystem\",\n\t\t\t\t\t\t };\n\n\tif (context < 1 || context > 8) {\n\t\tcontext = 0;\n\t}\n\n\tlen = snprintf(buffer, 1535, \"[libssh2] %s(%d): \", contexts[context], session->socket_fd);\n\n\tva_start(vargs, format);\n\tlen += vsnprintf(buffer + len, 1535 - len, format, vargs);\n\tbuffer[len] = '\\n';\n\tva_end(vargs);\n\twrite(2, buffer, len + 1);\n}\n/* }}} */\n#endif\n"
  },
  {
    "path": "Example/openssl.c",
    "content": "/* Copyright (C) 2006, 2007 The Written Word, Inc.  All rights reserved.\n * Author: Simon Josefsson\n * Copyright (c) 2004-2006, Sara Golemon <sarag@libssh2.org>\n *\n * Redistribution and use in source and binary forms,\n * with or without modification, are permitted provided\n * that the following conditions are met:\n *\n *   Redistributions of source code must retain the above\n *   copyright notice, this list of conditions and the\n *   following disclaimer.\n *\n *   Redistributions in binary form must reproduce the above\n *   copyright notice, this list of conditions and the following\n *   disclaimer in the documentation and/or other materials\n *   provided with the distribution.\n *\n *   Neither the name of the copyright holder nor the names\n *   of any other contributors may be used to endorse or\n *   promote products derived from this software without\n *   specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND\n * CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES,\n * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE\n * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY\n * OF SUCH DAMAGE.\n */\n\n#include \"libssh2_priv.h\"\n#include <string.h>\n\nint _libssh2_rsa_new(libssh2_rsa_ctx **rsa,\n\t\t     const unsigned char *edata,\n\t\t     unsigned long elen,\n\t\t     const unsigned char *ndata,\n\t\t     unsigned long nlen,\n\t\t     const unsigned char *ddata,\n\t\t     unsigned long dlen,\n\t\t     const unsigned char *pdata,\n\t\t     unsigned long plen,\n\t\t     const unsigned char *qdata,\n\t\t     unsigned long qlen,\n\t\t     const unsigned char *e1data,\n\t\t     unsigned long e1len,\n\t\t     const unsigned char *e2data,\n\t\t     unsigned long e2len,\n\t\t     const unsigned char *coeffdata,\n\t\t     unsigned long coefflen)\n{\n\t*rsa = RSA_new();\n\n\t(*rsa)->e = BN_new();\n\tBN_bin2bn(edata, elen, (*rsa)->e);\n\n\t(*rsa)->n = BN_new();\n\tBN_bin2bn(ndata, nlen, (*rsa)->n);\n\n\tif (ddata)\n\t  {\n\t    (*rsa)->d = BN_new();\n\t    BN_bin2bn(ddata, dlen, (*rsa)->d);\n\n\t    (*rsa)->p = BN_new();\n\t    BN_bin2bn(pdata, plen, (*rsa)->p);\n\n\t    (*rsa)->q = BN_new();\n\t    BN_bin2bn(qdata, qlen, (*rsa)->q);\n\n\t    (*rsa)->dmp1 = BN_new();\n\t    BN_bin2bn(e1data, e1len, (*rsa)->dmp1);\n\n\t    (*rsa)->dmq1 = BN_new();\n\t    BN_bin2bn(e2data, e2len, (*rsa)->dmq1);\n\n\t    (*rsa)->iqmp = BN_new();\n\t    BN_bin2bn(coeffdata, coefflen, (*rsa)->iqmp);\n\t  }\n\treturn 0;\n}\n\nint _libssh2_rsa_sha1_verify(libssh2_rsa_ctx *rsactx,\n\t\t\t     const unsigned char *sig,\n\t\t\t     unsigned long sig_len,\n\t\t\t     const unsigned char *m,\n\t\t\t     unsigned long m_len)\n{\n\tunsigned char hash[SHA_DIGEST_LENGTH];\n\tint ret;\n\n\tSHA1(m, m_len, hash);\n\tret = RSA_verify(NID_sha1, hash, SHA_DIGEST_LENGTH,\n\t\t\t (unsigned char *)sig, sig_len, rsactx);\n\treturn (ret == 1) ? 0 : -1;\n}\n\nint _libssh2_dsa_new(libssh2_dsa_ctx **dsactx,\n\t\t     const unsigned char *p,\n\t\t     unsigned long p_len,\n\t\t     const unsigned char *q,\n\t\t     unsigned long q_len,\n\t\t     const unsigned char *g,\n\t\t     unsigned long g_len,\n\t\t     const unsigned char *y,\n\t\t     unsigned long y_len,\n\t\t     const unsigned char *x,\n\t\t     unsigned long x_len)\n{\n\t*dsactx = DSA_new();\n\n\t(*dsactx)->p = BN_new();\n\tBN_bin2bn(p, p_len, (*dsactx)->p);\n\n\t(*dsactx)->q = BN_new();\n\tBN_bin2bn(q, q_len, (*dsactx)->q);\n\n\t(*dsactx)->g = BN_new();\n\tBN_bin2bn(g, g_len, (*dsactx)->g);\n\n\t(*dsactx)->pub_key = BN_new();\n\tBN_bin2bn(y, y_len, (*dsactx)->pub_key);\n\n\tif (x_len) {\n\t\t(*dsactx)->priv_key = BN_new();\n\t\tBN_bin2bn(x, x_len, (*dsactx)->priv_key);\n\t}\n\n\treturn 0;\n}\n\nint _libssh2_dsa_sha1_verify(libssh2_dsa_ctx *dsactx,\n\t\t\t     const unsigned char *sig,\n\t\t\t     const unsigned char *m,\n\t\t\t     unsigned long m_len)\n{\n\tunsigned char hash[SHA_DIGEST_LENGTH];\n\tDSA_SIG dsasig;\n\tint ret;\n\n\tdsasig.r = BN_new();\n\tBN_bin2bn(sig, 20, dsasig.r);\n\tdsasig.s = BN_new();\n\tBN_bin2bn(sig + 20, 20, dsasig.s);\n\n\tlibssh2_sha1(m, m_len, hash);\n\tret = DSA_do_verify(hash, SHA_DIGEST_LENGTH, &dsasig, dsactx);\n\n\treturn (ret == 1) ? 0 : -1;\n}\n\nint _libssh2_cipher_init (_libssh2_cipher_ctx *h,\n\t\t\t  _libssh2_cipher_type(algo),\n\t\t\t  unsigned char *iv,\n\t\t\t  unsigned char *secret,\n\t\t\t  int encrypt)\n{\n\tEVP_CIPHER_CTX_init(h);\n\tEVP_CipherInit(h, algo(), secret, iv, encrypt);\n\treturn 0;\n}\n\nint _libssh2_cipher_crypt(_libssh2_cipher_ctx *ctx,\n\t\t\t  _libssh2_cipher_type(algo),\n\t\t\t  int encrypt,\n\t\t\t  unsigned char *block)\n{\n\tint blocksize = ctx->cipher->block_size;\n\tunsigned char buf[EVP_MAX_BLOCK_LENGTH];\n\tint ret;\n\t(void)algo;\n\t(void)encrypt;\n\n\tif (blocksize == 1) {\n/* Hack for arcfour. */\n\t\tblocksize = 8;\n\t}\n\tret = EVP_Cipher(ctx, buf, block, blocksize);\n\tif (ret == 1) {\n\t\tmemcpy(block, buf, blocksize);\n\t}\n\treturn ret == 1 ? 0 : 1;\n}\n\n/* TODO: Optionally call a passphrase callback specified by the\n * calling program\n */\nstatic int\npassphrase_cb(char *buf, int size,\n\t      int rwflag, char *passphrase)\n{\n\tint passphrase_len = strlen(passphrase);\n\t(void)rwflag;\n\n\tif (passphrase_len > (size - 1)) {\n\t\tpassphrase_len = size - 1;\n\t}\n\tmemcpy(buf, passphrase, passphrase_len);\n\tbuf[passphrase_len] = '\\0';\n\n\treturn passphrase_len;\n}\n\nint _libssh2_rsa_new_private (libssh2_rsa_ctx **rsa,\n\t\t\t      LIBSSH2_SESSION *session,\n\t\t\t      FILE *fp,\n\t\t\t      unsigned const char *passphrase)\n{\n\t(void)session;\n\tif (!EVP_get_cipherbyname(\"des\")) {\n/* If this cipher isn't loaded it's a pretty good indication that none are.\n * I have *NO DOUBT* that there's a better way to deal with this ($#&%#$(%$#(\n * Someone buy me an OpenSSL manual and I'll read up on it.\n */\n\t\tOpenSSL_add_all_ciphers();\n\t}\n\t*rsa = PEM_read_RSAPrivateKey(fp, NULL, (void*)passphrase_cb,\n\t\t\t\t      (void*)passphrase);\n\tif (!*rsa) {\n\t\treturn -1;\n\t}\n\treturn 0;\n}\n\nint _libssh2_dsa_new_private (libssh2_dsa_ctx **dsa,\n\t\t\t      LIBSSH2_SESSION *session,\n\t\t\t      FILE *fp,\n\t\t\t      unsigned const char *passphrase)\n{\n\t(void)session;\n\tif (!EVP_get_cipherbyname(\"des\")) {\n/* If this cipher isn't loaded it's a pretty good indication that none are.\n * I have *NO DOUBT* that there's a better way to deal with this ($#&%#$(%$#(\n * Someone buy me an OpenSSL manual and I'll read up on it.\n */\n\t\tOpenSSL_add_all_ciphers();\n\t}\n\t*dsa = PEM_read_DSAPrivateKey(fp, NULL, (void*)passphrase_cb,\n\t\t\t\t      (void*)passphrase);\n\tif (!*dsa) {\n\t\treturn -1;\n\t}\n\treturn 0;\n}\n\nint _libssh2_rsa_sha1_sign(LIBSSH2_SESSION *session,\n\t\t\t   libssh2_rsa_ctx *rsactx,\n\t\t\t   const unsigned char *hash,\n\t\t\t   unsigned long hash_len,\n\t\t\t   unsigned char **signature,\n\t\t\t   unsigned long *signature_len)\n{\n\tint ret;\n\tunsigned char *sig;\n\tunsigned int sig_len;\n\n\tsig_len = RSA_size(rsactx);\n\tsig = LIBSSH2_ALLOC(session, sig_len);\n\n\tif (!sig) {\n\t\treturn -1;\n\t}\n\n\tret = RSA_sign(NID_sha1, hash, hash_len, sig, &sig_len, rsactx);\n\n\tif (!ret) {\n\t\tLIBSSH2_FREE(session, sig);\n\t\treturn -1;\n\t}\n\n\t*signature = sig;\n\t*signature_len = sig_len;\n\n\treturn 0;\n}\n\nint _libssh2_dsa_sha1_sign(libssh2_dsa_ctx *dsactx,\n\t\t\t   const unsigned char *hash,\n\t\t\t   unsigned long hash_len,\n\t\t\t   unsigned char *signature)\n{\n\tDSA_SIG *sig;\n\tint r_len, s_len, rs_pad;\n\t(void)hash_len;\n\n\tsig = DSA_do_sign(hash, SHA_DIGEST_LENGTH, dsactx);\n\tif (!sig) {\n\t\treturn -1;\n\t}\n\n\tr_len = BN_num_bytes(sig->r);\n\ts_len = BN_num_bytes(sig->s);\n\trs_pad = (2 * SHA_DIGEST_LENGTH) - (r_len + s_len);\n\tif (rs_pad < 0) {\n\t\tDSA_SIG_free(sig);\n\t\treturn -1;\n\t}\n\n\tBN_bn2bin(sig->r, signature + rs_pad);\n\tBN_bn2bin(sig->s, signature + rs_pad + r_len);\n\n\tDSA_SIG_free(sig);\n\n\treturn 0;\n}\n"
  },
  {
    "path": "Example/openssl.h",
    "content": "/* Copyright (C) 2006, 2007 The Written Word, Inc.  All rights reserved.\n * Author: Simon Josefsson\n *\n * Redistribution and use in source and binary forms,\n * with or without modification, are permitted provided\n * that the following conditions are met:\n *\n *   Redistributions of source code must retain the above\n *   copyright notice, this list of conditions and the\n *   following disclaimer.\n *\n *   Redistributions in binary form must reproduce the above\n *   copyright notice, this list of conditions and the following\n *   disclaimer in the documentation and/or other materials\n *   provided with the distribution.\n *\n *   Neither the name of the copyright holder nor the names\n *   of any other contributors may be used to endorse or\n *   promote products derived from this software without\n *   specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND\n * CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES,\n * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE\n * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY\n * OF SUCH DAMAGE.\n */\n\n#include <openssl/opensslconf.h>\n#include <openssl/sha.h>\n#ifndef OPENSSL_NO_MD5\n#include <openssl/md5.h>\n#endif\n#include <openssl/evp.h>\n#include <openssl/hmac.h>\n#include <openssl/bn.h>\n#include <openssl/pem.h>\n#include <openssl/rand.h>\n\n#ifdef OPENSSL_NO_RSA\n# define LIBSSH2_RSA 0\n#else\n# define LIBSSH2_RSA 1\n#endif\n\n#ifdef OPENSSL_NO_DSA\n# define LIBSSH2_DSA 0\n#else\n# define LIBSSH2_DSA 1\n#endif\n\n#ifdef OPENSSL_NO_MD5\n# define LIBSSH2_MD5 0\n#else\n# define LIBSSH2_MD5 1\n#endif\n\n#ifdef OPENSSL_NO_RIPEMD\n# define LIBSSH2_HMAC_RIPEMD 0\n#else\n# define LIBSSH2_HMAC_RIPEMD 1\n#endif\n\n#if OPENSSL_VERSION_NUMBER >= 0x00907000L && !defined(OPENSSL_NO_AES)\n# define LIBSSH2_AES 1\n#else\n# define LIBSSH2_AES 0\n#endif\n\n#ifdef OPENSSL_NO_BLOWFISH\n# define LIBSSH2_BLOWFISH 0\n#else\n# define LIBSSH2_BLOWFISH 1\n#endif\n\n#ifdef OPENSSL_NO_RC4\n# define LIBSSH2_RC4 0\n#else\n# define LIBSSH2_RC4 1\n#endif\n\n#ifdef OPENSSL_NO_CAST\n# define LIBSSH2_CAST 0\n#else\n# define LIBSSH2_CAST 1\n#endif\n\n#ifdef OPENSSL_NO_DES\n# define LIBSSH2_3DES 0\n#else\n# define LIBSSH2_3DES 1\n#endif\n\n#define libssh2_random(buf, len)\t\t\\\n  RAND_bytes ((buf), (len))\n\n#define libssh2_sha1_ctx SHA_CTX\n#define libssh2_sha1_init(ctx) SHA1_Init(ctx)\n#define libssh2_sha1_update(ctx, data, len) SHA1_Update(&(ctx), data, len)\n#define libssh2_sha1_final(ctx, out) SHA1_Final(out, &(ctx))\n#define libssh2_sha1(message, len, out) SHA1(message, len, out)\n\n#define libssh2_md5_ctx MD5_CTX\n#define libssh2_md5_init(ctx) MD5_Init(ctx)\n#define libssh2_md5_update(ctx, data, len) MD5_Update(&(ctx), data, len)\n#define libssh2_md5_final(ctx, out) MD5_Final(out, &(ctx))\n#define libssh2_md5(message, len, out) MD5(message, len, out)\n\n#define libssh2_hmac_ctx HMAC_CTX\n#define libssh2_hmac_sha1_init(ctx, key, keylen) \\\n  HMAC_Init(ctx, key, keylen, EVP_sha1())\n#define libssh2_hmac_md5_init(ctx, key, keylen) \\\n  HMAC_Init(ctx, key, keylen, EVP_md5())\n#define libssh2_hmac_ripemd160_init(ctx, key, keylen) \\\n  HMAC_Init(ctx, key, keylen, EVP_ripemd160())\n#define libssh2_hmac_update(ctx, data, datalen) \\\n  HMAC_Update(&(ctx), data, datalen)\n#define libssh2_hmac_final(ctx, data) HMAC_Final(&(ctx), data, NULL)\n#define libssh2_hmac_cleanup(ctx) HMAC_cleanup(ctx)\n\n#define libssh2_crypto_init()\n\n#define libssh2_rsa_ctx RSA\n\nint _libssh2_rsa_new(libssh2_rsa_ctx **rsa,\n\t\t     const unsigned char *edata,\n\t\t     unsigned long elen,\n\t\t     const unsigned char *ndata,\n\t\t     unsigned long nlen,\n\t\t     const unsigned char *ddata,\n\t\t     unsigned long dlen,\n\t\t     const unsigned char *pdata,\n\t\t     unsigned long plen,\n\t\t     const unsigned char *qdata,\n\t\t     unsigned long qlen,\n\t\t     const unsigned char *e1data,\n\t\t     unsigned long e1len,\n\t\t     const unsigned char *e2data,\n\t\t     unsigned long e2len,\n\t\t     const unsigned char *coeffdata,\n\t\t     unsigned long coefflen);\nint _libssh2_rsa_new_private (libssh2_rsa_ctx **rsa,\n\t\t\t      LIBSSH2_SESSION *session,\n\t\t\t      FILE *fp,\n\t\t\t      unsigned const char *passphrase);\nint _libssh2_rsa_sha1_verify(libssh2_rsa_ctx *rsa,\n\t\t\t     const unsigned char *sig,\n\t\t\t     unsigned long sig_len,\n\t\t\t     const unsigned char *m,\n\t\t\t     unsigned long m_len);\nint _libssh2_rsa_sha1_sign(LIBSSH2_SESSION *session,\n\t\t\t   libssh2_rsa_ctx *rsactx,\n\t\t\t   const unsigned char *hash,\n\t\t\t   unsigned long hash_len,\n\t\t\t   unsigned char **signature,\n\t\t\t   unsigned long *signature_len);\n\n#define _libssh2_rsa_free(rsactx) RSA_free(rsactx)\n\n#define libssh2_dsa_ctx DSA\n\nint _libssh2_dsa_new(libssh2_dsa_ctx **dsa,\n\t\t     const unsigned char *pdata,\n\t\t     unsigned long plen,\n\t\t     const unsigned char *qdata,\n\t\t     unsigned long qlen,\n\t\t     const unsigned char *gdata,\n\t\t     unsigned long glen,\n\t\t     const unsigned char *ydata,\n\t\t     unsigned long ylen,\n\t\t     const unsigned char *x,\n\t\t     unsigned long x_len);\nint _libssh2_dsa_new_private (libssh2_dsa_ctx **dsa,\n\t\t\t      LIBSSH2_SESSION *session,\n\t\t\t      FILE *fp,\n\t\t\t      unsigned const char *passphrase);\nint _libssh2_dsa_sha1_verify(libssh2_dsa_ctx *dsactx,\n\t\t\t     const unsigned char *sig,\n\t\t\t     const unsigned char *m,\n\t\t\t     unsigned long m_len);\nint _libssh2_dsa_sha1_sign(libssh2_dsa_ctx *dsactx,\n\t\t\t   const unsigned char *hash,\n\t\t\t   unsigned long hash_len,\n\t\t\t   unsigned char *sig);\n\n#define _libssh2_dsa_free(dsactx) DSA_free(dsactx)\n\n#define _libssh2_cipher_type(name) const EVP_CIPHER *(*name)(void)\n#define _libssh2_cipher_ctx EVP_CIPHER_CTX\n\n#define _libssh2_cipher_aes256 EVP_aes_256_cbc\n#define _libssh2_cipher_aes192 EVP_aes_192_cbc\n#define _libssh2_cipher_aes128 EVP_aes_128_cbc\n#define _libssh2_cipher_blowfish EVP_bf_cbc\n#define _libssh2_cipher_arcfour EVP_rc4\n#define _libssh2_cipher_cast5 EVP_cast5_cbc\n#define _libssh2_cipher_3des EVP_des_ede3_cbc\n\nint _libssh2_cipher_init (_libssh2_cipher_ctx *h,\n\t\t\t  _libssh2_cipher_type(algo),\n\t\t\t  unsigned char *iv,\n\t\t\t  unsigned char *secret,\n\t\t\t  int encrypt);\n\nint _libssh2_cipher_crypt(_libssh2_cipher_ctx *ctx,\n\t\t\t  _libssh2_cipher_type(algo),\n\t\t\t  int encrypt,\n\t\t\t  unsigned char *block);\n\n#define _libssh2_cipher_dtor(ctx) EVP_CIPHER_CTX_cleanup(ctx)\n\n#define _libssh2_bn BIGNUM\n#define _libssh2_bn_ctx BN_CTX\n#define _libssh2_bn_ctx_new() BN_CTX_new()\n#define _libssh2_bn_ctx_free(bnctx) BN_CTX_free(bnctx)\n#define _libssh2_bn_init() BN_new()\n#define _libssh2_bn_rand(bn, bits, top, bottom) BN_rand(bn, bits, top, bottom)\n#define _libssh2_bn_mod_exp(r, a, p, m, ctx) BN_mod_exp(r, a, p, m, ctx)\n#define _libssh2_bn_set_word(bn, val) BN_set_word(bn, val)\n#define _libssh2_bn_from_bin(bn, len, val) BN_bin2bn(val, len, bn)\n#define _libssh2_bn_to_bin(bn, val) BN_bn2bin(bn, val)\n#define _libssh2_bn_bytes(bn) BN_num_bytes(bn)\n#define _libssh2_bn_bits(bn) BN_num_bits(bn)\n#define _libssh2_bn_free(bn) BN_clear_free(bn)\n"
  },
  {
    "path": "Example/packet.c",
    "content": "/* Copyright (c) 2004-2006, Sara Golemon <sarag@libssh2.org>\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms,\n * with or without modification, are permitted provided\n * that the following conditions are met:\n *\n *   Redistributions of source code must retain the above\n *   copyright notice, this list of conditions and the\n *   following disclaimer.\n *\n *   Redistributions in binary form must reproduce the above\n *   copyright notice, this list of conditions and the following\n *   disclaimer in the documentation and/or other materials\n *   provided with the distribution.\n *\n *   Neither the name of the copyright holder nor the names\n *   of any other contributors may be used to endorse or\n *   promote products derived from this software without\n *   specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND\n * CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES,\n * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE\n * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY\n * OF SUCH DAMAGE.\n */\n\n#include \"libssh2_priv.h\"\n#include <errno.h>\n#include <fcntl.h>\n#ifndef WIN32\n#include <unistd.h>\n#endif\n\n/* Needed for struct iovec on some platforms */\n#ifdef HAVE_SYS_UIO_H\n#include <sys/uio.h>\n#endif\n\n#ifdef HAVE_POLL\n# include <sys/poll.h>\n#else\n# ifdef HAVE_SELECT\n#  ifdef HAVE_SYS_SELECT_H\n#   include <sys/select.h>\n#  else\n#   include <sys/time.h>\n#   include <sys/types.h>\n#  endif\n# endif\n#endif\n\n#include <inttypes.h>\n\n/* RFC4253 section 6.1 Maximum Packet Length says:\n *\n * \"All implementations MUST be able to process packets with\n * uncompressed payload length of 32768 bytes or less and\n * total packet size of 35000 bytes or less (including length,\n * padding length, payload, padding, and MAC.).\"\n */\n#define MAX_SSH_PACKET_LEN 35000\n\ninline int libssh2_packet_queue_listener(LIBSSH2_SESSION *session, unsigned char *data, unsigned long datalen);\ninline int libssh2_packet_x11_open(LIBSSH2_SESSION *session, unsigned char *data, unsigned long datalen);\n\n/* {{{ libssh2_packet_queue_listener\n * Queue a connection request for a listener\n */\ninline int libssh2_packet_queue_listener(LIBSSH2_SESSION *session, unsigned char *data, unsigned long datalen)\n{\n\t/* Look for a matching listener */\n\tunsigned char *s = data + (sizeof(\"forwarded-tcpip\") - 1) + 5;\n\t/* 17 = packet_type(1) + channel(4) + reason(4) + descr(4) + lang(4) */\n\tunsigned long packet_len = 17 + (sizeof(\"Forward not requested\") - 1);\n\tunsigned char *p, packet[17 + (sizeof(\"Forward not requested\") - 1)];\n\tLIBSSH2_LISTENER *l = session->listeners;\n\tchar failure_code = 1; /* SSH_OPEN_ADMINISTRATIVELY_PROHIBITED */\n        uint32_t sender_channel, initial_window_size, packet_size;\n\tunsigned char *host, *shost;\n        uint32_t port, sport, host_len, shost_len;\n\n\tsender_channel = libssh2_ntohu32(s);\t\ts += 4;\n\n\tinitial_window_size = libssh2_ntohu32(s);\ts += 4;\n\tpacket_size = libssh2_ntohu32(s);\t\t\ts += 4;\n\n\thost_len = libssh2_ntohu32(s);\t\t\t\ts += 4;\n\thost = s;\t\t\t\t\t\t\t\t\ts += host_len;\n\tport = libssh2_ntohu32(s);\t\t\t\t\ts += 4;\n\n\tshost_len = libssh2_ntohu32(s);\t\t\t\ts += 4;\n\tshost = s;\t\t\t\t\t\t\t\t\ts += shost_len;\n\tsport = libssh2_ntohu32(s);\t\t\t\t\ts += 4;\n\n#ifdef LIBSSH2_DEBUG_CONNECTION\n\t_libssh2_debug(session, LIBSSH2_DBG_CONN, \"Remote received connection from %s:%ld to %s:%ld\", shost, sport, host, port);\n#endif\n\twhile (l) {\n\t\tif ((l->port == port) &&\n\t\t\t(strlen(l->host) == host_len) &&\n\t\t\t(memcmp(l->host, host, host_len) == 0)) {\n\t\t\t/* This is our listener */\n\t\t\tLIBSSH2_CHANNEL *channel, *last_queued = l->queue;\n\n\t\t\tif (l->queue_maxsize &&\n\t\t\t\t(l->queue_maxsize <= l->queue_size)) {\n\t\t\t\t/* Queue is full */\n\t\t\t\tfailure_code = 4; /* SSH_OPEN_RESOURCE_SHORTAGE */\n#ifdef LIBSSH2_DEBUG_CONNECTION\n\t_libssh2_debug(session, LIBSSH2_DBG_CONN, \"Listener queue full, ignoring\");\n#endif\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tchannel = LIBSSH2_ALLOC(session, sizeof(LIBSSH2_CHANNEL));\n\t\t\tif (!channel) {\n\t\t\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate a channel for new connection\", 0);\n\t\t\t\tfailure_code = 4; /* SSH_OPEN_RESOURCE_SHORTAGE */\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmemset(channel, 0, sizeof(LIBSSH2_CHANNEL));\n\n\t\t\tchannel->session = session;\n\t\t\tchannel->channel_type_len = sizeof(\"forwarded-tcpip\") - 1;\n\t\t\tchannel->channel_type = LIBSSH2_ALLOC(session, channel->channel_type_len + 1);\n\t\t\tif (!channel->channel_type) {\n\t\t\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate a channel for new connection\", 0);\n\t\t\t\tLIBSSH2_FREE(session, channel);\n\t\t\t\tfailure_code = 4; /* SSH_OPEN_RESOURCE_SHORTAGE */\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmemcpy(channel->channel_type, \"forwarded-tcpip\", channel->channel_type_len + 1);\n\n\t\t\tchannel->remote.id = sender_channel;\n\t\t\tchannel->remote.window_size_initial = LIBSSH2_CHANNEL_WINDOW_DEFAULT;\n\t\t\tchannel->remote.window_size = LIBSSH2_CHANNEL_WINDOW_DEFAULT;\n\t\t\tchannel->remote.packet_size = LIBSSH2_CHANNEL_PACKET_DEFAULT;\n\n\t\t\tchannel->local.id = libssh2_channel_nextid(session);\n\t\t\tchannel->local.window_size_initial = initial_window_size;\n\t\t\tchannel->local.window_size = initial_window_size;\n\t\t\tchannel->local.packet_size = packet_size;\n\n#ifdef LIBSSH2_DEBUG_CONNECTION\n\t_libssh2_debug(session, LIBSSH2_DBG_CONN, \"Connection queued: channel %lu/%lu win %lu/%lu packet %lu/%lu\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tchannel->local.id, channel->remote.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tchannel->local.window_size, channel->remote.window_size,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tchannel->local.packet_size, channel->remote.packet_size);\n#endif\n\n\t\t\tp = packet;\n\t\t\t*(p++) = SSH_MSG_CHANNEL_OPEN_CONFIRMATION;\n\t\t\tlibssh2_htonu32(p, channel->remote.id);\t\t\t\t\t\tp += 4;\n\t\t\tlibssh2_htonu32(p, channel->local.id);\t\t\t\t\t\tp += 4;\n\t\t\tlibssh2_htonu32(p, channel->remote.window_size_initial);\tp += 4;\n\t\t\tlibssh2_htonu32(p, channel->remote.packet_size);\t\t\tp += 4;\n\n\t\t\tif (libssh2_packet_write(session, packet, 17)) {\n\t\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send channel open confirmation\", 0);\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t/* Link the channel into the end of the queue list */\n\n\t\t\tif (!last_queued) {\n\t\t\t\tl->queue = channel;\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\twhile (last_queued->next) last_queued = last_queued->next;\n\n\t\t\tlast_queued->next = channel;\n\t\t\tchannel->prev = last_queued;\n\n\t\t\tl->queue_size++;\n\n\t\t\treturn 0;\n\t\t}\n\n\t\tl = l->next;\n\t}\n\n\t/* We're not listening to you */\n\t{\n\n\t\tp = packet;\n\t\t*(p++) = SSH_MSG_CHANNEL_OPEN_FAILURE;\n\t\tlibssh2_htonu32(p, sender_channel);\t\tp += 4;\n\t\tlibssh2_htonu32(p, failure_code);\t\tp += 4;\n\t\tlibssh2_htonu32(p, sizeof(\"Forward not requested\") - 1);\tp += 4;\n\t\tmemcpy(s, \"Forward not requested\", sizeof(\"Forward not requested\") - 1);\tp += sizeof(\"Forward not requested\") - 1;\n\t\tlibssh2_htonu32(p, 0);\n\n\t\tif (libssh2_packet_write(session, packet, packet_len)) {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send open failure\", 0);\n\t\t\treturn -1;\n\t\t}\n\t\treturn 0;\n\t}\n}\n/* }}} */\n\n/* {{{ libssh2_packet_x11_open\n * Accept a forwarded X11 connection\n */\ninline int libssh2_packet_x11_open(LIBSSH2_SESSION *session, unsigned char *data, unsigned long datalen)\n{\n\tint failure_code = 2; /* SSH_OPEN_CONNECT_FAILED */\n\tunsigned char *s = data + (sizeof(\"x11\") - 1) + 5;\n\tunsigned long packet_len = 17 + (sizeof(\"X11 Forward Unavailable\") - 1);\n\tunsigned char *p, packet[17 + (sizeof(\"X11 Forward Unavailable\") - 1)];\n\t\t\t\t\t/* packet_type(1) + channel(4) + reason(4) + descr(4) + lang(4) */\n\tLIBSSH2_CHANNEL *channel;\n\tunsigned long sender_channel, initial_window_size, packet_size;\n\tunsigned char *shost;\n\tunsigned long sport, shost_len;\n\n\tsender_channel = libssh2_ntohu32(s);\t\t\ts += 4;\n\tinitial_window_size = libssh2_ntohu32(s);\t\ts += 4;\n\tpacket_size = libssh2_ntohu32(s);\t\t\t\ts += 4;\n\tshost_len = libssh2_ntohu32(s);\t\t\t\t\ts += 4;\n\tshost = s;\t\t\t\t\t\t\t\t\t\ts += shost_len;\n\tsport = libssh2_ntohu32(s);\t\t\t\t\t\ts += 4;\n\n#ifdef LIBSSH2_DEBUG_CONNECTION\n\t_libssh2_debug(session, LIBSSH2_DBG_CONN, \"X11 Connection Received from %s:%ld on channel %lu\", shost, sport, sender_channel);\n#endif\n\tif (session->x11) {\n\t\tchannel = LIBSSH2_ALLOC(session, sizeof(LIBSSH2_CHANNEL));\n\t\tif (!channel) {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate a channel for new connection\", 0);\n\t\t\tfailure_code = 4; /* SSH_OPEN_RESOURCE_SHORTAGE */\n\t\t\tgoto x11_exit;\n\t\t}\n\t\tmemset(channel, 0, sizeof(LIBSSH2_CHANNEL));\n\n\t\tchannel->session = session;\n\t\tchannel->channel_type_len = sizeof(\"x11\") - 1;\n\t\tchannel->channel_type = LIBSSH2_ALLOC(session, channel->channel_type_len + 1);\n\t\tif (!channel->channel_type) {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate a channel for new connection\", 0);\n\t\t\tLIBSSH2_FREE(session, channel);\n\t\t\tfailure_code = 4; /* SSH_OPEN_RESOURCE_SHORTAGE */\n\t\t\tgoto x11_exit;\n\t\t}\n\t\tmemcpy(channel->channel_type, \"x11\", channel->channel_type_len + 1);\n\n\t\tchannel->remote.id = sender_channel;\n\t\tchannel->remote.window_size_initial = LIBSSH2_CHANNEL_WINDOW_DEFAULT;\n\t\tchannel->remote.window_size = LIBSSH2_CHANNEL_WINDOW_DEFAULT;\n\t\tchannel->remote.packet_size = LIBSSH2_CHANNEL_PACKET_DEFAULT;\n\n\t\tchannel->local.id = libssh2_channel_nextid(session);\n\t\tchannel->local.window_size_initial = initial_window_size;\n\t\tchannel->local.window_size = initial_window_size;\n\t\tchannel->local.packet_size = packet_size;\n\n#ifdef LIBSSH2_DEBUG_CONNECTION\n\t_libssh2_debug(session, LIBSSH2_DBG_CONN, \"X11 Connection established: channel %lu/%lu win %lu/%lu packet %lu/%lu\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tchannel->local.id, channel->remote.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tchannel->local.window_size, channel->remote.window_size,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tchannel->local.packet_size, channel->remote.packet_size);\n#endif\n\t\tp = packet;\n\t\t*(p++) = SSH_MSG_CHANNEL_OPEN_CONFIRMATION;\n\t\tlibssh2_htonu32(p, channel->remote.id);\t\t\t\t\t\tp += 4;\n\t\tlibssh2_htonu32(p, channel->local.id);\t\t\t\t\t\tp += 4;\n\t\tlibssh2_htonu32(p, channel->remote.window_size_initial);\tp += 4;\n\t\tlibssh2_htonu32(p, channel->remote.packet_size);\t\t\tp += 4;\n\n\t\tif (libssh2_packet_write(session, packet, 17)) {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send channel open confirmation\", 0);\n\t\t\treturn -1;\n\t\t}\n\n\t\t/* Link the channel into the session */\n\t\tif (session->channels.tail) {\n\t\t\tsession->channels.tail->next = channel;\n\t\t\tchannel->prev = session->channels.tail;\n\t\t} else {\n\t\t\tsession->channels.head = channel;\n\t\t\tchannel->prev = NULL;\n\t\t}\n\t\tchannel->next = NULL;\n\t\tsession->channels.tail = channel;\n\t\t\n\t\t/*\n\t\t * Pass control to the callback, they may turn right around and \n\t\t * free the channel, or actually use it \n\t\t */\n\t\tLIBSSH2_X11_OPEN(channel, (char *)shost, sport);\n\t\t\n\t\treturn 0;\n\t} else {\n\t\tfailure_code = 4; /* SSH_OPEN_RESOURCE_SHORTAGE */\n\t}\n\n x11_exit:\n\tp = packet;\n\t*(p++) = SSH_MSG_CHANNEL_OPEN_FAILURE;\n\tlibssh2_htonu32(p, sender_channel);\t\t\t\tp += 4;\n\tlibssh2_htonu32(p, failure_code);\t\t\t\tp += 4;\n\tlibssh2_htonu32(p, sizeof(\"X11 Forward Unavailable\") - 1);\t\tp += 4;\n\tmemcpy(s, \"X11 Forward Unavailable\", sizeof(\"X11 Forward Unavailable\") - 1); p += sizeof(\"X11 Forward Unavailable\") - 1;\n\tlibssh2_htonu32(p, 0);\n\n\tif (libssh2_packet_write(session, packet, packet_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send open failure\", 0);\n\t\treturn -1;\n\t}\n\treturn 0;\n}\n/* }}} */\n\n/* {{{ libssh2_packet_new\n * Create a new packet and attach it to the brigade\n */\nstatic int libssh2_packet_add(LIBSSH2_SESSION *session, unsigned char *data, size_t datalen, int macstate)\n{\n\tLIBSSH2_PACKET *packet;\n\tunsigned long data_head = 0;\n\n#ifdef LIBSSH2_DEBUG_TRANSPORT\n\t_libssh2_debug(session, LIBSSH2_DBG_TRANS, \"Packet type %d received, length=%d\", (int)data[0], (int)datalen);\n#endif\n\tif (macstate == LIBSSH2_MAC_INVALID) {\n\t\tif (session->macerror) {\n\t\t\tif (LIBSSH2_MACERROR(session, (char *)data, datalen) == 0) {\n\t\t\t\t/* Calling app has given the OK, Process it anyway */\n\t\t\t\tmacstate = LIBSSH2_MAC_CONFIRMED;\n\t\t\t} else {\n\t\t\t\tlibssh2_error(session, LIBSSH2_ERROR_INVALID_MAC, \"Invalid Message Authentication Code received\", 0);\n\t\t\t\tif (session->ssh_msg_disconnect) {\n\t\t\t\t\tLIBSSH2_DISCONNECT(session, SSH_DISCONNECT_MAC_ERROR, \"Invalid MAC received\", sizeof(\"Invalid MAC received\") - 1, \"\", 0);\n\t\t\t\t}\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t} else {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_INVALID_MAC, \"Invalid Message Authentication Code received\", 0);\n\t\t\tif (session->ssh_msg_disconnect) {\n\t\t\t\tLIBSSH2_DISCONNECT(session, SSH_DISCONNECT_MAC_ERROR, \"Invalid MAC received\", sizeof(\"Invalid MAC received\") - 1, \"\", 0);\n\t\t\t}\n\t\t\treturn -1;\n\t\t}\n\t}\n\n\t/* A couple exceptions to the packet adding rule: */\n\tswitch (data[0]) {\n\t\tcase SSH_MSG_DISCONNECT:\n\t\t{\n\t\t\tchar *message, *language;\n\t\t\tint reason, message_len, language_len;\n\n\t\t\treason = libssh2_ntohu32(data + 1);\n\t\t\tmessage_len = libssh2_ntohu32(data + 5);\n\t\t\tmessage = (char *)data + 9; /* packet_type(1) + reason(4) + message_len(4) */\n\t\t\tlanguage_len = libssh2_ntohu32(data + 9 + message_len);\n\t\t\t/* This is where we hack on the data a little,\n\t\t\t * Use the MSB of language_len to to a terminating NULL (In all liklihood it is already)\n\t\t\t * Shift the language tag back a byte (In all likelihood it's zero length anyway\n\t\t\t * Store a NULL in the last byte of the packet to terminate the language string\n\t\t\t * With the lengths passed this isn't *REALLY* necessary, but it's \"kind\"\n\t\t\t */\n\t\t\tmessage[message_len] = '\\0';\n\t\t\tlanguage = (char *)data + 9 + message_len + 3;\n\t\t\tif (language_len) {\n\t\t\t\tmemcpy(language, language + 1, language_len);\n\t\t\t}\n\t\t\tlanguage[language_len] = '\\0';\n\n\t\t\tif (session->ssh_msg_disconnect) {\n\t\t\t\tLIBSSH2_DISCONNECT(session, reason, message, message_len, language, language_len);\n\t\t\t}\n#ifdef LIBSSH2_DEBUG_TRANSPORT\n\t_libssh2_debug(session, LIBSSH2_DBG_TRANS, \"Disconnect(%d): %s(%s)\", reason, message, language);\n#endif\n\t\t\tLIBSSH2_FREE(session, data);\n\t\t\tsession->socket_state = LIBSSH2_SOCKET_DISCONNECTED;\n\t\t\treturn -1;\n\t\t}\n\t\t\tbreak;\n\t\tcase SSH_MSG_IGNORE:\n\t\t\t/* As with disconnect, back it up one and add a trailing NULL */\n\t\t\tmemcpy(data + 4, data + 5, datalen - 5);\n\t\t\tdata[datalen] = '\\0';\n\t\t\tif (session->ssh_msg_ignore) {\n\t\t\t\tLIBSSH2_IGNORE(session, (char *)data + 4, datalen - 5);\n\t\t\t}\n\t\t\tLIBSSH2_FREE(session, (char *)data);\n\t\t\treturn 0;\n\t\t\tbreak;\n\t\tcase SSH_MSG_DEBUG:\n\t\t{\n\t\t\tint always_display = data[0];\n\t\t\tchar *message, *language;\n\t\t\tint message_len, language_len;\n\n\t\t\tmessage_len = libssh2_ntohu32(data + 2);\n\t\t\tmessage = (char *)data + 6; /* packet_type(1) + display(1) + message_len(4) */\n\t\t\tlanguage_len = libssh2_ntohu32(data + 6 + message_len);\n\t\t\t/* This is where we hack on the data a little,\n\t\t\t * Use the MSB of language_len to to a terminating NULL (In all liklihood it is already)\n\t\t\t * Shift the language tag back a byte (In all likelihood it's zero length anyway\n\t\t\t * Store a NULL in the last byte of the packet to terminate the language string\n\t\t\t * With the lengths passed this isn't *REALLY* necessary, but it's \"kind\"\n\t\t\t */\n\t\t\tmessage[message_len] = '\\0';\n\t\t\tlanguage = (char *)data + 6 + message_len + 3;\n\t\t\tif (language_len) {\n\t\t\t\tmemcpy(language, language + 1, language_len);\n\t\t\t}\n\t\t\tlanguage[language_len] = '\\0';\n\n\t\t\tif (session->ssh_msg_debug) {\n\t\t\t\tLIBSSH2_DEBUG(session, always_display, message, message_len, language, language_len);\n\t\t\t}\n#ifdef LIBSSH2_DEBUG_TRANSPORT\n\t/* _libssh2_debug will actually truncate this for us so that it's not an inordinate about of data */\n\t_libssh2_debug(session, LIBSSH2_DBG_TRANS, \"Debug Packet: %s\", message);\n#endif\n\t\t\tLIBSSH2_FREE(session, data);\n\t\t\treturn 0;\n\t\t}\n\t\t\tbreak;\n\t\tcase SSH_MSG_CHANNEL_EXTENDED_DATA:\n\t\t\tdata_head += 4; /* streamid(4) */\n\t\tcase SSH_MSG_CHANNEL_DATA:\n\t\t\tdata_head += 9; /* packet_type(1) + channelno(4) + datalen(4) */\n\t\t\t{\n\t\t\t\tLIBSSH2_CHANNEL *channel = libssh2_channel_locate(session, libssh2_ntohu32(data + 1));\n\n\t\t\t\tif (!channel) {\n\t\t\t\t\tlibssh2_error(session, LIBSSH2_ERROR_CHANNEL_UNKNOWN, \"Packet received for unknown channel, ignoring\", 0);\n\t\t\t\t\tLIBSSH2_FREE(session, data);\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n#ifdef LIBSSH2_DEBUG_CONNECTION\n{\n\tunsigned long stream_id = 0;\n\n\tif (data[0] == SSH_MSG_CHANNEL_EXTENDED_DATA) {\n\t\tstream_id = libssh2_ntohu32(data + 5);\n\t}\n\n\t_libssh2_debug(session, LIBSSH2_DBG_CONN, \"%d bytes received for channel %lu/%lu stream #%lu\", (int)(datalen - data_head), channel->local.id, channel->remote.id, stream_id);\n}\n#endif\n\t\t\t\tif ((channel->remote.extended_data_ignore_mode == LIBSSH2_CHANNEL_EXTENDED_DATA_IGNORE) && (data[0] == SSH_MSG_CHANNEL_EXTENDED_DATA)) {\n\t\t\t\t\t/* Pretend we didn't receive this */\n\t\t\t\t\tLIBSSH2_FREE(session, data);\n\n#ifdef LIBSSH2_DEBUG_CONNECTION\n\t_libssh2_debug(session, LIBSSH2_DBG_CONN, \"Ignoring extended data and refunding %d bytes\", (int)(datalen - 13));\n#endif\n\t\t\t\t\t/* Adjust the window based on the block we just freed */\n\t\t\t\t\tlibssh2_channel_receive_window_adjust(channel, datalen - 13, 0);\n\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\t/* REMEMBER! remote means remote as source of data, NOT remote window! */\n\t\t\t\tif (channel->remote.packet_size < (datalen - data_head)) {\n\t\t\t\t\t/* Spec says we MAY ignore bytes sent beyond packet_size */\n\t\t\t\t\tlibssh2_error(session, LIBSSH2_ERROR_CHANNEL_PACKET_EXCEEDED, \"Packet contains more data than we offered to receive, truncating\", 0);\n\t\t\t\t\tdatalen = channel->remote.packet_size + data_head;\n\t\t\t\t}\n\t\t\t\tif (channel->remote.window_size <= 0) {\n\t\t\t\t\t/* Spec says we MAY ignore bytes sent beyond window_size */\n\t\t\t\t\tlibssh2_error(session, LIBSSH2_ERROR_CHANNEL_WINDOW_EXCEEDED, \"The current receive window is full, data ignored\", 0);\n\t\t\t\t\tLIBSSH2_FREE(session, data);\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t\t/* Reset EOF status */\n\t\t\t\tchannel->remote.eof = 0;\n\n\t\t\t\tif ((datalen - data_head) > channel->remote.window_size) {\n\t\t\t\t\tlibssh2_error(session, LIBSSH2_ERROR_CHANNEL_WINDOW_EXCEEDED, \"Remote sent more data than current window allows, truncating\", 0);\n\t\t\t\t\tdatalen = channel->remote.window_size + data_head;\n\t\t\t\t} else {\n\t\t\t\t\t/* Now that we've received it, shrink our window */\n\t\t\t\t\tchannel->remote.window_size -= datalen - data_head;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SSH_MSG_CHANNEL_EOF:\n\t\t\t{\n\t\t\t\tLIBSSH2_CHANNEL *channel = libssh2_channel_locate(session, libssh2_ntohu32(data + 1));\n\n\t\t\t\tif (!channel) {\n\t\t\t\t\t/* We may have freed already, just quietly ignore this... */\n\t\t\t\t\tLIBSSH2_FREE(session, data);\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n#ifdef LIBSSH2_DEBUG_CONNECTION\n\t_libssh2_debug(session, LIBSSH2_DBG_CONN, \"EOF received for channel %lu/%lu\", channel->local.id, channel->remote.id);\n#endif\n\t\t\t\tchannel->remote.eof = 1;\n\n\t\t\t\tLIBSSH2_FREE(session, data);\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\tbreak;\n\t    case SSH_MSG_CHANNEL_REQUEST:\n\t\t    {\n\t\t\t\tif (libssh2_ntohu32(data+5) == sizeof(\"exit-status\") - 1\n\t\t\t\t\t&& !memcmp(\"exit-status\", data + 9, sizeof(\"exit-status\") - 1)) {\n\n\t\t\t\t\t/* we've got \"exit-status\" packet. Set the session value */\n\t\t\t\t\tLIBSSH2_CHANNEL *channel = libssh2_channel_locate(session, libssh2_ntohu32(data+1));\n\n\t\t\t\t\tif (channel) {\n\t\t\t\t\t\tchannel->exit_status = libssh2_ntohu32(data + 9 + sizeof(\"exit-status\"));\n#ifdef LIBSSH2_DEBUG_CONNECTION\n\t\t\t\t\t\t_libssh2_debug(session, LIBSSH2_DBG_CONN, \"Exit status %lu received for channel %lu/%lu\", channel->exit_status, channel->local.id, channel->remote.id);\n#endif\n\t\t\t\t\t}\n\n\t\t\t\t\tLIBSSH2_FREE(session, data);\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SSH_MSG_CHANNEL_CLOSE:\n\t\t\t{\n\t\t\t\tLIBSSH2_CHANNEL *channel = libssh2_channel_locate(session, libssh2_ntohu32(data + 1));\n\n\t\t\t\tif (!channel) {\n\t\t\t\t\t/* We may have freed already, just quietly ignore this... */\n\t\t\t\t\tLIBSSH2_FREE(session, data);\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n#ifdef LIBSSH2_DEBUG_CONNECTION\n\t_libssh2_debug(session, LIBSSH2_DBG_CONN, \"Close received for channel %lu/%lu\", channel->local.id, channel->remote.id);\n#endif\n\n\t\t\t\tchannel->remote.close = 1;\n\t\t\t\tchannel->remote.eof = 1;\n\t\t\t\t/* TODO: Add a callback for this */\n\n\t\t\t\tLIBSSH2_FREE(session, data);\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SSH_MSG_CHANNEL_OPEN:\n\t\t\tif ((datalen >= (sizeof(\"forwarded-tcpip\") + 4)) &&\n\t\t\t\t((sizeof(\"forwarded-tcpip\")-1) == libssh2_ntohu32(data + 1)) &&\n\t\t\t\t(memcmp(data + 5, \"forwarded-tcpip\", sizeof(\"forwarded-tcpip\") - 1) == 0)) {\n\t\t\t\tint retval = libssh2_packet_queue_listener(session, data, datalen);\n\n\t\t\t\tLIBSSH2_FREE(session, data);\n\t\t\t\treturn retval;\n\t\t\t}\n\t\t\tif ((datalen >= (sizeof(\"x11\") + 4)) &&\n\t\t\t\t((sizeof(\"x11\")-1) == libssh2_ntohu32(data + 1)) &&\n\t\t\t\t(memcmp(data + 5, \"x11\", sizeof(\"x11\") - 1) == 0)) {\n\t\t\t\tint retval = libssh2_packet_x11_open(session, data, datalen);\n\n\t\t\t\tLIBSSH2_FREE(session, data);\n\t\t\t\treturn retval;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SSH_MSG_CHANNEL_WINDOW_ADJUST:\n\t\t\t{\n\t\t\t\tLIBSSH2_CHANNEL *channel = libssh2_channel_locate(session, libssh2_ntohu32(data + 1));\n\t\t\t\tunsigned long bytestoadd = libssh2_ntohu32(data + 5);\n\n\t\t\t\tif (channel && bytestoadd) {\n\t\t\t\t\tchannel->local.window_size += bytestoadd;\n\t\t\t\t}\n#ifdef LIBSSH2_DEBUG_CONNECTION\n\t_libssh2_debug(session, LIBSSH2_DBG_CONN, \"Window adjust received for channel %lu/%lu, adding %lu bytes, new window_size=%lu\", channel->local.id, channel->remote.id, bytestoadd, channel->local.window_size);\n#endif\n\n\t\t\t\tLIBSSH2_FREE(session, data);\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\tbreak;\n\t}\n\n\tpacket = LIBSSH2_ALLOC(session, sizeof(LIBSSH2_PACKET));\n\tmemset(packet, 0, sizeof(LIBSSH2_PACKET));\n\n\tpacket->data = data;\n\tpacket->data_len = datalen;\n\tpacket->data_head = data_head;\n\tpacket->mac = macstate;\n\tpacket->brigade = &session->packets;\n\tpacket->next = NULL;\n\n\tif (session->packets.tail) {\n\t\tpacket->prev = session->packets.tail;\n\t\tpacket->prev->next = packet;\n\t\tsession->packets.tail = packet;\n\t} else {\n\t\tsession->packets.head = packet;\n\t\tsession->packets.tail = packet;\n\t\tpacket->prev = NULL;\n\t}\n\n\tif (data[0] == SSH_MSG_KEXINIT && !(session->state & LIBSSH2_STATE_EXCHANGING_KEYS)) {\n\t\t/* Remote wants new keys\n\t\t * Well, it's already in the brigade,\n\t\t * let's just call back into ourselves\n\t\t */\n#ifdef LIBSSH2_DEBUG_TRANSPORT\n\t_libssh2_debug(session, LIBSSH2_DBG_TRANS, \"Renegotiating Keys\");\n#endif\n\t\tlibssh2_kex_exchange(session, 1);\n\t\t/* If there was a key reexchange failure, let's just hope we didn't send NEWKEYS yet, otherwise remote will drop us like a rock */\n\t}\n\n\treturn 0;\n}\n/* }}} */\n\n/* {{{ libssh2_blocking_read\n * Force a blocking read, regardless of socket settings\n */\nstatic ssize_t libssh2_blocking_read(LIBSSH2_SESSION *session, unsigned char *buf, size_t count)\n{\n\tsize_t bytes_read = 0;\n#if !defined(HAVE_POLL) && !defined(HAVE_SELECT)\n\tint polls = 0;\n#endif\n\n#ifndef WIN32\n\tfcntl(session->socket_fd, F_SETFL, 0);\n#else\n\t{\n\t\tu_long block = FALSE;\n\t\tioctlsocket(session->socket_fd, FIONBIO, &block);\n\t}\n#endif\n\n#ifdef LIBSSH2_DEBUG_TRANSPORT\n\t_libssh2_debug(session, LIBSSH2_DBG_TRANS, \"Blocking read: %d bytes\", (int)count);\n#endif\n\n\twhile (bytes_read < count) {\n\t\tint ret;\n\n\t\tret = LIBSSH2_READ(session, buf + bytes_read, count - bytes_read);\n\t\tif (ret < 0) {\n#ifdef WIN32\n\t\t\tswitch (WSAGetLastError()) {\n\t\t\t\tcase WSAEWOULDBLOCK:\terrno = EAGAIN;\t\tbreak;\n\t\t\t\tcase WSAENOTSOCK:\t\terrno = EBADF;\t\tbreak;\n\t\t\t\tcase WSAENOTCONN:\n\t\t\t\tcase WSAECONNABORTED:\terrno = ENOTCONN;\tbreak;\n\t\t\t\tcase WSAEINTR:\t\t\terrno = EINTR;\t\tbreak;\n\t\t\t}\n#endif\n\t\t\tif (errno == EAGAIN) {\n#ifdef HAVE_POLL\n\t\t\t\tstruct pollfd read_socket;\n\n\t\t\t\tread_socket.fd = session->socket_fd;\n\t\t\t\tread_socket.events = POLLIN;\n\n\t\t\t\tif (poll(&read_socket, 1, 30000) <= 0) {\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n#elif defined(HAVE_SELECT)\n\t\t\t\tfd_set read_socket;\n\t\t\t\tstruct timeval timeout;\n\n\t\t\t\tFD_ZERO(&read_socket);\n\t\t\t\tFD_SET(session->socket_fd, &read_socket);\n\n\t\t\t\ttimeout.tv_sec = 30;\n\t\t\t\ttimeout.tv_usec = 0;\n\n\t\t\t\tif (select(session->socket_fd + 1, &read_socket, NULL, NULL, &timeout) <= 0) {\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n#else\n\t\t\t\tif (polls++ > LIBSSH2_SOCKET_POLL_MAXLOOPS) {\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\tusleep(LIBSSH2_SOCKET_POLL_UDELAY);\n#endif /* POLL/SELECT/SLEEP */\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (errno == EINTR) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif ((errno == EBADF) || (errno == EIO) || (errno == ENOTCONN)) {\n\t\t\t\tsession->socket_state = LIBSSH2_SOCKET_DISCONNECTED;\n\t\t\t}\n\t\t\treturn -1;\n\t\t}\n\t\tif (ret == 0) continue;\n\n\t\tbytes_read += ret;\n\t}\n\n#ifdef LIBSSH2_DEBUG_TRANSPORT\n\t_libssh2_debug(session, LIBSSH2_DBG_TRANS, \"Blocking read: %d bytes actually read\", (int)bytes_read);\n#endif\n\n\treturn bytes_read;\n}\n/* }}} */\n\n/* {{{ libssh2_packet_read\n * Collect a packet into the input brigade\n * block only controls whether or not to wait for a packet to start,\n * Once a packet starts, libssh2 will block until it is complete\n * Returns packet type added to input brigade (0 if nothing added), or -1 on failure\n */\nint libssh2_packet_read(LIBSSH2_SESSION *session, int should_block)\n{\n\tint packet_type = -1;\n\n\tif (session->socket_state == LIBSSH2_SOCKET_DISCONNECTED) {\n\t\treturn 0;\n\t}\n\n#ifndef WIN32\n\tfcntl(session->socket_fd, F_SETFL, O_NONBLOCK);\n#else\n\t{\n\t\tu_long non_block = TRUE;\n\t\tioctlsocket(session->socket_fd, FIONBIO, &non_block);\n\t}\n#endif\n\n#ifdef LIBSSH2_DEBUG_TRANSPORT\n\t_libssh2_debug(session, LIBSSH2_DBG_TRANS, \"Checking for packet: will%s block\", should_block ? \"\" : \" not\");\n#endif\n\tif (session->state & LIBSSH2_STATE_NEWKEYS) {\n\t\t/* Temporary Buffer\n\t\t * The largest blocksize (currently) is 32, the largest MAC (currently) is 20\n\t\t */\n\t\tunsigned char block[2 * 32], *payload, *s, *p, tmp[6];\n\t\tssize_t read_len;\n\t\tunsigned long blocksize = session->remote.crypt->blocksize;\n\t\tunsigned long packet_len, payload_len;\n\t\tint padding_len;\n\t\tint macstate;\n\t\tint free_payload = 1;\n\n\t\t/* Note: If we add any cipher with a blocksize less than 6 we'll need to get more creative with this\n\t\t * For now, all blocksize sizes are 8+\n\t\t */\n\t\tif (should_block) {\n\t\t\tread_len = libssh2_blocking_read(session, block, blocksize);\n\t\t\tif(read_len <= 0)\n\t\t\t\treturn read_len;\n\t\t} else {\n                        ssize_t nread;\n\t\t\tread_len = LIBSSH2_READ(session, block, 1);\n\t\t\tif (read_len <= 0) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\tnread = libssh2_blocking_read(session, block + read_len, blocksize - read_len);\n\t\t\tif(nread <= 0)\n\t\t\t\treturn nread;\n\n\t\t\tread_len += nread;\n\t\t}\n\t\tif (read_len < blocksize) {\n\t\t\treturn (session->socket_state == LIBSSH2_SOCKET_DISCONNECTED) ? 0 : -1;\n\t\t}\n\n\t\tif (session->remote.crypt->crypt(session, block, &session->remote.crypt_abstract)) {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_DECRYPT, \"Error decrypting packet preamble\", 0);\n\t\t\treturn -1;\n\t\t}\n\n\t\tpacket_len = libssh2_ntohu32(block);\n\t\t\n\t\t/* RFC4253 section 6.1 Maximum Packet Length says:\n\t\t *\n\t\t * \"All implementations MUST be able to process packets with\n\t\t * uncompressed payload length of 32768 bytes or less and\n\t\t * total packet size of 35000 bytes or less (including length,\n\t\t * padding length, payload, padding, and MAC.).\"\n\t\t */\n\t\tif(packet_len > MAX_SSH_PACKET_LEN) {\n\t\t\treturn -1;\n\t\t}\n\t\t\n\t\tpadding_len = block[4];\n#ifdef LIBSSH2_DEBUG_TRANSPORT\n\t_libssh2_debug(session, LIBSSH2_DBG_TRANS, \"Processing packet %lu bytes long (with %lu bytes padding)\", packet_len, padding_len);\n#endif\n\t\tmemcpy(tmp, block, 5); /* Use this for MAC later */\n\n\t\tpayload_len = packet_len - 1; /* padding_len(1) */\n\t\t/* Sanity Check */\n\t\tif ((payload_len > LIBSSH2_PACKET_MAXPAYLOAD) ||\n\t\t\t((packet_len + 4) % blocksize)) {\n\t\t\t/* If something goes horribly wrong during the decryption phase, just bailout and die gracefully */\n\t\t\tsession->socket_state = LIBSSH2_SOCKET_DISCONNECTED;\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_PROTO, \"Fatal protocol error, invalid payload size\", 0);\n\t\t\treturn -1;\n\t\t}\n\n\t\ts = payload = LIBSSH2_ALLOC(session, payload_len);\n\t\tmemcpy(s, block + 5, blocksize - 5);\n\t\ts += blocksize - 5;\n\n\t\tp = s;\n\t\twhile (p - payload < payload_len) {\n\t\t\tread_len = payload_len - (p - payload);\n\t\t\tif (read_len > 4096) read_len = 4096;\n\n\t\t\tif (libssh2_blocking_read(session, p, read_len) < read_len) {\n\t\t\t\tLIBSSH2_FREE(session, payload);\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tp += read_len;\n\n    \t\t\twhile (s < p) {\n\t\t\t\tmemcpy(block, s, blocksize);\n\n\t\t\t\tif (session->remote.crypt->crypt(session, block, &session->remote.crypt_abstract)) {\n\t\t\t\t\tlibssh2_error(session, LIBSSH2_ERROR_DECRYPT, \"Error decrypting packet preamble\", 0);\n\t\t\t\t\tLIBSSH2_FREE(session, payload);\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\tmemcpy(s, block, blocksize);\n\n\t\t\t\ts += blocksize;\n\t\t\t}\n\t\t}\n\n\t\tread_len = libssh2_blocking_read(session, block, session->remote.mac->mac_len);\n\t\tif (read_len < session->remote.mac->mac_len) {\n\t\t\tLIBSSH2_FREE(session, payload);\n\t\t\treturn -1;\n\t\t}\n\n\t\t/* Calculate MAC hash */\n \t\tsession->remote.mac->hash(session, block + session->remote.mac->mac_len, session->remote.seqno, tmp, 5, payload, payload_len, &session->remote.mac_abstract);\n\n\t\tmacstate =  (strncmp((char *)block, (char *)block + session->remote.mac->mac_len, session->remote.mac->mac_len) == 0) ? LIBSSH2_MAC_CONFIRMED : LIBSSH2_MAC_INVALID;\n\n\t\tsession->remote.seqno++;\n\n\t\t/* Ignore padding */\n\t\tpayload_len -= padding_len;\n\n\t\tif (session->remote.comp &&\n\t\t\tstrcmp(session->remote.comp->name, \"none\")) {\n\t\t\t/* Decompress */\n\t\t\tunsigned char *data;\n\t\t\tunsigned long data_len;\n\n\t\t\tif (session->remote.comp->comp(session, 0, &data, &data_len, LIBSSH2_PACKET_MAXDECOMP, &free_payload, payload, payload_len, &session->remote.comp_abstract)) {\n\t\t\t\tLIBSSH2_FREE(session, payload);\n\t\t\t\treturn -1;\n\t\t\t}\n#ifdef LIBSSH2_DEBUG_TRANSPORT\n\t_libssh2_debug(session, LIBSSH2_DBG_TRANS, \"Payload decompressed: %lu bytes(compressed) to %lu bytes(uncompressed)\", data_len, payload_len);\n#endif\n\t\t\tif (free_payload) {\n\t\t\t\tLIBSSH2_FREE(session, payload);\n\t\t\t\tpayload = data;\n\t\t\t\tpayload_len = data_len;\n\t\t\t} else {\n\t\t\t\tif (data == payload) {\n\t\t\t\t\t/* It's not to be freed, because the compression layer reused payload,\n\t\t\t\t\t * So let's do the same!\n\t\t\t\t\t */\n\t\t\t\t\tpayload_len = data_len;\n\t\t\t\t} else {\n\t\t\t\t\t/* No comp_method actually lets this happen, but let's prepare for the future */\n\n\t\t\t\t\tLIBSSH2_FREE(session, payload);\n\n\t\t\t\t\t/* We need a freeable struct otherwise the brigade won't know what to do with it */\n\t\t\t\t\tpayload = LIBSSH2_ALLOC(session, data_len);\n\t\t\t\t\tif (!payload) {\n\t\t\t\t\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for copy of uncompressed data\", 0);\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tmemcpy(payload, data, data_len);\n\t\t\t\t\tpayload_len = data_len;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpacket_type = payload[0];\n\t\tlibssh2_packet_add(session, payload, payload_len, macstate);\n\n\t} else { /* No cipher active */\n\t\tunsigned char *payload;\n\t\tunsigned char buf[24];\n\t\tssize_t buf_len;\n\t\tunsigned long payload_len;\n\t\tuint32_t packet_length;\n\t\tunsigned long padding_length;\n\n\t\tif (should_block) {\n\t\t\tbuf_len = libssh2_blocking_read(session, buf, 5);\n\t\t} else {\n\t\t\tssize_t nread;\n\t\t\tbuf_len = LIBSSH2_READ(session, buf, 1);\n\t\t\tif (buf_len <= 0) {\n                                return buf_len;\n\t\t\t}\n\t\t\tnread = libssh2_blocking_read(session, buf, 5 - buf_len);\n\t\t\tif(nread <= 0)\n\t\t\t\treturn -1;\n\n\t\t\tbuf_len += nread;\n\t\t}\n\t\tif (buf_len < 5) {\n\t\t\t/* Something bad happened */\n\t\t\treturn -1;\n\t\t}\n\t\tpacket_length = libssh2_ntohu32(buf);\n\t\t\n\t\t/* RFC4253 section 6.1 Maximum Packet Length says:\n\t\t *\n\t\t * \"All implementations MUST be able to process packets with\n\t\t * uncompressed payload length of 32768 bytes or less and\n\t\t * total packet size of 35000 bytes or less (including length,\n\t\t * padding length, payload, padding, and MAC.).\"\n\t\t */\n\t\tif(packet_length > MAX_SSH_PACKET_LEN) {\n\t\t\treturn -1;\n\t\t}\n\t\t\n\t\tpadding_length = buf[4];\n#ifdef LIBSSH2_DEBUG_TRANSPORT\n\t_libssh2_debug(session, LIBSSH2_DBG_TRANS, \"Processing plaintext packet %lu bytes long (with %lu bytes padding)\", packet_length, padding_length);\n#endif\n\n\t\tpayload_len = packet_length - padding_length - 1; /* padding_length(1) */\n\t\tpayload = LIBSSH2_ALLOC(session, payload_len);\n\t\tif (!payload) {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for copy of plaintext data\", 0);\n\t\t\treturn -1;\n\t\t}\n\n\t\tif (libssh2_blocking_read(session, payload, payload_len) < payload_len) {\n\t\t\treturn (session->socket_state == LIBSSH2_SOCKET_DISCONNECTED) ? 0 : -1;\n\t\t}\n\t\twhile (padding_length) {\n\t\t\tint l;\n\t\t\t/* Flush padding */\n\t\t\tl = libssh2_blocking_read(session, buf, padding_length);\n\t\t\tif (l > 0)\n\t\t\t\tpadding_length -= l;\n\t\t\telse\n\t\t\t\tbreak;\n\t\t}\n\n\t\tpacket_type = payload[0];\n\n\t\t/* MACs don't exist in non-encrypted mode */\n\t\tlibssh2_packet_add(session, payload, payload_len, LIBSSH2_MAC_CONFIRMED);\n\t\tsession->remote.seqno++;\n\t}\n\treturn packet_type;\n}\n/* }}} */\n\n/* {{{ libssh2_packet_ask\n * Scan the brigade for a matching packet type, optionally poll the socket for a packet first\n */\nint libssh2_packet_ask_ex(LIBSSH2_SESSION *session, unsigned char packet_type, unsigned char **data, unsigned long *data_len,\n\t\t\t\t\t\t\t\t\t\t\t\t\tunsigned long match_ofs, const unsigned char *match_buf, unsigned long match_len, int poll_socket)\n{\n\tLIBSSH2_PACKET *packet = session->packets.head;\n\n\tif (poll_socket) {\n\t\tif (libssh2_packet_read(session, 0) < 0) {\n\t\t\treturn -1;\n\t\t}\n\t}\n#ifdef LIBSSH2_DEBUG_TRANSPORT\n\t_libssh2_debug(session, LIBSSH2_DBG_TRANS, \"Looking for packet of type: %d\", (int)packet_type);\n#endif\n\twhile (packet) {\n\t\tif (packet->data[0] == packet_type &&\n\t\t\t(packet->data_len >= (match_ofs + match_len)) &&\n\t\t\t(!match_buf || (memcmp(packet->data + match_ofs, match_buf, match_len) == 0))) {\n\t\t\t*data = packet->data;\n\t\t\t*data_len = packet->data_len;\n\n\t\t\tif (packet->prev) {\n\t\t\t\tpacket->prev->next = packet->next;\n\t\t\t} else {\n\t\t\t\tsession->packets.head = packet->next;\n\t\t\t}\n\n\t\t\tif (packet->next) {\n\t\t\t\tpacket->next->prev = packet->prev;\n\t\t\t} else {\n\t\t\t\tsession->packets.tail = packet->prev;\n\t\t\t}\n\n\t\t\tLIBSSH2_FREE(session, packet);\n\n\t\t\treturn 0;\n\t\t}\n\t\tpacket = packet->next;\n\t}\n\treturn -1;\n}\n/* }}} */\n\n/* {{{ libssh2_packet_askv\n * Scan for any of a list of packet types in the brigade, optionally poll the socket for a packet first\n */\nint libssh2_packet_askv_ex(LIBSSH2_SESSION *session,\n\t\t\t\t\t\t   unsigned char *packet_types,\n\t\t\t\t\t\t   unsigned char **data,\n\t\t\t\t\t\t   unsigned long *data_len,\n\t\t\t\t\t\t   unsigned long match_ofs,\n\t\t\t\t\t\t   const unsigned char *match_buf,\n\t\t\t\t\t\t   unsigned long match_len, int poll_socket)\n{\n\tint i, packet_types_len = strlen((char *)packet_types);\n\n\tfor(i = 0; i < packet_types_len; i++) {\n\t\tif (0 == libssh2_packet_ask_ex(session, packet_types[i], data, data_len, match_ofs, match_buf, match_len, i ? 0 : poll_socket)) {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\treturn -1;\n}\n/* }}} */\n\n/* {{{ libssh2_packet_require\n * Loops libssh2_packet_read() until the packet requested is available\n * SSH_DISCONNECT or a SOCKET_DISCONNECTED will cause a bailout\n */\nint libssh2_packet_require_ex(LIBSSH2_SESSION *session, unsigned char packet_type, unsigned char **data, unsigned long *data_len,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tunsigned long match_ofs, const unsigned char *match_buf, unsigned long match_len)\n{\n\tif (libssh2_packet_ask_ex(session, packet_type, data, data_len, match_ofs, match_buf, match_len, 0) == 0) {\n\t\t/* A packet was available in the packet brigade */\n\t\treturn 0;\n\t}\n\n#ifdef LIBSSH2_DEBUG_TRANSPORT\n\t_libssh2_debug(session, LIBSSH2_DBG_TRANS, \"Blocking until packet of type %d becomes available\", (int)packet_type);\n#endif\n\twhile (session->socket_state == LIBSSH2_SOCKET_CONNECTED) {\n\t\tint ret = libssh2_packet_read(session, 1);\n\t\tif (ret < 0) {\n\t\t\treturn -1;\n\t\t}\n\t\tif (ret == 0) continue;\n\n\t\tif (packet_type == ret) {\n\t\t\t/* Be lazy, let packet_ask pull it out of the brigade */\n\t\t\treturn libssh2_packet_ask_ex(session, packet_type, data, data_len, match_ofs, match_buf, match_len, 0);\n\t\t}\n\t}\n\n\t/* Only reached if the socket died */\n\treturn -1;\n}\n/* }}} */\n\n/* {{{ libssh2_packet_burn\n * Loops libssh2_packet_read() until any packet is available and promptly discards it\n * Used during KEX exchange to discard badly guessed KEX_INIT packets\n */\nint libssh2_packet_burn(LIBSSH2_SESSION *session)\n{\n\tunsigned char *data;\n\tunsigned long data_len;\n\tunsigned char all_packets[255];\n\tint i;\n\tfor(i = 1; i < 256; i++) all_packets[i - 1] = i;\n\n\tif (libssh2_packet_askv_ex(session, all_packets, &data, &data_len, 0, NULL, 0, 0) == 0) {\n\t\ti = data[0];\n\t\t/* A packet was available in the packet brigade, burn it */\n\t\tLIBSSH2_FREE(session, data);\n\t\treturn i;\n\t}\n\n#ifdef LIBSSH2_DEBUG_TRANSPORT\n\t_libssh2_debug(session, LIBSSH2_DBG_TRANS, \"Blocking until packet becomes available to burn\");\n#endif\n\twhile (session->socket_state == LIBSSH2_SOCKET_CONNECTED) {\n\t\tint ret = libssh2_packet_read(session, 1);\n\t\tif (ret < 0) {\n\t\t\treturn -1;\n\t\t}\n\t\tif (ret == 0) continue;\n\n\t\t/* Be lazy, let packet_ask pull it out of the brigade */\n\t\tif (0 == libssh2_packet_ask_ex(session, ret, &data, &data_len, 0, NULL, 0, 0)) {\n\t\t\t/* Smoke 'em if you got 'em */\n\t\t\tLIBSSH2_FREE(session, data);\n\t\t\treturn ret;\n\t\t}\n\t}\n\n\t/* Only reached if the socket died */\n\treturn -1;\n}\n/* }}} */\n\n/* {{{ libssh2_packet_requirev\n * Loops libssh2_packet_read() until one of a list of packet types requested is available\n * SSH_DISCONNECT or a SOCKET_DISCONNECTED will cause a bailout\n * packet_types is a null terminated list of packet_type numbers\n */\nint libssh2_packet_requirev_ex(LIBSSH2_SESSION *session, unsigned char *packet_types, unsigned char **data, unsigned long *data_len,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t unsigned long match_ofs, const unsigned char *match_buf, unsigned long match_len)\n{\n\tif (libssh2_packet_askv_ex(session, packet_types, data, data_len, match_ofs, match_buf, match_len, 0) == 0) {\n\t\t/* One of the packets listed was available in the packet brigade */\n\t\treturn 0;\n\t}\n\n\twhile (session->socket_state != LIBSSH2_SOCKET_DISCONNECTED) {\n\t\tint ret = libssh2_packet_read(session, 1);\n\t\tif (ret < 0) {\n\t\t\treturn -1;\n\t\t}\n\t\tif (ret == 0) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (strchr((char *)packet_types, ret)) {\n\t\t\t/* Be lazy, let packet_ask pull it out of the brigade */\n\t\t\treturn libssh2_packet_askv_ex(session, packet_types, data, data_len, match_ofs, match_buf, match_len, 0);\n\t\t}\n\t}\n\n\t/* Only reached if the socket died */\n\treturn -1;\n}\n/* }}} */\n\n/* {{{ libssh2_packet_write\n * Send a packet, encrypting it and adding a MAC code if necessary\n * Returns 0 on success, non-zero on failure\n */\nint libssh2_packet_write(LIBSSH2_SESSION *session, unsigned char *data, unsigned long data_len)\n{\n\tunsigned long packet_length = data_len + 1;\n\tunsigned long block_size = (session->state & LIBSSH2_STATE_NEWKEYS) ? session->local.crypt->blocksize : 8;\n\t/* At this point packet_length doesn't include the packet_len field itself */\n\tunsigned long padding_length;\n\tint free_data = 0;\n\tunsigned char buf[246]; /* 6 byte header plus max padding size(240) */\n\n#ifdef LIBSSH2_DEBUG_TRANSPORT\n{\n\t/* Show a hint of what's being sent */\n\tchar excerpt[32];\n\tint ex_len = 0, db_ofs = 0;\n\n\tfor (; ex_len < 24 && db_ofs < data_len; ex_len += 3, db_ofs++) snprintf(excerpt + ex_len, 4, \"%02X \", data[db_ofs]);\n\t_libssh2_debug(session, LIBSSH2_DBG_TRANS, \"Sending packet type %d, length=%lu, %s\", (int)data[0], data_len, excerpt);\n}\n#endif\n\tif ((session->state & LIBSSH2_STATE_NEWKEYS) &&\n\t\tstrcmp(session->local.comp->name, \"none\")) {\n\n\t\tif (session->local.comp->comp(session, 1, &data, &data_len, LIBSSH2_PACKET_MAXCOMP, &free_data, data, data_len, &session->local.comp_abstract)) {\n\t\t\treturn -1;\n\t\t}\n#ifdef LIBSSH2_DEBUG_TRANSPORT\n\t\t_libssh2_debug(session, LIBSSH2_DBG_TRANS, \"Compressed payload to %lu bytes\", data_len);\n#endif\n\t}\n\n#ifndef WIN32\n\tfcntl(session->socket_fd, F_SETFL, 0);\n#else\n\t{\n\t\tu_long non_block = FALSE;\n\t\tioctlsocket(session->socket_fd, FIONBIO, &non_block);\n\t}\n#endif\n\n\tpacket_length = data_len + 1; /* padding_length(1) -- MAC doesn't count -- Padding to be added soon */\n\tpadding_length = block_size - ((packet_length + 4) % block_size);\n\tif (padding_length < 4) {\n\t\tpadding_length += block_size;\n\t}\n\t/* TODO: Maybe add 1 or 2 times block_size to padding_length randomly -- shake things up a bit... */\n\n\tpacket_length += padding_length;\n\tlibssh2_htonu32(buf, packet_length);\n\tbuf[4] = padding_length;\n#ifdef LIBSSH2_DEBUG_TRANSPORT\n\t_libssh2_debug(session, LIBSSH2_DBG_TRANS, \"Sending packet with total length %lu (%lu bytes padding)\", packet_length, padding_length);\n#endif\n\n\tif (session->state & LIBSSH2_STATE_NEWKEYS) {\n\t\t/* Encryption is in effect */\n\t\tunsigned char *encbuf, *s;\n\t\tint ret, size, written = 0;\n\n\t\t/* include packet_length(4) itself and room for the hash at the end */\n\t\tencbuf = LIBSSH2_ALLOC(session, 4 + packet_length + session->local.mac->mac_len);\n\t\tif (!encbuf) {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate encryption buffer\", 0);\n\t\t\tif (free_data) {\n\t\t\t\tLIBSSH2_FREE(session, data);\n\t\t\t}\n\t\t\treturn -1;\n\t\t}\n\n\t\t/* Copy packet to encoding buffer */\n\t\tmemcpy(encbuf, buf, 5);\n\t\tmemcpy(encbuf + 5, data, data_len);\n\t\tlibssh2_random(encbuf + 5 + data_len, padding_length);\n\t\tif (free_data) {\n\t\t\tLIBSSH2_FREE(session, data);\n\t\t}\n\n\t\t/* Calculate MAC hash */\n \t\tsession->local.mac->hash(session, encbuf + 4 + packet_length , session->local.seqno, encbuf, 4 + packet_length, NULL, 0, &session->local.mac_abstract);\n\n\t\t/* Encrypt data */\n\t\tfor(s = encbuf; (s - encbuf) < (4 + packet_length) ; s += session->local.crypt->blocksize) {\n\t\t\tsession->local.crypt->crypt(session, s, &session->local.crypt_abstract);\n\t\t}\n\n\t\tsession->local.seqno++;\n\n\t\t/* Send It */\n\t\tsize = 4 + packet_length + session->local.mac->mac_len;\n\t\twritten = 0;\n\n\t\twhile(written < size) {\n\t\t    ret = LIBSSH2_WRITE(session, encbuf + written, size - written);\n\t\t    if(ret > 0) written += ret;\n\t\t    else break;\n\t\t}\n\n\t\tret = written == size ? 0 : -1;\n\n\t\t/* Cleanup environment */\n\t\tLIBSSH2_FREE(session, encbuf);\n\n\t\treturn ret;\n\t} else { /* LIBSSH2_ENDPOINT_CRYPT_NONE */\n\t\t/* Simplified write for non-encrypted mode */\n\t\tstruct iovec data_vector[3];\n\n\t\t/* Using vectors means we don't have to alloc a new buffer -- a byte saved is a byte earned\n\t\t * No MAC during unencrypted phase\n\t\t */\n\t\tdata_vector[0].iov_base = buf;\n\t\tdata_vector[0].iov_len = 5;\n\t\tdata_vector[1].iov_base = (char*)data;\n\t\tdata_vector[1].iov_len = data_len;\n\t\tdata_vector[2].iov_base = buf + 5;\n\t\tdata_vector[2].iov_len = padding_length;\n\n\t\tsession->local.seqno++;\n\n\t\t/* Ignore this, it can't actually happen :) */\n\t\tif (free_data) {\n\t\t\tLIBSSH2_FREE(session, data);\n\t\t}\n\n\t\treturn ((packet_length + 4) == writev(session->socket_fd, data_vector, 3)) ? 0 : 1;\n\t}\n}\n/* }}} */\n"
  },
  {
    "path": "Example/pem.c",
    "content": "/* Copyright (C) 2007 The Written Word, Inc.  All rights reserved.\n * Author: Simon Josefsson\n *\n * Redistribution and use in source and binary forms,\n * with or without modification, are permitted provided\n * that the following conditions are met:\n *\n *   Redistributions of source code must retain the above\n *   copyright notice, this list of conditions and the\n *   following disclaimer.\n *\n *   Redistributions in binary form must reproduce the above\n *   copyright notice, this list of conditions and the following\n *   disclaimer in the documentation and/or other materials\n *   provided with the distribution.\n *\n *   Neither the name of the copyright holder nor the names\n *   of any other contributors may be used to endorse or\n *   promote products derived from this software without\n *   specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND\n * CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES,\n * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE\n * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY\n * OF SUCH DAMAGE.\n */\n\n#include \"libssh2_priv.h\"\n\nstatic int readline (char *line, int line_size, FILE *fp)\n{\n\tif (!fgets(line, line_size, fp))\n\t{\n\t\treturn -1;\n\t}\n\tif (*line && line[strlen(line) - 1] == '\\r')\n\t{\n\t\tline[strlen(line) - 1] = '\\0';\n\t}\n\tif (*line && line[strlen(line) - 1] == '\\n')\n\t{\n\t\tline[strlen(line) - 1] = '\\0';\n\t}\n\treturn 0;\n}\n\n#define LINE_SIZE 128\n\nint _libssh2_pem_parse (LIBSSH2_SESSION *session,\n\t\t\tconst char *headerbegin,\n\t\t\tconst char *headerend,\n\t\t\tFILE *fp,\n\t\t\tchar **data, unsigned int *datalen)\n{\n\tchar line[LINE_SIZE];\n\tchar *b64data = NULL;\n\tunsigned int b64datalen = 0;\n\tint ret;\n\n\tdo\n\t{\n\t\tif (readline(line, LINE_SIZE, fp))\n\t\t{\n\t\t\treturn -1;\n\t\t}\n\t}\n\twhile (strcmp (line, headerbegin) != 0);\n\n\t*line = '\\0';\n\n\tdo\n\t{\n\t\tif (*line)\n\t\t{\n\t\t\tchar *tmp;\n\t\t\tsize_t linelen;\n\n\t\t\tlinelen = strlen (line);\n\t\t\ttmp = LIBSSH2_REALLOC (session, b64data,\n\t\t\t\t\t       b64datalen + linelen);\n\t\t\tif (!tmp)\n\t\t\t{\n\t\t\t\tret = -1;\n\t\t\t\tgoto out;\n\t\t\t}\n\t\t\tmemcpy (tmp + b64datalen, line, linelen);\n\t\t\tb64data = tmp;\n\t\t\tb64datalen += linelen;\n\t\t}\n\n\t\tif (readline(line, LINE_SIZE, fp))\n\t\t{\n\t\t\tret = -1;\n\t\t\tgoto out;\n\t\t}\n\t} while (strcmp (line, headerend) != 0);\n\n\tif (libssh2_base64_decode(session, data, datalen,\n\t\t\t\t  b64data, b64datalen))\n\t{\n\t\tret = -1;\n\t\tgoto out;\n\t}\n\n\tret = 0;\nout:\n\tif (b64data) {\n\t\tLIBSSH2_FREE (session, b64data);\n\t}\n\treturn ret;\n}\n\nstatic int read_asn1_length (const unsigned char *data,\n\t\t\t     unsigned int datalen,\n\t\t\t     unsigned int *len)\n{\n\tunsigned int lenlen;\n\tint nextpos;\n\n\tif (datalen < 1)\n\t{\n\t\treturn -1;\n\t}\n\t*len = data[0];\n\n\tif (*len >= 0x80)\n\t{\n\t\tlenlen = *len & 0x7F;\n\t\t*len = data[1];\n\t\tif (1 + lenlen > datalen)\n\t\t{\n\t\t\treturn -1;\n\t\t}\n\t\tif (lenlen > 1)\n\t\t{\n\t\t\t*len <<= 8;\n\t\t\t*len |= data[2];\n\t\t}\n\t}\n\telse\n\t{\n\t\tlenlen = 0;\n\t}\n\n\tnextpos = 1 + lenlen;\n\tif (lenlen > 2 || 1 + lenlen + *len > datalen)\n\t{\n\t\treturn -1;\n\t}\n\n\treturn nextpos;\n}\n\nint _libssh2_pem_decode_sequence (unsigned char **data, unsigned int *datalen)\n{\n\tunsigned int len;\n\tint lenlen;\n\n\tif (*datalen < 1)\n\t{\n\t\treturn -1;\n\t}\n\n\tif ((*data)[0] != '\\x30')\n\t{\n\t\treturn -1;\n\t}\n\n\t(*data)++;\n\t(*datalen)--;\n\n\tlenlen = read_asn1_length (*data, *datalen, &len);\n\tif (lenlen < 0 || lenlen + len != *datalen)\n\t{\n\t\treturn -1;\n\t}\n\n\t*data += lenlen;\n\t*datalen -= lenlen;\n\n\treturn 0;\n}\n\nint _libssh2_pem_decode_integer (unsigned char **data, unsigned int *datalen,\n\t\t\t\t unsigned char **i, unsigned int *ilen)\n{\n\tunsigned int len;\n\tint lenlen;\n\n\tif (*datalen < 1)\n\t{\n\t\treturn -1;\n\t}\n\n\tif ((*data)[0] != '\\x02')\n\t{\n\t\treturn -1;\n\t}\n\n\t(*data)++;\n\t(*datalen)--;\n\n\tlenlen = read_asn1_length (*data, *datalen, &len);\n\tif (lenlen < 0 || lenlen + len > *datalen)\n\t{\n\t\treturn -1;\n\t}\n\n\t*data += lenlen;\n\t*datalen -= lenlen;\n\n\t*i = *data;\n\t*ilen = len;\n\n\t*data += len;\n\t*datalen -= len;\n\n\treturn 0;\n}\n"
  },
  {
    "path": "Example/publickey.c",
    "content": "/* Copyright (c) 2004-2006, Sara Golemon <sarag@libssh2.org>\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms,\n * with or without modification, are permitted provided\n * that the following conditions are met:\n *\n *   Redistributions of source code must retain the above\n *   copyright notice, this list of conditions and the\n *   following disclaimer.\n *\n *   Redistributions in binary form must reproduce the above\n *   copyright notice, this list of conditions and the following\n *   disclaimer in the documentation and/or other materials\n *   provided with the distribution.\n *\n *   Neither the name of the copyright holder nor the names\n *   of any other contributors may be used to endorse or\n *   promote products derived from this software without\n *   specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND\n * CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES,\n * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE\n * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY\n * OF SUCH DAMAGE.\n */\n\n#include \"libssh2_priv.h\"\n#include \"libssh2_publickey.h\"\n\nstruct _LIBSSH2_PUBLICKEY {\n\tLIBSSH2_CHANNEL *channel;\n\tunsigned long version;\n};\n\n#define LIBSSH2_PUBLICKEY_VERSION\t\t\t\t2\n\n/* Numericised response codes -- Not IETF standard, just a local representation */\n#define LIBSSH2_PUBLICKEY_RESPONSE_STATUS\t\t0\n#define LIBSSH2_PUBLICKEY_RESPONSE_VERSION\t\t1\n#define LIBSSH2_PUBLICKEY_RESPONSE_PUBLICKEY\t2\n\ntypedef struct _LIBSSH2_PUBLICKEY_CODE_LIST {\n\tint code;\n\tchar *name;\n\tint name_len;\n} LIBSSH2_PUBLICKEY_CODE_LIST;\n\nstatic LIBSSH2_PUBLICKEY_CODE_LIST libssh2_publickey_response_codes[] = {\n\t{ LIBSSH2_PUBLICKEY_RESPONSE_STATUS, \"status\", sizeof(\"status\") - 1 },\n\t{ LIBSSH2_PUBLICKEY_RESPONSE_VERSION, \"version\", sizeof(\"version\") - 1 },\n\t{ LIBSSH2_PUBLICKEY_RESPONSE_PUBLICKEY, \"publickey\", sizeof(\"publickey\") - 1 },\n\t{ 0, NULL, 0 }\n};\n\n/* PUBLICKEY status codes -- IETF defined */\n#define LIBSSH2_PUBLICKEY_SUCCESS\t\t\t\t0\n#define LIBSSH2_PUBLICKEY_ACCESS_DENIED\t\t\t1\n#define LIBSSH2_PUBLICKEY_STORAGE_EXCEEDED\t\t2\n#define LIBSSH2_PUBLICKEY_VERSION_NOT_SUPPORTED\t3\n#define LIBSSH2_PUBLICKEY_KEY_NOT_FOUND\t\t\t4\n#define LIBSSH2_PUBLICKEY_KEY_NOT_SUPPORTED\t\t5\n#define LIBSSH2_PUBLICKEY_KEY_ALREADY_PRESENT\t6\n#define LIBSSH2_PUBLICKEY_GENERAL_FAILURE\t\t7\n#define LIBSSH2_PUBLICKEY_REQUEST_NOT_SUPPORTED\t8\n\n#define LIBSSH2_PUBLICKEY_STATUS_CODE_MAX\t\t8\n\nstatic LIBSSH2_PUBLICKEY_CODE_LIST libssh2_publickey_status_codes[] = {\n\t{ LIBSSH2_PUBLICKEY_SUCCESS,\t\t\t\t\"success\",\t\t\t\t\tsizeof(\"success\") - 1 },\n\t{ LIBSSH2_PUBLICKEY_ACCESS_DENIED,\t\t\t\"access denied\",\t\t\tsizeof(\"access denied\") - 1 },\n\t{ LIBSSH2_PUBLICKEY_STORAGE_EXCEEDED,\t\t\"storage exceeded\",\t\t\tsizeof(\"storage exceeded\") - 1 },\n\t{ LIBSSH2_PUBLICKEY_VERSION_NOT_SUPPORTED,\t\"version not supported\",\tsizeof(\"version not supported\") - 1 },\n\t{ LIBSSH2_PUBLICKEY_KEY_NOT_FOUND,\t\t\t\"key not found\",\t\t\tsizeof(\"key not found\") - 1 },\n\t{ LIBSSH2_PUBLICKEY_KEY_NOT_SUPPORTED,\t\t\"key not supported\",\t\tsizeof(\"key not supported\") - 1 },\n\t{ LIBSSH2_PUBLICKEY_KEY_ALREADY_PRESENT,\t\"key already present\",\t\tsizeof(\"key already present\") - 1 },\n\t{ LIBSSH2_PUBLICKEY_GENERAL_FAILURE,\t\t\"general failure\",\t\t\tsizeof(\"general failure\") - 1 },\n\t{ LIBSSH2_PUBLICKEY_REQUEST_NOT_SUPPORTED,\t\"request not supported\",\tsizeof(\"request not supported\") - 1 },\n\t{ 0, NULL, 0 }\n};\n\n/* {{{ libssh2_publickey_status_error\n * Format an error message from a status code\n */\n#define LIBSSH2_PUBLICKEY_STATUS_TEXT_START\t\t\"Publickey Subsystem Error: \\\"\"\n#define LIBSSH2_PUBLICKEY_STATUS_TEXT_MID\t\t\"\\\" Server Resports: \\\"\"\n#define LIBSSH2_PUBLICKEY_STATUS_TEXT_END\t\t\"\\\"\"\nstatic void libssh2_publickey_status_error(LIBSSH2_PUBLICKEY *pkey, LIBSSH2_SESSION *session, int status, unsigned char *message, int message_len)\n{\n\tchar *status_text;\n\tint status_text_len;\n\tchar *m, *s;\n\tint m_len;\n\n\t/* GENERAL_FAILURE got remapped between version 1 and 2 */\n\tif (status == 6 && pkey && pkey->version == 1) {\n\t\tstatus = 7;\n\t}\n\n\tif (status < 0 || status > LIBSSH2_PUBLICKEY_STATUS_CODE_MAX) {\n\t\tstatus_text = \"unknown\";\n\t\tstatus_text_len = sizeof(\"unknown\") - 1;\n\t} else {\n\t\tstatus_text = libssh2_publickey_status_codes[status].name;\n\t\tstatus_text_len = libssh2_publickey_status_codes[status].name_len;\n\t}\n\n\tm_len = (sizeof(LIBSSH2_PUBLICKEY_STATUS_TEXT_START) - 1) + status_text_len + \n\t\t\t(sizeof(LIBSSH2_PUBLICKEY_STATUS_TEXT_MID) - 1) + message_len +\n\t\t\t(sizeof(LIBSSH2_PUBLICKEY_STATUS_TEXT_END) - 1);\n\tm = LIBSSH2_ALLOC(session, m_len + 1);\n\tif (!m) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for status message\", 0);\n\t\treturn;\n\t}\n\ts = m;\n\tmemcpy(s, LIBSSH2_PUBLICKEY_STATUS_TEXT_START, sizeof(LIBSSH2_PUBLICKEY_STATUS_TEXT_START) - 1);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ts += sizeof(LIBSSH2_PUBLICKEY_STATUS_TEXT_START) - 1;\n\tmemcpy(s, status_text, status_text_len);\t\t\t\ts += status_text_len;\n\tmemcpy(s, LIBSSH2_PUBLICKEY_STATUS_TEXT_MID, sizeof(LIBSSH2_PUBLICKEY_STATUS_TEXT_MID) - 1);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ts += sizeof(LIBSSH2_PUBLICKEY_STATUS_TEXT_MID) - 1;\n\tmemcpy(s, message, message_len);\t\t\t\t\t\ts += message_len;\n\tmemcpy(s, LIBSSH2_PUBLICKEY_STATUS_TEXT_END, sizeof(LIBSSH2_PUBLICKEY_STATUS_TEXT_END) - 1);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ts += sizeof(LIBSSH2_PUBLICKEY_STATUS_TEXT_END);\n\tlibssh2_error(session, LIBSSH2_ERROR_PUBLICKEY_PROTOCOL, m, 1);\n}\n/* }}} */\n\n/* {{{ libssh2_publickey_packet_receive\n * Read a packet from the subsystem\n */\nstatic int libssh2_publickey_packet_receive(LIBSSH2_PUBLICKEY *pkey, unsigned char **data, unsigned long *data_len)\n{\n\tLIBSSH2_CHANNEL *channel = pkey->channel;\n\tLIBSSH2_SESSION *session = channel->session;\n\tunsigned char buffer[4];\n\tunsigned long packet_len;\n\tunsigned char *packet;\n\n\tif (libssh2_channel_read(channel, (char *)buffer, 4) != 4) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_PUBLICKEY_PROTOCOL, \"Invalid response from publickey subsystem\", 0);\n\t\treturn -1;\n\t}\n\n\tpacket_len = libssh2_ntohu32(buffer);\n\tpacket = LIBSSH2_ALLOC(session, packet_len);\n\tif (!packet) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate publickey response buffer\", 0);\n\t\treturn -1;\n\t}\n\n\tif (libssh2_channel_read(channel, (char *)packet, packet_len) != packet_len) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_TIMEOUT, \"Timeout waiting for publickey subsystem response packet\", 0);\n\t\tLIBSSH2_FREE(session, packet);\n\t\treturn -1;\n\t}\n\n\t*data = packet;\n\t*data_len = packet_len;\n\n\treturn 0;\n}\n/* }}} */\n\n/* {{{ libssh2_publickey_response_id\n * Translate a string response name to a numeric code\n * Data will be incremented by 4 + response_len on success only\n */\nstatic int libssh2_publickey_response_id(unsigned char **pdata, int data_len)\n{\n\tunsigned long response_len;\n\tunsigned char *data = *pdata;\n\tLIBSSH2_PUBLICKEY_CODE_LIST *codes = libssh2_publickey_response_codes;\n\n\tif (data_len < 4) {\n\t\t/* Malformed response */\n\t\treturn -1;\n\t}\n\tresponse_len = libssh2_ntohu32(data);\t\t\tdata += 4;\t\t\tdata_len -= 4;\n\tif (data_len < response_len) {\n\t\t/* Malformed response */\n\t\treturn -1;\n\t}\n\n\twhile (codes->name) {\n\t\tif (codes->name_len == response_len &&\n\t\t\tstrncmp(codes->name, (char *)data, response_len) == 0) {\n\t\t\t*pdata = data + response_len;\n\t\t\treturn codes->code;\n\t\t}\n\t\tcodes++;\n\t}\n\n\treturn -1;\n}\n/* }}} */\n\n/* {{{ libssh2_publickey_response_success\n * Generic helper routine to wait for success response and nothing else\n */\nstatic int libssh2_publickey_response_success(LIBSSH2_PUBLICKEY *pkey)\n{\n\tLIBSSH2_SESSION *session = pkey->channel->session;\n\tunsigned char *data, *s;\n\tunsigned long data_len;\n\tint response;\n\n\twhile (1) {\n\t\tif (libssh2_publickey_packet_receive(pkey, &data, &data_len)) {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_TIMEOUT, \"Timeout waiting for response from publickey subsystem\", 0);\n\t\t\treturn -1;\n\t\t}\n\n\t\ts = data;\n\t\tif ((response = libssh2_publickey_response_id(&s, data_len)) < 0) {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_PUBLICKEY_PROTOCOL, \"Invalid publickey subsystem response code\", 0);\n\t\t\tLIBSSH2_FREE(session, data);\n\t\t\treturn -1;\n\t\t}\n\n\t\tswitch (response) {\n\t\t\tcase LIBSSH2_PUBLICKEY_RESPONSE_STATUS:\n\t\t\t/* Error, or processing complete */\n\t\t\t{\n\t\t\t\tunsigned long status, descr_len, lang_len;\n\t\t\t\tunsigned char *descr, *lang;\n\t\t\t\t\n\t\t\t\tstatus = libssh2_ntohu32(s);\t\t\t\t\ts += 4;\n\t\t\t\tdescr_len = libssh2_ntohu32(s);\t\t\t\t\ts += 4;\n\t\t\t\tdescr = s;\t\t\t\t\t\t\t\t\t\ts += descr_len;\n\t\t\t\tlang_len = libssh2_ntohu32(s);\t\t\t\t\ts += 4;\n\t\t\t\tlang = s;\t\t\t\t\t\t\t\t\t\ts += lang_len;\n\n\t\t\t\tif (s > data + data_len) {\n\t\t\t\t\tlibssh2_error(session, LIBSSH2_ERROR_PUBLICKEY_PROTOCOL, \"Malformed publickey subsystem packet\", 0);\n\t\t\t\t\tLIBSSH2_FREE(session, data);\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n\n\t\t\t\tif (status == LIBSSH2_PUBLICKEY_SUCCESS) {\n\t\t\t\t\tLIBSSH2_FREE(session, data);\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\tlibssh2_publickey_status_error(pkey, session, status, descr, descr_len);\n\t\t\t\tLIBSSH2_FREE(session, data);\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tdefault:\n\t\t\t\t/* Unknown/Unexpected */\n\t\t\t\tlibssh2_error(session, LIBSSH2_ERROR_PUBLICKEY_PROTOCOL, \"Unexpected publickey subsystem response, ignoring\", 0);\n\t\t\t\tLIBSSH2_FREE(session, data);\n\t\t\t\tdata = NULL;\n\t\t}\n\t}\n\t/* never reached, but include `return` to silence compiler warnings */\n\treturn -1;\n}\n/* }}} */\n\n\n/* *****************\n   * Publickey API *\n   ***************** */\n\n/* {{{ libssh2_publickey_init\n * Startup the publickey subsystem\n */\nLIBSSH2_API LIBSSH2_PUBLICKEY *libssh2_publickey_init(LIBSSH2_SESSION *session)\n{\n\tLIBSSH2_PUBLICKEY *pkey = NULL;\n\tLIBSSH2_CHANNEL *channel = NULL;\n\tunsigned char buffer[19];\n\t/*\tpacket_len(4) + \n\t\tversion_len(4) + \n\t\t\"version\"(7) + \n\t\tversion_num(4) */\n\tunsigned char *s, *data = NULL;\n\tunsigned long data_len;\n\tint response;\n\n#ifdef LIBSSH2_DEBUG_PUBLICKEY\n\t_libssh2_debug(session, LIBSSH2_DBG_PUBLICKEY, \"Initializing publickey subsystem\");\n#endif\n\n\tchannel = libssh2_channel_open_session(session);\n\tif (!channel) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_CHANNEL_FAILURE, \"Unable to startup channel\", 0);\n\t\tgoto err_exit;\n\t}\n\tif (libssh2_channel_subsystem(channel, \"publickey\")) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_CHANNEL_FAILURE, \"Unable to request publickey subsystem\", 0);\n\t\tgoto err_exit;\n\t}\n\n\tlibssh2_channel_set_blocking(channel, 1);\n\tlibssh2_channel_handle_extended_data(channel, LIBSSH2_CHANNEL_EXTENDED_DATA_IGNORE);\n\n\tpkey = LIBSSH2_ALLOC(session, sizeof(LIBSSH2_PUBLICKEY));\n\tif (!pkey) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate a new publickey structure\", 0);\n\t\tgoto err_exit;\n\t}\n\tpkey->channel = channel;\n\tpkey->version = 0;\n\n\ts = buffer;\n\tlibssh2_htonu32(s, 4 + (sizeof(\"version\") - 1) + 4);\ts += 4;\n\tlibssh2_htonu32(s, sizeof(\"version\") - 1);\t\t\t\ts += 4;\n\tmemcpy(s, \"version\", sizeof(\"version\") - 1);\t\t\ts += sizeof(\"version\") - 1;\n\tlibssh2_htonu32(s, LIBSSH2_PUBLICKEY_VERSION);\t\t\ts += 4;\n\n#ifdef LIBSSH2_DEBUG_PUBLICKEY\n\t_libssh2_debug(session, LIBSSH2_DBG_PUBLICKEY, \"Sending publickey version packet advertising version %d support\", (int)LIBSSH2_PUBLICKEY_VERSION);\n#endif\n    if ((s - buffer) != libssh2_channel_write(channel, (char*)buffer, (s - buffer))) {\n        libssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send publickey version packet\", 0);\n\t\tgoto err_exit;\n    }\n\n\twhile (1) {\n\t\tif (libssh2_publickey_packet_receive(pkey, &data, &data_len)) {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_TIMEOUT, \"Timeout waiting for response from publickey subsystem\", 0);\n\t\t\tgoto err_exit;\n\t\t}\n\n\t\ts = data;\n\t\tif ((response = libssh2_publickey_response_id(&s, data_len)) < 0) {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_PUBLICKEY_PROTOCOL, \"Invalid publickey subsystem response code\", 0);\n\t\t\tgoto err_exit;\n\t\t}\n\n\t\tswitch (response) {\n\t\t\tcase LIBSSH2_PUBLICKEY_RESPONSE_STATUS:\n\t\t\t/* Error */\n\t\t\t{\n\t\t\t\tunsigned long status, descr_len, lang_len;\n\t\t\t\tunsigned char *descr, *lang;\n\t\t\t\t\n\t\t\t\tstatus = libssh2_ntohu32(s);\t\t\t\t\ts += 4;\n\t\t\t\tdescr_len = libssh2_ntohu32(s);\t\t\t\t\ts += 4;\n\t\t\t\tdescr = s;\t\t\t\t\t\t\t\t\t\ts += descr_len;\n\t\t\t\tlang_len = libssh2_ntohu32(s);\t\t\t\t\ts += 4;\n\t\t\t\tlang = s;\t\t\t\t\t\t\t\t\t\ts += lang_len;\n\n\t\t\t\tif (s > data + data_len) {\n\t\t\t\t\tlibssh2_error(session, LIBSSH2_ERROR_PUBLICKEY_PROTOCOL, \"Malformed publickey subsystem packet\", 0);\n\t\t\t\t\tgoto err_exit;\n\t\t\t\t}\n\n\t\t\t\tlibssh2_publickey_status_error(NULL, session, status, descr, descr_len);\n\t\t\t\tgoto err_exit;\n\t\t\t}\n\t\t\tcase LIBSSH2_PUBLICKEY_RESPONSE_VERSION:\n\t\t\t\t/* What we want */\n\t\t\t\tpkey->version = libssh2_ntohu32(s);\n\t\t\t\tif (pkey->version > LIBSSH2_PUBLICKEY_VERSION) {\n#ifdef LIBSSH2_DEBUG_PUBLICKEY\n\t\t\t\t\t_libssh2_debug(session, LIBSSH2_DBG_PUBLICKEY, \"Truncating remote publickey version from %lu\", pkey->version);\n#endif\n\t\t\t\t\tpkey->version = LIBSSH2_PUBLICKEY_VERSION;\n\t\t\t\t}\n#ifdef LIBSSH2_DEBUG_PUBLICKEY\n\t\t\t\t_libssh2_debug(session, LIBSSH2_DBG_PUBLICKEY, \"Enabling publickey subsystem version %lu\", pkey->version);\n#endif\n\t\t\t\tLIBSSH2_FREE(session, data);\n\t\t\t\treturn pkey;\n\t\t\tdefault:\n\t\t\t\t/* Unknown/Unexpected */\n\t\t\t\tlibssh2_error(session, LIBSSH2_ERROR_PUBLICKEY_PROTOCOL, \"Unexpected publickey subsystem response, ignoring\", 0);\n\t\t\t\tLIBSSH2_FREE(session, data);\n\t\t\t\tdata = NULL;\n\t\t}\n\t}\n\n\t/* Never reached except by direct goto */\n err_exit:\n\tif (channel) {\n\t\tlibssh2_channel_close(channel);\n\t}\n\tif (pkey) {\n\t\tLIBSSH2_FREE(session, pkey);\n\t}\n\tif (data) {\n\t\tLIBSSH2_FREE(session, data);\n\t}\n\treturn NULL;\n}\n/* }}} */\n\n/* {{{ libssh2_publickey_add_ex\n * Add a new public key entry\n */\nLIBSSH2_API int libssh2_publickey_add_ex(LIBSSH2_PUBLICKEY *pkey, const unsigned char *name, unsigned long name_len,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst unsigned char *blob, unsigned long blob_len, char overwrite,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tunsigned long num_attrs, libssh2_publickey_attribute attrs[])\n{\n\tLIBSSH2_CHANNEL *channel = pkey->channel;\n\tLIBSSH2_SESSION *session = channel->session;\n\tunsigned char *packet = NULL, *s;\n\tunsigned long i, packet_len = 19 + name_len + blob_len;\n\tunsigned char *comment = NULL;\n\tunsigned long comment_len = 0;\n\t/*\tpacket_len(4) +\n\t\tadd_len(4) +\n\t\t\"add\"(3) +\n\t\tname_len(4) +\n\t\t{name}\n\t\tblob_len(4) +\n\t\t{blob} */\n\n#ifdef LIBSSH2_DEBUG_PUBLICKEY\n\t_libssh2_debug(session, LIBSSH2_DBG_PUBLICKEY, \"Adding %s pubickey\", name);\n#endif\n\n\tif (pkey->version == 1) {\n\t\tfor(i = 0; i < num_attrs; i++) {\n\t\t\t/* Search for a comment attribute */\n\t\t\tif (attrs[i].name_len == (sizeof(\"comment\") - 1) &&\n\t\t\t\tstrncmp(attrs[i].name, \"comment\", sizeof(\"comment\") - 1) == 0) {\n\t\t\t\tcomment = (unsigned char *)attrs[i].value;\n\t\t\t\tcomment_len = attrs[i].value_len;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tpacket_len += 4 + comment_len;\n\t} else {\n\t\tpacket_len += 5; /* overwrite(1) + attribute_count(4) */\n\t\tfor(i = 0; i < num_attrs; i++) {\n\t\t\tpacket_len += 9 + attrs[i].name_len + attrs[i].value_len;\n\t\t\t/* name_len(4) + value_len(4) + mandatory(1) */\n\t\t}\n\t}\n\n\tpacket = LIBSSH2_ALLOC(session, packet_len);\n\tif (!packet) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for publickey \\\"add\\\" packet\", 0);\n\t\treturn -1;\n\t}\n\n\ts = packet;\n\tlibssh2_htonu32(s, packet_len - 4);\t\t\t\t\t\ts += 4;\n\tlibssh2_htonu32(s, sizeof(\"add\") - 1);\t\t\t\t\ts += 4;\n\tmemcpy(s, \"add\", sizeof(\"add\") - 1);\t\t\t\t\ts += sizeof(\"add\") - 1;\n\tif (pkey->version == 1) {\n\t\tlibssh2_htonu32(s, comment_len);\t\t\t\t\ts += 4;\n\t\tif (comment) {\n\t\t\tmemcpy(s, comment, comment_len);\t\t\t\ts += comment_len;\n\t\t}\n\n\t\tlibssh2_htonu32(s, name_len);\t\t\t\t\t\ts += 4;\n\t\tmemcpy(s, name, name_len);\t\t\t\t\t\t\ts += name_len;\n\t\tlibssh2_htonu32(s, blob_len);\t\t\t\t\t\ts += 4;\n\t\tmemcpy(s, blob, blob_len);\t\t\t\t\t\t\ts += blob_len;\n\t} else {\n\t\t/* Version == 2 */\n\n\t\tlibssh2_htonu32(s, name_len);\t\t\t\t\t\ts += 4;\n\t\tmemcpy(s, name, name_len);\t\t\t\t\t\t\ts += name_len;\n\t\tlibssh2_htonu32(s, blob_len);\t\t\t\t\t\ts += 4;\n\t\tmemcpy(s, blob, blob_len);\t\t\t\t\t\t\ts += blob_len;\n\t\t*(s++) = overwrite ? 0xFF : 0;\n\t\tlibssh2_htonu32(s, num_attrs);\t\t\t\t\t\ts += 4;\n\t\tfor(i = 0; i < num_attrs; i++) {\n\t\t\tlibssh2_htonu32(s, attrs[i].name_len);\t\t\ts += 4;\n\t\t\tmemcpy(s, attrs[i].name, attrs[i].name_len);\ts += attrs[i].name_len;\n\t\t\tlibssh2_htonu32(s, attrs[i].value_len);\t\t\ts += 4;\n\t\t\tmemcpy(s, attrs[i].value, attrs[i].value_len);\ts += attrs[i].value_len;\n\t\t\t*(s++) = attrs[i].mandatory ? 0xFF : 0;\n\t\t}\n\t}\n\n#ifdef LIBSSH2_DEBUG_PUBLICKEY\n\t_libssh2_debug(session, LIBSSH2_DBG_PUBLICKEY, \"Sending publickey \\\"add\\\" packet: type=%s blob_len=%ld num_attrs=%ld\", name, blob_len, num_attrs);\n#endif\n    if ((s - packet) != libssh2_channel_write(channel, (char *)packet, (s - packet))) {\n        libssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send publickey add packet\", 0);\n\t\tLIBSSH2_FREE(session, packet);\n\t\treturn -1;\n    }\n\tLIBSSH2_FREE(session, packet);\n\tpacket = NULL;\n\n\treturn libssh2_publickey_response_success(pkey);\n}\n/* }}} */\n\n/* {{{ libssh2_publickey_remove_ex\n * Remove an existing publickey so that authentication can no longer be performed using it\n */\nLIBSSH2_API int libssh2_publickey_remove_ex(LIBSSH2_PUBLICKEY *pkey, const unsigned char *name, unsigned long name_len,\n                                                            const unsigned char *blob, unsigned long blob_len)\n{\n\tLIBSSH2_CHANNEL *channel = pkey->channel;\n\tLIBSSH2_SESSION *session = channel->session;\n\tunsigned char *s, *packet = NULL;\n\tunsigned long packet_len = 22 + name_len + blob_len;\n\t/*\tpacket_len(4) + \n\t\tremove_len(4) +\n\t\t\"remove\"(6) +\n\t\tname_len(4) +\n\t\t{name}\n\t\tblob_len(4) +\n\t\t{blob} */\n\n\tpacket = LIBSSH2_ALLOC(session, packet_len);\n\tif (!packet) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for publickey \\\"remove\\\" packet\", 0);\n\t\treturn -1;\n\t}\n\n\ts = packet;\n\tlibssh2_htonu32(s, packet_len - 4);\t\t\t\t\t\t\ts += 4;\n\tlibssh2_htonu32(s, sizeof(\"remove\") - 1);\t\t\t\t\ts += 4;\n\tmemcpy(s, \"remove\", sizeof(\"remove\") - 1);\t\t\t\t\ts += sizeof(\"remove\") - 1;\n\tlibssh2_htonu32(s, name_len);\t\t\t\t\t\t\t\ts += 4;\n\tmemcpy(s, name, name_len);\t\t\t\t\t\t\t\t\ts += name_len;\n\tlibssh2_htonu32(s, blob_len);\t\t\t\t\t\t\t\ts += 4;\n\tmemcpy(s, blob, blob_len);\t\t\t\t\t\t\t\t\ts += blob_len;\n\n#ifdef LIBSSH2_DEBUG_PUBLICKEY\n\t_libssh2_debug(session, LIBSSH2_DBG_PUBLICKEY, \"Sending publickey \\\"remove\\\" packet: type=%s blob_len=%ld\", name, blob_len);\n#endif\n    if ((s - packet) != libssh2_channel_write(channel, (char *)packet, (s - packet))) {\n        libssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send publickey remove packet\", 0);\n\t\tLIBSSH2_FREE(session, packet);\n\t\treturn -1;\n    }\n\tLIBSSH2_FREE(session, packet);\n\tpacket = NULL;\n\n\treturn libssh2_publickey_response_success(pkey);\n}\n/* }}} */\n\n/* {{{ libssh2_publickey_list_fetch\n * Fetch a list of supported public key from a server\n */\nLIBSSH2_API int libssh2_publickey_list_fetch(LIBSSH2_PUBLICKEY *pkey, unsigned long *num_keys, libssh2_publickey_list **pkey_list)\n{\n\tLIBSSH2_CHANNEL *channel = pkey->channel;\n\tLIBSSH2_SESSION *session = channel->session;\n\tlibssh2_publickey_list *list = NULL;\n\tunsigned char *s, buffer[12], *data = NULL;\n\tunsigned long buffer_len = 12, keys = 0, max_keys = 0, data_len, i;\n\t/*\tpacket_len(4) +\n\t\tlist_len(4) +\n\t\t\"list\"(4) */\n\tint response;\n\n\ts = buffer;\n\tlibssh2_htonu32(s, buffer_len - 4);\t\t\t\t\t\t\ts += 4;\n\tlibssh2_htonu32(s, sizeof(\"list\") - 1);\t\t\t\t\t\ts += 4;\n\tmemcpy(s, \"list\", sizeof(\"list\") - 1);\t\t\t\t\t\ts += sizeof(\"list\") - 1;\n\n#ifdef LIBSSH2_DEBUG_PUBLICKEY\n\t_libssh2_debug(session, LIBSSH2_DBG_PUBLICKEY, \"Sending publickey \\\"list\\\" packet\");\n#endif\n    if ((s - buffer) != libssh2_channel_write(channel, (char *)buffer, (s - buffer))) {\n        libssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send publickey list packet\", 0);\n\t\treturn -1;\n    }\n\n\twhile (1) {\n\t\tif (libssh2_publickey_packet_receive(pkey, &data, &data_len)) {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_TIMEOUT, \"Timeout waiting for response from publickey subsystem\", 0);\n\t\t\tgoto err_exit;\n\t\t}\n\n\t\ts = data;\n\t\tif ((response = libssh2_publickey_response_id(&s, data_len)) < 0) {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_PUBLICKEY_PROTOCOL, \"Invalid publickey subsystem response code\", 0);\n\t\t\tgoto err_exit;\n\t\t}\n\n\t\tswitch (response) {\n\t\t\tcase LIBSSH2_PUBLICKEY_RESPONSE_STATUS:\n\t\t\t/* Error, or processing complete */\n\t\t\t{\n\t\t\t\tunsigned long status, descr_len, lang_len;\n\t\t\t\tunsigned char *descr, *lang;\n\t\t\t\t\n\t\t\t\tstatus = libssh2_ntohu32(s);\t\t\t\t\ts += 4;\n\t\t\t\tdescr_len = libssh2_ntohu32(s);\t\t\t\t\ts += 4;\n\t\t\t\tdescr = s;\t\t\t\t\t\t\t\t\t\ts += descr_len;\n\t\t\t\tlang_len = libssh2_ntohu32(s);\t\t\t\t\ts += 4;\n\t\t\t\tlang = s;\t\t\t\t\t\t\t\t\t\ts += lang_len;\n\n\t\t\t\tif (s > data + data_len) {\n\t\t\t\t\tlibssh2_error(session, LIBSSH2_ERROR_PUBLICKEY_PROTOCOL, \"Malformed publickey subsystem packet\", 0);\n\t\t\t\t\tgoto err_exit;\n\t\t\t\t}\n\n\t\t\t\tif (status == LIBSSH2_PUBLICKEY_SUCCESS) {\n\t\t\t\t\tLIBSSH2_FREE(session, data);\n\t\t\t\t\t*pkey_list = list;\n\t\t\t\t\t*num_keys = keys;\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\tlibssh2_publickey_status_error(pkey, session, status, descr, descr_len);\n\t\t\t\tgoto err_exit;\n\t\t\t}\n\t\t\tcase LIBSSH2_PUBLICKEY_RESPONSE_PUBLICKEY:\n\t\t\t\t/* What we want */\n\t\t\t\tif (keys >= max_keys) {\n\t\t\t\t\t/* Grow the key list if necessary */\n\t\t\t\t\tmax_keys += 8;\n\t\t\t\t\tlist = LIBSSH2_REALLOC(session, list, (max_keys + 1) * sizeof(libssh2_publickey_list));\n\t\t\t\t\tif (!list) {\n\t\t\t\t\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for publickey list\", 0);\n\t\t\t\t\t\tgoto err_exit;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pkey->version == 1) {\n\t\t\t\t\tunsigned long comment_len;\n\n\t\t\t\t\tcomment_len = libssh2_ntohu32(s);\t\t\t\t\t\t\t\ts += 4;\n\t\t\t\t\tif (comment_len) {\n\t\t\t\t\t\tlist[keys].num_attrs = 1;\n\t\t\t\t\t\tlist[keys].attrs = LIBSSH2_ALLOC(session, sizeof(libssh2_publickey_attribute));\n\t\t\t\t\t\tif (!list[keys].attrs) {\n\t\t\t\t\t\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for publickey attributes\", 0);\n\t\t\t\t\t\t\tgoto err_exit;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlist[keys].attrs[0].name = \"comment\";\n\t\t\t\t\t\tlist[keys].attrs[0].name_len = sizeof(\"comment\") - 1;\n\t\t\t\t\t\tlist[keys].attrs[0].value = (char *)s;\n\t\t\t\t\t\tlist[keys].attrs[0].value_len = comment_len;\n\t\t\t\t\t\tlist[keys].attrs[0].mandatory = 0;\n\n\t\t\t\t\t\ts += comment_len;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlist[keys].num_attrs = 0;\n\t\t\t\t\t\tlist[keys].attrs = NULL;\n\t\t\t\t\t}\n\t\t\t\t\tlist[keys].name_len = libssh2_ntohu32(s);\t\t\t\t\t\ts += 4;\n\t\t\t\t\tlist[keys].name = s;\t\t\t\t\t\t\t\t\t\t\ts += list[keys].name_len;\n\t\t\t\t\tlist[keys].blob_len = libssh2_ntohu32(s);\t\t\t\t\t\ts += 4;\n\t\t\t\t\tlist[keys].blob = s;\t\t\t\t\t\t\t\t\t\t\ts += list[keys].blob_len;\n\t\t\t\t} else {\n\t\t\t\t\t/* Version == 2 */\n\t\t\t\t\tlist[keys].name_len = libssh2_ntohu32(s);\t\t\t\t\t\ts += 4;\n\t\t\t\t\tlist[keys].name = s;\t\t\t\t\t\t\t\t\t\t\ts += list[keys].name_len;\n\t\t\t\t\tlist[keys].blob_len = libssh2_ntohu32(s);\t\t\t\t\t\ts += 4;\n\t\t\t\t\tlist[keys].blob = s;\t\t\t\t\t\t\t\t\t\t\ts += list[keys].blob_len;\n\t\t\t\t\tlist[keys].num_attrs = libssh2_ntohu32(s);\t\t\t\t\t\ts += 4;\n\t\t\t\t\tif (list[keys].num_attrs) {\n\t\t\t\t\t\tlist[keys].attrs = LIBSSH2_ALLOC(session, list[keys].num_attrs * sizeof(libssh2_publickey_attribute));\n\t\t\t\t\t\tif (!list[keys].attrs) {\n\t\t\t\t\t\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for publickey attributes\", 0);\n\t\t\t\t\t\t\tgoto err_exit;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(i = 0; i < list[keys].num_attrs; i++) {\n\t\t\t\t\t\t\tlist[keys].attrs[i].name_len = libssh2_ntohu32(s);\t\t\ts += 4;\n\t\t\t\t\t\t\tlist[keys].attrs[i].name = (char *)s;\t\t\t\t\t\t\t\ts += list[keys].attrs[i].name_len;\n\t\t\t\t\t\t\tlist[keys].attrs[i].value_len = libssh2_ntohu32(s);\t\t\ts += 4;\n\t\t\t\t\t\t\tlist[keys].attrs[i].value = (char *)s;\t\t\t\t\t\t\t\ts += list[keys].attrs[i].value_len;\n\t\t\t\t\t\t\tlist[keys].attrs[i].mandatory = 0;\t/* actually an ignored value */\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlist[keys].attrs = NULL;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlist[keys].packet = data; /* To be FREEd in libssh2_publickey_list_free() */\n\t\t\t\tkeys++;\n\n\t\t\t\tlist[keys].packet = NULL; /* Terminate the list */\n\t\t\t\tdata = NULL;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\t/* Unknown/Unexpected */\n\t\t\t\tlibssh2_error(session, LIBSSH2_ERROR_PUBLICKEY_PROTOCOL, \"Unexpected publickey subsystem response, ignoring\", 0);\n\t\t\t\tLIBSSH2_FREE(session, data);\n\t\t}\n\t}\n\n\t/* Only reached via explicit goto */\n err_exit:\n\tif (data) {\n\t\tLIBSSH2_FREE(session, data);\n\t}\n\tif (list) {\n\t\tlibssh2_publickey_list_free(pkey, list);\n\t}\n\treturn -1;\n}\n/* }}} */\n\n/* {{{ libssh2_publickey_list_free\n * Free a previously fetched list of public keys\n */\nLIBSSH2_API void libssh2_publickey_list_free(LIBSSH2_PUBLICKEY *pkey, libssh2_publickey_list *pkey_list)\n{\n\tLIBSSH2_SESSION *session = pkey->channel->session;\n\tlibssh2_publickey_list *p = pkey_list;\n\n\twhile (p->packet) {\n\t\tif (p->attrs) {\n\t\t\tLIBSSH2_FREE(session, p->attrs);\n\t\t}\n\t\tLIBSSH2_FREE(session, p->packet);\n\t\tp++;\n\t}\n\n\tLIBSSH2_FREE(session, pkey_list);\n}\n/* }}} */\n\n/* {{{ libssh2_publickey_shutdown\n * Shutdown the publickey subsystem\n */\nLIBSSH2_API void libssh2_publickey_shutdown(LIBSSH2_PUBLICKEY *pkey)\n{\n\tLIBSSH2_SESSION *session = pkey->channel->session;\n\n\tlibssh2_channel_free(pkey->channel);\n\tLIBSSH2_FREE(session, pkey);\n}\n/* }}} */\n"
  },
  {
    "path": "Example/scp.c",
    "content": "/* Copyright (c) 2004-2006, Sara Golemon <sarag@libssh2.org>\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms,\n * with or without modification, are permitted provided\n * that the following conditions are met:\n *\n *   Redistributions of source code must retain the above\n *   copyright notice, this list of conditions and the\n *   following disclaimer.\n *\n *   Redistributions in binary form must reproduce the above\n *   copyright notice, this list of conditions and the following\n *   disclaimer in the documentation and/or other materials\n *   provided with the distribution.\n *\n *   Neither the name of the copyright holder nor the names\n *   of any other contributors may be used to endorse or\n *   promote products derived from this software without\n *   specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND\n * CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES,\n * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE\n * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY\n * OF SUCH DAMAGE.\n */\n\n#include \"libssh2_priv.h\"\n#include <errno.h>\n#include <stdlib.h>\n\n#define LIBSSH2_SCP_RESPONSE_BUFLEN\t\t256\n\n/* {{{ libssh2_scp_recv\n * Open a channel and request a remote file via SCP\n */\nLIBSSH2_API LIBSSH2_CHANNEL *libssh2_scp_recv(LIBSSH2_SESSION *session, const char *path, struct stat *sb)\n{\n\tint path_len = strlen(path);\n\tunsigned char *command, response[LIBSSH2_SCP_RESPONSE_BUFLEN];\n\tunsigned long command_len = path_len + sizeof(\"scp -f \"), response_len;\n\tLIBSSH2_CHANNEL *channel;\n\tlong mode = 0, size = 0, mtime = 0, atime = 0;\n\n\tif (sb) {\n\t\tcommand_len++;\n\t}\n\n\tcommand = LIBSSH2_ALLOC(session, command_len);\n\tif (!command) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate a command buffer for scp session\", 0);\n\t\treturn NULL;\n\t}\n\tif (sb) {\n\t\tmemcpy(command, \"scp -pf \", sizeof(\"scp -pf \") - 1);\n\t\tmemcpy(command + sizeof(\"scp -pf \") - 1, path, path_len);\n\t} else {\n\t\tmemcpy(command, \"scp -f \", sizeof(\"scp -f \") - 1);\n\t\tmemcpy(command + sizeof(\"scp -f \") - 1, path, path_len);\n\t}\n\tcommand[command_len - 1] = '\\0';\n\n#ifdef LIBSSH2_DEBUG_SCP\n\t_libssh2_debug(session, LIBSSH2_DBG_SCP, \"Opening channel for SCP receive\");\n#endif\n\t/* Allocate a channel */\n\tif ((channel = libssh2_channel_open_session(session)) == NULL) {\n\t\tLIBSSH2_FREE(session, command);\n\t\treturn NULL;\n\t}\n\t/* Use blocking I/O for negotiation phase */\n\tlibssh2_channel_set_blocking(channel, 1);\n\n\t/* Request SCP for the desired file */\n\tif (libssh2_channel_process_startup(channel, \"exec\", sizeof(\"exec\") - 1, (const char *)command, command_len)) {\n\t\tLIBSSH2_FREE(session, command);\n\t\tlibssh2_channel_free(channel);\n\t\treturn NULL;\n\t}\n\tLIBSSH2_FREE(session, command);\n\n#ifdef LIBSSH2_DEBUG_SCP\n\t_libssh2_debug(session, LIBSSH2_DBG_SCP, \"Sending initial wakeup\");\n#endif\n\t/* SCP ACK */\n\tresponse[0] = '\\0';\n\tif (libssh2_channel_write(channel, response, 1) != 1) {\n\t\tlibssh2_channel_free(channel);\n\t\treturn NULL;\n\t}\n\n\t/* Parse SCP response */\n\tresponse_len = 0;\n\twhile (sb && (response_len < LIBSSH2_SCP_RESPONSE_BUFLEN)) {\n\t\tunsigned char *s, *p;\n\n\t\tif (libssh2_channel_read(channel, response + response_len, 1) <= 0) {\n\t\t\t/* Timeout, give up */\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SCP_PROTOCOL, \"Timed out waiting for SCP response\", 0);\n\t\t\tlibssh2_channel_free(channel);\n\t\t\treturn NULL;\n\t\t}\n\t\tresponse_len++;\n\n\t\tif (response[0] != 'T') {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SCP_PROTOCOL, \"Invalid data in SCP response, missing Time data\", 0);\n\t\t\tlibssh2_channel_free(channel);\n\t\t\treturn NULL;\n\t\t}\n\n\t\tif ((response_len > 1) && \n\t\t\t((response[response_len-1] < '0') || (response[response_len-1] > '9')) && \n\t\t\t(response[response_len-1] != ' ') && \n\t\t\t(response[response_len-1] != '\\r') &&\n\t\t\t(response[response_len-1] != '\\n')) {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SCP_PROTOCOL, \"Invalid data in SCP response\", 0);\n\t\t\tlibssh2_channel_free(channel);\n\t\t\treturn NULL;\n\t\t}\n\n\t\tif ((response_len < 9) || (response[response_len-1] != '\\n')) {\n\t\t\tif (response_len == LIBSSH2_SCP_RESPONSE_BUFLEN) {\n\t\t\t\t/* You had your chance */\n\t\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SCP_PROTOCOL, \"Unterminated response from SCP server\", 0);\n\t\t\t\tlibssh2_channel_free(channel);\n\t\t\t\treturn NULL;\n\t\t\t}\n\t\t\t/* Way too short to be an SCP response,  or not done yet, short circuit */\n\t\t\tcontinue;\n\t\t}\n\n\t\t/* We're guaranteed not to go under response_len == 0 by the logic above */\n\t\twhile ((response[response_len-1] == '\\r') || (response[response_len-1] == '\\n')) response_len--;\n\t\tresponse[response_len] = '\\0';\n\n\t\tif (response_len < 8) {\n\t\t\t/* EOL came too soon */\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SCP_PROTOCOL, \"Invalid response from SCP server, too short\", 0);\n\t\t\tlibssh2_channel_free(channel);\n\t\t\treturn NULL;\n\t\t}\n\n\t\ts = response + 1;\n\n\t\tp = (unsigned char *)strchr((const char *)s, ' ');\n\t\tif (!p || ((p - s) <= 0)) {\n\t\t\t/* No spaces or space in the wrong spot */\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SCP_PROTOCOL, \"Invalid response from SCP server, malformed mtime\", 0);\n\t\t\tlibssh2_channel_free(channel);\n\t\t\treturn NULL;\n\t\t}\n\n\t\t*(p++) = '\\0';\n\t\t/* Make sure we don't get fooled by leftover values */\n\t\terrno = 0;\n\t\tmtime = strtol((const char *)s, NULL, 10);\n\t\tif (errno) {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SCP_PROTOCOL, \"Invalid response from SCP server, invalid mtime\", 0);\n\t\t\tlibssh2_channel_free(channel);\n\t\t\treturn NULL;\n\t\t}\n\t\ts = (unsigned char *)strchr((const char *)p, ' ');\n\t\tif (!s || ((s - p) <= 0)) {\n\t\t\t/* No spaces or space in the wrong spot */\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SCP_PROTOCOL, \"Invalid response from SCP server, malformed mtime.usec\", 0);\n\t\t\tlibssh2_channel_free(channel);\n\t\t\treturn NULL;\n\t\t}\n\n\t\t/* Ignore mtime.usec */\n\t\ts++;\n\t\tp = (unsigned char *)strchr((const char *)s, ' ');\n\t\tif (!p || ((p - s) <= 0)) {\n\t\t\t/* No spaces or space in the wrong spot */\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SCP_PROTOCOL, \"Invalid response from SCP server, too short or malformed\", 0);\n\t\t\tlibssh2_channel_free(channel);\n\t\t\treturn NULL;\n\t\t}\n\n\t\t*(p++) = '\\0';\n\t\t/* Make sure we don't get fooled by leftover values */\n\t\terrno = 0;\n\t\tatime = strtol((const char *)s, NULL, 10);\n\t\tif (errno) {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SCP_PROTOCOL, \"Invalid response from SCP server, invalid atime\", 0);\n\t\t\tlibssh2_channel_free(channel);\n\t\t\treturn NULL;\n\t\t}\n\n\t\t/* SCP ACK */\n\t\tresponse[0] = '\\0';\n\t\tif (libssh2_channel_write(channel, response, 1) != 1) {\n\t\t\tlibssh2_channel_free(channel);\n\t\t\treturn NULL;\n\t\t}\n#ifdef LIBSSH2_DEBUG_SCP\n\t\t_libssh2_debug(session, LIBSSH2_DBG_SCP, \"mtime = %ld, atime = %ld\", mtime, atime);\n#endif\n\n\t\t/* We *should* check that atime.usec is valid, but why let that stop use? */\n\t\tbreak;\n\t}\n\n\tresponse_len = 0;\n\twhile (response_len < LIBSSH2_SCP_RESPONSE_BUFLEN) {\n\t\tchar *s, *p, *e = NULL;\n\n\t\tif (libssh2_channel_read(channel, response + response_len, 1) <= 0) {\n\t\t\t/* Timeout, give up */\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SCP_PROTOCOL, \"Timed out waiting for SCP response\", 0);\n\t\t\tlibssh2_channel_free(channel);\n\t\t\treturn NULL;\n\t\t}\n\t\tresponse_len++;\n\n\t\tif (response[0] != 'C') {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SCP_PROTOCOL, \"Invalid response from SCP server\", 0);\n\t\t\tlibssh2_channel_free(channel);\n\t\t\treturn NULL;\n\t\t}\n\n\t\tif ((response_len > 1) && \n\t\t\t(response[response_len-1] != '\\r') &&\n\t\t\t(response[response_len-1] != '\\n') &&\n\t\t\t((response[response_len-1] < 32) || (response[response_len-1] > 126))) {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SCP_PROTOCOL, \"Invalid data in SCP response\", 0);\n\t\t\tlibssh2_channel_free(channel);\n\t\t\treturn NULL;\n\t\t}\n\n\t\tif ((response_len < 7) || (response[response_len-1] != '\\n')) {\n\t\t\tif (response_len == LIBSSH2_SCP_RESPONSE_BUFLEN) {\n\t\t\t\t/* You had your chance */\n\t\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SCP_PROTOCOL, \"Unterminated response from SCP server\", 0);\n\t\t\t\tlibssh2_channel_free(channel);\n\t\t\t\treturn NULL;\n\t\t\t}\n\t\t\t/* Way too short to be an SCP response,  or not done yet, short circuit */\n\t\t\tcontinue;\n\t\t}\n\n\t\t/* We're guaranteed not to go under response_len == 0 by the logic above */\n\t\twhile ((response[response_len-1] == '\\r') || (response[response_len-1] == '\\n')) response_len--;\n\t\tresponse[response_len] = '\\0';\n\n\t\tif (response_len < 6) {\n\t\t\t/* EOL came too soon */\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SCP_PROTOCOL, \"Invalid response from SCP server, too short\", 0);\n\t\t\tlibssh2_channel_free(channel);\n\t\t\treturn NULL;\n\t\t}\n\n\t\ts = (char *)(response + 1);\n\t\t\n\t\tp = strchr(s, ' ');\n\t\tif (!p || ((p - s) <= 0)) {\n\t\t\t/* No spaces or space in the wrong spot */\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SCP_PROTOCOL, \"Invalid response from SCP server, malformed mode\", 0);\n\t\t\tlibssh2_channel_free(channel);\n\t\t\treturn NULL;\n\t\t}\n\n\t\t*(p++) = '\\0';\n\t\t/* Make sure we don't get fooled by leftover values */\n\t\terrno = 0;\n\t\tmode = strtol(s, &e, 8);\n\t\tif ((e && *e) || errno) {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SCP_PROTOCOL, \"Invalid response from SCP server, invalid mode\", 0);\n\t\t\tlibssh2_channel_free(channel);\n\t\t\treturn NULL;\n\t\t}\n\n\t\ts = strchr(p, ' ');\n\t\tif (!s || ((s - p) <= 0)) {\n\t\t\t/* No spaces or space in the wrong spot */\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SCP_PROTOCOL, \"Invalid response from SCP server, too short or malformed\", 0);\n\t\t\tlibssh2_channel_free(channel);\n\t\t\treturn NULL;\n\t\t}\n\n\t\t*(s++) = '\\0';\n\t\t/* Make sure we don't get fooled by leftover values */\n\t\terrno = 0;\n\t\tsize = strtol(p, &e, 10);\n\t\tif ((e && *e) || errno) {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SCP_PROTOCOL, \"Invalid response from SCP server, invalid size\", 0);\n\t\t\tlibssh2_channel_free(channel);\n\t\t\treturn NULL;\n\t\t}\n\n\t\t/* SCP ACK */\n\t\tresponse[0] = '\\0';\n\t\tif (libssh2_channel_write(channel, response, 1) != 1) {\n\t\t\tlibssh2_channel_free(channel);\n\t\t\treturn NULL;\n\t\t}\n#ifdef LIBSSH2_DEBUG_SCP\n\t_libssh2_debug(session, LIBSSH2_DBG_SCP, \"mod = 0%lo size = %ld\", mode, size);\n#endif\n\n\t\t/* We *should* check that basename is valid, but why let that stop us? */\n\t\tbreak;\n\t}\n\n\tif (sb) {\n\t\tmemset(sb, 0, sizeof(struct stat));\n\n\t\tsb->st_mtime = mtime;\n\t\tsb->st_atime = atime;\n\t\tsb->st_size = size;\n\t\tsb->st_mode = mode;\n\t}\n\t/* Revert to non-blocking and let the data BEGIN! */\n\tlibssh2_channel_set_blocking(channel, 0);\n\n\treturn channel;\n}\n/* }}} */\n\n/* {{{ libssh2_scp_send_ex\n * Send a file using SCP\n */\nLIBSSH2_API LIBSSH2_CHANNEL *libssh2_scp_send_ex(LIBSSH2_SESSION *session, const char *path, int mode, size_t size, long mtime, long atime)\n{\n\tint path_len = strlen(path);\n\tunsigned char *command, response[LIBSSH2_SCP_RESPONSE_BUFLEN];\n\tunsigned long response_len, command_len = path_len + sizeof(\"scp -t \");\n\tunsigned const char *base;\n\tLIBSSH2_CHANNEL *channel;\n\n\tif (mtime || atime) {\n\t\tcommand_len++;\n\t}\n\n\tcommand = LIBSSH2_ALLOC(session, command_len);\n\tif (!command) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate a command buffer for scp session\", 0);\n\t\treturn NULL;\n\t}\n\n\tif (mtime || atime) {\n\t\tmemcpy(command, \"scp -pt \", sizeof(\"scp -pt \") - 1);\n\t\tmemcpy(command + sizeof(\"scp -pt \") - 1, path, path_len);\n\t} else {\n\t\tmemcpy(command, \"scp -t \", sizeof(\"scp -t \") - 1);\n\t\tmemcpy(command + sizeof(\"scp -t \") - 1, path, path_len);\n\t}\n\tcommand[command_len - 1] = '\\0';\n\n#ifdef LIBSSH2_DEBUG_SCP\n\t_libssh2_debug(session, LIBSSH2_DBG_SCP, \"Opening channel for SCP send\");\n#endif\n\t/* Allocate a channel */\n\tif ((channel = libssh2_channel_open_session(session)) == NULL) {\n\t        /* previous call set libssh2_session_last_error(), pass it through */\n\t\tLIBSSH2_FREE(session, command);\n\t\treturn NULL;\n\t}\n\t/* Use blocking I/O for negotiation phase */\n\tlibssh2_channel_set_blocking(channel, 1);\n\n\t/* Request SCP for the desired file */\n\tif (libssh2_channel_process_startup(channel, \"exec\", sizeof(\"exec\") - 1, (const char *)command, command_len)) {\n\t        /* previous call set libssh2_session_last_error(), pass it through */\n\t\tLIBSSH2_FREE(session, command);\n\t\tlibssh2_channel_free(channel);\n\t\treturn NULL;\n\t}\n\tLIBSSH2_FREE(session, command);\n\n\t/* Wait for ACK */\n\tif ((libssh2_channel_read(channel, response, 1) <= 0) || (response[0] != 0)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SCP_PROTOCOL, \"Invalid ACK response from remote\", 0);\n\t\tlibssh2_channel_free(channel);\n\t\treturn NULL;\n\t}\n\n\t/* Send mtime and atime to be used for file */\n\tif (mtime || atime) {\n\t\tresponse_len = snprintf((char *)response, LIBSSH2_SCP_RESPONSE_BUFLEN, \"T%ld 0 %ld 0\\n\", mtime, atime);\n#ifdef LIBSSH2_DEBUG_SCP\n\t\t_libssh2_debug(session, LIBSSH2_DBG_SCP, \"Sent %s\", response);\n#endif\n\t\tif (libssh2_channel_write(channel, response, response_len) != response_len) {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send time data for SCP file\", 0);\n\t\t\tlibssh2_channel_free(channel);\n\t\t\treturn NULL;\n\t\t}\n\t\t/* Wait for ACK */\n\t\tif ((libssh2_channel_read(channel, response, 1) <= 0) || (response[0] != 0)) {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SCP_PROTOCOL, \"Invalid ACK response from remote\", 0);\n\t\t\tlibssh2_channel_free(channel);\n\t\t\treturn NULL;\n\t\t}\n\t}\n\n\t/* Send mode, size, and basename */\n\tbase = (unsigned char *)strrchr(path, '/');\n\tif (base) {\n\t\tbase++;\n\t} else {\n\t\tbase = (unsigned char *)path;\n\t}\n\n\tresponse_len = snprintf((char *)response, LIBSSH2_SCP_RESPONSE_BUFLEN, \"C0%o %lu %s\\n\", mode, (unsigned long)size, base);\n#ifdef LIBSSH2_DEBUG_SCP\n\t_libssh2_debug(session, LIBSSH2_DBG_SCP, \"Sent %s\", response);\n#endif\n\tif (libssh2_channel_write(channel, response, response_len) != response_len) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send core file data for SCP file\", 0);\n\t\tlibssh2_channel_free(channel);\n\t\treturn NULL;\n\t}\n\t/* Wait for ACK */\n\tif ((libssh2_channel_read(channel, response, 1) <= 0) || (response[0] != 0)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SCP_PROTOCOL, \"Invalid ACK response from remote\", 0);\n\t\tlibssh2_channel_free(channel);\n\t\treturn NULL;\n\t}\n\n\t/* Ready to start, switch to non-blocking and let calling app send file */\n\tlibssh2_channel_set_blocking(channel, 0);\n\n\treturn channel;\n}\n/* }}} */\n\n"
  },
  {
    "path": "Example/session.c",
    "content": "/* Copyright (c) 2004-2006, Sara Golemon <sarag@libssh2.org>\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms,\n * with or without modification, are permitted provided\n * that the following conditions are met:\n *\n *   Redistributions of source code must retain the above\n *   copyright notice, this list of conditions and the\n *   following disclaimer.\n *\n *   Redistributions in binary form must reproduce the above\n *   copyright notice, this list of conditions and the following\n *   disclaimer in the documentation and/or other materials\n *   provided with the distribution.\n *\n *   Neither the name of the copyright holder nor the names\n *   of any other contributors may be used to endorse or\n *   promote products derived from this software without\n *   specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND\n * CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES,\n * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE\n * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY\n * OF SUCH DAMAGE.\n */\n\n#include \"libssh2_priv.h\"\n#include <errno.h>\n#ifndef WIN32\n#include <unistd.h>\n#endif\n#include <stdlib.h>\n\n#ifdef HAVE_GETTIMEOFDAY\n#include <sys/time.h>\n#include <math.h>\n#endif\n\n#ifdef HAVE_POLL\n# include <sys/poll.h>\n#else\n# ifdef HAVE_SELECT\n#  ifdef HAVE_SYS_SELECT_H\n#   include <sys/select.h>\n#  else\n#   include <sys/time.h>\n#   include <sys/types.h>\n#  endif\n# endif\n#endif\n\n\n\n/* {{{ libssh2_default_alloc\n */\nstatic LIBSSH2_ALLOC_FUNC(libssh2_default_alloc)\n{\n\treturn malloc(count);\n}\n/* }}} */\n\n/* {{{ libssh2_default_free\n */\nstatic LIBSSH2_FREE_FUNC(libssh2_default_free)\n{\n\tfree(ptr);\n}\n/* }}} */\n\n/* {{{ libssh2_default_realloc\n */\nstatic LIBSSH2_REALLOC_FUNC(libssh2_default_realloc)\n{\n\treturn realloc(ptr, count);\n}\n/* }}} */\n\n/* {{{ libssh2_default_write\n */\nstatic LIBSSH2_WRITE_FUNC(libssh2_default_write)\n{\n\treturn send(session->socket_fd, buffer, length, LIBSSH2_SOCKET_SEND_FLAGS(session));\n}\n\nstatic LIBSSH2_READ_FUNC(libssh2_default_read)\n{\n\treturn recv(session->socket_fd, buffer, length, LIBSSH2_SOCKET_RECV_FLAGS(session));\n}\n\n\n/* {{{ libssh2_session_set_user_info \n * ui is passed into the custom read / write functions\n*/\nLIBSSH2_API void libssh2_session_set_user_info(LIBSSH2_SESSION *session, void *ui)\n{\n\tsession->userInfo = ui;\n}\n/* }}} */\n\n/* {{{ libssh2_session_set_write \n* Set a custom function to handle the writing to the socket/stream\n*/\nLIBSSH2_API void libssh2_session_set_write(LIBSSH2_SESSION *session, void *my_write)\n{\n\tsession->ssh_write = my_write;\n}\n/* }}} */\n\n/* {{{ libssh2_session_set_read \n* Set a custom function to handle the reading from the socket/stream\n*/\nLIBSSH2_API void libssh2_session_set_read(LIBSSH2_SESSION *session, void *my_read)\n{\n\tsession->ssh_read = my_read;\n}\n/* }}} */\n\n/* {{{ libssh2_banner_receive\n * Wait for a hello from the remote host\n * Allocate a buffer and store the banner in session->remote.banner\n * Returns: 0 on success, 1 on failure\n */\nstatic int libssh2_banner_receive(LIBSSH2_SESSION *session)\n{\n\tchar banner[256];\n\tint banner_len = 0;\n//unused\tint tries = 10;\n\t\n\twhile ((banner_len < sizeof(banner)) &&\n\t\t\t((banner_len == 0) || (banner[banner_len-1] != '\\n'))) {\n\t\tchar c = '\\0';\n\t\tint ret;\n\n\t\tret = LIBSSH2_READ(session, &c, 1);\n\n\t\tif (ret < 0) {\n#ifdef WIN32\n\t\t\tswitch (WSAGetLastError()) {\n\t\t\t\tcase WSAEWOULDBLOCK:\n\t\t\t\t\terrno = EAGAIN;\n\t\t\t\t\tbreak;\n\t\t\t\tcase WSAENOTSOCK:\n\t\t\t\t\terrno = EBADF;\n\t\t\t\t\tbreak;\n\t\t\t\tcase WSAENOTCONN:\n\t\t\t\tcase WSAECONNABORTED:\n\t\t\t\t\terrno = ENOTCONN;\n\t\t\t\t\tbreak;\n\t\t\t\tcase WSAEINTR:\n\t\t\t\t\terrno = EINTR;\n\t\t\t\t\tbreak;\n\t\t\t}\n#endif /* WIN32 */\n\t\t\tif (errno != EAGAIN) {\n\t\t\t\t/* Some kinda error, but don't break for non-blocking issues */\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t}\n\n\t\tif (ret <= 0) continue;\n\n\t\tif (c == '\\0') {\n\t\t\t/* NULLs are not allowed in SSH banners */\n\t\t\treturn 1;\n\t\t}\n\n\t\tbanner[banner_len++] = c;\n\t}\n\n\twhile (banner_len &&\n\t\t\t((banner[banner_len-1] == '\\n') || (banner[banner_len-1] == '\\r'))) {\n\t\tbanner_len--;\n\t}\n\n\tif (!banner_len) \n\t\treturn 1;\n\n\tsession->remote.banner = LIBSSH2_ALLOC(session, banner_len + 1);\n\tmemcpy(session->remote.banner, banner, banner_len);\n\tsession->remote.banner[banner_len] = '\\0';\n#ifdef LIBSSH2_DEBUG_TRANSPORT\n\t_libssh2_debug(session, LIBSSH2_DBG_TRANS, \"Received Banner: %s\", session->remote.banner);\n#endif\n\treturn 0;\n}\n/* }}} */\n\n/* {{{ libssh2_banner_send\n * Send the default banner, or the one set via libssh2_setopt_string\n */\nstatic int libssh2_banner_send(LIBSSH2_SESSION *session)\n{\n\tchar *banner = LIBSSH2_SSH_DEFAULT_BANNER_WITH_CRLF;\n\tint banner_len = sizeof(LIBSSH2_SSH_DEFAULT_BANNER_WITH_CRLF) - 1;\n\n\tif (session->local.banner) {\n\t\t/* setopt_string will have given us our \\r\\n characters */\n\t\tbanner_len = strlen((const char *)session->local.banner);\n\t\tbanner = (char *)session->local.banner;\n\t}\n#ifdef LIBSSH2_DEBUG_TRANSPORT\n{\n\t/* Hack and slash to avoid sending CRLF in debug output */\n\tchar banner_dup[256];\n\n\tif (banner_len < 256) {\n\t\tmemcpy(banner_dup, banner, banner_len - 2);\n\t\tbanner_dup[banner_len - 2] = '\\0';\n\t} else {\n\t\tmemcpy(banner_dup, banner, 255);\n\t\tbanner[255] = '\\0';\n\t}\n\n\t_libssh2_debug(session, LIBSSH2_DBG_TRANS, \"Sending Banner: %s\", banner_dup);\n}\n#endif\n\treturn (LIBSSH2_WRITE(session, banner, banner_len) == banner_len) ? 0 : 1;\n}\n/* }}} */\n\n/* {{{ libssh2_banner_set\n * Set the local banner\n */\nLIBSSH2_API int libssh2_banner_set(LIBSSH2_SESSION *session, const char *banner)\n{\n\tint banner_len = banner ? strlen(banner) : 0;\n\n\tif (session->local.banner) {\n\t\tLIBSSH2_FREE(session, session->local.banner);\n\t\tsession->local.banner = NULL;\n\t}\n\n\tif (!banner_len) {\n\t\treturn 0;\n\t}\n\n\tsession->local.banner = LIBSSH2_ALLOC(session, banner_len + 3);\n\tif (!session->local.banner) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for local banner\", 0);\n\t\treturn -1;\n\t}\n\n\tmemcpy(session->local.banner, banner, banner_len);\n#ifdef LIBSSH2_DEBUG_TRANSPORT\n\tsession->local.banner[banner_len] = '\\0';\n\t_libssh2_debug(session, LIBSSH2_DBG_TRANS, \"Setting local Banner: %s\", session->local.banner);\n#endif\n\tsession->local.banner[banner_len++] = '\\r';\n\tsession->local.banner[banner_len++] = '\\n';\n\tsession->local.banner[banner_len++] = '\\0';\n\n\treturn 0;\n}\n/* }}} */\n\n/* {{{ proto libssh2_session_init\n * Allocate and initialize a libssh2 session structure\n * Allows for malloc callbacks in case the calling program has its own memory manager\n * It's allowable (but unadvisable) to define some but not all of the malloc callbacks\n * An additional pointer value may be optionally passed to be sent to the callbacks (so they know who's asking)\n */\nLIBSSH2_API LIBSSH2_SESSION *libssh2_session_init_ex(\n\t\t\tLIBSSH2_ALLOC_FUNC((*my_alloc)),\n\t\t\tLIBSSH2_FREE_FUNC((*my_free)),\n\t\t\tLIBSSH2_REALLOC_FUNC((*my_realloc)),\n\t\t\tvoid *abstract)\n{\n\tLIBSSH2_ALLOC_FUNC((*local_alloc))\t\t= libssh2_default_alloc;\n\tLIBSSH2_FREE_FUNC((*local_free))\t\t= libssh2_default_free;\n\tLIBSSH2_REALLOC_FUNC((*local_realloc))\t= libssh2_default_realloc;\n\tLIBSSH2_WRITE_FUNC((*local_write))\t\t= libssh2_default_write;\n\tLIBSSH2_READ_FUNC((*local_read))\t\t= libssh2_default_read;\n\tLIBSSH2_SESSION *session;\n\n\tif (my_alloc)\tlocal_alloc\t\t= my_alloc;\n\tif (my_free)\tlocal_free\t\t= my_free;\n\tif (my_realloc)\tlocal_realloc\t= my_realloc;\n\n\tsession = local_alloc(sizeof(LIBSSH2_SESSION), abstract);\n\tmemset(session, 0, sizeof(LIBSSH2_SESSION));\n\tsession->alloc\t\t= local_alloc;\n\tsession->free\t\t= local_free;\n\tsession->realloc\t= local_realloc;\n\tsession->abstract\t= abstract;\n\tsession->ssh_write\t= local_write;\n\tsession->ssh_read\t= local_read;\n#ifdef LIBSSH2_DEBUG_TRANSPORT\n\t_libssh2_debug(session, LIBSSH2_DBG_TRANS, \"New session resource allocated\");\n#endif\n\n\tlibssh2_crypto_init ();\n\n\treturn session;\n}\n/* }}} */\n\n/* {{{ libssh2_session_callback_set\n * Set (or reset) a callback function\n * Returns the prior address\n */\nLIBSSH2_API void* libssh2_session_callback_set(LIBSSH2_SESSION *session, int cbtype, void *callback)\n{\n\tvoid *oldcb;\n\n\tswitch (cbtype) {\n\t\tcase LIBSSH2_CALLBACK_IGNORE:\n\t\t\toldcb = session->ssh_msg_ignore;\n\t\t\tsession->ssh_msg_ignore = callback;\n\t\t\treturn oldcb;\n\t\t\tbreak;\n\t\tcase LIBSSH2_CALLBACK_DEBUG:\n\t\t\toldcb = session->ssh_msg_debug;\n\t\t\tsession->ssh_msg_debug = callback;\n\t\t\treturn oldcb;\n\t\t\tbreak;\n\t\tcase LIBSSH2_CALLBACK_DISCONNECT:\n\t\t\toldcb = session->ssh_msg_disconnect;\n\t\t\tsession->ssh_msg_disconnect = callback;\n\t\t\treturn oldcb;\n\t\t\tbreak;\n\t\tcase LIBSSH2_CALLBACK_MACERROR:\n\t\t\toldcb = session->macerror;\n\t\t\tsession->macerror = callback;\n\t\t\treturn oldcb;\n\t\t\tbreak;\n\t\tcase LIBSSH2_CALLBACK_X11:\n\t\t\toldcb = session->x11;\n\t\t\tsession->x11 = callback;\n\t\t\treturn oldcb;\n\t\t\tbreak;\n\t}\n#ifdef LIBSSH2_DEBUG_TRANSPORT\n\t_libssh2_debug(session, LIBSSH2_DBG_TRANS, \"Setting Callback %d\", cbtype);\n#endif\n\n\treturn NULL;\n}\n/* }}} */\n\n/* {{{ proto libssh2_session_startup\n * session: LIBSSH2_SESSION struct allocated and owned by the calling program\n * Returns: 0 on success, or non-zero on failure\n * Any memory allocated by libssh2 will use alloc/realloc/free callbacks in session\n * socket *must* be populated with an opened socket\n */\nLIBSSH2_API int libssh2_session_startup(LIBSSH2_SESSION *session, int socket)\n{\n\tunsigned char *data;\n\tunsigned long data_len;\n\tunsigned char service[sizeof(\"ssh-userauth\") + 5 - 1];\n\tunsigned long service_length;\n\n#ifdef LIBSSH2_DEBUG_TRANSPORT\n\t_libssh2_debug(session, LIBSSH2_DBG_TRANS, \"session_startup for socket %d\", socket);\n#endif\n\tif (socket < 0) {\n\t\t/* Did we forget something? */\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_NONE, \"Bad socket provided\", 0);\n\t\treturn LIBSSH2_ERROR_SOCKET_NONE;\n\t}\n\tsession->socket_fd = socket;\n\n\t/* TODO: Liveness check */\n\tif (libssh2_banner_send(session)) {\n\t\t/* Unable to send banner? */\n\t\tlibssh2_error(session, LIBSSH2_ERROR_BANNER_SEND, \"Error sending banner to remote host\", 0);\n\t\treturn LIBSSH2_ERROR_BANNER_SEND;\n\t}\n\t\n\tif (libssh2_banner_receive(session)) {\n\t\t/* Unable to receive banner from remote */\n\t\tlibssh2_error(session, LIBSSH2_ERROR_BANNER_NONE, \"Timeout waiting for banner\", 0);\n\t\treturn LIBSSH2_ERROR_BANNER_NONE;\n\t}\n\n\tif (libssh2_kex_exchange(session, 0)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_KEX_FAILURE, \"Unable to exchange encryption keys\", 0);\n\t\treturn LIBSSH2_ERROR_KEX_FAILURE;\n\t}\n\n#ifdef LIBSSH2_DEBUG_TRANSPORT\n\t_libssh2_debug(session, LIBSSH2_DBG_TRANS, \"Requesting userauth service\");\n#endif\n\t/* Request the userauth service */\n\tservice[0] = SSH_MSG_SERVICE_REQUEST;\n\tlibssh2_htonu32(service + 1, sizeof(\"ssh-userauth\") - 1);\n\tmemcpy(service + 5, \"ssh-userauth\", sizeof(\"ssh-userauth\") - 1);\n\tif (libssh2_packet_write(session, service, sizeof(\"ssh-userauth\") + 5 - 1)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to ask for ssh-userauth service\", 0);\n\t\treturn LIBSSH2_ERROR_SOCKET_SEND;\n\t}\n\n\tif (libssh2_packet_require(session, SSH_MSG_SERVICE_ACCEPT, &data, &data_len)) {\n\t\treturn LIBSSH2_ERROR_SOCKET_DISCONNECT;\n\t}\n\tservice_length = libssh2_ntohu32(data + 1);\n\n\tif ((service_length != (sizeof(\"ssh-userauth\") - 1)) ||\n\t\tstrncmp(\"ssh-userauth\", (const char *)data + 5, service_length)) {\n\t\tLIBSSH2_FREE(session, data);\n\t\tlibssh2_error(session, LIBSSH2_ERROR_PROTO, \"Invalid response received from server\", 0);\n\t\treturn LIBSSH2_ERROR_PROTO;\n\t}\n\tLIBSSH2_FREE(session, data);\n\n\treturn 0;\n}\n/* }}} */\n\n/* {{{ proto libssh2_session_free\n * Frees the memory allocated to the session\n * Also closes and frees any channels attached to this session\n */\nLIBSSH2_API void libssh2_session_free(LIBSSH2_SESSION *session)\n{\n#ifdef LIBSSH2_DEBUG_TRANSPORT\n\t_libssh2_debug(session, LIBSSH2_DBG_TRANS, \"Freeing session resource\", session->remote.banner);\n#endif\n\twhile (session->channels.head) {\n\t\tLIBSSH2_CHANNEL *tmp = session->channels.head;\n\n\t\tlibssh2_channel_free(session->channels.head);\n\t\tif (tmp == session->channels.head) {\n\t\t\t/* channel_free couldn't do it's job, perform a messy cleanup */\n\t\t\ttmp = session->channels.head;\n\n\t\t\t/* unlink */\n\t\t\tsession->channels.head = tmp->next;\n\n\t\t\t/* free */\n\t\t\tLIBSSH2_FREE(session, tmp);\n\n\t\t\t/* reverse linking isn't important here, we're killing the structure */\n\t\t}\n\t}\n\n\twhile (session->listeners) {\n\t\tlibssh2_channel_forward_cancel(session->listeners);\n\t}\n\n\tif (session->state & LIBSSH2_STATE_NEWKEYS) {\n\t\t/* hostkey */\n\t\tif (session->hostkey && session->hostkey->dtor) {\n\t\t\tsession->hostkey->dtor(session, &session->server_hostkey_abstract);\n\t\t}\n\n\t\t/* Client to Server */\n\t\t/* crypt */\n\t\tif (session->local.crypt && session->local.crypt->dtor) {\n\t\t\tsession->local.crypt->dtor(session, &session->local.crypt_abstract);\n\t\t}\n\t\t/* comp */\n\t\tif (session->local.comp && session->local.comp->dtor) {\n\t\t\tsession->local.comp->dtor(session, 1, &session->local.comp_abstract);\n\t\t}\n\t\t/* mac */\n\t\tif (session->local.mac && session->local.mac->dtor) {\n\t\t\tsession->local.mac->dtor(session, &session->local.mac_abstract);\n\t\t}\n\n\t\t/* Server to Client */\n\t\t/* crypt */\n\t\tif (session->remote.crypt && session->remote.crypt->dtor) {\n\t\t\tsession->remote.crypt->dtor(session, &session->remote.crypt_abstract);\n\t\t}\n\t\t/* comp */\n\t\tif (session->remote.comp && session->remote.comp->dtor) {\n\t\t\tsession->remote.comp->dtor(session, 0, &session->remote.comp_abstract);\n\t\t}\n\t\t/* mac */\n\t\tif (session->remote.mac && session->remote.mac->dtor) {\n\t\t\tsession->remote.mac->dtor(session, &session->remote.mac_abstract);\n\t\t}\n\n\t\t/* session_id */\n\t\tif (session->session_id) {\n\t\t\tLIBSSH2_FREE(session, session->session_id);\n\t\t}\n\t}\n\n\t/* Free banner(s) */\n\tif (session->remote.banner) {\n\t\tLIBSSH2_FREE(session, session->remote.banner);\n\t}\n\tif (session->local.banner) {\n\t\tLIBSSH2_FREE(session, session->local.banner);\n\t}\n\n\t/* Free preference(s) */\n\tif (session->kex_prefs) {\n\t\tLIBSSH2_FREE(session, session->kex_prefs);\n\t}\n\tif (session->hostkey_prefs) {\n\t\tLIBSSH2_FREE(session, session->hostkey_prefs);\n\t}\n\n\tif (session->local.crypt_prefs) {\n\t\tLIBSSH2_FREE(session, session->local.crypt_prefs);\n\t}\n\tif (session->local.mac_prefs) {\n\t\tLIBSSH2_FREE(session, session->local.mac_prefs);\n\t}\n\tif (session->local.comp_prefs) {\n\t\tLIBSSH2_FREE(session, session->local.comp_prefs);\n\t}\n\tif (session->local.lang_prefs) {\n\t\tLIBSSH2_FREE(session, session->local.lang_prefs);\n\t}\n\n\tif (session->remote.crypt_prefs) {\n\t\tLIBSSH2_FREE(session, session->remote.crypt_prefs);\n\t}\n\tif (session->remote.mac_prefs) {\n\t\tLIBSSH2_FREE(session, session->remote.mac_prefs);\n\t}\n\tif (session->remote.comp_prefs) {\n\t\tLIBSSH2_FREE(session, session->remote.comp_prefs);\n\t}\n\tif (session->remote.lang_prefs) {\n\t\tLIBSSH2_FREE(session, session->remote.lang_prefs);\n\t}\n\n\t/* Cleanup any remaining packets */\n\twhile (session->packets.head) {\n\t\tLIBSSH2_PACKET *tmp = session->packets.head;\n\n\t\t/* unlink */\n\t\tsession->packets.head = tmp->next;\n\n\t\t/* free */\n\t\tLIBSSH2_FREE(session, tmp->data);\n\t\tLIBSSH2_FREE(session, tmp);\n\t}\n\n\tLIBSSH2_FREE(session, session);\n}\n/* }}} */\n\n/* {{{ libssh2_session_disconnect_ex\n */\nLIBSSH2_API int libssh2_session_disconnect_ex(LIBSSH2_SESSION *session, int reason, const char *description, const char *lang)\n{\n\tunsigned char *s, *data;\n\tunsigned long data_len, descr_len = 0, lang_len = 0;\n\n#ifdef LIBSSH2_DEBUG_TRANSPORT\n\t_libssh2_debug(session, LIBSSH2_DBG_TRANS, \"Disconnecting: reason=%d, desc=%s, lang=%s\", reason, description, lang);\n#endif\n\tif (description) {\n\t\tdescr_len = strlen(description);\n\t}\n\tif (lang) {\n\t\tlang_len = strlen(lang);\n\t}\n\tdata_len = descr_len + lang_len + 13; /* packet_type(1) + reason code(4) + descr_len(4) + lang_len(4) */\n\n\ts = data = LIBSSH2_ALLOC(session, data_len);\n\tif (!data) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for disconnect packet\", 0);\n\t\treturn -1;\n\t}\n\n\t*(s++) = SSH_MSG_DISCONNECT;\n\tlibssh2_htonu32(s, reason);\t\t\t\ts += 4;\n\n\tlibssh2_htonu32(s, descr_len);\t\t\ts += 4;\n\tif (description) {\n\t\tmemcpy(s, description, descr_len);\n\t\ts += descr_len;\n\t}\n\n\tlibssh2_htonu32(s, lang_len);\t\t\ts += 4;\n\tif (lang) {\n\t\tmemcpy(s, lang, lang_len);\n\t\ts += lang_len;\n\t}\n\n\tlibssh2_packet_write(session, data, data_len);\n\n\tLIBSSH2_FREE(session, data);\n\n\treturn 0;\n}\n/* }}} */\n\n/* {{{ libssh2_session_methods\n * Return the currently active methods for method_type\n * NOTE: Currently lang_cs and lang_sc are ALWAYS set to empty string regardless of actual negotiation\n * Strings should NOT be freed\n */\nLIBSSH2_API const char *libssh2_session_methods(LIBSSH2_SESSION *session, int method_type)\n{\n\t/* All methods have char *name as their first element */\n\tLIBSSH2_KEX_METHOD *method = NULL;\n\n\tswitch(method_type) {\n\t\tcase LIBSSH2_METHOD_KEX:\n\t\t\tmethod = session->kex;\n\t\tbreak;\n\t\tcase LIBSSH2_METHOD_HOSTKEY:\n\t\t\tmethod = (LIBSSH2_KEX_METHOD*)session->hostkey;\n\t\tbreak;\n\t\tcase LIBSSH2_METHOD_CRYPT_CS:\n\t\t\tmethod = (LIBSSH2_KEX_METHOD*)session->local.crypt;\n\t\tbreak;\n\t\tcase LIBSSH2_METHOD_CRYPT_SC:\n\t\t\tmethod = (LIBSSH2_KEX_METHOD*)session->remote.crypt;\n\t\tbreak;\n\t\tcase LIBSSH2_METHOD_MAC_CS:\n\t\t\tmethod = (LIBSSH2_KEX_METHOD*)session->local.mac;\n\t\tbreak;\n\t\tcase LIBSSH2_METHOD_MAC_SC:\n\t\t\tmethod = (LIBSSH2_KEX_METHOD*)session->remote.mac;\n\t\tbreak;\n\t\tcase LIBSSH2_METHOD_COMP_CS:\n\t\t\tmethod = (LIBSSH2_KEX_METHOD*)session->local.comp;\n\t\tbreak;\n\t\tcase LIBSSH2_METHOD_COMP_SC:\n\t\t\tmethod = (LIBSSH2_KEX_METHOD*)session->remote.comp;\n\t\tbreak;\n\t\tcase LIBSSH2_METHOD_LANG_CS:\n\t\t\treturn \"\";\n\t\tbreak;\n\t\tcase LIBSSH2_METHOD_LANG_SC:\n\t\t\treturn \"\";\n\t\tbreak;\n\t\tdefault:\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_INVAL, \"Invalid parameter specified for method_type\", 0);\n\t\t\treturn NULL;\n\t\tbreak;\n\t}\n\n\tif (!method) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_METHOD_NONE, \"No method negotiated\", 0);\n\t\treturn NULL;\n\t}\n\n\treturn method->name;\n}\n/* }}} */\n\n/* {{{ libssh2_session_abstract\n * Retrieve a pointer to the abstract property\n */\nLIBSSH2_API void **libssh2_session_abstract(LIBSSH2_SESSION *session)\n{\n\treturn &session->abstract;\n}\n/* }}} */\n\n/* {{{ libssh2_session_last_error\n * Returns error code and populates an error string into errmsg\n * If want_buf is non-zero then the string placed into errmsg must be freed by the calling program\n * Otherwise it is assumed to be owned by libssh2\n */\nLIBSSH2_API int libssh2_session_last_error(LIBSSH2_SESSION *session, char **errmsg, int *errmsg_len, int want_buf)\n{\n\t/* No error to report */\n\tif (!session->err_code) {\n\t\tif (errmsg) {\n\t\t\tif (want_buf) {\n\t\t\t\t*errmsg = LIBSSH2_ALLOC(session, 1);\n\t\t\t\tif (*errmsg) {\n\t\t\t\t\t**errmsg = 0;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t*errmsg = \"\";\n\t\t\t}\n\t\t}\n\t\tif (errmsg_len) {\n\t\t\t*errmsg_len = 0;\n\t\t}\n\t\treturn 0;\n\t}\n\n\tif (errmsg) {\n\t\tchar *serrmsg = session->err_msg ? session->err_msg : \"\";\n\t\tint ownbuf = session->err_msg ? session->err_should_free : 0;\n\n\t\tif (want_buf) {\n\t\t\tif (ownbuf) {\n\t\t\t\t/* Just give the calling program the buffer */\n\t\t\t\t*errmsg = serrmsg;\n\t\t\t\tsession->err_should_free = 0;\n\t\t\t} else {\n\t\t\t\t/* Make a copy so the calling program can own it */\n\t\t\t\t*errmsg = LIBSSH2_ALLOC(session, session->err_msglen + 1);\n\t\t\t\tif (*errmsg) {\n\t\t\t\t\tmemcpy(*errmsg, session->err_msg, session->err_msglen);\n\t\t\t\t\t(*errmsg)[session->err_msglen] = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t*errmsg = serrmsg;\n\t\t}\n\t}\n\n\tif (errmsg_len) {\n\t\t*errmsg_len = session->err_msglen;\n\t}\n\n\treturn session->err_code;\n}\n/* }}} */\n\n/* {{{ libssh2_session_flag\n * Set/Get session flags\n * Passing flag==0 will avoid changing session->flags while still returning its current value\n */\nLIBSSH2_API int libssh2_session_flag(LIBSSH2_SESSION *session, int flag, int value)\n{\n\tif (value) {\n\t\tsession->flags |= flag;\n\t} else {\n\t\tsession->flags &= ~flag;\n\t}\n\n\treturn session->flags;\n}\n/* }}} */\n\n/* {{{ libssh2_poll_channel_read\n * Returns 0 if no data is waiting on channel,\n * non-0 if data is available\n */\nLIBSSH2_API int libssh2_poll_channel_read(LIBSSH2_CHANNEL *channel, int extended)\n{\n\tLIBSSH2_SESSION *session = channel->session;\n\tLIBSSH2_PACKET *packet = session->packets.head;\n\n\twhile (packet) {\n\t\tif (((packet->data[0] == SSH_MSG_CHANNEL_DATA) && (extended == 0) && (channel->local.id == libssh2_ntohu32(packet->data + 1))) ||\n\t\t\t((packet->data[0] == SSH_MSG_CHANNEL_EXTENDED_DATA) && (extended != 0) && (channel->local.id == libssh2_ntohu32(packet->data + 1)))) {\n\t\t\t/* Found data waiting to be read */\n\t\t\treturn 1;\n\t\t}\n\t\tpacket = packet->next;\n\t}\n\n\treturn 0;\n}\n/* }}} */\n\n/* {{{ libssh2_poll_channel_write\n * Returns 0 if writing to channel would block,\n * non-0 if data can be written without blocking\n */\ninline int libssh2_poll_channel_write(LIBSSH2_CHANNEL *channel)\n{\n\treturn channel->local.window_size ? 1 : 0;\n}\n/* }}} */\n\n/* {{{ libssh2_poll_listener_queued\n * Returns 0 if no connections are waiting to be accepted\n * non-0 if one or more connections are available\n */\ninline int libssh2_poll_listener_queued(LIBSSH2_LISTENER *listener)\n{\n\treturn listener->queue ? 1 : 0;\n}\n/* }}} */\n\n/* {{{ libssh2_poll\n * Poll sockets, channels, and listeners for activity\n */\nLIBSSH2_API int libssh2_poll(LIBSSH2_POLLFD *fds, unsigned int nfds, long timeout)\n{\n\tlong timeout_remaining;\n\tint i, active_fds;\n#ifdef HAVE_POLL\n\tLIBSSH2_SESSION *session = NULL;\n\tstruct pollfd sockets[nfds];\n\n\t/* Setup sockets for polling */\n\tfor(i = 0; i < nfds; i++) {\n\t\tfds[i].revents = 0;\n\t\tswitch (fds[i].type) {\n\t\t\tcase LIBSSH2_POLLFD_SOCKET:\n\t\t\t\tsockets[i].fd = fds[i].fd.socket;\n\t\t\t\tsockets[i].events  = fds[i].events;\n\t\t\t\tsockets[i].revents = 0;\n\t\t\t\tbreak;\n\t\t\tcase LIBSSH2_POLLFD_CHANNEL:\n\t\t\t\tsockets[i].fd = fds[i].fd.channel->session->socket_fd;\n\t\t\t\tsockets[i].events  = POLLIN;\n\t\t\t\tsockets[i].revents = 0;\n\t\t\t\tif (!session) session = fds[i].fd.channel->session;\n\t\t\t\tbreak;\n\t\t\tcase LIBSSH2_POLLFD_LISTENER:\n\t\t\t\tsockets[i].fd = fds[i].fd.listener->session->socket_fd;\n\t\t\t\tsockets[i].events  = POLLIN;\n\t\t\t\tsockets[i].revents = 0;\n\t\t\t\tif (!session) session = fds[i].fd.listener->session;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tif (session) libssh2_error(session, LIBSSH2_ERROR_INVALID_POLL_TYPE, \"Invalid descriptor passed to libssh2_poll()\", 0);\n\t\t\t\treturn -1;\n\t\t}\n\t}\n#elif defined(HAVE_SELECT)\n\tLIBSSH2_SESSION *session = NULL;\n\tint maxfd = 0;\n\tfd_set rfds,wfds;\n\tstruct timeval tv;\n\n\tFD_ZERO(&rfds);\n\tFD_ZERO(&wfds);\n\tfor(i = 0; i < nfds; i++) {\n\t\tfds[i].revents = 0;\n\t\tswitch (fds[i].type) {\n\t\t\tcase LIBSSH2_POLLFD_SOCKET:\n\t\t\t\tif (fds[i].events & LIBSSH2_POLLFD_POLLIN) {\n\t\t\t\t\tFD_SET(fds[i].fd.socket, &rfds);\n\t\t\t\t\tif (fds[i].fd.socket > maxfd) maxfd = fds[i].fd.socket;\n\t\t\t\t}\n\t\t\t\tif (fds[i].events & LIBSSH2_POLLFD_POLLOUT) {\n\t\t\t\t\tFD_SET(fds[i].fd.socket, &wfds);\n\t\t\t\t\tif (fds[i].fd.socket > maxfd) maxfd = fds[i].fd.socket;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase LIBSSH2_POLLFD_CHANNEL:\n\t\t\t\tFD_SET(fds[i].fd.channel->session->socket_fd, &rfds);\n\t\t\t\tif (fds[i].fd.channel->session->socket_fd > maxfd) maxfd = fds[i].fd.channel->session->socket_fd;\n\t\t\t\tif (!session) session = fds[i].fd.channel->session;\n\t\t\t\tbreak;\n\t\t\tcase LIBSSH2_POLLFD_LISTENER:\n\t\t\t\tFD_SET(fds[i].fd.listener->session->socket_fd, &rfds);\n\t\t\t\tif (fds[i].fd.listener->session->socket_fd > maxfd) maxfd = fds[i].fd.listener->session->socket_fd;\n\t\t\t\tif (!session) session = fds[i].fd.listener->session;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tif (session) libssh2_error(session, LIBSSH2_ERROR_INVALID_POLL_TYPE, \"Invalid descriptor passed to libssh2_poll()\", 0);\n\t\t\t\treturn -1;\n\t\t}\n\t}\n#else\n\t/* No select() or poll()\n\t * no sockets sturcture to setup\n\t */\n\n\ttimeout = 0;\n#endif /* HAVE_POLL or HAVE_SELECT */\n\n\ttimeout_remaining = timeout;\n\tdo {\n#if defined(HAVE_POLL) || defined(HAVE_SELECT)\n\t\tint sysret;\n#endif\n\n\t\tactive_fds = 0;\n\n\t\tfor (i = 0; i < nfds; i++) {\n\t\t\tif (fds[i].events != fds[i].revents) {\n\t\t\t\tswitch (fds[i].type) {\n\t\t\t\t\tcase LIBSSH2_POLLFD_CHANNEL:\n\t\t\t\t\t\tif ((fds[i].events & LIBSSH2_POLLFD_POLLIN) && /* Want to be ready for read */\n\t\t\t\t\t\t\t((fds[i].revents & LIBSSH2_POLLFD_POLLIN) == 0)) { /* Not yet known to be ready for read */\n\t\t\t\t\t\t\tfds[i].revents |= libssh2_poll_channel_read(fds[i].fd.channel, 0) ? LIBSSH2_POLLFD_POLLIN : 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ((fds[i].events & LIBSSH2_POLLFD_POLLEXT) && /* Want to be ready for extended read */\n\t\t\t\t\t\t\t((fds[i].revents & LIBSSH2_POLLFD_POLLEXT) == 0)) { /* Not yet known to be ready for extended read */\n\t\t\t\t\t\t\tfds[i].revents |= libssh2_poll_channel_read(fds[i].fd.channel, 1) ? LIBSSH2_POLLFD_POLLEXT : 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ((fds[i].events & LIBSSH2_POLLFD_POLLOUT) && /* Want to be ready for write */\n\t\t\t\t\t\t\t((fds[i].revents & LIBSSH2_POLLFD_POLLOUT) == 0)) { /* Not yet known to be ready for write */\n\t\t\t\t\t\t\tfds[i].revents |= libssh2_poll_channel_write(fds[i].fd.channel) ? LIBSSH2_POLLFD_POLLOUT : 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (fds[i].fd.channel->remote.close || fds[i].fd.channel->local.close) {\n\t\t\t\t\t\t\tfds[i].revents |= LIBSSH2_POLLFD_CHANNEL_CLOSED;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (fds[i].fd.channel->session->socket_state == LIBSSH2_SOCKET_DISCONNECTED) {\n\t\t\t\t\t\t\tfds[i].revents |= LIBSSH2_POLLFD_CHANNEL_CLOSED | LIBSSH2_POLLFD_SESSION_CLOSED;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase LIBSSH2_POLLFD_LISTENER:\n\t\t\t\t\t\tif ((fds[i].events & LIBSSH2_POLLFD_POLLIN) && /* Want a connection */\n\t\t\t\t\t\t\t((fds[i].revents & LIBSSH2_POLLFD_POLLIN) == 0)) { /* No connections known of yet */\n\t\t\t\t\t\t\tfds[i].revents |= libssh2_poll_listener_queued(fds[i].fd.listener) ? LIBSSH2_POLLFD_POLLIN : 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (fds[i].fd.listener->session->socket_state == LIBSSH2_SOCKET_DISCONNECTED) {\n\t\t\t\t\t\t\tfds[i].revents |= LIBSSH2_POLLFD_LISTENER_CLOSED | LIBSSH2_POLLFD_SESSION_CLOSED;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (fds[i].revents) {\n\t\t\t\tactive_fds++;\n\t\t\t}\n\t\t}\n\n\t\tif (active_fds) {\n\t\t\t/* Don't block on the sockets if we have channels/listeners which are ready */\n\t\t\ttimeout_remaining = 0;\n\t\t}\n\n#ifdef HAVE_POLL\n\n#ifdef HAVE_GETTIMEOFDAY\n{\n\t\tstruct timeval tv_begin, tv_end;\n\n\t\tgettimeofday((struct timeval *)&tv_begin, NULL);\n\t\tsysret = poll(sockets, nfds, timeout_remaining);\n\t\tgettimeofday((struct timeval *)&tv_end, NULL);\n\t\ttimeout_remaining -= (tv_end.tv_sec - tv_begin.tv_sec) * 1000;\n\t\ttimeout_remaining -= (tv_end.tv_usec - tv_begin.tv_usec) / 1000;\n}\n#else\n\t\t/* If the platform doesn't support gettimeofday,\n\t\t * then just make the call non-blocking and walk away\n\t\t */\n\t\tsysret = poll(sockets, nfds, timeout_remaining);\n\t\ttimeout_remaining = 0;\n#endif /* HAVE_GETTIMEOFDAY */\n\n\t\tif (sysret > 0) {\n\t\t\tfor (i = 0; i < nfds; i++) {\n\t\t\t\tswitch (fds[i].type) {\n\t\t\t\t\tcase LIBSSH2_POLLFD_SOCKET:\n\t\t\t\t\t\tfds[i].revents = sockets[i].revents;\n\t\t\t\t\t\tsockets[i].revents = 0; /* In case we loop again, be nice */\n\t\t\t\t\t\tif (fds[i].revents) {\n\t\t\t\t\t\t\tactive_fds++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase LIBSSH2_POLLFD_CHANNEL:\n\t\t\t\t\t\tif (sockets[i].events & POLLIN) {\n\t\t\t\t\t\t\t/* Spin session until no data available */\n\t\t\t\t\t\t\twhile (libssh2_packet_read(fds[i].fd.channel->session, 0) > 0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (sockets[i].revents & POLLHUP) {\n\t\t\t\t\t\t\tfds[i].revents |= LIBSSH2_POLLFD_CHANNEL_CLOSED | LIBSSH2_POLLFD_SESSION_CLOSED;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsockets[i].revents = 0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase LIBSSH2_POLLFD_LISTENER:\n\t\t\t\t\t\tif (sockets[i].events & POLLIN) {\n\t\t\t\t\t\t\t/* Spin session until no data available */\n\t\t\t\t\t\t\twhile (libssh2_packet_read(fds[i].fd.listener->session, 0) > 0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (sockets[i].revents & POLLHUP) {\n\t\t\t\t\t\t\tfds[i].revents |= LIBSSH2_POLLFD_LISTENER_CLOSED | LIBSSH2_POLLFD_SESSION_CLOSED;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsockets[i].revents = 0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n#elif defined(HAVE_SELECT)\n\t\ttv.tv_sec = timeout_remaining / 1000;\n\t\ttv.tv_usec = (timeout_remaining % 1000) * 1000;\n#ifdef HAVE_GETTIMEOFDAY\n{\n\t\tstruct timeval tv_begin, tv_end;\n\n\t\tgettimeofday((struct timeval *)&tv_begin, NULL);\n\t\tsysret = select(maxfd, &rfds, &wfds, NULL, &tv);\n\t\tgettimeofday((struct timeval *)&tv_end, NULL);\n\n\t\ttimeout_remaining -= (tv_end.tv_sec - tv_begin.tv_sec) * 1000;\n\t\ttimeout_remaining -= (tv_end.tv_usec - tv_begin.tv_usec) / 1000;\n}\n#else\n\t\t/* If the platform doesn't support gettimeofday,\n\t\t * then just make the call non-blocking and walk away\n\t\t */\n\t\tsysret = select(maxfd, &rfds, &wfds, NULL, &tv);\n\t\ttimeout_remaining = 0;\n#endif\n\n\t\tif (sysret > 0) {\n\t\t\tfor (i = 0; i < nfds; i++) {\n\t\t\t\tswitch (fds[i].type) {\n\t\t\t\t\tcase LIBSSH2_POLLFD_SOCKET:\n\t\t\t\t\t\tif (FD_ISSET(fds[i].fd.socket, &rfds)) {\n\t\t\t\t\t\t\tfds[i].revents |= LIBSSH2_POLLFD_POLLIN;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (FD_ISSET(fds[i].fd.socket, &wfds)) {\n\t\t\t\t\t\t\tfds[i].revents |= LIBSSH2_POLLFD_POLLOUT;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (fds[i].revents) {\n\t\t\t\t\t\t\tactive_fds++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase LIBSSH2_POLLFD_CHANNEL:\n\t\t\t\t\t\tif (FD_ISSET(fds[i].fd.channel->session->socket_fd, &rfds)) {\n\t\t\t\t\t\t\t/* Spin session until no data available */\n\t\t\t\t\t\t\twhile (libssh2_packet_read(fds[i].fd.channel->session, 0) > 0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase LIBSSH2_POLLFD_LISTENER:\n\t\t\t\t\t\tif (FD_ISSET(fds[i].fd.listener->session->socket_fd, &rfds)) {\n\t\t\t\t\t\t\t/* Spin session until no data available */\n\t\t\t\t\t\t\twhile (libssh2_packet_read(fds[i].fd.listener->session, 0) > 0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n#endif /* else no select() or poll() -- timeout (and by extension timeout_remaining) will be equal to 0 */\n\t} while ((timeout_remaining > 0) && !active_fds);\n\n\treturn active_fds;\n}\n/* }}} */\n\n"
  },
  {
    "path": "Example/sftp.c",
    "content": "/* Copyright (c) 2004-2006, Sara Golemon <sarag@libssh2.org>\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms,\n * with or without modification, are permitted provided\n * that the following conditions are met:\n *\n *   Redistributions of source code must retain the above\n *   copyright notice, this list of conditions and the\n *   following disclaimer.\n *\n *   Redistributions in binary form must reproduce the above\n *   copyright notice, this list of conditions and the following\n *   disclaimer in the documentation and/or other materials\n *   provided with the distribution.\n *\n *   Neither the name of the copyright holder nor the names\n *   of any other contributors may be used to endorse or\n *   promote products derived from this software without\n *   specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND\n * CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES,\n * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE\n * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY\n * OF SUCH DAMAGE.\n */\n\n#include \"libssh2_priv.h\"\n#include \"libssh2_sftp.h\"\n\n/* Note: Version 6 was documented at the time of writing\n * However it was marked as \"DO NOT IMPLEMENT\" due to pending changes\n *\n * This release of libssh2 implements Version 5 with automatic downgrade\n * based on server's declaration\n */\n\n/* SFTP packet types */\n#define SSH_FXP_INIT\t\t\t\t1\n#define SSH_FXP_VERSION\t\t\t\t2\n#define SSH_FXP_OPEN\t\t\t\t3\n#define SSH_FXP_CLOSE\t\t\t\t4\n#define SSH_FXP_READ\t\t\t\t5\n#define SSH_FXP_WRITE\t\t\t\t6\n#define SSH_FXP_LSTAT\t\t\t\t7\n#define SSH_FXP_FSTAT\t\t\t\t8\n#define SSH_FXP_SETSTAT\t\t\t\t9\n#define SSH_FXP_FSETSTAT\t\t\t10\n#define SSH_FXP_OPENDIR\t\t\t\t11\n#define SSH_FXP_READDIR\t\t\t\t12\n#define SSH_FXP_REMOVE\t\t\t\t13\n#define SSH_FXP_MKDIR\t\t\t\t14\n#define SSH_FXP_RMDIR\t\t\t\t15\n#define SSH_FXP_REALPATH\t\t\t16\n#define SSH_FXP_STAT\t\t\t\t17\n#define SSH_FXP_RENAME\t\t\t\t18\n#define SSH_FXP_READLINK\t\t\t19\n#define SSH_FXP_SYMLINK\t\t\t\t20\n#define SSH_FXP_STATUS\t\t\t\t101\n#define SSH_FXP_HANDLE\t\t\t\t102\n#define SSH_FXP_DATA\t\t\t\t103\n#define SSH_FXP_NAME\t\t\t\t104\n#define SSH_FXP_ATTRS\t\t\t\t105\n#define SSH_FXP_EXTENDED\t\t\t200\n#define SSH_FXP_EXTENDED_REPLY\t\t201\n\nstruct _LIBSSH2_SFTP {\n\tLIBSSH2_CHANNEL *channel;\n\n\tunsigned long request_id, version;\n\n\tLIBSSH2_PACKET_BRIGADE packets;\n\n\tLIBSSH2_SFTP_HANDLE *handles;\n\n\tunsigned long last_errno;\n};\n\n#define LIBSSH2_SFTP_HANDLE_FILE\t0\n#define LIBSSH2_SFTP_HANDLE_DIR\t\t1\n\n/* S_IFREG */\n#define LIBSSH2_SFTP_ATTR_PFILETYPE_FILE\t0100000\n/* S_IFDIR */\n#define LIBSSH2_SFTP_ATTR_PFILETYPE_DIR\t\t0040000\n\nstruct _LIBSSH2_SFTP_HANDLE {\n\tLIBSSH2_SFTP *sftp;\n\tLIBSSH2_SFTP_HANDLE *prev, *next;\n\n\tchar *handle;\n\tint handle_len;\n\n\tchar handle_type;\n\n\tunion _libssh2_sftp_handle_data {\n\t\tstruct _libssh2_sftp_handle_file_data {\n\t\t\tlibssh2_uint64_t offset;\n\t\t} file;\n\t\tstruct _libssh2_sftp_handle_dir_data {\n\t\t\tunsigned long names_left;\n\t\t\tvoid *names_packet;\n\t\t\tchar *next_name;\n\t\t} dir;\n\t} u;\n};\n\n/* {{{ libssh2_sftp_packet_add\n * Add a packet to the SFTP packet brigade\n */\nstatic int libssh2_sftp_packet_add(LIBSSH2_SFTP *sftp, unsigned char *data, unsigned long data_len)\n{\n\tif (!sftp)\n\t{\n\t\treturn -1;\n\t}\n\tLIBSSH2_SESSION *session = sftp->channel->session;\n\tLIBSSH2_PACKET *packet;\n\n#ifdef LIBSSH2_DEBUG_SFTP\n\t_libssh2_debug(session, LIBSSH2_DBG_SFTP, \"Received packet %d\", (int)data[0]);\n#endif\n\tpacket = LIBSSH2_ALLOC(session, sizeof(LIBSSH2_PACKET));\n\tif (!packet) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate datablock for SFTP packet\", 0);\n\t\treturn -1;\n\t}\n\tmemset(packet, 0, sizeof(LIBSSH2_PACKET));\n\n\tpacket->data = data;\n\tpacket->data_len = data_len;\n\tpacket->data_head = 5;\n\tpacket->brigade = &sftp->packets;\n\tpacket->next = NULL;\n\tpacket->prev = sftp->packets.tail;\n\tif (packet->prev) {\n\t\tpacket->prev->next = packet;\n\t} else {\n\t\tsftp->packets.head = packet;\n\t}\n\tsftp->packets.tail = packet;\n\n\treturn 0;\n}\n/* }}} */\n\n/* {{{ libssh2_sftp_packet_read\n * Frame an SFTP packet off the channel\n */\nstatic int libssh2_sftp_packet_read(LIBSSH2_SFTP *sftp, int should_block)\n{\n\tif (!sftp)\n\t{\n\t\treturn -1;\n\t}\n\tLIBSSH2_CHANNEL *channel = sftp->channel;\n\tLIBSSH2_SESSION *session = channel->session;\n\tunsigned char buffer[4]; /* To store the packet length */\n\tunsigned char *packet;\n\tunsigned long packet_len, packet_received;\n\n#ifdef LIBSSH2_DEBUG_SFTP\n\t_libssh2_debug(session, LIBSSH2_DBG_SFTP, \"Waiting for packet: %s block\", should_block ? \"will\" : \"willnot\");\n#endif\n\tif (should_block) {\n\t\tlibssh2_channel_set_blocking(channel, 1);\n\t\tif (4 != libssh2_channel_read(channel, buffer, 4)) {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_TIMEOUT, \"Timeout waiting for FXP packet\", 0);\n\t\t\treturn -1;\n\t\t}\n\t} else {\n\t\tlibssh2_channel_set_blocking(channel, 0);\n\t\tif (1 != libssh2_channel_read(channel, buffer, 1)) {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_TIMEOUT, \"Timeout waiting for FXP packet\", 0);\n\t\t\treturn 0;\n\t\t}\n\t\tlibssh2_channel_set_blocking(channel, 1);\n\t\tif (3 != libssh2_channel_read(channel, buffer + 1, 3)) {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_TIMEOUT, \"Timeout waiting for FXP packet\", 0);\n\t\t\treturn -1;\n\t\t}\n\t}\n\tpacket_len = libssh2_ntohu32(buffer);\n#ifdef LIBSSH2_DEBUG_SFTP\n\t_libssh2_debug(session, LIBSSH2_DBG_SFTP, \"Data begin - Packet Length: %lu\", packet_len);\n#endif\n\tif (packet_len > LIBSSH2_SFTP_PACKET_MAXLEN) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_CHANNEL_PACKET_EXCEEDED, \"SFTP packet too large\", 0);\n\t\treturn -1;\n\t}\n\n\tpacket = LIBSSH2_ALLOC(session, packet_len);\n\tif (!packet) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate SFTP packet\", 0);\n\t\treturn -1;\n\t}\n\n\tpacket_received = 0;\n\twhile (packet_len > packet_received) {\n\t\tlong bytes_received = libssh2_channel_read(channel, packet + packet_received, packet_len - packet_received);\n\n\t\tif (bytes_received < 0) {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_TIMEOUT, \"Receive error waiting for SFTP packet\", 0);\n\t\t\tLIBSSH2_FREE(session, packet);\n\t\t\treturn -1;\n\t\t}\n\t\tpacket_received += bytes_received;\n\t}\n\n\tif (libssh2_sftp_packet_add(sftp, packet, packet_len)) {\n\t\tLIBSSH2_FREE(session, packet);\n\t\treturn -1;\n\t}\n\n\treturn packet[0];\n}\n/* }}} */\n\n/* {{{ libssh2_sftp_packet_ask\n * A la libssh2_packet_ask()\n */\nstatic int libssh2_sftp_packet_ask(LIBSSH2_SFTP *sftp, unsigned char packet_type, unsigned long request_id, unsigned char **data, unsigned long *data_len, int poll_channel)\n{\n\tif (!sftp)\n\t{\n\t\treturn -1;\n\t}\n\tLIBSSH2_SESSION *session = sftp->channel->session;\n\tLIBSSH2_PACKET *packet = sftp->packets.head;\n\tunsigned char match_buf[5];\n\tint match_len = 5;\n\n#ifdef LIBSSH2_DEBUG_SFTP\n\t_libssh2_debug(session, LIBSSH2_DBG_SFTP, \"Asking for %d packet\", (int)packet_type);\n#endif\n\tif (poll_channel) {\n\t\tif (libssh2_sftp_packet_read(sftp, 0) < 0) {\n\t\t\treturn -1;\n\t\t}\n\t}\n\n\tmatch_buf[0] = packet_type;\n\tif (packet_type == SSH_FXP_VERSION) {\n\t\t/* Special consideration when matching VERSION packet */\n\t\tmatch_len = 1;\n\t} else {\n\t\tlibssh2_htonu32(match_buf + 1, request_id);\n\t}\n\n\twhile (packet) {\n\t\tif (strncmp((const char *)packet->data, (const char *)match_buf, match_len) == 0) {\n\t\t\t*data = packet->data;\n\t\t\t*data_len = packet->data_len;\n\n\t\t\tif (packet->prev) {\n\t\t\t\tpacket->prev->next = packet->next;\n\t\t\t} else {\n\t\t\t\tsftp->packets.head = packet->next;\n\t\t\t}\n\n\t\t\tif (packet->next) {\n\t\t\t\tpacket->next->prev = packet->prev;\n\t\t\t} else {\n\t\t\t\tsftp->packets.tail = packet->prev;\n\t\t\t}\n\n\t\t\tLIBSSH2_FREE(session, packet);\n\n\t\t\treturn 0;\n\t\t}\n\t\tpacket = packet->next;\n\t}\n\treturn -1;\n}\n/* }}} */\n\n/* {{{ libssh2_sftp_packet_require\n * A la libssh2_packet_require\n */\nstatic int libssh2_sftp_packet_require(LIBSSH2_SFTP *sftp, unsigned char packet_type, unsigned long request_id, unsigned char **data, unsigned long *data_len)\n{\n\tif (!sftp)\n\t{\n\t\treturn -1;\n\t}\n\tLIBSSH2_SESSION *session = sftp->channel->session;\n\n#ifdef LIBSSH2_DEBUG_SFTP\n\t_libssh2_debug(session, LIBSSH2_DBG_SFTP, \"Requiring %d packet\", (int)packet_type);\n#endif\n\tif (libssh2_sftp_packet_ask(sftp, packet_type, request_id, data, data_len, 0) == 0) {\n\t\t/* A packet was available in the packet brigade */\n\t\treturn 0;\n\t}\n\n\twhile (session->socket_state == LIBSSH2_SOCKET_CONNECTED) {\n\t\tint ret = libssh2_sftp_packet_read(sftp, 1);\n\t\tif (ret < 0) {\n\t\t\treturn -1;\n\t\t}\n\t\tif (ret == 0) continue;\n\n\t\tif (packet_type == ret) {\n\t\t\t/* Be lazy, let packet_ask pull it out of the brigade */\n\t\t\treturn libssh2_sftp_packet_ask(sftp, packet_type, request_id, data, data_len, 0);\n\t\t}\n\t}\n\n\t/* Only reached if the socket died */\n\treturn -1;\n}\n/* }}} */\n\n/* {{{ libssh2_sftp_packet_requirev\n * Requie one of N possible reponses\n */\nstatic int libssh2_sftp_packet_requirev(LIBSSH2_SFTP *sftp, int num_valid_responses, unsigned char *valid_responses, unsigned long request_id, unsigned char **data, unsigned long *data_len)\n{\n\tif (!sftp)\n\t{\n\t\treturn -1;\n\t}\n\tint i;\n\n\t/* Flush */\n\twhile (libssh2_sftp_packet_read(sftp, 0) > 0);\n\n\twhile (sftp->channel->session->socket_state == LIBSSH2_SOCKET_CONNECTED) {\n\t\tint ret;\n\t\tfor(i = 0; i < num_valid_responses; i++) {\n\t\t\tif (libssh2_sftp_packet_ask(sftp, valid_responses[i], request_id, data, data_len, 0) == 0) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t\tret = libssh2_sftp_packet_read(sftp, 1);\n\t\tif (ret < 0) {\n\t\t\treturn -1;\n\t\t}\n\t\tif (ret == 0) continue;\n\t}\n\n\treturn -1;\n}\n/* }}} */\n\n/* {{{ libssh2_sftp_attrsize\n * Size that attr will occupy when turned into a bin struct\n */\nstatic int libssh2_sftp_attrsize(LIBSSH2_SFTP_ATTRIBUTES *attrs)\n{\n\tif (!attrs)\n\t{\n\t\treturn -1;\n\t}\n\tint attrsize = 4; /* flags(4) */\n\n\tif (!attrs) {\n\t\treturn attrsize;\n\t}\n\n\tif (attrs->flags & LIBSSH2_SFTP_ATTR_SIZE)\t\t\t\tattrsize += 8;\n\tif (attrs->flags & LIBSSH2_SFTP_ATTR_UIDGID)\t\t\tattrsize += 8;\n\tif (attrs->flags & LIBSSH2_SFTP_ATTR_PERMISSIONS)\t\tattrsize += 4;\n\tif (attrs->flags & LIBSSH2_SFTP_ATTR_ACMODTIME)\t\t\tattrsize += 8;\t\t\t/* atime + mtime as u32 */\n\n\treturn attrsize;\n}\n/* }}} */\n\n/* {{{ libssh2_sftp_attr2bin\n * Populate attributes into an SFTP block\n */\nstatic int libssh2_sftp_attr2bin(unsigned char *p, LIBSSH2_SFTP_ATTRIBUTES *attrs)\n{\n\tif (!attrs)\n\t{\n\t\treturn -1;\n\t}\n\tunsigned char *s = p;\n\tunsigned long flag_mask = LIBSSH2_SFTP_ATTR_SIZE | LIBSSH2_SFTP_ATTR_UIDGID | LIBSSH2_SFTP_ATTR_PERMISSIONS | LIBSSH2_SFTP_ATTR_ACMODTIME;\n\n\t/* TODO: When we add SFTP4+ functionality flag_mask can get additional bits */\n\n\tif (!attrs) {\n\t\tlibssh2_htonu32(s, 0);\n\t\treturn 4;\n\t}\n\n\tlibssh2_htonu32(s, attrs->flags & flag_mask);\t\t\t\ts += 4;\n\n\tif (attrs->flags & LIBSSH2_SFTP_ATTR_SIZE) {\n\t\tlibssh2_htonu64(s, attrs->filesize);\t\t\t\t\ts += 8;\n\t}\n\n\tif (attrs->flags & LIBSSH2_SFTP_ATTR_UIDGID) {\n\t\tlibssh2_htonu32(s, attrs->uid);\t\t\t\t\t\t\ts += 4;\n\t\tlibssh2_htonu32(s, attrs->gid);\t\t\t\t\t\t\ts += 4;\n\t}\n\n\tif (attrs->flags & LIBSSH2_SFTP_ATTR_PERMISSIONS) {\n\t\tlibssh2_htonu32(s, attrs->permissions);\t\t\t\t\ts += 4;\n\t}\n\n\tif (attrs->flags & LIBSSH2_SFTP_ATTR_ACMODTIME) {\n\t\tlibssh2_htonu32(s, attrs->atime);\t\t\t\t\t\ts += 4;\n\t\tlibssh2_htonu32(s, attrs->mtime);\t\t\t\t\t\ts += 4;\n\t}\n\n\treturn (s - p);\n}\n/* }}} */\n\n/* {{{ libssh2_sftp_bin2attr\n */\nstatic int libssh2_sftp_bin2attr(LIBSSH2_SFTP_ATTRIBUTES *attrs, unsigned char *p)\n{\n\tif (!attrs)\n\t{\n\t\treturn -1;\n\t}\n\tunsigned char *s = p;\n\n\tmemset(attrs, 0, sizeof(LIBSSH2_SFTP_ATTRIBUTES));\n\tattrs->flags = libssh2_ntohu32(s);\t\t\t\ts += 4;\n\n\tif (attrs->flags & LIBSSH2_SFTP_ATTR_SIZE) {\n\t\tattrs->filesize = libssh2_ntohu64(s);\t\ts += 8;\n\t}\n\n\tif (attrs->flags & LIBSSH2_SFTP_ATTR_UIDGID) {\n\t\tattrs->uid = libssh2_ntohu32(s);\t\t\ts += 4;\n\t\tattrs->gid = libssh2_ntohu32(s);\t\t\ts += 4;\n\t}\n\n\tif (attrs->flags & LIBSSH2_SFTP_ATTR_PERMISSIONS) {\n\t\tattrs->permissions = libssh2_ntohu32(s);\ts += 4;\n\t}\n\n\tif (attrs->flags & LIBSSH2_SFTP_ATTR_ACMODTIME) {\n\t\tattrs->atime = libssh2_ntohu32(s);\t\t\ts += 4;\n\t\tattrs->mtime = libssh2_ntohu32(s);\t\t\ts += 4;\n\t}\n\n\treturn (s - p);\n}\n/* }}} */\n\n/* ************\n   * SFTP API *\n   ************ */\n\n/* {{{ libssh2_sftp_dtor\n * Shutdown an SFTP stream when the channel closes\n */\nLIBSSH2_CHANNEL_CLOSE_FUNC(libssh2_sftp_dtor) {\n\tLIBSSH2_SFTP *sftp = (LIBSSH2_SFTP*)(*channel_abstract);\n\n\t/* Loop through handles closing them */\n\twhile (sftp->handles) {\n\t\tlibssh2_sftp_close_handle(sftp->handles);\n\t}\n\n\tLIBSSH2_FREE(session, sftp);\n}\n/* }}} */\n\n/* {{{ libssh2_sftp_init\n * Startup an SFTP session\n */\nLIBSSH2_API LIBSSH2_SFTP *libssh2_sftp_init(LIBSSH2_SESSION *session)\n{\n\tif (!session)\n\t{\n\t\treturn NULL;\n\t}\n\tLIBSSH2_SFTP *sftp;\n\tLIBSSH2_CHANNEL *channel;\n\tunsigned char *data, *s, buffer[9]; /* sftp_header(5){excludes request_id} + version_id(4) */\n\tunsigned long data_len;\n\n#ifdef LIBSSH2_DEBUG_SFTP\n\t_libssh2_debug(session, LIBSSH2_DBG_SFTP, \"Initializing SFTP subsystem\");\n#endif\n\tchannel = libssh2_channel_open_session(session);\n\tif (!channel) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_CHANNEL_FAILURE, \"Unable to startup channel\", 0);\n\t\treturn NULL;\n\t}\n\tif (libssh2_channel_subsystem(channel, \"sftp\")) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_CHANNEL_FAILURE, \"Unable to request SFTP subsystem\", 0);\n\t\tlibssh2_channel_free(channel);\n\t\treturn NULL;\n\t}\n\n\tlibssh2_channel_set_blocking(channel, 1);\n\n\tlibssh2_channel_handle_extended_data(channel, LIBSSH2_CHANNEL_EXTENDED_DATA_IGNORE);\n\n\tsftp = LIBSSH2_ALLOC(session, sizeof(LIBSSH2_SFTP));\n\tif (!sftp) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate a new SFTP structure\", 0);\n\t\tlibssh2_channel_free(channel);\n\t\treturn NULL;\n\t}\n\tmemset(sftp, 0, sizeof(LIBSSH2_SFTP));\n\tsftp->channel = channel;\n\tsftp->request_id = 0;\n\n\tlibssh2_htonu32(buffer, 5);\n\tbuffer[4] = SSH_FXP_INIT;\n\tlibssh2_htonu32(buffer + 5, LIBSSH2_SFTP_VERSION);\n\n#ifdef LIBSSH2_DEBUG_SFTP\n\t_libssh2_debug(session, LIBSSH2_DBG_SFTP, \"Sending FXP_INIT packet advertising version %d support\", (int)LIBSSH2_SFTP_VERSION);\n#endif\n\tif (9 != libssh2_channel_write(channel, buffer, 9)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send SSH_FXP_INIT\", 0);\n\t\tlibssh2_channel_free(channel);\n\t\tLIBSSH2_FREE(session, sftp);\n\t\treturn NULL;\n\t}\n\n\tif (libssh2_sftp_packet_require(sftp, SSH_FXP_VERSION, 0, &data, &data_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_TIMEOUT, \"Timeout waiting for response from SFTP subsystem\", 0);\n\t\tlibssh2_channel_free(channel);\n\t\tLIBSSH2_FREE(session, sftp);\n\t\treturn NULL;\n\t}\n\tif (data_len < 5) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SFTP_PROTOCOL, \"Invalid SSH_FXP_VERSION response\", 0);\n\t\tlibssh2_channel_free(channel);\n\t\tLIBSSH2_FREE(session, sftp);\n\t\treturn NULL;\n\t}\n\n\ts = data + 1;\n\tsftp->version = libssh2_ntohu32(s);\t\t\t\t\ts += 4;\n\tif (sftp->version > LIBSSH2_SFTP_VERSION) {\n#ifdef LIBSSH2_DEBUG_SFTP\n\t\t_libssh2_debug(session, LIBSSH2_DBG_SFTP, \"Truncating remote SFTP version from %lu\", sftp->version);\n#endif\n\t\tsftp->version = LIBSSH2_SFTP_VERSION;\n\t}\n#ifdef LIBSSH2_DEBUG_SFTP\n\t_libssh2_debug(session, LIBSSH2_DBG_SFTP, \"Enabling SFTP version %lu compatability\", sftp->version);\n#endif\n\twhile (s < (data + data_len)) {\n\t\tchar *extension_name, *extension_data;\n\t\tunsigned long extname_len, extdata_len;\n\n\t\textname_len = libssh2_ntohu32(s);\t\t\t\ts += 4;\n\t\textension_name = (char *)s;\t\t\t\t\t\t\t\ts += extname_len;\n\n\t\textdata_len = libssh2_ntohu32(s);\t\t\t\ts += 4;\n\t\textension_data = (char *)s;\t\t\t\t\t\t\t\ts += extdata_len;\n\n\t\t/* TODO: Actually process extensions */\n\t}\n\tLIBSSH2_FREE(session, data);\n\n\t/* Make sure that when the channel gets closed, the SFTP service is shut down too */\n\tsftp->channel->abstract = sftp;\n\tsftp->channel->close_cb = libssh2_sftp_dtor;\n\n\treturn sftp;\n}\n/* }}} */\n\n/* {{{ libssh2_sftp_shutdown\n * Shutsdown the SFTP subsystem\n */\nLIBSSH2_API int libssh2_sftp_shutdown(LIBSSH2_SFTP *sftp) {\n\tif (!sftp)\n\t{\n\t\treturn -1;\n\t}\n\treturn libssh2_channel_free(sftp->channel);\n}\n/* }}} */\n\n/* *******************************\n   * SFTP File and Directory Ops *\n   ******************************* */\n\n/* {{{ libssh2_sftp_open_ex\n *\n */\nLIBSSH2_API LIBSSH2_SFTP_HANDLE *libssh2_sftp_open_ex(LIBSSH2_SFTP *sftp, char *filename, unsigned int filename_len, unsigned long flags, long mode, int open_type)\n{\n\tif (!sftp)\n\t{\n\t\treturn NULL;\n\t}\n\tLIBSSH2_CHANNEL *channel = sftp->channel;\n\tLIBSSH2_SESSION *session = channel->session;\n\tLIBSSH2_SFTP_HANDLE *fp;\n\tLIBSSH2_SFTP_ATTRIBUTES attrs = { LIBSSH2_SFTP_ATTR_PERMISSIONS };\n\tunsigned long data_len, packet_len = filename_len + 13 + ((open_type == LIBSSH2_SFTP_OPENFILE) ? (4 + libssh2_sftp_attrsize(&attrs)) : 0);\n\t\t\t\t\t\t\t/* packet_len(4) + packet_type(1) + request_id(4) + filename_len(4) + flags(4) */\n\tunsigned char *packet, *data, *s;\n\tunsigned char fopen_responses[2] = { SSH_FXP_HANDLE,\tSSH_FXP_STATUS\t};\n\tunsigned long request_id;\n\n\ts = packet = LIBSSH2_ALLOC(session, packet_len);\n\tif (!packet) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for FXP_OPEN or FXP_OPENDIR packet\", 0);\n\t\treturn NULL;\n\t}\n\t/* Filetype in SFTP 3 and earlier */\n\tattrs.permissions = mode | ((open_type == LIBSSH2_SFTP_OPENFILE) ? LIBSSH2_SFTP_ATTR_PFILETYPE_FILE : LIBSSH2_SFTP_ATTR_PFILETYPE_DIR);\n\n\tlibssh2_htonu32(s, packet_len - 4);\t\t\t\t\ts += 4;\n\t*(s++) = (open_type == LIBSSH2_SFTP_OPENFILE) ? SSH_FXP_OPEN : SSH_FXP_OPENDIR;\n\trequest_id = sftp->request_id++;\n\tlibssh2_htonu32(s, request_id);\t\t\t\t\t\ts += 4;\n\tlibssh2_htonu32(s, filename_len);\t\t\t\t\ts += 4;\n\tmemcpy(s, filename, filename_len);\t\t\t\t\ts += filename_len;\n\tif (open_type == LIBSSH2_SFTP_OPENFILE) {\n\t\tlibssh2_htonu32(s, flags);\t\t\t\t\t\ts += 4;\n\t\ts += libssh2_sftp_attr2bin(s, &attrs);\n\t}\n\n#ifdef LIBSSH2_DEBUG_SFTP\n\t_libssh2_debug(session, LIBSSH2_DBG_SFTP, \"Sending %s open request\", (open_type == LIBSSH2_SFTP_OPENFILE) ? \"file\" : \"directory\");\n#endif\n\tif (packet_len != libssh2_channel_write(channel, packet, packet_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send FXP_OPEN or FXP_OPENDIR command\", 0);\n\t\tLIBSSH2_FREE(session, packet);\n\t\treturn NULL;\n\t}\n\tLIBSSH2_FREE(session, packet);\n\n\tif (libssh2_sftp_packet_requirev(sftp, 2, fopen_responses, request_id, &data, &data_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_TIMEOUT, \"Timeout waiting for status message\", 0);\n\t\treturn NULL;\n\t}\n\n\tif (data[0] == SSH_FXP_STATUS) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SFTP_PROTOCOL, \"Failed opening remote file\", 0);\n\t\tsftp->last_errno = libssh2_ntohu32(data + 5);\n\t\tLIBSSH2_FREE(session, data);\n\t\treturn NULL;\n\t}\n\n\tfp = LIBSSH2_ALLOC(session, sizeof(LIBSSH2_SFTP_HANDLE));\n\tif (!fp) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate new SFTP handle structure\", 0);\n\t\tLIBSSH2_FREE(session, data);\n\t\treturn NULL;\n\t}\n\tmemset(fp, 0, sizeof(LIBSSH2_SFTP_HANDLE));\n\tfp->handle_type = (open_type == LIBSSH2_SFTP_OPENFILE) ? LIBSSH2_SFTP_HANDLE_FILE : LIBSSH2_SFTP_HANDLE_DIR;\n\n\tfp->handle_len = libssh2_ntohu32(data + 5);\n\tif (fp->handle_len > 256) {\n\t\t/* SFTP doesn't allow handles longer than 256 characters */\n\t\tfp->handle_len = 256;\n\t}\n\tfp->handle = LIBSSH2_ALLOC(session, fp->handle_len);\n\tif (!fp->handle) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate space for SFTP file/dir handle\", 0);\n\t\tLIBSSH2_FREE(session, data);\n\t\tLIBSSH2_FREE(session, fp);\n\t\treturn NULL;\n\t}\n\tmemcpy(fp->handle, data + 9, fp->handle_len);\n\tLIBSSH2_FREE(session, data);\n\n\t/* Link the file and the sftp session together */\n\tfp->next = sftp->handles;\n\tif (fp->next) {\n\t\tfp->next->prev = fp;\n\t}\n\tfp->sftp = sftp;\n\n\tfp->u.file.offset = 0;\n\n#ifdef LIBSSH2_DEBUG_SFTP\n\t_libssh2_debug(session, LIBSSH2_DBG_SFTP, \"Open command successful\");\n#endif\n\treturn fp;\n}\n/* }}} */\n\n/* {{{ libssh2_sftp_read\n * Read from an SFTP file handle\n */\nLIBSSH2_API size_t libssh2_sftp_read(LIBSSH2_SFTP_HANDLE *handle, char *buffer, size_t buffer_maxlen) \n{\n\tif (!handle)\n\t{\n\t\treturn -1;\n\t}\n\tLIBSSH2_SFTP\t*sftp\t = handle->sftp;\n\tLIBSSH2_CHANNEL *channel = sftp->channel;\n\tLIBSSH2_SESSION *session = channel->session;\n\tunsigned long data_len, request_id;\n\tunsigned long packet_len = handle->handle_len + 25; /* packet_len(4) + packet_type(1) + request_id(4) + handle_len(4) + offset(8) + length(4) */\n\tunsigned char *packet, *s, *data;\n\tunsigned char read_responses[2] = { SSH_FXP_DATA,\t\tSSH_FXP_STATUS };\n\tsize_t bytes_read = 0;\n\n#ifdef LIBSSH2_DEBUG_SFTP\n\t_libssh2_debug(session, LIBSSH2_DBG_SFTP, \"Reading %lu bytes from SFTP handle\", (unsigned long)buffer_maxlen);\n#endif\n\ts = packet = LIBSSH2_ALLOC(session, packet_len);\n\tif (!packet) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for FXP_CLOSE packet\", 0);\n\t\treturn -1;\n\t}\n\n\tlibssh2_htonu32(s, packet_len - 4);\t\t\t\t\ts += 4;\n\t*(s++) = SSH_FXP_READ;\n\trequest_id = sftp->request_id++;\n\tlibssh2_htonu32(s, request_id);\t\t\t\t\t\ts += 4;\n\tlibssh2_htonu32(s, handle->handle_len);\t\t\t\ts += 4;\n\tmemcpy(s, handle->handle, handle->handle_len);\t\ts += handle->handle_len;\n\tlibssh2_htonu64(s, handle->u.file.offset);\t\t\ts += 8;\n\tlibssh2_htonu32(s, buffer_maxlen);\t\t\t\t\ts += 4;\n\n\tif (packet_len != libssh2_channel_write(channel, packet, packet_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send FXP_READ command\", 0);\n\t\tLIBSSH2_FREE(session, packet);\n\t\treturn -1;\n\t}\n\tLIBSSH2_FREE(session, packet);\n\n\tif (libssh2_sftp_packet_requirev(sftp, 2, read_responses, request_id, &data, &data_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_TIMEOUT, \"Timeout waiting for status message\", 0);\n\t\treturn -1;\n\t}\n\n\tswitch (data[0]) {\n\t\tcase SSH_FXP_STATUS:\n\t\t\tsftp->last_errno = libssh2_ntohu32(data + 5);\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SFTP_PROTOCOL, \"SFTP Protocol Error\", 0);\n\t\t\tLIBSSH2_FREE(session, data);\n\t\t\treturn -1;\n\t\tcase SSH_FXP_DATA:\n\t\t\tbytes_read = libssh2_ntohu32(data + 5);\n\t\t\tif (bytes_read > (data_len - 9)) {\n\t\t\t\treturn -1;\n\t\t\t}\n#ifdef LIBSSH2_DEBUG_SFTP\n\t\t\t_libssh2_debug(session, LIBSSH2_DBG_SFTP, \"%lu bytes returned\", (unsigned long)bytes_read);\n#endif\n\t\t\tmemcpy(buffer, data + 9, bytes_read);\n\t\t\thandle->u.file.offset += bytes_read;\n\t\t\tLIBSSH2_FREE(session, data);\n\t\t\treturn bytes_read;\n\t}\n\n\treturn -1;\n}\n/* }}} */\n\n/* {{{ libssh2_sftp_readdir\n * Read from an SFTP directory handle\n */\nLIBSSH2_API int libssh2_sftp_readdir(LIBSSH2_SFTP_HANDLE *handle, char *buffer, size_t buffer_maxlen, LIBSSH2_SFTP_ATTRIBUTES *attrs) \n{\n\tif (!handle)\n\t{\n\t\treturn -1;\n\t}\n\tLIBSSH2_SFTP\t*sftp\t = handle->sftp;\n\tLIBSSH2_CHANNEL *channel = sftp->channel;\n\tLIBSSH2_SESSION *session = channel->session;\n\tLIBSSH2_SFTP_ATTRIBUTES attrs_dummy;\n\tunsigned long data_len, request_id, filename_len, num_names;\n\tunsigned long packet_len = handle->handle_len + 13; /* packet_len(4) + packet_type(1) + request_id(4) + handle_len(4) */\n\tunsigned char *packet, *s, *data;\n\tunsigned char read_responses[2] = { SSH_FXP_NAME,\t\tSSH_FXP_STATUS };\n\n\tif (handle->u.dir.names_left) {\n\t\t/* A prior request returned more than one directory entry, feed it back from the buffer */\n\t\tunsigned char *s = (unsigned char *)handle->u.dir.next_name;\n\t\tunsigned long real_filename_len = libssh2_ntohu32(s);\n\n\t\tfilename_len = real_filename_len;\t\t\ts += 4;\n\t\tif (filename_len > buffer_maxlen) {\n\t\t\tfilename_len = buffer_maxlen;\n\t\t}\n\t\tmemcpy(buffer, s, filename_len);\t\t\ts += real_filename_len;\n\n\t\t/* Skip longname */\n\t\ts += 4 + libssh2_ntohu32(s);\n\n\t\tif (attrs) {\n\t\t\tmemset(attrs, 0, sizeof(LIBSSH2_SFTP_ATTRIBUTES));\n\t\t}\n\t\ts += libssh2_sftp_bin2attr(attrs ? attrs : &attrs_dummy, s);\n\n\t\thandle->u.dir.next_name = (char *)s;\n\t\tif ((--handle->u.dir.names_left) == 0) {\n\t\t\tLIBSSH2_FREE(session, handle->u.dir.names_packet);\n\t\t}\n\n\t\treturn filename_len;\n\t}\n\n\t/* Request another entry(entries?) */\n\n\ts = packet = LIBSSH2_ALLOC(session, packet_len);\n\tif (!packet) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for FXP_READDIR packet\", 0);\n\t\treturn -1;\n\t}\n\n\tlibssh2_htonu32(s, packet_len - 4);\t\t\t\t\ts += 4;\n\t*(s++) = SSH_FXP_READDIR;\n\trequest_id = sftp->request_id++;\n\tlibssh2_htonu32(s, request_id);\t\t\t\t\t\ts += 4;\n\tlibssh2_htonu32(s, handle->handle_len);\t\t\t\ts += 4;\n\tmemcpy(s, handle->handle, handle->handle_len);\t\ts += handle->handle_len;\n\n#ifdef LIBSSH2_DEBUG_SFTP\n\t_libssh2_debug(session, LIBSSH2_DBG_SFTP, \"Reading entries from directory handle\");\n#endif\n\tif (packet_len != libssh2_channel_write(channel, packet, packet_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send FXP_READ command\", 0);\n\t\tLIBSSH2_FREE(session, packet);\n\t\treturn -1;\n\t}\n\tLIBSSH2_FREE(session, packet);\n\n\tif (libssh2_sftp_packet_requirev(sftp, 2, read_responses, request_id, &data, &data_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_TIMEOUT, \"Timeout waiting for status message\", 0);\n\t\treturn -1;\n\t}\n\n\tif (data[0] == SSH_FXP_STATUS) {\n\t\tint retcode;\n\n\t\tretcode = libssh2_ntohu32(data + 5);\n\t\tLIBSSH2_FREE(session, data);\n\t\tif (retcode == LIBSSH2_FX_EOF) {\n\t\t\treturn 0;\n\t\t} else {\n\t\t\tsftp->last_errno = retcode;\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SFTP_PROTOCOL, \"SFTP Protocol Error\", 0);\n\t\t\treturn -1;\n\t\t}\n\t}\n\n\tnum_names = libssh2_ntohu32(data + 5);\n#ifdef LIBSSH2_DEBUG_SFTP\n\t_libssh2_debug(session, LIBSSH2_DBG_SFTP, \"%lu entries returned\", num_names);\n#endif\n\tif (num_names <= 0) {\n\t\tLIBSSH2_FREE(session, data);\n\t\treturn (num_names == 0) ? 0 : -1;\n\t}\n\n\tif (num_names == 1) {\n\t\tunsigned long real_filename_len = libssh2_ntohu32(data + 9);\n\n\t\tfilename_len = real_filename_len;\n\t\tif (filename_len > buffer_maxlen) {\n\t\t\tfilename_len = buffer_maxlen;\n\t\t}\n\t\tmemcpy(buffer, data + 13, filename_len);\n\t\t\n\t\t/* The filename is not null terminated, make it so if possible */\n\t\tif (filename_len < buffer_maxlen) {\n\t\t\tbuffer[filename_len] = '\\0';\n\t\t}\n\t\t\n\t\tif (attrs) {\n\t\t\tmemset(attrs, 0, sizeof(LIBSSH2_SFTP_ATTRIBUTES));\n\t\t\tlibssh2_sftp_bin2attr(attrs, data + 13 + real_filename_len + (4 + libssh2_ntohu32(data + 13 + real_filename_len)));\n\t\t}\n\t\tLIBSSH2_FREE(session, data);\n\n\t\treturn filename_len; \n\t}\n\n\thandle->u.dir.names_left = num_names;\n\thandle->u.dir.names_packet = data;\n\thandle->u.dir.next_name = (char *)data + 9;\n\n\t/* Be lazy, just use the name popping mechanism from the start of the function */\n\treturn libssh2_sftp_readdir(handle, buffer, buffer_maxlen, attrs);\n}\n/* }}} */\n\n/* {{{ libssh2_sftp_write\n * Write data to a file handle\n */\nLIBSSH2_API size_t libssh2_sftp_write(LIBSSH2_SFTP_HANDLE *handle, const char *buffer, size_t count)\n{\n\tif (!handle)\n\t{\n\t\treturn -1;\n\t}\n\tLIBSSH2_SFTP\t*sftp\t = handle->sftp;\n\tLIBSSH2_CHANNEL *channel = sftp->channel;\n\tLIBSSH2_SESSION *session = channel->session;\n\tunsigned long data_len, request_id, retcode;\n\tunsigned long packet_len = handle->handle_len + count + 25; /* packet_len(4) + packet_type(1) + request_id(4) + handle_len(4) + offset(8) + count(4) */\n\tunsigned char *packet, *s, *data;\n\n#ifdef LIBSSH2_DEBUG_SFTP\n\t_libssh2_debug(session, LIBSSH2_DBG_SFTP, \"Writing %lu bytes\", (unsigned long)count);\n#endif\n\ts = packet = LIBSSH2_ALLOC(session, packet_len);\n\tif (!packet) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for FXP_WRITE packet\", 0);\n\t\treturn -1;\n\t}\n\n\tlibssh2_htonu32(s, packet_len - 4);\t\t\t\t\ts += 4;\n\t*(s++) = SSH_FXP_WRITE;\n\trequest_id = sftp->request_id++;\n\tlibssh2_htonu32(s, request_id);\t\t\t\t\t\ts += 4;\n\tlibssh2_htonu32(s, handle->handle_len);\t\t\t\ts += 4;\n\tmemcpy(s, handle->handle, handle->handle_len);\t\ts += handle->handle_len;\n\tlibssh2_htonu64(s, handle->u.file.offset);\t\t\ts += 8;\n\tlibssh2_htonu32(s, count);\t\t\t\t\t\t\ts += 4;\n\tmemcpy(s, buffer, count);\t\t\t\t\t\t\ts += count;\n\n\tif (packet_len != libssh2_channel_write(channel, packet, packet_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send FXP_WRITE command\", 0);\n\t\tLIBSSH2_FREE(session, packet);\n\t\treturn -1;\n\t}\n\tLIBSSH2_FREE(session, packet);\n\n\tif (libssh2_sftp_packet_require(sftp, SSH_FXP_STATUS, request_id, &data, &data_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_TIMEOUT, \"Timeout waiting for status message\", 0);\n\t\treturn -1;\n\t}\n\n\tretcode = libssh2_ntohu32(data + 5);\n\tLIBSSH2_FREE(session, data);\n\n\tif (retcode == LIBSSH2_FX_OK) {\n\t\thandle->u.file.offset += count;\n\t\treturn count;\n\t}\n\tlibssh2_error(session, LIBSSH2_ERROR_SFTP_PROTOCOL, \"SFTP Protocol Error\", 0);\n\tsftp->last_errno = retcode;\n\n\treturn -1;\n}\n/* }}} */\n\n/* {{{ libssh2_sftp_fstat_ex\n * Get or Set stat on a file\n */\nLIBSSH2_API int libssh2_sftp_fstat_ex(LIBSSH2_SFTP_HANDLE *handle, LIBSSH2_SFTP_ATTRIBUTES *attrs, int setstat)\n{\n\tif (!handle)\n\t{\n\t\treturn -1;\n\t}\n\tLIBSSH2_SFTP\t*sftp\t = handle->sftp;\n\tLIBSSH2_CHANNEL *channel = sftp->channel;\n\tLIBSSH2_SESSION *session = channel->session;\n\tunsigned long data_len, request_id;\n\tunsigned long packet_len = handle->handle_len + 13 + (setstat ? libssh2_sftp_attrsize(attrs) : 0); \n\t\t\t\t\t\t\t\t\t\t\t/* packet_len(4) + packet_type(1) + request_id(4) + handle_len(4) */\n\tunsigned char *packet, *s, *data;\n\tunsigned char fstat_responses[2] = { SSH_FXP_ATTRS,\t\tSSH_FXP_STATUS };\n\n#ifdef LIBSSH2_DEBUG_SFTP\n\t_libssh2_debug(session, LIBSSH2_DBG_SFTP, \"Issuing %s command\", setstat ? \"set-stat\" : \"stat\");\n#endif\n\ts = packet = LIBSSH2_ALLOC(session, packet_len);\n\tif (!packet) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for FSTAT/FSETSTAT packet\", 0);\n\t\treturn -1;\n\t}\n\n\tlibssh2_htonu32(s, packet_len - 4);\t\t\t\t\ts += 4;\n\t*(s++) = setstat ? SSH_FXP_FSETSTAT : SSH_FXP_FSTAT;\n\trequest_id = sftp->request_id++;\n\tlibssh2_htonu32(s, request_id);\t\t\t\t\t\ts += 4;\n\tlibssh2_htonu32(s, handle->handle_len);\t\t\t\ts += 4;\n\tmemcpy(s, handle->handle, handle->handle_len);\t\ts += handle->handle_len;\n\tif (setstat) {\n\t\ts += libssh2_sftp_attr2bin(s, attrs);\n\t}\n\n\tif (packet_len != libssh2_channel_write(channel, packet, packet_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, setstat ? \"Unable to send FXP_FSETSTAT\" : \"Unable to send FXP_FSTAT command\", 0);\n\t\tLIBSSH2_FREE(session, packet);\n\t\treturn -1;\n\t}\n\tLIBSSH2_FREE(session, packet);\n\n\tif (libssh2_sftp_packet_requirev(sftp, 2, fstat_responses, request_id, &data, &data_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_TIMEOUT, \"Timeout waiting for status message\", 0);\n\t\treturn -1;\n\t}\n\n\tif (data[0] == SSH_FXP_STATUS) {\n\t\tint retcode;\n\n\t\tretcode = libssh2_ntohu32(data + 5);\n\t\tLIBSSH2_FREE(session, data);\n\t\tif (retcode == LIBSSH2_FX_OK) {\n\t\t\treturn 0;\n\t\t} else {\n\t\t\tsftp->last_errno = retcode;\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SFTP_PROTOCOL, \"SFTP Protocol Error\", 0);\n\t\t\treturn -1;\n\t\t}\n\t}\n\n\tlibssh2_sftp_bin2attr(attrs, data + 5);\n\n\treturn 0;\n}\n/* }}} */\n\n/* {{{ libssh2_sftp_seek\n * Set the read/write pointer to an arbitrary position within the file\n */\nLIBSSH2_API void libssh2_sftp_seek(LIBSSH2_SFTP_HANDLE *handle, size_t offset)\n{\n\tif (handle)\n\t\thandle->u.file.offset = offset;\n}\n/* }}} */\n\n/* {{{ libssh2_sftp_tell\n * Return the current read/write pointer's offset\n */\nLIBSSH2_API size_t libssh2_sftp_tell(LIBSSH2_SFTP_HANDLE *handle)\n{\n\tif (handle)\n\t\treturn handle->u.file.offset;\n\treturn -1;\n}\n/* }}} */\n\n\n/* {{{ libssh2_sftp_close_handle\n * Close a file or directory handle\n * Also frees handle resource and unlinks it from the SFTP structure\n */\nLIBSSH2_API int libssh2_sftp_close_handle(LIBSSH2_SFTP_HANDLE *handle)\n{\n\tif (!handle)\n\t{\n\t\treturn -1;\n\t}\n\tLIBSSH2_SFTP\t*sftp\t = handle->sftp;\n\tLIBSSH2_CHANNEL *channel = sftp->channel;\n\tLIBSSH2_SESSION *session = channel->session;\n\tunsigned long data_len, retcode, request_id;\n\tunsigned long packet_len = handle->handle_len + 13; /* packet_len(4) + packet_type(1) + request_id(4) + handle_len(4) */\n\tunsigned char *packet, *s, *data;\n\n#ifdef LIBSSH2_DEBUG_SFTP\n\t_libssh2_debug(session, LIBSSH2_DBG_SFTP, \"Closing handle\");\n#endif\n\ts = packet = LIBSSH2_ALLOC(session, packet_len);\n\tif (!packet) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for FXP_CLOSE packet\", 0);\n\t\treturn -1;\n\t}\n\n\tlibssh2_htonu32(s, packet_len - 4);\t\t\t\t\ts += 4;\n\t*(s++) = SSH_FXP_CLOSE;\n\trequest_id = sftp->request_id++;\n\tlibssh2_htonu32(s, request_id);\t\t\t\t\t\ts += 4;\n\tlibssh2_htonu32(s, handle->handle_len);\t\t\t\ts += 4;\n\tmemcpy(s, handle->handle, handle->handle_len);\t\ts += handle->handle_len;\n\n\tif (packet_len != libssh2_channel_write(channel, packet, packet_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send FXP_CLOSE command\", 0);\n\t\tLIBSSH2_FREE(session, packet);\n\t\treturn -1;\n\t}\n\tLIBSSH2_FREE(session, packet);\n\n\tif (libssh2_sftp_packet_require(sftp, SSH_FXP_STATUS, request_id, &data, &data_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_TIMEOUT, \"Timeout waiting for status message\", 0);\n\t\treturn -1;\n\t}\n\n\tretcode = libssh2_ntohu32(data + 5);\n\tLIBSSH2_FREE(session, data);\n\n\tif (retcode != LIBSSH2_FX_OK) {\n\t\tsftp->last_errno = retcode;\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SFTP_PROTOCOL, \"SFTP Protocol Error\", 0);\n\t\treturn -1;\n\t}\n\n\tif (handle == sftp->handles) {\n\t\tsftp->handles = handle->next;\n\t}\n\tif (handle->next) {\n\t\thandle->next->prev = NULL;\n\t}\n\n\tif ((handle->handle_type == LIBSSH2_SFTP_HANDLE_DIR) &&\n\t\thandle->u.dir.names_left) {\n\t\tLIBSSH2_FREE(session, handle->u.dir.names_packet);\n\t}\n\n\tLIBSSH2_FREE(session, handle->handle);\n\tLIBSSH2_FREE(session, handle);\n\n\treturn 0;\n}\n/* }}} */\n\n/* **********************\n   * SFTP Miscellaneous *\n   ********************** */\n\n/* {{{ libssh2_sftp_unlink_ex\n * Delete a file from the remote server\n */\nLIBSSH2_API int libssh2_sftp_unlink_ex(LIBSSH2_SFTP *sftp, char *filename, unsigned int filename_len)\n{\n\tif (!sftp)\n\t{\n\t\treturn -1;\n\t}\n\tLIBSSH2_CHANNEL *channel = sftp->channel;\n\tLIBSSH2_SESSION *session = channel->session;\n\tunsigned long data_len, retcode, request_id;\n\tunsigned long packet_len = filename_len + 13; /* packet_len(4) + packet_type(1) + request_id(4) + filename_len(4) */\n\tunsigned char *packet, *s, *data;\n\n#ifdef LIBSSH2_DEBUG_SFTP\n\t_libssh2_debug(session, LIBSSH2_DBG_SFTP, \"Unlinking %s\", filename);\n#endif\n\ts = packet = LIBSSH2_ALLOC(session, packet_len);\n\tif (!packet) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for FXP_REMOVE packet\", 0);\n\t\treturn -1;\n\t}\n\n\tlibssh2_htonu32(s, packet_len - 4);\t\t\t\t\ts += 4;\n\t*(s++) = SSH_FXP_REMOVE;\n\trequest_id = sftp->request_id++;\n\tlibssh2_htonu32(s, request_id);\t\t\t\t\t\ts += 4;\n\tlibssh2_htonu32(s, filename_len);\t\t\t\t\ts += 4;\n\tmemcpy(s, filename, filename_len);\t\t\t\t\ts += filename_len;\n\n\tif (packet_len != libssh2_channel_write(channel, packet, packet_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send FXP_REMOVE command\", 0);\n\t\tLIBSSH2_FREE(session, packet);\n\t\treturn -1;\n\t}\n\tLIBSSH2_FREE(session, packet);\n\n\tif (libssh2_sftp_packet_require(sftp, SSH_FXP_STATUS, request_id, &data, &data_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_TIMEOUT, \"Timeout waiting for status message\", 0);\n\t\treturn -1;\n\t}\n\n\tretcode = libssh2_ntohu32(data + 5);\n\tLIBSSH2_FREE(session, data);\n\n\tif (retcode == LIBSSH2_FX_OK) {\n\t\treturn 0;\n\t} else {\n\t\tsftp->last_errno = retcode;\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SFTP_PROTOCOL, \"SFTP Protocol Error\", 0);\n\t\treturn -1;\n\t}\n}\n/* }}} */\n\n/* {{{ libssh2_sftp_rename_ex\n * Rename a file on the remote server\n */\nLIBSSH2_API int libssh2_sftp_rename_ex(LIBSSH2_SFTP *sftp,  char *source_filename,\tunsigned int source_filename_len,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tchar *dest_filename,\tunsigned int dest_filename_len,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlong flags)\n{\n\tif (!sftp)\n\t{\n\t\treturn -1;\n\t}\n\tLIBSSH2_CHANNEL *channel = sftp->channel;\n\tLIBSSH2_SESSION *session = channel->session;\n\tunsigned long data_len, retcode = -1, request_id;\n\tunsigned long packet_len = source_filename_len + dest_filename_len + 17 + (sftp->version >= 5 ? 4 : 0);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t /* packet_len(4) + packet_type(1) + request_id(4) + \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsource_filename_len(4) + dest_filename_len(4) + flags(4){SFTP5+) */\n\tunsigned char *packet, *s, *data;\n\n\tif (sftp->version < 2) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SFTP_PROTOCOL, \"Server does not support RENAME\", 0);\n\t\treturn -1;\n\t}\n\n#ifdef LIBSSH2_DEBUG_SFTP\n\t_libssh2_debug(session, LIBSSH2_DBG_SFTP, \"Renaming %s to %s\", source_filename, dest_filename);\n#endif\n\ts = packet = LIBSSH2_ALLOC(session, packet_len);\n\tif (!packet) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for FXP_RENAME packet\", 0);\n\t\treturn -1;\n\t}\n\n\tlibssh2_htonu32(s, packet_len - 4);\t\t\t\t\ts += 4;\n\t*(s++) = SSH_FXP_RENAME;\n\trequest_id = sftp->request_id++;\n\tlibssh2_htonu32(s, request_id);\t\t\t\t\t\ts += 4;\n\tlibssh2_htonu32(s, source_filename_len);\t\t\ts += 4;\n\tmemcpy(s, source_filename, source_filename_len);\ts += source_filename_len;\n\tlibssh2_htonu32(s, dest_filename_len);\t\t\t\ts += 4;\n\tmemcpy(s, dest_filename, dest_filename_len);\t\ts += dest_filename_len;\n\n\tif (sftp->version >= 5) {\n\t\tlibssh2_htonu32(s, flags);\t\t\t\t\t\ts += 4;\n\t}\n\n\tif (packet_len != libssh2_channel_write(channel, packet, s - packet)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send FXP_RENAME command\", 0);\n\t\tLIBSSH2_FREE(session, packet);\n\t\treturn -1;\n\t}\n\tLIBSSH2_FREE(session, packet);\n\n\tif (libssh2_sftp_packet_require(sftp, SSH_FXP_STATUS, request_id, &data, &data_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_TIMEOUT, \"Timeout waiting for status message\", 0);\n\t\treturn -1;\n\t}\n\n\tretcode = libssh2_ntohu32(data + 5);\n\tLIBSSH2_FREE(session, data);\n\n\tswitch (retcode) {\n\t\tcase LIBSSH2_FX_OK:\n\t\t\tretcode = 0;\n\t\t\tbreak;\n\t\tcase LIBSSH2_FX_FILE_ALREADY_EXISTS:\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SFTP_PROTOCOL, \"File already exists and SSH_FXP_RENAME_OVERWRITE not specified\", 0);\n\t\t\tsftp->last_errno = retcode;\n\t\t\tretcode = -1;\n\t\t\tbreak;\n\t\tcase LIBSSH2_FX_OP_UNSUPPORTED:\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SFTP_PROTOCOL, \"Operation Not Supported\", 0);\n\t\t\tsftp->last_errno = retcode;\n\t\t\tretcode = -1;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SFTP_PROTOCOL, \"SFTP Protocol Error\", 0);\n\t\t\tsftp->last_errno = retcode;\n\t\t\tretcode = -1;\n\t}\n\n\treturn retcode;\n}\n/* }}} */\n\n/* {{{ libssh2_sftp_mkdir_ex\n * Create a directory\n */\nLIBSSH2_API int libssh2_sftp_mkdir_ex(LIBSSH2_SFTP *sftp, char *path, unsigned int path_len, long mode)\n{\n\tif (!sftp)\n\t{\n\t\treturn -1;\n\t}\n\tLIBSSH2_CHANNEL *channel = sftp->channel;\n\tLIBSSH2_SESSION *session = channel->session;\n    LIBSSH2_SFTP_ATTRIBUTES attrs = { LIBSSH2_SFTP_ATTR_PERMISSIONS };\n\tunsigned long data_len, retcode, request_id;\n\tunsigned long packet_len = path_len + 13 + libssh2_sftp_attrsize(&attrs);\n\t\t\t/* packet_len(4) + packet_type(1) + request_id(4) + path_len(4) */\n\tunsigned char *packet, *s, *data;\n\n#ifdef LIBSSH2_DEBUG_SFTP\n\t_libssh2_debug(session, LIBSSH2_DBG_SFTP, \"Creating directory %s with mode 0%lo\", path, mode);\n#endif\n\ts = packet = LIBSSH2_ALLOC(session, packet_len);\n\tif (!packet) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for FXP_MKDIR packet\", 0);\n\t\treturn -1;\n\t}\n\t/* Filetype in SFTP 3 and earlier */\n\tattrs.permissions = mode | LIBSSH2_SFTP_ATTR_PFILETYPE_DIR;\n\n\tlibssh2_htonu32(s, packet_len - 4);\t\t\t\t\ts += 4;\n\t*(s++) = SSH_FXP_MKDIR;\n\trequest_id = sftp->request_id++;\n\tlibssh2_htonu32(s, request_id);\t\t\t\t\t\ts += 4;\n\tlibssh2_htonu32(s, path_len);\t\t\t\t\t\ts += 4;\n\tmemcpy(s, path, path_len);\t\t\t\t\t\t\ts += path_len;\n\ts += libssh2_sftp_attr2bin(s, &attrs);\n\n\tif (packet_len != libssh2_channel_write(channel, packet, packet_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send FXP_MKDIR command\", 0);\n\t\tLIBSSH2_FREE(session, packet);\n\t\treturn -1;\n\t}\n\tLIBSSH2_FREE(session, packet);\n\n\tif (libssh2_sftp_packet_require(sftp, SSH_FXP_STATUS, request_id, &data, &data_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_TIMEOUT, \"Timeout waiting for status message\", 0);\n\t\treturn -1;\n\t}\n\n\tretcode = libssh2_ntohu32(data + 5);\n\tLIBSSH2_FREE(session, data);\n\n\tif (retcode == LIBSSH2_FX_OK) {\n\t\treturn 0;\n\t} else {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SFTP_PROTOCOL, \"SFTP Protocol Error\", 0);\n\t\tsftp->last_errno = retcode;\n\t\treturn -1;\n\t}\n}\n/* }}} */\n\n/* {{{ libssh2_sftp_rmdir_ex\n * Remove a directory\n */\nLIBSSH2_API int libssh2_sftp_rmdir_ex(LIBSSH2_SFTP *sftp, char *path, unsigned int path_len)\n{\n\tif (!sftp)\n\t{\n\t\treturn -1;\n\t}\n\tLIBSSH2_CHANNEL *channel = sftp->channel;\n\tLIBSSH2_SESSION *session = channel->session;\n\tunsigned long data_len, retcode, request_id;\n\tunsigned long packet_len = path_len + 13; /* packet_len(4) + packet_type(1) + request_id(4) + path_len(4) */\n\tunsigned char *packet, *s, *data;\n\n#ifdef LIBSSH2_DEBUG_SFTP\n\t_libssh2_debug(session, LIBSSH2_DBG_SFTP, \"Removing directory: %s\", path);\n#endif\n\ts = packet = LIBSSH2_ALLOC(session, packet_len);\n\tif (!packet) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for FXP_MKDIR packet\", 0);\n\t\treturn -1;\n\t}\n\n\tlibssh2_htonu32(s, packet_len - 4);\t\t\t\t\ts += 4;\n\t*(s++) = SSH_FXP_RMDIR;\n\trequest_id = sftp->request_id++;\n\tlibssh2_htonu32(s, request_id);\t\t\t\t\t\ts += 4;\n\tlibssh2_htonu32(s, path_len);\t\t\t\t\t\ts += 4;\n\tmemcpy(s, path, path_len);\t\t\t\t\t\t\ts += path_len;\n\n\tif (packet_len != libssh2_channel_write(channel, packet, packet_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send FXP_MKDIR command\", 0);\n\t\tLIBSSH2_FREE(session, packet);\n\t\treturn -1;\n\t}\n\tLIBSSH2_FREE(session, packet);\n\n\tif (libssh2_sftp_packet_require(sftp, SSH_FXP_STATUS, request_id, &data, &data_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_TIMEOUT, \"Timeout waiting for status message\", 0);\n\t\treturn -1;\n\t}\n\n\tretcode = libssh2_ntohu32(data + 5);\n\tLIBSSH2_FREE(session, data);\n\n\tif (retcode == LIBSSH2_FX_OK) {\n\t\treturn 0;\n\t} else {\n\t\tsftp->last_errno = retcode;\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SFTP_PROTOCOL, \"SFTP Protocol Error\", 0);\n\t\treturn -1;\n\t}\n}\n/* }}} */\n\n/* {{{ libssh2_sftp_stat_ex\n * Stat a file or symbolic link\n */\nLIBSSH2_API int libssh2_sftp_stat_ex(LIBSSH2_SFTP *sftp, char *path, unsigned int path_len, int stat_type, LIBSSH2_SFTP_ATTRIBUTES *attrs)\n{\n\tif (!sftp)\n\t{\n\t\treturn -1;\n\t}\n\tLIBSSH2_CHANNEL *channel = sftp->channel;\n\tLIBSSH2_SESSION *session = channel->session;\n\tunsigned long data_len, request_id;\n\tunsigned long packet_len = path_len + 13 + ((stat_type == LIBSSH2_SFTP_SETSTAT) ? libssh2_sftp_attrsize(attrs) : 0); \n\t\t\t\t\t\t\t\t\t/* packet_len(4) + packet_type(1) + request_id(4) + path_len(4) */\n\tunsigned char *packet, *s, *data;\n\tunsigned char stat_responses[2] = { SSH_FXP_ATTRS,\t\tSSH_FXP_STATUS\t};\n\n#ifdef LIBSSH2_DEBUG_SFTP\n\t_libssh2_debug(session, LIBSSH2_DBG_SFTP, \"%s %s\", (stat_type == LIBSSH2_SFTP_SETSTAT) ? \"Set-statting\" : (stat_type == LIBSSH2_SFTP_LSTAT ? \"LStatting\" : \"Statting\"), path);\n#endif\n\ts = packet = LIBSSH2_ALLOC(session, packet_len);\n\tif (!packet) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for FXP_MKDIR packet\", 0);\n\t\treturn -1;\n\t}\n\n\tlibssh2_htonu32(s, packet_len - 4);\t\t\t\t\ts += 4;\n\tswitch (stat_type) {\n\t\tcase LIBSSH2_SFTP_SETSTAT:\n\t\t\t*(s++) = SSH_FXP_SETSTAT;\n\t\t\tbreak;\n\t\tcase LIBSSH2_SFTP_LSTAT:\n\t\t\t*(s++) = SSH_FXP_LSTAT;\n\t\t\tbreak;\n\t\tcase LIBSSH2_SFTP_STAT:\n\t\tdefault:\n\t\t\t*(s++) = SSH_FXP_STAT;\n\t}\n\trequest_id = sftp->request_id++;\n\tlibssh2_htonu32(s, request_id);\t\t\t\t\t\ts += 4;\n\tlibssh2_htonu32(s, path_len);\t\t\t\t\t\ts += 4;\n\tmemcpy(s, path, path_len);\t\t\t\t\t\t\ts += path_len;\n\tif (stat_type == LIBSSH2_SFTP_SETSTAT) {\n\t\ts += libssh2_sftp_attr2bin(s, attrs);\n\t}\n\n\tif (packet_len != libssh2_channel_write(channel, packet, packet_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send STAT/LSTAT/SETSTAT command\", 0);\n\t\tLIBSSH2_FREE(session, packet);\n\t\treturn -1;\n\t}\n\tLIBSSH2_FREE(session, packet);\n\n\tif (libssh2_sftp_packet_requirev(sftp, 2, stat_responses, request_id, &data, &data_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_TIMEOUT, \"Timeout waiting for status message\", 0);\n\t\treturn -1;\n\t}\n\n\tif (data[0] == SSH_FXP_STATUS) {\n\t\tint retcode;\n\n\t\tretcode = libssh2_ntohu32(data + 5);\n\t\tLIBSSH2_FREE(session, data);\n\t\tif (retcode == LIBSSH2_FX_OK) {\n\t\t\treturn 0;\n\t\t} else {\n\t\t\tsftp->last_errno = retcode;\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SFTP_PROTOCOL, \"SFTP Protocol Error\", 0);\n\t\t\treturn -1;\n\t\t}\n\t}\n\n\tmemset(attrs, 0, sizeof(LIBSSH2_SFTP_ATTRIBUTES));\n\tlibssh2_sftp_bin2attr(attrs, data + 5);\n\tLIBSSH2_FREE(session, data);\n\n\treturn 0;\n}\n/* }}} */\n\n/* {{{ libssh2_sftp_symlink_ex\n * Read or set a symlink\n */\nLIBSSH2_API int libssh2_sftp_symlink_ex(LIBSSH2_SFTP *sftp, const char *path, unsigned int path_len, char *target, unsigned int target_len, int link_type)\n{\n\tif (!sftp)\n\t{\n\t\treturn -1;\n\t}\n\tLIBSSH2_CHANNEL *channel = sftp->channel;\n\tLIBSSH2_SESSION *session = channel->session;\n\tunsigned long data_len, request_id, link_len;\n\tunsigned long packet_len = path_len + 13 + ((link_type == LIBSSH2_SFTP_SYMLINK) ? (4 + target_len) : 0); \n\t\t\t\t\t\t\t\t\t/* packet_len(4) + packet_type(1) + request_id(4) + path_len(4) */\n\tunsigned char *packet, *s, *data;\n\tunsigned char link_responses[2] = { SSH_FXP_NAME,\t\tSSH_FXP_STATUS\t};\n\n\tif ((sftp->version < 3) &&\n\t\t(link_type != LIBSSH2_SFTP_REALPATH)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SFTP_PROTOCOL, \"Server does not support SYMLINK or READLINK\", 0);\n\t\treturn -1;\n\t}\n\n\ts = packet = LIBSSH2_ALLOC(session, packet_len);\n\tif (!packet) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for SYMLINK/READLINK/REALPATH packet\", 0);\n\t\treturn -1;\n\t}\n\n#ifdef LIBSSH2_DEBUG_SFTP\n\t_libssh2_debug(session, LIBSSH2_DBG_SFTP, \"%s %s on %s\", (link_type == LIBSSH2_SFTP_SYMLINK) ? \"Creating\" : \"Reading\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t (link_type == LIBSSH2_SFTP_REALPATH) ? \"realpath\" : \"symlink\", path);\n#endif\n\tlibssh2_htonu32(s, packet_len - 4);\t\t\t\t\ts += 4;\n\tswitch (link_type) {\n\t\tcase LIBSSH2_SFTP_REALPATH:\n\t\t\t*(s++) = SSH_FXP_REALPATH;\n\t\t\tbreak;\n\t\tcase LIBSSH2_SFTP_SYMLINK:\n\t\t\t*(s++) = SSH_FXP_SYMLINK;\n\t\t\tbreak;\n\t\tcase LIBSSH2_SFTP_READLINK:\n\t\tdefault:\n\t\t\t*(s++) = SSH_FXP_READLINK;\n\t}\n\trequest_id = sftp->request_id++;\n\tlibssh2_htonu32(s, request_id);\t\t\t\t\t\ts += 4;\n\tlibssh2_htonu32(s, path_len);\t\t\t\t\t\ts += 4;\n\tmemcpy(s, path, path_len);\t\t\t\t\t\t\ts += path_len;\n\tif (link_type == LIBSSH2_SFTP_SYMLINK) {\n\t\tlibssh2_htonu32(s, target_len);\t\t\t\t\ts += 4;\n\t\tmemcpy(s, target, target_len);\t\t\t\t\ts += target_len;\n\t}\n\n\tif (packet_len != libssh2_channel_write(channel, packet, packet_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send SYMLINK/READLINK command\", 0);\n\t\tLIBSSH2_FREE(session, packet);\n\t\treturn -1;\n\t}\n\tLIBSSH2_FREE(session, packet);\n\n\tif (libssh2_sftp_packet_requirev(sftp, 2, link_responses, request_id, &data, &data_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_TIMEOUT, \"Timeout waiting for status message\", 0);\n\t\treturn -1;\n\t}\n\n\tif (data[0] == SSH_FXP_STATUS) {\n\t\tint retcode;\n\n\t\tretcode = libssh2_ntohu32(data + 5);\n\t\tLIBSSH2_FREE(session, data);\n\t\tif (retcode == LIBSSH2_FX_OK) {\n\t\t\treturn 0;\n\t\t} else {\n\t\t\tsftp->last_errno = retcode;\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SFTP_PROTOCOL, \"SFTP Protocol Error\", 0);\n\t\t\treturn -1;\n\t\t}\n\t}\n\n\tif (libssh2_ntohu32(data + 5) < 1) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SFTP_PROTOCOL, \"Invalid READLINK/REALPATH response, no name entries\", 0);\n\t\tLIBSSH2_FREE(session, data);\n\t\treturn -1;\n\t}\n\n\tlink_len = libssh2_ntohu32(data + 9);\n\tif (link_len >= target_len) {\n\t\tlink_len = target_len - 1;\n\t}\n\tmemcpy(target, data + 13, link_len);\n\ttarget[link_len] = 0;\n\tLIBSSH2_FREE(session, data);\n\n\treturn link_len;\n}\n/* }}} */\n\n/* {{{ libssh2_sftp_last_error\n * Returns the last error code reported by SFTP\n */\nLIBSSH2_API unsigned long libssh2_sftp_last_error(LIBSSH2_SFTP *sftp)\n{\n\tif (!sftp)\n\t{\n\t\treturn -1;\n\t}\n\treturn sftp->last_errno;\n}\n/* }}} */\n"
  },
  {
    "path": "Example/userauth.c",
    "content": "/* Copyright (c) 2004-2006, Sara Golemon <sarag@libssh2.org>\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms,\n * with or without modification, are permitted provided\n * that the following conditions are met:\n *\n *   Redistributions of source code must retain the above\n *   copyright notice, this list of conditions and the\n *   following disclaimer.\n *\n *   Redistributions in binary form must reproduce the above\n *   copyright notice, this list of conditions and the following\n *   disclaimer in the documentation and/or other materials\n *   provided with the distribution.\n *\n *   Neither the name of the copyright holder nor the names\n *   of any other contributors may be used to endorse or\n *   promote products derived from this software without\n *   specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND\n * CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES,\n * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE\n * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY\n * OF SUCH DAMAGE.\n */\n\n#include \"libssh2_priv.h\"\n\n/* Needed for struct iovec on some platforms */\n#ifdef HAVE_SYS_UIO_H\n#include <sys/uio.h>\n#endif\n\n\n/* {{{ proto libssh2_userauth_list\n * List authentication methods\n * Will yield successful login if \"none\" happens to be allowable for this user\n * Not a common configuration for any SSH server though\n * username should be NULL, or a null terminated string\n */\nLIBSSH2_API char *libssh2_userauth_list(LIBSSH2_SESSION *session, const char *username, unsigned int username_len)\n{\n\tunsigned char reply_codes[3] = { SSH_MSG_USERAUTH_SUCCESS, SSH_MSG_USERAUTH_FAILURE, 0 };\n\tunsigned long data_len = username_len + 31; /* packet_type(1) + username_len(4) + service_len(4) + service(14)\"ssh-connection\" +\n\t\t\t\t\t\t\t\t\t\t\t\t   method_len(4) + method(4)\"none\" */\n\tunsigned long methods_len;\n\tunsigned char *data, *s;\n\n\ts = data = LIBSSH2_ALLOC(session, data_len);\n\tif (!data) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for userauth_list\", 0);\n\t\treturn NULL;\n\t}\n\n\t*(s++) = SSH_MSG_USERAUTH_REQUEST;\n\tlibssh2_htonu32(s, username_len);\t\t\t\ts += 4;\n\tif (username) {\n\t\tmemcpy(s, username, username_len);\t\t\ts += username_len;\n\t}\n\n\tlibssh2_htonu32(s, 14);\t\t\t\t\t\t\ts += 4;\n\tmemcpy(s, \"ssh-connection\", 14);\t\t\t\ts += 14;\n\n\tlibssh2_htonu32(s, 4);\t\t\t\t\t\t\ts += 4;\n\tmemcpy(s, \"none\", 4);\t\t\t\t\t\t\ts += 4;\n\n\tif (libssh2_packet_write(session, data, data_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send userauth-none request\", 0);\n\t\tLIBSSH2_FREE(session, data);\n\t\treturn NULL;\n\t}\n\tLIBSSH2_FREE(session, data);\n\n\tif (libssh2_packet_requirev(session, reply_codes, &data, &data_len)) {\n\t\treturn NULL;\n\t}\n\n\tif (data[0] == SSH_MSG_USERAUTH_SUCCESS) {\n\t\t/* Wow, who'dve thought... */\n\t\tLIBSSH2_FREE(session, data);\n\t\tsession->state |= LIBSSH2_STATE_AUTHENTICATED;\n\t\treturn NULL;\n\t}\n\n\tmethods_len = libssh2_ntohu32(data + 1);\n\tmemcpy(data, data + 5, methods_len);\n\tdata[methods_len] = '\\0';\n#ifdef LIBSSH2_DEBUG_USERAUTH\n\t_libssh2_debug(session, LIBSSH2_DBG_AUTH, \"Permitted auth methods: %s\", data);\n#endif\n\treturn (char *)data;\n}\n/* }}} */\n\n/* {{{ libssh2_userauth_authenticated\n * 0 if not yet authenticated\n * non-zero is already authenticated\n */\nLIBSSH2_API int libssh2_userauth_authenticated(LIBSSH2_SESSION *session)\n{\n\treturn (session != NULL) && (session->state & LIBSSH2_STATE_AUTHENTICATED);\n}\n/* }}} */\n\n/* {{{ libssh2_userauth_password\n * Plain ol' login\n */\nLIBSSH2_API int libssh2_userauth_password_ex(LIBSSH2_SESSION *session, const char *username, unsigned int username_len,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  const char *password, unsigned int password_len,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  LIBSSH2_PASSWD_CHANGEREQ_FUNC((*passwd_change_cb)))\n{\n\tunsigned char *data, *s, reply_codes[4] = { SSH_MSG_USERAUTH_SUCCESS, SSH_MSG_USERAUTH_FAILURE, SSH_MSG_USERAUTH_PASSWD_CHANGEREQ, 0 };\n\tunsigned long data_len = username_len + password_len + 40; /* packet_type(1) + username_len(4) + service_len(4) + service(14)\"ssh-connection\" + \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  method_len(4) + method(8)\"password\" + chgpwdbool(1) + password_len(4) */\n\n\ts = data = LIBSSH2_ALLOC(session, data_len);\n\tif (!data) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for userauth-password request\", 0);\n\t\treturn -1;\n\t}\n\n\t*(s++) = SSH_MSG_USERAUTH_REQUEST;\n\tlibssh2_htonu32(s, username_len);\t\t\t\t\t\t\ts += 4;\n\tmemcpy(s, username, username_len);\t\t\t\t\t\t\ts += username_len;\n\n\tlibssh2_htonu32(s, sizeof(\"ssh-connection\") - 1);\t\t\ts += 4;\n\tmemcpy(s, \"ssh-connection\", sizeof(\"ssh-connection\") - 1);\ts += sizeof(\"ssh-connection\") - 1;\n\n\tlibssh2_htonu32(s, sizeof(\"password\") - 1);\t\t\t\t\ts += 4;\n\tmemcpy(s, \"password\", sizeof(\"password\") - 1);\t\t\t\ts += sizeof(\"password\") - 1;\n\n\t*s = '\\0';\t\t\t\t\t\t\t\t\t\t\t\t\ts++;\n\n\tlibssh2_htonu32(s, password_len);\t\t\t\t\t\t\ts += 4;\n\tmemcpy(s, password, password_len);\t\t\t\t\t\t\ts += password_len;\n\n#ifdef LIBSSH2_DEBUG_USERAUTH\n\t_libssh2_debug(session, LIBSSH2_DBG_AUTH, \"Attempting to login using password authentication\");\n#endif\n\tif (libssh2_packet_write(session, data, data_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send userauth-password request\", 0);\n\t\tLIBSSH2_FREE(session, data);\n\t\treturn -1;\n\t}\n\tLIBSSH2_FREE(session, data);\n\n password_response:\n\tif (libssh2_packet_requirev(session, reply_codes, &data, &data_len)) {\n\t\treturn -1;\n\t}\n\n\tif (data[0] == SSH_MSG_USERAUTH_SUCCESS) {\n#ifdef LIBSSH2_DEBUG_USERAUTH\n\t_libssh2_debug(session, LIBSSH2_DBG_AUTH, \"Password authentication successful\");\n#endif\n\t\tLIBSSH2_FREE(session, data);\n\t\tsession->state |= LIBSSH2_STATE_AUTHENTICATED;\n\t\treturn 0;\n\t}\n\n\tif (data[0] == SSH_MSG_USERAUTH_PASSWD_CHANGEREQ) {\n\t\tchar *newpw = NULL;\n\t\tint newpw_len = 0;\n\n#ifdef LIBSSH2_DEBUG_USERAUTH\n\t\t_libssh2_debug(session, LIBSSH2_DBG_AUTH, \"Password change required\");\n#endif\n\t\tLIBSSH2_FREE(session, data);\n\t\tif (passwd_change_cb) {\n\t\t\tpasswd_change_cb(session, &newpw, &newpw_len, &session->abstract);\n\t\t\tif (!newpw) {\n\t\t\t\tlibssh2_error(session, LIBSSH2_ERROR_PASSWORD_EXPIRED, \"Password expired, and callback failed\", 0);\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tdata_len = username_len + password_len + 44 + newpw_len; /* basic data_len + newpw_len(4) */\n\t\t\ts = data = LIBSSH2_ALLOC(session, data_len);\n\t\t\tif (!data) {\n\t\t\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for userauth-password-change request\", 0);\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t*(s++) = SSH_MSG_USERAUTH_REQUEST;\n\t\t\tlibssh2_htonu32(s, username_len);\t\t\t\t\t\t\ts += 4;\n\t\t\tmemcpy(s, username, username_len);\t\t\t\t\t\t\ts += username_len;\n\n\t\t\tlibssh2_htonu32(s, sizeof(\"ssh-connection\") - 1);\t\t\ts += 4;\n\t\t\tmemcpy(s, \"ssh-connection\", sizeof(\"ssh-connection\") - 1);\ts += sizeof(\"ssh-connection\") - 1;\n\n\t\t\tlibssh2_htonu32(s, sizeof(\"password\") - 1);\t\t\t\t\ts += 4;\n\t\t\tmemcpy(s, \"password\", sizeof(\"password\") - 1);\t\t\t\ts += sizeof(\"password\") - 1;\n\n\t\t\t*s = 0xFF;\t\t\t\t\t\t\t\t\t\t\t\t\ts++;\n\n\t\t\tlibssh2_htonu32(s, password_len);\t\t\t\t\t\t\ts += 4;\n\t\t\tmemcpy(s, password, password_len);\t\t\t\t\t\t\ts += password_len;\n\n\t\t\tlibssh2_htonu32(s, newpw_len);\t\t\t\t\t\t\t\ts += 4;\n\t\t\tmemcpy(s, newpw, newpw_len);\t\t\t\t\t\t\t\ts += newpw_len;\n\n\t\t\tif (libssh2_packet_write(session, data, data_len)) {\n\t\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send userauth-password-change request\", 0);\n\t\t\t\tLIBSSH2_FREE(session, data);\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tLIBSSH2_FREE(session, data);\n\t\t\tLIBSSH2_FREE(session, newpw);\n\n\t\t\t/* Ugliest use of goto ever.  Blame it on the askN => requirev migration. */\n\t\t\tgoto password_response;\n\t\t} else {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_PASSWORD_EXPIRED, \"Password Expired, and no callback specified\", 0);\n\t\t\treturn -1;\n\t\t}\n\t}\n\n\t/* FAILURE */\n\tLIBSSH2_FREE(session, data);\n\treturn -1;\n}\n/* }}} */\n\n/* {{{ libssh2_file_read_publickey\n * Read a public key from an id_???.pub style file\n */\nstatic int libssh2_file_read_publickey(LIBSSH2_SESSION *session, unsigned char **method, unsigned long *method_len,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t unsigned char **pubkeydata, unsigned long *pubkeydata_len,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t const char *pubkeyfile)\n{\n\tFILE *fd;\n\tchar *pubkey = NULL, c, *sp1, *sp2, *tmp;\n\tint pubkey_len = 0;\n\tunsigned int tmp_len;\n\n#ifdef LIBSSH2_DEBUG_USERAUTH\n\t_libssh2_debug(session, LIBSSH2_DBG_AUTH, \"Loading public key file: %s\", pubkeyfile);\n#endif\n\t/* Read Public Key */\n\tfd = fopen(pubkeyfile, \"r\");\n\tif (!fd) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_FILE, \"Unable to open public key file\", 0);\n\t\treturn -1;\n\t}\n\twhile (!feof(fd) && (c = fgetc(fd)) != '\\r' && c != '\\n')\tpubkey_len++;\n\trewind(fd);\n\n\tif (pubkey_len <= 1) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_FILE, \"Invalid data in public key file\", 0);\n\t\tfclose(fd);\n\t\treturn -1;\n\t}\n\n\tpubkey = LIBSSH2_ALLOC(session, pubkey_len);\n\tif (!pubkey) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for public key data\", 0);\n\t\tfclose(fd);\n\t\treturn -1;\n\t}\n\tif (fread(pubkey, 1, pubkey_len, fd) != pubkey_len) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_FILE, \"Unable to read public key from file\", 0);\n\t\tLIBSSH2_FREE(session, pubkey);\n\t\tfclose(fd);\n\t\treturn -1;\n\t}\n\tfclose(fd);\n\twhile (pubkey_len && (pubkey[pubkey_len-1] == '\\r' || pubkey[pubkey_len-1] == '\\n')) pubkey_len--;\n\n\tif (!pubkey_len) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_FILE, \"Missing public key data\", 0);\n\t\tLIBSSH2_FREE(session, pubkey);\n\t\treturn -1;\n\t}\n\n\tif ((sp1 = memchr(pubkey, ' ', pubkey_len)) == NULL) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_FILE, \"Invalid public key data\", 0);\n\t\tLIBSSH2_FREE(session, pubkey);\n\t\treturn -1;\n\t}\n\t/* Wasting some bytes here (okay, more than some),\n\t * but since it's likely to be freed soon anyway, \n\t * we'll just avoid the extra free/alloc and call it a wash */\n\t*method = (unsigned char *)pubkey;\n\t*method_len = sp1 - pubkey;\n\n\tsp1++;\n\n\tif ((sp2 = memchr(sp1, ' ', pubkey_len - *method_len)) == NULL) {\n\t\t/* Assume that the id string is missing, but that it's okay */\n\t\tsp2 = pubkey + pubkey_len;\n\t}\n\n\tif (libssh2_base64_decode(session, &tmp, &tmp_len, sp1, sp2 - sp1)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_FILE, \"Invalid key data, not base64 encoded\", 0);\n\t\tLIBSSH2_FREE(session, pubkey);\n\t\treturn -1;\n\t}\n\t*pubkeydata = (unsigned char *)tmp;\n\t*pubkeydata_len = tmp_len;\n\n\treturn 0;\n}\n/* }}} */\n\n/* {{{ libssh2_file_read_privatekey\n * Read a PEM encoded private key from an id_??? style file\n */\nstatic int libssh2_file_read_privatekey(LIBSSH2_SESSION *session,\tLIBSSH2_HOSTKEY_METHOD **hostkey_method, void **hostkey_abstract,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst char *method, int method_len,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst char *privkeyfile, const char *passphrase)\n{\n\tLIBSSH2_HOSTKEY_METHOD **hostkey_methods_avail = libssh2_hostkey_methods();\n\n#ifdef LIBSSH2_DEBUG_USERAUTH\n\t_libssh2_debug(session, LIBSSH2_DBG_AUTH, \"Loading private key file: %s\", privkeyfile);\n#endif\n\t*hostkey_method = NULL;\n\t*hostkey_abstract = NULL;\n\twhile (*hostkey_methods_avail && (*hostkey_methods_avail)->name) {\n\t\tif ((*hostkey_methods_avail)->initPEM &&\n\t\t\tstrncmp((*hostkey_methods_avail)->name, method, method_len) == 0) {\n\t\t\t*hostkey_method = *hostkey_methods_avail;\n\t\t\tbreak;\n\t\t}\n\t\thostkey_methods_avail++;\n\t}\n\tif (!*hostkey_method) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_METHOD_NONE, \"No handler for specified private key\", 0);\n\t\treturn -1;\n\t}\n\n\tif ((*hostkey_method)->initPEM(session, (const char *)privkeyfile, (unsigned const char *)passphrase, hostkey_abstract)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_FILE, \"Unable to initialize private key from file\", 0);\n\t\treturn -1;\n\t}\n\n\treturn 0;\n} \n/* }}} */\n\n/* {{{ libssh2_userauth_hostbased_fromfile_ex\n * Authenticate using a keypair found in the named files\n */\nLIBSSH2_API int libssh2_userauth_hostbased_fromfile_ex(LIBSSH2_SESSION *session, const char *username, unsigned int username_len,\n                                                                                 const char *publickey, const char *privatekey,\n                                                                                 const char *passphrase,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t const char *hostname, unsigned int hostname_len,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t const char *local_username, unsigned int local_username_len)\n{\n\tLIBSSH2_HOSTKEY_METHOD *privkeyobj;\n\tvoid *abstract;\n\tunsigned char buf[5];\n\tstruct iovec datavec[4];\n\tunsigned char *method, *pubkeydata, *packet, *s, *sig, *data, reply_codes[3] = { SSH_MSG_USERAUTH_SUCCESS, SSH_MSG_USERAUTH_FAILURE, 0 };\n\tunsigned long method_len, pubkeydata_len, packet_len, sig_len, data_len;\n\n\tif (libssh2_file_read_publickey(session, &method, &method_len, &pubkeydata, &pubkeydata_len, publickey)) {\n\t\treturn -1;\n\t}\n\n\tpacket_len = username_len + method_len + hostname_len + local_username_len + pubkeydata_len + 48;\n\t/* packet_type(1) + username_len(4) + servicename_len(4) + service_name(14)\"ssh-connection\" + \n\t * authmethod_len(4) + authmethod(9)\"hostbased\" + method_len(4) + pubkeydata_len(4) + \n\t * local_username_len(4)\n\t */\n\t/* Preallocate space for an overall length,  method name again,\n\t * and the signature, which won't be any larger than the size of the publickeydata itself */\n\ts = packet = LIBSSH2_ALLOC(session, packet_len + 4 + (4 + method_len) + (4 + pubkeydata_len));\n\n\t*(s++) = SSH_MSG_USERAUTH_REQUEST;\n\tlibssh2_htonu32(s, username_len);\t\t\t\ts += 4;\n\tmemcpy(s, username, username_len);\t\t\t\ts += username_len;\n\n\tlibssh2_htonu32(s, 14);\t\t\t\t\t\t\ts += 4;\n\tmemcpy(s, \"ssh-connection\", 14);\t\t\t\ts += 14;\n\n\tlibssh2_htonu32(s, 9);\t\t\t\t\t\t\ts += 4;\n\tmemcpy(s, \"hostbased\", 9);\t\t\t\t\t\ts += 9;\n\n\tlibssh2_htonu32(s, method_len);\t\t\t\t\ts += 4;\n\tmemcpy(s, method, method_len);\t\t\t\t\ts += method_len;\n\n\tlibssh2_htonu32(s, pubkeydata_len);\t\t\t\ts += 4;\n\tmemcpy(s, pubkeydata, pubkeydata_len);\t\t\ts += pubkeydata_len;\n\n\tlibssh2_htonu32(s, hostname_len);\t\t\t\ts += 4;\n\tmemcpy(s, hostname, hostname_len);\t\t\t\ts += hostname_len;\n\n\tlibssh2_htonu32(s, local_username_len);\t\t\ts += 4;\n\tmemcpy(s, local_username, local_username_len);\ts += local_username_len;\n\n\tif (libssh2_file_read_privatekey(session, &privkeyobj, &abstract, (const char *)method, method_len, privatekey, passphrase)) {\n\t\tLIBSSH2_FREE(session, method);\n\t\tLIBSSH2_FREE(session, packet);\n\t\treturn -1;\n\t}\n\n\tlibssh2_htonu32(buf, session->session_id_len);\n\tdatavec[0].iov_base = buf;\n\tdatavec[0].iov_len = 4;\n\tdatavec[1].iov_base = session->session_id;\n\tdatavec[1].iov_len = session->session_id_len;\n\tdatavec[2].iov_base = packet;\n\tdatavec[2].iov_len = packet_len;\n\n\tif (privkeyobj->signv(session, &sig, &sig_len, 3, datavec, &abstract)) {\n\t\tLIBSSH2_FREE(session, method);\n\t\tLIBSSH2_FREE(session, packet);\n\t\tif (privkeyobj->dtor) {\n\t\t\tprivkeyobj->dtor(session, &abstract);\n\t\t}\n\t\treturn -1;\n\t}\n\n\tif (privkeyobj->dtor) {\n\t\tprivkeyobj->dtor(session, &abstract);\n\t}\n\n\tif (sig_len > pubkeydata_len ) {\n\t\t/* Should *NEVER* happen, but...well.. better safe than sorry */\n\t\tpacket = LIBSSH2_REALLOC(session, packet, packet_len + 4 + (4 + method_len) + (4 + sig_len)); /* PK sigblob */\n\t\tif (!packet) {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Failed allocating additional space for userauth-hostbased packet\", 0);\n\t\t\tLIBSSH2_FREE(session, method);\n\t\t\treturn -1;\n\t\t}\n\t}\n\n\ts = packet + packet_len;\n\n\tlibssh2_htonu32(s, 4 + method_len + 4 + sig_len);\ts += 4;\n\n\tlibssh2_htonu32(s, method_len);\t\t\t\t\t\ts += 4;\n\tmemcpy(s, method, method_len);\t\t\t\t\t\ts += method_len;\n\tLIBSSH2_FREE(session, method);\n\n\tlibssh2_htonu32(s, sig_len);\t\t\t\t\t\ts += 4;\n\tmemcpy(s, sig, sig_len);\t\t\t\t\t\t\ts += sig_len;\n\tLIBSSH2_FREE(session, sig);\n\n#ifdef LIBSSH2_DEBUG_USERAUTH\n\t_libssh2_debug(session, LIBSSH2_DBG_AUTH, \"Attempting hostbased authentication\");\n#endif\n\tif (libssh2_packet_write(session, packet, s - packet)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send userauth-hostbased request\", 0);\n\t\tLIBSSH2_FREE(session, packet);\n\t\treturn -1;\n\t}\n\tLIBSSH2_FREE(session, packet);\n\n\tif (libssh2_packet_requirev(session, reply_codes, &data, &data_len)) {\n\t\treturn -1;\n\t}\n\n\tif (data[0] == SSH_MSG_USERAUTH_SUCCESS) {\n#ifdef LIBSSH2_DEBUG_USERAUTH\n\t_libssh2_debug(session, LIBSSH2_DBG_AUTH, \"Hostbased authentication successful\");\n#endif\n\t\t/* We are us and we've proved it. */\n\t\tLIBSSH2_FREE(session, data);\n\t\tsession->state |= LIBSSH2_STATE_AUTHENTICATED;\n\t\treturn 0;\n\t}\n\n\t/* This public key is not allowed for this user on this server */\n\tLIBSSH2_FREE(session, data);\n\tlibssh2_error(session, LIBSSH2_ERROR_PUBLICKEY_UNVERIFIED, \"Invalid signature for supplied public key, or bad username/public key combination\", 0);\n\treturn -1;\n}\n/* }}} */\n\n/* {{{ libssh2_userauth_publickey_fromfile_ex\n * Authenticate using a keypair found in the named files\n */\nLIBSSH2_API int libssh2_userauth_publickey_fromfile_ex(LIBSSH2_SESSION *session, const char *username, unsigned int username_len,\n                                                                                 const char *publickey, const char *privatekey,\n                                                                                 const char *passphrase)\n{\n\tLIBSSH2_HOSTKEY_METHOD *privkeyobj;\n\tvoid *abstract;\n\tunsigned char buf[5];\n\tstruct iovec datavec[4];\n\tunsigned char *method, *pubkeydata, *packet, *s, *b, *sig, *data;\n\tunsigned char reply_codes[4] = { SSH_MSG_USERAUTH_SUCCESS, SSH_MSG_USERAUTH_FAILURE, SSH_MSG_USERAUTH_PK_OK, 0 };\n\tunsigned long method_len, pubkeydata_len, packet_len, sig_len, data_len;\n\n\tif (libssh2_file_read_publickey(session, &method, &method_len, &pubkeydata, &pubkeydata_len, publickey)) {\n\t\treturn -1;\n\t}\n\n\tpacket_len = username_len + method_len + pubkeydata_len + 45;\t/* packet_type(1) + username_len(4) + servicename_len(4) + \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   service_name(14)\"ssh-connection\" + authmethod_len(4) + \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   authmethod(9)\"publickey\" + sig_included(1)'\\0' + \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   algmethod_len(4) + publickey_len(4) */\n\t/* Preallocate space for an overall length,  method name again,\n\t * and the signature, which won't be any larger than the size of the publickeydata itself */\n\ts = packet = LIBSSH2_ALLOC(session, packet_len + 4 + (4 + method_len) + (4 + pubkeydata_len));\n\n\t*(s++) = SSH_MSG_USERAUTH_REQUEST;\n\tlibssh2_htonu32(s, username_len);\t\t\t\ts += 4;\n\tmemcpy(s, username, username_len);\t\t\t\ts += username_len;\n\n\tlibssh2_htonu32(s, 14);\t\t\t\t\t\t\ts += 4;\n\tmemcpy(s, \"ssh-connection\", 14);\t\t\t\ts += 14;\n\n\tlibssh2_htonu32(s, 9);\t\t\t\t\t\t\ts += 4;\n\tmemcpy(s, \"publickey\", 9);\t\t\t\t\t\ts += 9;\n\n\tb = s;\n\t*(s++) = 0; /* Not sending signature with *this* packet */\n\n\tlibssh2_htonu32(s, method_len);\t\t\t\t\ts += 4;\n\tmemcpy(s, method, method_len);\t\t\t\t\ts += method_len;\n\n\tlibssh2_htonu32(s, pubkeydata_len);\t\t\t\ts += 4;\n\tmemcpy(s, pubkeydata, pubkeydata_len);\t\t\ts += pubkeydata_len;\n\n#ifdef LIBSSH2_DEBUG_USERAUTH\n\t_libssh2_debug(session, LIBSSH2_DBG_AUTH, \"Attempting publickey authentication\");\n#endif\n\tif (libssh2_packet_write(session, packet, packet_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send userauth-publickey request\", 0);\n\t\tLIBSSH2_FREE(session, packet);\n\t\tLIBSSH2_FREE(session, method);\n\t\tLIBSSH2_FREE(session, pubkeydata);\n\t\treturn -1;\n\t}\n\n\tif (libssh2_packet_requirev(session, reply_codes, &data, &data_len)) {\n\t\tLIBSSH2_FREE(session, packet);\n\t\tLIBSSH2_FREE(session, method);\n\t\tLIBSSH2_FREE(session, pubkeydata);\n\t\treturn -1;\n\t}\n\n\tif (data[0] == SSH_MSG_USERAUTH_SUCCESS) {\n#ifdef LIBSSH2_DEBUG_USERAUTH\n\t\t_libssh2_debug(session, LIBSSH2_DBG_AUTH, \"Pubkey authentication prematurely successful\");\n#endif\n\t\t/* God help any SSH server that allows an UNVERIFIED public key to validate the user */\n\t\tLIBSSH2_FREE(session, data);\n\t\tLIBSSH2_FREE(session, packet);\n\t\tLIBSSH2_FREE(session, method);\n\t\tLIBSSH2_FREE(session, pubkeydata);\n\t\tsession->state |= LIBSSH2_STATE_AUTHENTICATED;\n\t\treturn 0;\n\t}\n\n\tif (data[0] == SSH_MSG_USERAUTH_FAILURE) {\n\t\t/* This public key is not allowed for this user on this server */\n\t\tLIBSSH2_FREE(session, data);\n\t\tLIBSSH2_FREE(session, packet);\n\t\tLIBSSH2_FREE(session, method);\n\t\tLIBSSH2_FREE(session, pubkeydata);\n\t\tlibssh2_error(session, LIBSSH2_ERROR_PUBLICKEY_UNRECOGNIZED, \"Username/PublicKey combination invalid\", 0);\n\t\treturn -1;\n\t}\n\n\t/* Semi-Success! */\n\tLIBSSH2_FREE(session, data);\n\tLIBSSH2_FREE(session, pubkeydata);\n\n\tif (libssh2_file_read_privatekey(session, &privkeyobj, &abstract, (const char *)method, method_len, privatekey, passphrase)) {\n\t\tLIBSSH2_FREE(session, method);\n\t\tLIBSSH2_FREE(session, packet);\n\t\treturn -1;\n\t}\n\n\t*b = 0xFF;\n\n\tlibssh2_htonu32(buf, session->session_id_len);\n\tdatavec[0].iov_base = buf;\n\tdatavec[0].iov_len = 4;\n\tdatavec[1].iov_base = session->session_id;\n\tdatavec[1].iov_len = session->session_id_len;\n\tdatavec[2].iov_base = packet;\n\tdatavec[2].iov_len = packet_len;\n\n\tif (privkeyobj->signv(session, &sig, &sig_len, 3, datavec, &abstract)) {\n\t\tLIBSSH2_FREE(session, method);\n\t\tLIBSSH2_FREE(session, packet);\n\t\tif (privkeyobj->dtor) {\n\t\t\tprivkeyobj->dtor(session, &abstract);\n\t\t}\n\t\treturn -1;\n\t}\n\n\tif (privkeyobj->dtor) {\n\t\tprivkeyobj->dtor(session, &abstract);\n\t}\n\n\tif (sig_len > pubkeydata_len) {\n\t\t/* Should *NEVER* happen, but...well.. better safe than sorry */\n\t\tpacket = LIBSSH2_REALLOC(session, packet, packet_len + 4 + (4 + method_len) + (4 + sig_len)); /* PK sigblob */\n\t\tif (!packet) {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Failed allocating additional space for userauth-publickey packet\", 0);\n\t\t\tLIBSSH2_FREE(session, method);\n\t\t\treturn -1;\n\t\t}\n\t}\n\n\ts = packet + packet_len;\n\n\tlibssh2_htonu32(s, 4 + method_len + 4 + sig_len);\ts += 4;\n\n\tlibssh2_htonu32(s, method_len);\t\t\t\t\t\ts += 4;\n\tmemcpy(s, method, method_len);\t\t\t\t\t\ts += method_len;\n\tLIBSSH2_FREE(session, method);\n\n\tlibssh2_htonu32(s, sig_len);\t\t\t\t\t\ts += 4;\n\tmemcpy(s, sig, sig_len);\t\t\t\t\t\t\ts += sig_len;\n\tLIBSSH2_FREE(session, sig);\n\n#ifdef LIBSSH2_DEBUG_USERAUTH\n\t_libssh2_debug(session, LIBSSH2_DBG_AUTH, \"Attempting publickey authentication -- phase 2\");\n#endif\n\tif (libssh2_packet_write(session, packet, s - packet)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send userauth-publickey request\", 0);\n\t\tLIBSSH2_FREE(session, packet);\n\t\treturn -1;\n\t}\n\tLIBSSH2_FREE(session, packet);\n\n\t/* PK_OK is no longer valid */\n\treply_codes[2] = 0;\n\n\tif (libssh2_packet_requirev(session, reply_codes, &data, &data_len)) {\n\t\treturn -1;\n\t}\n\n\tif (data[0] == SSH_MSG_USERAUTH_SUCCESS) {\n#ifdef LIBSSH2_DEBUG_USERAUTH\n\t\t_libssh2_debug(session, LIBSSH2_DBG_AUTH, \"Publickey authentication successful\");\n#endif\n\t\t/* We are us and we've proved it. */\n\t\tLIBSSH2_FREE(session, data);\n\t\tsession->state |= LIBSSH2_STATE_AUTHENTICATED;\n\t\treturn 0;\n\t}\n\n\t/* This public key is not allowed for this user on this server */\n\tLIBSSH2_FREE(session, data);\n\tlibssh2_error(session, LIBSSH2_ERROR_PUBLICKEY_UNVERIFIED, \"Invalid signature for supplied public key, or bad username/public key combination\", 0);\n\treturn -1;\n}\n/* }}} */\n\n/* {{{ libssh2_userauth_keyboard_interactive\n * Authenticate using a challenge-response authentication\n */\nLIBSSH2_API int libssh2_userauth_keyboard_interactive_ex(LIBSSH2_SESSION *session, const char *username, unsigned int username_len,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t LIBSSH2_USERAUTH_KBDINT_RESPONSE_FUNC((*response_callback)))\n{\n\tunsigned char *s, *data; /* packet */\n\tunsigned long packet_len;\n\n\tpacket_len = 1         /* byte      SSH_MSG_USERAUTH_REQUEST */\n\t\t+ 4 + username_len /* string    user name (ISO-10646 UTF-8, as defined in [RFC-3629]) */\n\t\t+ 4 + 14           /* string    service name (US-ASCII) */\n\t\t+ 4 + 20           /* string    \"keyboard-interactive\" (US-ASCII) */\n\t\t+ 4 + 0            /* string    language tag (as defined in [RFC-3066]) */\n\t\t+ 4 + 0            /* string    submethods (ISO-10646 UTF-8) */\n\t\t;\n\n\tif (!(data = s = LIBSSH2_ALLOC(session, packet_len))) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for keyboard-interactive authentication\", 0);\n\t\treturn -1;\n\t}\n\n\t*s++ = SSH_MSG_USERAUTH_REQUEST;\n\n\t/* user name */\n\tlibssh2_htonu32(s, username_len);\t\t\t\t\t\t\t\t\t\ts += 4;\n\tmemcpy(s, username, username_len);\t\t\t\t\t\t\t\t\t\ts += username_len;\n\n\t/* service name */\n\tlibssh2_htonu32(s, sizeof(\"ssh-connection\") - 1);\t\t\t\t\t\ts += 4;\n\tmemcpy(s, \"ssh-connection\", sizeof(\"ssh-connection\") - 1);\t\t\t\ts += sizeof(\"ssh-connection\") - 1;\n\n\t/* \"keyboard-interactive\" */\n\tlibssh2_htonu32(s, sizeof(\"keyboard-interactive\") - 1);\t\t\t\t\ts += 4;\n\tmemcpy(s, \"keyboard-interactive\", sizeof(\"keyboard-interactive\") - 1);\ts += sizeof(\"keyboard-interactive\") - 1;\n\n\t/* language tag */\n\tlibssh2_htonu32(s, 0);\t\t\t\t\t\t\t\t\t\t\t\t\ts += 4;\n\n\t/* submethods */\n\tlibssh2_htonu32(s, 0);\t\t\t\t\t\t\t\t\t\t\t\t\ts += 4;\n\n#ifdef LIBSSH2_DEBUG_USERAUTH\n\t_libssh2_debug(session, LIBSSH2_DBG_AUTH, \"Attempting keyboard-interactive authentication\");\n#endif\n\tif (libssh2_packet_write(session, data, packet_len)) {\n\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send keyboard-interactive request\", 0);\n\t\tLIBSSH2_FREE(session, data);\n\t\treturn -1;\n\t}\n\tLIBSSH2_FREE(session, data);\n\n\tfor (;;) {\n\t\tunsigned char reply_codes[4] = { SSH_MSG_USERAUTH_SUCCESS, SSH_MSG_USERAUTH_FAILURE, SSH_MSG_USERAUTH_INFO_REQUEST, 0 };\n\t\tunsigned int auth_name_len;\n\t\tchar* auth_name = NULL;\n\t\tunsigned auth_instruction_len;\n\t\tchar* auth_instruction = NULL;\n\t\tunsigned int language_tag_len;\n\t\tunsigned long data_len;\n\t\tunsigned int num_prompts = 0;\n\t\tunsigned int i;\n\t\tint auth_failure = 1;\n\t\tLIBSSH2_USERAUTH_KBDINT_PROMPT* prompts = NULL;\n\t\tLIBSSH2_USERAUTH_KBDINT_RESPONSE* responses = NULL;\n\n\t\tif (libssh2_packet_requirev(session, reply_codes, &data, &data_len)) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tif (data[0] == SSH_MSG_USERAUTH_SUCCESS) {\n#ifdef LIBSSH2_DEBUG_USERAUTH\n\t\t\t_libssh2_debug(session, LIBSSH2_DBG_AUTH, \"Keyboard-interactive authentication successful\");\n#endif\n\t\t\tLIBSSH2_FREE(session, data);\n\t\t\tsession->state |= LIBSSH2_STATE_AUTHENTICATED;\n\t\t\treturn 0;\n\t\t}\n\n\t\tif (data[0] == SSH_MSG_USERAUTH_FAILURE) {\n\t\t\tLIBSSH2_FREE(session, data);\n\t\t\treturn -1;\n\t\t}\n\n\t\t/* server requested PAM-like conversation */\n\n\t\ts = data + 1;\n\n\t\t/* string    name (ISO-10646 UTF-8) */\n\t\tauth_name_len = libssh2_ntohu32(s);\t\t\t\t\t\t\t\ts += 4;\n\t\tif (!(auth_name = LIBSSH2_ALLOC(session, auth_name_len))) {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for keyboard-interactive 'name' request field\", 0);\n\t\t\tgoto cleanup;\n\t\t}\n\t\tmemcpy(auth_name, s, auth_name_len);\t\t\t\t\t\t\ts += auth_name_len;\n\n\t\t/* string    instruction (ISO-10646 UTF-8) */\n\t\tauth_instruction_len = libssh2_ntohu32(s); s += 4;\n\t\tif (!(auth_instruction = LIBSSH2_ALLOC(session, auth_instruction_len))) {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for keyboard-interactive 'instruction' request field\", 0);\n\t\t\tgoto cleanup;\n\t\t}\n\t\tmemcpy(auth_instruction, s, auth_instruction_len);\t\t\t\ts += auth_instruction_len;\n\n\t\t/* string    language tag (as defined in [RFC-3066]) */\n\t\tlanguage_tag_len = libssh2_ntohu32(s);\t\t\t\t\t\t\ts += 4;\n\t\t/* ignoring this field as deprecated */\t\t\t\t\t\t\ts += language_tag_len;\n\n\t\t/* int       num-prompts */\n\t\tnum_prompts = libssh2_ntohu32(s);\t\t\t\t\t\t\t\ts += 4;\n\n\t\tprompts = LIBSSH2_ALLOC(session, sizeof(LIBSSH2_USERAUTH_KBDINT_PROMPT) * num_prompts);\n\t\tif (!prompts) {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for keyboard-interactive prompts array\", 0);\n\t\t\tgoto cleanup;\n\t\t}\n\t\tmemset(prompts, 0, sizeof(LIBSSH2_USERAUTH_KBDINT_PROMPT) * num_prompts);\n\n\t\tresponses = LIBSSH2_ALLOC(session, sizeof(LIBSSH2_USERAUTH_KBDINT_RESPONSE) * num_prompts);\n\t\tif (!responses) {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for keyboard-interactive responses array\", 0);\n\t\t\tgoto cleanup;\n\t\t}\n\t\tmemset(responses, 0, sizeof(LIBSSH2_USERAUTH_KBDINT_RESPONSE) * num_prompts);\n\n\t\tfor(i = 0; i != num_prompts; ++i) {\n\t\t\t/* string    prompt[1] (ISO-10646 UTF-8) */\n\t\t\tprompts[i].length = libssh2_ntohu32(s);\t\t\t\t\t\ts += 4;\n\t\t\tif (!(prompts[i].text = LIBSSH2_ALLOC(session, prompts[i].length))) {\n\t\t\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for keyboard-interactive prompt message\", 0);\n\t\t\t\tgoto cleanup;\n\t\t\t}\n\t\t\tmemcpy(prompts[i].text, s, prompts[i].length);\t\t\t\ts += prompts[i].length;\n\n\t\t\t/* boolean   echo[1] */\n\t\t\tprompts[i].echo = *s++;\n\t\t}\n\n\t\tresponse_callback(auth_name, auth_name_len,  auth_instruction, auth_instruction_len, num_prompts, prompts, responses, &session->abstract);\n\n#ifdef LIBSSH2_DEBUG_USERAUTH\n\t\t_libssh2_debug(session, LIBSSH2_DBG_AUTH, \"Keyboard-interactive response callback function invoked\");\n#endif\n\n\t\tpacket_len = 1 /* byte      SSH_MSG_USERAUTH_INFO_RESPONSE */\n\t\t\t+ 4        /* int       num-responses */\n\t\t\t;\n\n\t\tfor (i = 0; i != num_prompts; ++i) {\n\t\t\tpacket_len += 4 + responses[i].length; /* string    response[1] (ISO-10646 UTF-8) */\n\t\t}\n\n\t\tif (!(data = s = LIBSSH2_ALLOC(session, packet_len))) {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_ALLOC, \"Unable to allocate memory for keyboard-interactive response packet\", 0);\n\t\t\tgoto cleanup;\n\t\t}\n\n\t\t*s = SSH_MSG_USERAUTH_INFO_RESPONSE; s++;\n\t\tlibssh2_htonu32(s, num_prompts);\t\t\t\t\t\t\t\ts += 4;\n\n\t\tfor (i = 0; i != num_prompts; ++i) {\n\t\t\tlibssh2_htonu32(s, responses[i].length);\t\t\t\t\ts += 4;\n\t\t\tmemcpy(s, responses[i].text, responses[i].length);\t\t\ts += responses[i].length;\n\t\t}\n\n\t\tif (libssh2_packet_write(session, data, packet_len)) {\n\t\t\tlibssh2_error(session, LIBSSH2_ERROR_SOCKET_SEND, \"Unable to send userauth-keyboard-interactive request\", 0);\n\t\t\tgoto cleanup;\n\t\t}\n\n\t\tauth_failure = 0;\n\n\tcleanup:\n\t\t/* It's safe to clean all the data here, because unallocated pointers\n\t\t * are filled by zeroes\n\t\t */\n\n\t\tLIBSSH2_FREE(session, data);\n\n\t\tif (prompts) {\n\t\t\tfor (i = 0; i != num_prompts; ++i) {\n\t\t\t\tLIBSSH2_FREE(session, prompts[i].text);\n\t\t\t}\n\t\t}\n\n\t\tif (responses) {\n\t\t\tfor (i = 0; i != num_prompts; ++i) {\n\t\t\t\tLIBSSH2_FREE(session, responses[i].text);\n\t\t\t}\n\t\t}\n\n\t\tLIBSSH2_FREE(session, prompts);\n\t\tLIBSSH2_FREE(session, responses);\n\n\t\tif (auth_failure) {\n\t\t\treturn -1;\n\t\t}\n\t}\n}\n/* }}} */\n"
  },
  {
    "path": "Example/version.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>BuildVersion</key>\n\t<string>92</string>\n\t<key>CFBundleVersion</key>\n\t<string>1.0</string>\n\t<key>ProductBuildVersion</key>\n\t<string>7K571</string>\n\t<key>ProjectName</key>\n\t<string>NibPBTemplates</string>\n\t<key>SourceVersion</key>\n\t<string>1200000</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/zh_CN.lproj/DropletLauncher.nib/classes.nib",
    "content": "{\n    IBClasses = (\n        {CLASS = DropletLauncherDelegate; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, \n        {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }\n    ); \n    IBVersion = 1; \n}"
  },
  {
    "path": "Example/zh_CN.lproj/DropletLauncher.nib/info.nib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IBDocumentLocation</key>\n\t<string>415 56 356 240 0 0 1280 778 </string>\n\t<key>IBEditorPositions</key>\n\t<dict>\n\t\t<key>29</key>\n\t\t<string>69 259 338 44 0 0 1280 778 </string>\n\t</dict>\n\t<key>IBFramework Version</key>\n\t<string>446.1</string>\n\t<key>IBSystem Version</key>\n\t<string>8S165</string>\n\t<key>IBUsesTextArchiving</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/zh_CN.lproj/DropletLauncher.nib/keyedobjects.nib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>$archiver</key>\n\t<string>NSKeyedArchiver</string>\n\t<key>$objects</key>\n\t<array>\n\t\t<string>$null</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>396</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAccessibilityConnectors</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>393</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAccessibilityOidsKeys</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>394</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAccessibilityOidsValues</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>395</integer>\n\t\t\t</dict>\n\t\t\t<key>NSClassesKeys</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>288</integer>\n\t\t\t</dict>\n\t\t\t<key>NSClassesValues</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>289</integer>\n\t\t\t</dict>\n\t\t\t<key>NSConnections</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>9</integer>\n\t\t\t</dict>\n\t\t\t<key>NSFontManager</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t</dict>\n\t\t\t<key>NSFramework</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>6</integer>\n\t\t\t</dict>\n\t\t\t<key>NSNamesKeys</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>264</integer>\n\t\t\t</dict>\n\t\t\t<key>NSNamesValues</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>265</integer>\n\t\t\t</dict>\n\t\t\t<key>NSNextOid</key>\n\t\t\t<integer>250</integer>\n\t\t\t<key>NSObjectsKeys</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>176</integer>\n\t\t\t</dict>\n\t\t\t<key>NSObjectsValues</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>263</integer>\n\t\t\t</dict>\n\t\t\t<key>NSOidsKeys</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>290</integer>\n\t\t\t</dict>\n\t\t\t<key>NSOidsValues</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>291</integer>\n\t\t\t</dict>\n\t\t\t<key>NSRoot</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t\t<key>NSVisibleWindows</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>7</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>5</integer>\n\t\t\t</dict>\n\t\t\t<key>NSClassName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>3</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>NSApplication</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSMutableString</string>\n\t\t\t\t<string>NSString</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSMutableString</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSCustomObject</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSCustomObject</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>IBCocoaFramework</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>8</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSMutableSet</string>\n\t\t\t\t<string>NSSet</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSMutableSet</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>10</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>24</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>29</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>35</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>40</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>46</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>51</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>57</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>61</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>66</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>70</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>74</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>79</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>84</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>90</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>95</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>100</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>105</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>110</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>115</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>120</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>125</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>130</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>134</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>138</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>142</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>148</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>152</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>156</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>160</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>165</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>170</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>22</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>11</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>14</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>12</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>13</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>196</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>233</integer>\n\t\t\t</dict>\n\t\t\t<key>NSName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>235</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>232</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>最小化</string>\n\t\t<string>m</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>18</integer>\n\t\t\t</dict>\n\t\t\t<key>NSClassName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>16</integer>\n\t\t\t</dict>\n\t\t\t<key>NSResourceName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>17</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>NSImage</string>\n\t\t<string>NSMenuCheckmark</string>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSCustomResource</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSCustomResource</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>18</integer>\n\t\t\t</dict>\n\t\t\t<key>NSClassName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>16</integer>\n\t\t\t</dict>\n\t\t\t<key>NSResourceName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>20</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>NSMenuMixedState</string>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSMenuItem</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSMenuItem</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>performMiniaturize:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSNibControlConnector</string>\n\t\t\t\t<string>NSNibConnector</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSNibControlConnector</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>28</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>25</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>12</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>26</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>全部调到前面</string>\n\t\t<string></string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>arrangeInFront:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>34</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>30</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>33</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>32</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>196</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>211</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>210</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>打印…</string>\n\t\t<string>p</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>print:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>39</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>36</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>38</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>37</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>页面设置…</string>\n\t\t<string>P</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>runPageLayout:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>45</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>41</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>44</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>42</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>43</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>196</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>247</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>246</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>NewApplication 帮助</string>\n\t\t<string>?</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>showHelp:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>50</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>47</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>48</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>49</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>196</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>219</integer>\n\t\t\t</dict>\n\t\t\t<key>NSName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>220</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>218</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>清除菜单</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>clearRecentDocuments:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSDestination</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>56</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>52</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>55</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>54</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>196</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>249</integer>\n\t\t\t</dict>\n\t\t\t<key>NSName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>248</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>退出 NewApplication</string>\n\t\t<string>q</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>terminate:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSDestination</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>60</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>58</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>59</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>关于 NewApplication</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>orderFrontStandardAboutPanel:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSDestination</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>65</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>62</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>64</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1572864</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>63</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>隐藏其他</string>\n\t\t<string>h</string>\n\t\t<string>hideOtherApplications:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSDestination</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>69</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>67</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>64</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>68</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>隐藏 NewApplication</string>\n\t\t<string>hide:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSDestination</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>73</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>71</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>72</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>显示全部</string>\n\t\t<string>unhideAllApplications:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>78</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>75</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>77</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>76</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>关闭</string>\n\t\t<string>w</string>\n\t\t<string>performClose:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>83</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>80</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>81</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>82</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>196</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>201</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>200</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>键入时检查拼写</string>\n\t\t<string>toggleContinuousSpellChecking:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>89</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>85</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>88</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>87</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>196</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>188</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>187</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>还原</string>\n\t\t<string>z</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>undo:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>94</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>91</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>93</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>92</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>拷贝</string>\n\t\t<string>c</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>copy:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>99</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>96</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>98</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>81</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>97</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>检查拼写</string>\n\t\t<string>;</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>checkSpelling:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>104</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>101</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>103</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>102</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>粘贴</string>\n\t\t<string>v</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>paste:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>109</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>106</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>107</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>108</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>196</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>206</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>205</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>停止说话</string>\n\t\t<string>stopSpeaking:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>114</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>111</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>113</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>112</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>剪切</string>\n\t\t<string>x</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>cut:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>119</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>116</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>118</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>81</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>117</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>拼写…</string>\n\t\t<string>:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>showGuessPanel:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>124</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>121</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>123</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>122</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>重做</string>\n\t\t<string>Z</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>redo:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>129</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>126</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>128</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>127</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>全选</string>\n\t\t<string>a</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>selectAll:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>133</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>131</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>107</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>132</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>开始讲话</string>\n\t\t<string>startSpeaking:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>137</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>135</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>136</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>删除</string>\n\t\t<string>delete:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>141</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>139</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>12</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>140</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>缩放</string>\n\t\t<string>performZoom:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>147</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>143</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>146</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>144</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTag</key>\n\t\t\t<integer>1</integer>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>145</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>196</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>195</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>194</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>查找…</string>\n\t\t<string>f</string>\n\t\t<string>performFindPanelAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>147</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>149</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>151</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>144</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTag</key>\n\t\t\t<integer>2</integer>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>150</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>查找下一个</string>\n\t\t<string>g</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>147</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>153</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>155</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>144</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTag</key>\n\t\t\t<integer>3</integer>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>154</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>查找上一个</string>\n\t\t<string>G</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>147</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>157</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>159</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>144</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTag</key>\n\t\t\t<integer>7</integer>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>158</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>查找所选内容</string>\n\t\t<string>e</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>164</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>161</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>163</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>144</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>162</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>跳到所选部分</string>\n\t\t<string>j</string>\n\t\t<string>centerSelectionInVisibleArea:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>169</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>166</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>168</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1572864</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>167</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>粘贴和匹配样式</string>\n\t\t<string>V</string>\n\t\t<string>pasteAsPlainText:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>174</integer>\n\t\t\t</dict>\n\t\t\t<key>NSDestination</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>171</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>173</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>5</integer>\n\t\t\t</dict>\n\t\t\t<key>NSClassName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>172</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>DropletLauncherDelegate</string>\n\t\t<string>delegate</string>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSNibOutletConnector</string>\n\t\t\t\t<string>NSNibConnector</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSNibOutletConnector</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSMutableArray</string>\n\t\t\t\t<string>NSArray</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSMutableArray</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>262</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>67</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>96</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>177</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>180</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>157</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>47</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>183</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>207</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>202</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>212</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>190</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>101</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>36</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>222</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>48</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>75</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>231</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>161</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>121</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>143</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>80</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>215</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>71</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>191</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>166</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>41</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>189</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>225</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>171</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>106</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>30</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>131</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>236</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>149</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>243</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>42</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>81</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>252</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>234</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>58</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>197</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>111</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>251</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>135</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>228</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>254</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>250</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>184</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>153</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>107</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>239</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>259</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>85</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>139</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>116</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>221</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>25</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>126</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>91</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>230</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>179</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>178</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>新建</string>\n\t\t<string>n</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>182</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>181</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>偏好设置…</string>\n\t\t<string>,</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>186</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>184</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>185</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>196</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>258</integer>\n\t\t\t</dict>\n\t\t\t<key>NSName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>261</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>257</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>编辑</string>\n\t\t<string>submenuAction:</string>\n\t\t<string>编辑</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>85</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>121</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>189</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>111</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>91</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>101</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>166</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>135</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>126</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>190</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>191</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>197</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>202</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>193</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>144</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>192</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>查找</string>\n\t\t<string>submenuAction:</string>\n\t\t<string>查找</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>143</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>149</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>153</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>157</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>161</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSMenu</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSMenu</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>199</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>81</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>198</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>拼写</string>\n\t\t<string>submenuAction:</string>\n\t\t<string>拼写</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>116</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>96</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>80</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>204</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>107</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>203</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>说话</string>\n\t\t<string>submenuAction:</string>\n\t\t<string>说话</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>131</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>106</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>209</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>184</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>208</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>文件</string>\n\t\t<string>submenuAction:</string>\n\t\t<string>文件</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>177</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>212</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>215</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>221</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>75</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>222</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>225</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>228</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>230</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>36</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>30</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>214</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>213</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>打开…</string>\n\t\t<string>o</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>217</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>48</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>216</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>打开最近使用的</string>\n\t\t<string>submenuAction:</string>\n\t\t<string>打开最近使用的</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>47</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<string>_NSRecentDocumentsMenu</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>224</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>223</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>存储</string>\n\t\t<string>s</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>227</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>226</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>存储为…</string>\n\t\t<string>S</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>229</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>复原</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>窗口</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>139</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>234</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>25</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>12</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>_NSWindowsMenu</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>238</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>239</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>237</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>服务</string>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>196</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>241</integer>\n\t\t\t</dict>\n\t\t\t<key>NSName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>242</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>240</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>服务</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<string>_NSServicesMenu</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>245</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>184</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>42</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>244</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>帮助</string>\n\t\t<string>submenuAction:</string>\n\t\t<string>帮助</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>41</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<string>NewApplication</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>58</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>250</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>180</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>231</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>236</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>251</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>67</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>71</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>252</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>_NSAppleMenu</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>256</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>184</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>12</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>255</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>窗口</string>\n\t\t<string>submenuAction:</string>\n\t\t<string>DropletLauncher</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>259</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>207</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>183</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>254</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>243</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>260</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>184</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>248</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>submenuAction:</string>\n\t\t<string>_NSMainMenu</string>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSArray</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSArray</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>262</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>81</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>48</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>184</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>183</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>184</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>215</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>81</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>254</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>42</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>107</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>107</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>184</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>259</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>243</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>197</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>191</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>184</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>207</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>202</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>236</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>184</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>81</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>262</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>243</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>207</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>212</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>225</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>36</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>171</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>42</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>177</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>234</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>81</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>96</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>222</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>197</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>230</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>30</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>80</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>180</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>228</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>41</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>75</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>184</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>221</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>116</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>262</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>266</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>267</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>267</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>268</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>269</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>172</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>270</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>271</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>267</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>272</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>273</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>274</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>273</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>275</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>276</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>277</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>278</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>279</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>267</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>280</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>281</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>282</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>267</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>284</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>285</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>286</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>287</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>1</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string></string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>8</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>5</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>2</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>9</string>\n\t\t</dict>\n\t\t<string>NSMenu</string>\n\t\t<string>NSMenuItem</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>3</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>2</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>File's Owner</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>6</string>\n\t\t</dict>\n\t\t<string>NSMenuItem2</string>\n\t\t<string>1111</string>\n\t\t<string>121</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>10</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>283</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSNull</string>\n\t\t\t\t<string>%NSNull</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSNull</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>1</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>MainMenu</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>7</string>\n\t\t</dict>\n\t\t<string>NSMenuItem1</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>262</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>262</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>262</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>66</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>190</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>130</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>197</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>189</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>48</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>70</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>170</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>231</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>202</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>46</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>24</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>134</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>225</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>90</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>149</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>74</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>212</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>221</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>184</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>91</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>239</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>138</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>57</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>120</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>79</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>157</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>230</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>142</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>254</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>251</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>166</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>80</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>47</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>25</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>105</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>116</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>148</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>259</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>243</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>252</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>107</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>110</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>152</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>35</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>234</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>126</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>40</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>10</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>177</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>180</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>156</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>41</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>95</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>106</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>191</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>171</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>143</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>222</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>183</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>160</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>84</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>58</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>111</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>236</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>125</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>29</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>207</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>96</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>165</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>85</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>153</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>228</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>215</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>121</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>101</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>51</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>71</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>161</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>115</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>36</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>139</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>42</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>135</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>81</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>61</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>67</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>250</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>100</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>30</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>131</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>75</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>262</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>292</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>293</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>294</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>295</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>296</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>297</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>298</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>299</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>300</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>301</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>302</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>303</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>304</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>305</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>306</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>307</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>308</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>309</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>310</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>311</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>312</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>313</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>314</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>315</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>316</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>317</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>318</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>319</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>320</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>321</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>322</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>323</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>324</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>325</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>326</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>327</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>328</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>329</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>330</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>331</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>332</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>333</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>334</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>335</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>336</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>337</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>338</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>339</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>340</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>341</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>342</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>343</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>344</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>345</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>346</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>347</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>348</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>349</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>350</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>351</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>352</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>353</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>354</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>355</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>356</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>357</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>358</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>359</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>360</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>361</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>362</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>363</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>364</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>365</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>366</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>367</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>368</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>369</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>370</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>371</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>372</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>373</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>374</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>375</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>376</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>377</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>378</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>379</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>380</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>381</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>382</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>383</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>384</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>385</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>386</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>387</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>388</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>389</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>390</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>391</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>392</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<integer>152</integer>\n\t\t<integer>214</integer>\n\t\t<integer>81</integer>\n\t\t<integer>233</integer>\n\t\t<integer>216</integer>\n\t\t<integer>206</integer>\n\t\t<integer>125</integer>\n\t\t<integer>153</integer>\n\t\t<integer>249</integer>\n\t\t<integer>143</integer>\n\t\t<integer>211</integer>\n\t\t<integer>127</integer>\n\t\t<integer>39</integer>\n\t\t<integer>235</integer>\n\t\t<integer>220</integer>\n\t\t<integer>80</integer>\n\t\t<integer>224</integer>\n\t\t<integer>208</integer>\n\t\t<integer>193</integer>\n\t\t<integer>72</integer>\n\t\t<integer>79</integer>\n\t\t<integer>29</integer>\n\t\t<integer>197</integer>\n\t\t<integer>130</integer>\n\t\t<integer>240</integer>\n\t\t<integer>142</integer>\n\t\t<integer>231</integer>\n\t\t<integer>222</integer>\n\t\t<integer>145</integer>\n\t\t<integer>205</integer>\n\t\t<integer>221</integer>\n\t\t<integer>74</integer>\n\t\t<integer>241</integer>\n\t\t<integer>19</integer>\n\t\t<integer>144</integer>\n\t\t<integer>246</integer>\n\t\t<integer>219</integer>\n\t\t<integer>126</integer>\n\t\t<integer>5</integer>\n\t\t<integer>227</integer>\n\t\t<integer>204</integer>\n\t\t<integer>242</integer>\n\t\t<integer>56</integer>\n\t\t<integer>103</integer>\n\t\t<integer>149</integer>\n\t\t<integer>212</integer>\n\t\t<integer>23</integer>\n\t\t<integer>228</integer>\n\t\t<integer>243</integer>\n\t\t<integer>87</integer>\n\t\t<integer>92</integer>\n\t\t<integer>198</integer>\n\t\t<integer>122</integer>\n\t\t<integer>37</integer>\n\t\t<integer>82</integer>\n\t\t<integer>129</integer>\n\t\t<integer>244</integer>\n\t\t<integer>111</integer>\n\t\t<integer>24</integer>\n\t\t<integer>225</integer>\n\t\t<integer>195</integer>\n\t\t<integer>218</integer>\n\t\t<integer>248</integer>\n\t\t<integer>209</integer>\n\t\t<integer>75</integer>\n\t\t<integer>217</integer>\n\t\t<integer>245</integer>\n\t\t<integer>1</integer>\n\t\t<integer>223</integer>\n\t\t<integer>58</integer>\n\t\t<integer>199</integer>\n\t\t<integer>131</integer>\n\t\t<integer>232</integer>\n\t\t<integer>86</integer>\n\t\t<integer>83</integer>\n\t\t<integer>201</integer>\n\t\t<integer>247</integer>\n\t\t<integer>207</integer>\n\t\t<integer>213</integer>\n\t\t<integer>112</integer>\n\t\t<integer>124</integer>\n\t\t<integer>215</integer>\n\t\t<integer>203</integer>\n\t\t<integer>139</integer>\n\t\t<integer>150</integer>\n\t\t<integer>136</integer>\n\t\t<integer>210</integer>\n\t\t<integer>230</integer>\n\t\t<integer>77</integer>\n\t\t<integer>239</integer>\n\t\t<integer>106</integer>\n\t\t<integer>202</integer>\n\t\t<integer>57</integer>\n\t\t<integer>200</integer>\n\t\t<integer>146</integer>\n\t\t<integer>134</integer>\n\t\t<integer>236</integer>\n\t\t<integer>226</integer>\n\t\t<integer>78</integer>\n\t\t<integer>196</integer>\n\t\t<integer>73</integer>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>262</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>262</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSIBObjectData</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSIBObjectData</string>\n\t\t</dict>\n\t</array>\n\t<key>$top</key>\n\t<dict>\n\t\t<key>IB.objectdata</key>\n\t\t<dict>\n\t\t\t<key>CF$UID</key>\n\t\t\t<integer>1</integer>\n\t\t</dict>\n\t</dict>\n\t<key>$version</key>\n\t<integer>100000</integer>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/zh_CN.lproj/InfoPlist.strings",
    "content": "/* Localized versions of Info.plist keys */\n\nCFBundleName = \"FTPConnection\";\nNSHumanReadableCopyright = \"© __MyCompanyName__, 2004\";"
  },
  {
    "path": "Example/zh_CN.lproj/Localizable.strings",
    "content": "/* authorise */\n\"%@\\nWhat would you like to do?\" = \"%@\\n您想要怎么做？\";\n\n/* ConnectionOpenPanel */\n\"A Connection Error Occurred\" = \"发生连接错误\";\n\n/* FTP Abort */\n\"Action Aborted. Local Error\" = \"放弃操作。本机发生错误\";\n\n/* FTP no data stream types available */\n\"All data connection modes have been exhausted. Check with the server administrator.\" = \"已尝试所有资料连接模式。请与服务器管理员确认。\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\n\"An intermediate directory does not exist and needs to be created before the current directory\" = \"中间目录并不存在，您必须在目前目录前创建该目录。\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\n\"An unknown error occurred\" = \"发生未知的错误\";\n\n/* multiple connection joiner */\n\"and\" = \"和\";\n\n/* close window */\n\"Are you sure you want to stop the upload?\" = \"你确定要停止上传吗？\";\n\n/* authorise */\n\"Authorize\" = \"批准\";\n\n/* authorise */\n\"Authorize Connection?\" = \"批准连接？\";\n\n/* connection type */\n\"auto\" = \"自动\";\n\n/* config */\n\"Bad Configuration\" = \"不良配置\";\n\n/* error */\n\"Bad Droplet\" = \"不良 Droplet\";\n\n/* Transfer Controller */\n\"Bad Password.\" = \"不良密码\";\n\n/* context menu\n   tree controller action gear */\n\n\"Browse Packages\" = \"浏览安装包\";\n\n/* filesize: bytes */\n\"bytes\" = \"字节\";\n\n/* authorise */\n\"Cancel\" = \"取消\";\n\n/* FTP upload error */\n\"Cannot Upload File. Storage quota on server exceeded\" = \"无法上传文件。已超过服务器的存储空间\";\n\n/* connected message\n   transfer controller */\n\n\"Connected to %@\" = \"连接到 %@\";\n\n/* file transcript */\n\"Connected to File System\\n\" = \"已连接到文件系统\\n\";\n\n/* connection string */\n\"Connecting to %@\" = \"正在连接到 %@\";\n\n/* file transcript */\n\"Connecting…\\n\" = \"正在连接…\\n\";\n\n/* close window */\n\"Continue Upload\" = \"继续上传\";\n\n/* file transcript */\n\"Copying %@ to %@\\n\" = \"正在拷贝 %1$@ 到 %2$@\\n\";\n\n/* FileConnection set permissions error */\n\"Could not change file permissions\" = \"无法更改文件权限\";\n\n/* FileConnection create directory error */\n\"Could not create directory\" = \"无法创建目录\";\n\n/* config */\n\"Couldn't find configuration file specified\\n %@\" = \"无法找到指定的配置文件\\n %@\";\n\n/* file transcript */\n\"Create Directory %@ (%lo)\\n\" = \"创建目录 %1$@ (%2$lo)\\n\";\n\n/* FTP Create directory error */\n\"Create directory operation failed\" = \"创建目录作业失败\";\n\n/* Failed to open a data stream connection */\n\"Data Stream Timed Out\" = \"资料流逾时\";\n\n/* outline view column header name\n   outline view column context menu item */\n\n\"Date Modified\" = \"修改日期\";\n\n/* file transcript */\n\"Deleting File %@\\n\" = \"正在删除文件 %@\\n\";\n\n/* status */\n\"Disconnected\" = \"已断开\";\n\n/* transfer controller */\n\"Disconnected from %@\" = \"已经自 %@ 断开\";\n\n/* unknown UTI name */\n\"Document\" = \"文稿\";\n\n/* filesize: exabytes */\n\"EB\" = \"EB\";\n\n/* Directory Parsing Error */\n\"Error parsing directory listing\" = \"解析目录列表时发生错误\";\n\n/* FTP no data streams available */\n\"Exhausted all connection types to server. Please contact server administrator\" = \"已尝试与此服务器的所有连接类型。请与服务器管理员联系。\";\n\n/* Bad ftp command */\n\"Failed to change to directory\" = \"无法更改目录\";\n\n/* WebDAV Directory Deletion Error\n   couldn't delete the file\n   MobileMe Directory Deletion Error */\n\n\n\"Failed to delete directory\" = \"无法删除目录\";\n\n/* error for deleting a directory */\n\"Failed to delete directory: %@\" = \"删除目录失败：%@\";\n\n/* WebDAV File Deletion Error\n   couldn't delete the file\n   MobileMe file deletion error */\n\n\n\"Failed to delete file\" = \"无法删除文件\";\n\n/* error for deleting a file */\n\"Failed to delete file: %@\" = \"删除文件失败： %@\";\n\n/* No MobileMe account or password */\n\"Failed to retrieve MobileMe account details\" = \"无法找回 MobileMe 账号的详细资料\";\n\n/* FTP Upload error */\n\"Failed to set permissions for path %@\" = \"设置路径 %@ 的权限失败\";\n\n/* FileConnection copy data error */\n\"Failed to upload data\" = \"上传数据失败\";\n\n/* error transferring */\n\"Failed to verify file transferred successfully\" = \"验证已成功传输的文件失败\";\n\n/* FTP file download error */\n\"File %@ does not exist on server\" = \"服务器上并没有文件 %@\";\n\n/* FTP error */\n\"File / Directory does not exist\" = \"文件 / 目录不存在\";\n\n/* FileConnection error */\n\"File Already Exists\" = \"文件已经存在\";\n\n/* FTP file in use */\n\"File in Use\" = \"文件正在使用中\";\n\n/* FTP Upload error */\n\"Filename not Allowed\" = \"不允许此文件名\";\n\n/* directory kind */\n\"Folder\" = \"文件夹\";\n\n/* FTP service timed out */\n\"FTP service not available; Remote server has closed connection\" = \"无法取得 FTP 服务；远程服务器已关闭或关闭连接\";\n\n/* FTP no service */\n\"FTP Service Unavailable\" = \"无法取得 FTP 服务\";\n\n/* filesize: gigabytes */\n\"GB\" = \"GB\";\n\n/* transfer controller */\n\"Hide Files\" = \"隐藏文件\";\n\n/* Couldn't open the port to the host */\n\"Host Unavailable\" = \"无法取得主机\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\n\"Insufficient storage space available\" = \"可用的存储空间不足\";\n\n/* FTP Error */\n\"Invalid Account name\" = \"账号名称无效\";\n\n/* Stream Error before opening */\n\"Is the service running on the server\" = \"是在此服务器上执行的服务\";\n\n/* filesize: kilobytes */\n\"KB\" = \"KB\";\n\n/* outline view column header name\n   outline view column context menu item */\n\n\"Kind\" = \"类型\";\n\n/* FTP download error */\n\"Local File already exists\" = \"本机文件已存在\";\n\n/* filesize: megabytes */\n\"MB\" = \"MB\";\n\n/* outline view column header name\n   outline view column context menu item */\n\n\"Name\" = \"名称\";\n\n/* new cat name */\n\"New Category\" = \"新分类\";\n\n/* tree controller action gear */\n\"New Folder\" = \"新建文件夹\";\n\n/* config */\n\"No configuration file specified\" = \"没有指定的配置文件\";\n\n/* failed to find a connection class */\n\"No connection available for requested connection type\" = \"请求的连接类型没有可用的连接\";\n\n/* failed to find a connection class */\n\"No connection available for requested port\" = \"请求的传输端口没有可用的连接\";\n\n/* failed to find a connection class */\n\"No connection available for requested protocol\" = \"请求的传输协定没有可用的连接\";\n\n/* FTP Error */\n\"No Storage Space Available\" = \"没有可用的存储空间\";\n\n/* FTP Error */\n\"Not Logged In\" = \"尚未登入\";\n\n/* OK */\n\"OK\" = \"好\";\n\n/* WebDAV Uploading Error\n   MobileMe File Uploading Error */\n\n\"Parent Folder does not exist\" = \"主体文件夹不存在\";\n\n/* No comment provided by engineer. */\n\"Password was not accepted.\" = \"密码不被接受。\";\n\n/* filesize: petabytes */\n\"PB\" = \"PB\";\n\n/* mimic Finder naming conventions */\n\"Plain text document\" = \"纯文本文稿\";\n\n/* config\n   error */\n\n\"Quit\" = \"退出\";\n\n/* tree controller action gear */\n\"Refresh\" = \"刷新\";\n\n/* file transcript */\n\"Renaming %@ to %@\\n\" = \"正在更名 %1$@ 到 %2$@\\n\";\n\n/* FTP Error */\n\"Request Aborted. Page Type Unknown\" = \"放弃请求。页面类型未知\";\n\n/* abbreviation for seconds, e.g. 12 MB/s */\n\"s\" = \"秒\";\n\n/* category name */\n\"Saved Hosts\" = \"已存储的主机\";\n\n/* transfer controller */\n\"Show Files\" = \"显示文件\";\n\n/* context menu\n   tree controller action gear */\n\n\"Show Hidden Files\" = \"显示隐藏文件\";\n\n/* context menu\n   tree controller action gear */\n\n\"Show Package Extensions\" = \"显示安装包扩展名\";\n\n/* outline view column header name\n   outline view column context menu item */\n\n\"Size\" = \"大小\";\n\n/* close window */\n\"Stop Upload\" = \"停止上传\";\n\n/* close window */\n\"Stop Upload?\" = \"停止上传？\";\n\n/* Error creating stream */\n\"Stream Unavailable\" = \"数据流无法取得\";\n\n/* filesize: terabytes */\n\"TB\" = \"TB\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\n\"The body of the request is not supported\" = \"不支持此请求的内容\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\n\"The directory already exists\" = \"目录已存在\";\n\n/* name of a host to connect to; in this case, the local file system rather than a remote server */\n\"the File System\" = \"文件系统\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\n\"The server does not allow the creation of directories at the current location\" = \"此服务器不允许在目前的位置创建目录\";\n\n/* error transferring */\n\"The transferred file has a size of 0.\" = \"所传输的文件大小是零。\";\n\n/* MobileMe Directory Contents Error */\n\"There is no MobileMe access to the directory\" = \"此目录无法使用 MobileMe 存取\";\n\n/* No WebDAV access to the specified path */\n\"There is no WebDAV access to the directory\" = \"此目录无法使用 WebDAV 存取\";\n\n/* error */\n\"This droplet is missing the original application that created it. You will need to reinstall the original application.\" = \"该 Droplet 丢失了创建它的原应用程序。你需要重新安装该应用程序。\";\n\n/* time out */\n\"Timed Out waiting for remote host.\" = \"等待远程主机超时。\";\n\n/* Transfer Controller */\n\"Too many files had transfer problems\" = \"太多文件存在传输错误\";\n\n/* FileConnection failed to copy file */\n\"Unable to store data in file\" = \"无法存储文件资料\";\n\n/* WebDAV Error */\n\"Unknown Error Occurred\" = \"发生未知的错误\";\n\n/* status message */\n\"Uploading\" = \"正在上传\";\n\n/* status */\n\"Uploading %@\" = \"正在上传 %@\";\n\n/* No username or password */\n\"Username and Password are required for FTP connections\" = \"若要进行 FTP 连接，用户名与密码为必要项目\";\n\n/* No username or password */\n\"Username and Password are required for S3 connections\" = \"用户名和密码需要 S3 连接\";\n\n/* No username or password */\n\"Username and Password are required for WebDAV connections\" = \"若要进行 WebDAV 连接，用户名与密码为必要项目\";\n\n/* file transcript */\n\"Writing data to %@\\n\" = \"正在写数据到 %@\\n\";\n\n/* Bonjour Error */\n\"You can not add a child collection to the Bonjour category.\" = \"你不能添加一个子收藏到这 Bonjour 分类。\";\n\n/* Bonjour Error */\n\"You can not add a new server to the Bonjour category.\" = \"你不能添加一个新服务器到这 Bonjour 分类。\";\n\n/* FTP file upload error */\n\"You do not have access to write file %@\" = \"您没有权限写文件 %@\";\n\n/* FTP Error */\n\"You need an Account to Upload Files\" = \"您需要一个账号进行文件上传\";"
  },
  {
    "path": "Example/zh_TW.lproj/DropletLauncher.nib/classes.nib",
    "content": "{\n    IBClasses =     (\n                {\n            CLASS = DropletLauncherDelegate;\n            LANGUAGE = ObjC;\n            SUPERCLASS = NSObject;\n        },\n                {\n            CLASS = FirstResponder;\n            LANGUAGE = ObjC;\n            SUPERCLASS = NSObject;\n        }\n    );\n    IBVersion = 1;\n}"
  },
  {
    "path": "Example/zh_TW.lproj/DropletLauncher.nib/info.nib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IBDocumentLocation</key>\n\t<string>415 56 356 240 0 0 1280 778 </string>\n\t<key>IBEditorPositions</key>\n\t<dict>\n\t\t<key>29</key>\n\t\t<string>69 259 338 44 0 0 1280 778 </string>\n\t</dict>\n\t<key>IBFramework Version</key>\n\t<string>489.0</string>\n\t<key>IBSystem Version</key>\n\t<string>9D34</string>\n\t<key>IBUsesTextArchiving</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/zh_TW.lproj/DropletLauncher.nib/keyedobjects.nib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>$archiver</key>\n\t<string>NSKeyedArchiver</string>\n\t<key>$objects</key>\n\t<array>\n\t\t<string>$null</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>387</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAccessibilityConnectors</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>384</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAccessibilityOidsKeys</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>385</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAccessibilityOidsValues</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>386</integer>\n\t\t\t</dict>\n\t\t\t<key>NSClassesKeys</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>279</integer>\n\t\t\t</dict>\n\t\t\t<key>NSClassesValues</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>280</integer>\n\t\t\t</dict>\n\t\t\t<key>NSConnections</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>9</integer>\n\t\t\t</dict>\n\t\t\t<key>NSFontManager</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t</dict>\n\t\t\t<key>NSFramework</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>6</integer>\n\t\t\t</dict>\n\t\t\t<key>NSNamesKeys</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>255</integer>\n\t\t\t</dict>\n\t\t\t<key>NSNamesValues</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>256</integer>\n\t\t\t</dict>\n\t\t\t<key>NSNextOid</key>\n\t\t\t<integer>250</integer>\n\t\t\t<key>NSObjectsKeys</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>176</integer>\n\t\t\t</dict>\n\t\t\t<key>NSObjectsValues</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>254</integer>\n\t\t\t</dict>\n\t\t\t<key>NSOidsKeys</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>281</integer>\n\t\t\t</dict>\n\t\t\t<key>NSOidsValues</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>282</integer>\n\t\t\t</dict>\n\t\t\t<key>NSRoot</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t\t<key>NSVisibleWindows</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>7</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>5</integer>\n\t\t\t</dict>\n\t\t\t<key>NSClassName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>3</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>NSApplication</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSMutableString</string>\n\t\t\t\t<string>NSString</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSMutableString</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSCustomObject</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSCustomObject</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>IBCocoaFramework</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>8</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSMutableSet</string>\n\t\t\t\t<string>NSSet</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSMutableSet</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>10</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>24</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>29</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>35</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>40</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>46</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>51</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>57</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>61</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>66</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>70</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>74</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>79</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>84</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>90</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>95</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>100</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>105</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>110</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>115</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>120</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>125</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>130</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>134</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>138</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>142</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>148</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>152</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>156</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>160</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>165</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>170</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>22</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>11</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>14</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>12</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>13</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>182</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>179</integer>\n\t\t\t</dict>\n\t\t\t<key>NSName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>181</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>178</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>縮到最小</string>\n\t\t<string>m</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>18</integer>\n\t\t\t</dict>\n\t\t\t<key>NSClassName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>16</integer>\n\t\t\t</dict>\n\t\t\t<key>NSResourceName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>17</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>NSImage</string>\n\t\t<string>NSMenuCheckmark</string>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSCustomResource</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSCustomResource</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>18</integer>\n\t\t\t</dict>\n\t\t\t<key>NSClassName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>16</integer>\n\t\t\t</dict>\n\t\t\t<key>NSResourceName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>20</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>NSMenuMixedState</string>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSMenuItem</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSMenuItem</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>performMiniaturize:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSNibControlConnector</string>\n\t\t\t\t<string>NSNibConnector</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSNibControlConnector</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>28</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>25</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>12</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>26</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>將此程式所有視窗移至最前</string>\n\t\t<string></string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>arrangeInFront:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>34</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>30</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>33</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>32</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>182</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>190</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>189</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>列印⋯</string>\n\t\t<string>p</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>print:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>39</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>36</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>38</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>37</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>設定頁面⋯</string>\n\t\t<string>P</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>runPageLayout:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>45</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>41</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>44</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>42</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>43</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>182</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>251</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>249</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>NewApplication 輔助說明</string>\n\t\t<string>?</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>showHelp:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>50</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>47</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>48</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>49</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>182</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>200</integer>\n\t\t\t</dict>\n\t\t\t<key>NSName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>201</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>198</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>清除選單</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>clearRecentDocuments:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSDestination</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>56</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>52</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>55</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>54</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>182</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>223</integer>\n\t\t\t</dict>\n\t\t\t<key>NSName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>231</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>221</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>結束 NewApplication</string>\n\t\t<string>q</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>terminate:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSDestination</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>60</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>58</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>59</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>關於 NewApplication</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>orderFrontStandardAboutPanel:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSDestination</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>65</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>62</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>64</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1572864</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>63</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>隱藏其他</string>\n\t\t<string>h</string>\n\t\t<string>hideOtherApplications:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSDestination</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>69</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>67</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>64</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>68</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>隱藏 NewApplication</string>\n\t\t<string>hide:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSDestination</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>73</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>71</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>72</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>顯示全部</string>\n\t\t<string>unhideAllApplications:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>78</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>75</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>77</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>76</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>關閉</string>\n\t\t<string>w</string>\n\t\t<string>performClose:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>83</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>80</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>81</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>82</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>182</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>216</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>215</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>在輸入時同步檢查拼字</string>\n\t\t<string>toggleContinuousSpellChecking:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>89</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>85</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>88</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>87</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>182</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>237</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>235</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>還原</string>\n\t\t<string>z</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>undo:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>94</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>91</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>93</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>92</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>拷貝</string>\n\t\t<string>c</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>copy:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>99</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>96</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>98</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>81</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>97</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>檢查拼字</string>\n\t\t<string>;</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>checkSpelling:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>104</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>101</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>103</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>102</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>貼上</string>\n\t\t<string>v</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>paste:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>109</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>106</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>107</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>108</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>182</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>212</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>211</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>停止朗讀</string>\n\t\t<string>stopSpeaking:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>114</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>111</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>113</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>112</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>剪下</string>\n\t\t<string>x</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>cut:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>119</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>116</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>118</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>81</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>117</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>拼字檢查⋯</string>\n\t\t<string>:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>showGuessPanel:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>124</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>121</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>123</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>122</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>重作</string>\n\t\t<string>Z</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>redo:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>129</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>126</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>128</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>127</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>全選</string>\n\t\t<string>a</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>selectAll:</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>133</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>131</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>107</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>132</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>開始朗讀</string>\n\t\t<string>startSpeaking:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>137</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>135</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>136</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>刪除</string>\n\t\t<string>delete:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>141</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>139</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>12</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>140</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>縮放</string>\n\t\t<string>performZoom:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>147</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>143</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>146</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>144</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTag</key>\n\t\t\t<integer>1</integer>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>145</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>182</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>243</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>241</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>尋找⋯</string>\n\t\t<string>f</string>\n\t\t<string>performFindPanelAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>147</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>149</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>151</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>144</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTag</key>\n\t\t\t<integer>2</integer>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>150</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>尋找下一個</string>\n\t\t<string>g</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>147</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>153</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>155</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>144</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTag</key>\n\t\t\t<integer>3</integer>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>154</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>尋找上一個</string>\n\t\t<string>G</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>147</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>157</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>159</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>144</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTag</key>\n\t\t\t<integer>7</integer>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>158</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>使用所選範圍尋找</string>\n\t\t<string>e</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>164</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>161</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>163</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>144</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>162</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>跳至所選範圍</string>\n\t\t<string>j</string>\n\t\t<string>centerSelectionInVisibleArea:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>23</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>169</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>166</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>168</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1572864</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>167</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>貼上並符合樣式</string>\n\t\t<string>V</string>\n\t\t<string>pasteAsPlainText:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>174</integer>\n\t\t\t</dict>\n\t\t\t<key>NSDestination</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>171</integer>\n\t\t\t</dict>\n\t\t\t<key>NSLabel</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>173</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSource</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>5</integer>\n\t\t\t</dict>\n\t\t\t<key>NSClassName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>172</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>DropletLauncherDelegate</string>\n\t\t<string>delegate</string>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSNibOutletConnector</string>\n\t\t\t\t<string>NSNibConnector</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSNibOutletConnector</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSMutableArray</string>\n\t\t\t\t<string>NSArray</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSMutableArray</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>177</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>183</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>36</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>191</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>107</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>180</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>213</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>96</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>81</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>139</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>217</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>194</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>25</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>111</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>135</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>116</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>244</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>203</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>206</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>143</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>157</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>238</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>71</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>161</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>126</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>230</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>41</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>197</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>47</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>229</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>232</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>228</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>166</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>106</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>30</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>246</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>80</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>202</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>220</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>171</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>101</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>225</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>153</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>239</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>58</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>67</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>234</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>131</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>240</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>91</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>48</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>85</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>149</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>42</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>186</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>75</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>121</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>248</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>209</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>224</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>視窗</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>139</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>180</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>25</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>12</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>_NSWindowsMenu</string>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSMenu</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSMenu</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>185</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>186</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>184</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>服務</string>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>182</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>187</integer>\n\t\t\t</dict>\n\t\t\t<key>NSName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>188</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>184</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<string>_NSServicesMenu</string>\n\t\t<string>檔案</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>191</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>194</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>197</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>202</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>75</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>203</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>206</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>209</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>177</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>36</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>30</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>193</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>192</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>新增</string>\n\t\t<string>n</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>196</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>195</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>打開⋯</string>\n\t\t<string>o</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>199</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>48</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>198</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>打開最近使用過的文件</string>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>47</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<string>_NSRecentDocumentsMenu</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>205</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>204</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>儲存</string>\n\t\t<string>s</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>208</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>207</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>儲存為⋯</string>\n\t\t<string>S</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>210</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>回復</string>\n\t\t<string>語音</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>131</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>106</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>214</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>107</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>211</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>submenuAction:</string>\n\t\t<string>拼字檢查</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>116</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>96</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>80</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>182</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMenuItems</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>219</integer>\n\t\t\t</dict>\n\t\t\t<key>NSName</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>252</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>218</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>DropletLauncher</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>220</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>232</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>234</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>246</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>248</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>222</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>217</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>221</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>NewApplication</string>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>58</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>224</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>225</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>228</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>183</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>229</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>67</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>71</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>230</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>227</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>226</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>偏好設定⋯</string>\n\t\t<string>,</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>53</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>_NSAppleMenu</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>233</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>217</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>31</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>189</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>236</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>217</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>235</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>編輯</string>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>85</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>121</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>238</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>111</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>91</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>101</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>166</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>135</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>126</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>239</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>240</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>244</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>213</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSIsDisabled</key>\n\t\t\t<true/>\n\t\t\t<key>NSIsSeparator</key>\n\t\t\t<true/>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>242</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>144</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>241</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>尋找</string>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>143</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>149</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>153</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>157</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>161</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>245</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>86</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>81</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>215</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>247</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>217</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>12</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>178</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>21</integer>\n\t\t\t</dict>\n\t\t\t<key>NSAction</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>250</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquiv</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>27</integer>\n\t\t\t</dict>\n\t\t\t<key>NSKeyEquivModMask</key>\n\t\t\t<integer>1048576</integer>\n\t\t\t<key>NSMenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>217</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMixedImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>19</integer>\n\t\t\t</dict>\n\t\t\t<key>NSMnemonicLoc</key>\n\t\t\t<integer>2147483647</integer>\n\t\t\t<key>NSOnImage</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>15</integer>\n\t\t\t</dict>\n\t\t\t<key>NSSubmenu</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>42</integer>\n\t\t\t</dict>\n\t\t\t<key>NSTitle</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>249</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<string>輔助說明</string>\n\t\t<string>submenuAction:</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>41</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<string>_NSMainMenu</string>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSArray</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSArray</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>246</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>232</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>213</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>81</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>244</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>81</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>234</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>240</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>220</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>42</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>48</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>217</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>107</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>217</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>81</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>217</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>217</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>107</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>197</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>248</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>183</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>217</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>177</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>36</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>41</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>191</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>232</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>180</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>30</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>80</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>96</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>81</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>217</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>194</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>202</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>116</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>171</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>244</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>225</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>203</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>206</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>42</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>75</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>248</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>209</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>257</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>258</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>259</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>259</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>260</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>262</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>259</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>259</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>263</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>264</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>265</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>266</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>267</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>259</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>268</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>269</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>270</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>271</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>172</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>265</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>272</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>273</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>274</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>275</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>276</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>277</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>278</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>2</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>5</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string></string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>261</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSNull</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSNull</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>9</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>6</string>\n\t\t</dict>\n\t\t<string>NSMenuItem2</string>\n\t\t<string>NSMenuItem</string>\n\t\t<string>NSMenu</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>MainMenu</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>7</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>File's Owner</string>\n\t\t</dict>\n\t\t<string>1111</string>\n\t\t<string>NSMenuItem1</string>\n\t\t<string>121</string>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>3</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>8</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>2</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>1</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>1</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.string</key>\n\t\t\t<string>10</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>177</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>36</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>183</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>90</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>191</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>180</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>213</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>107</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>96</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>139</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>111</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>84</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>244</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>203</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>157</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>238</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>71</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>79</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>161</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>126</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>170</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>47</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>152</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>229</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>106</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>228</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>166</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>30</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>246</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>80</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>125</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>202</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>58</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>220</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>171</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>153</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>61</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>134</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>234</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>240</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>149</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>66</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>75</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>209</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>148</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>29</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>24</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>95</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>81</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>217</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>194</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>35</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>25</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>135</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>116</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>142</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>105</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>206</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>115</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>100</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>143</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>74</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>57</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>165</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>230</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>70</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>197</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>41</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>160</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>120</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>232</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>138</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>130</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>110</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>10</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>225</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>101</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>239</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>46</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>67</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>131</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>51</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>42</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>48</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>91</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>85</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>186</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>156</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>40</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>121</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>248</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>224</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>283</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>284</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>285</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>286</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>287</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>288</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>289</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>290</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>291</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>292</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>293</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>294</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>295</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>296</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>297</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>298</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>299</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>300</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>301</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>302</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>303</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>304</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>305</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>306</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>307</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>308</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>309</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>310</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>311</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>312</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>313</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>314</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>315</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>316</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>317</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>318</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>319</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>320</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>321</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>322</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>323</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>324</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>325</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>326</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>327</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>328</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>329</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>330</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>331</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>332</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>333</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>334</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>335</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>336</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>337</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>338</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>339</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>340</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>341</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>342</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>343</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>344</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>345</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>346</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>347</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>348</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>349</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>350</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>351</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>352</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>353</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>354</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>355</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>356</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>357</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>358</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>359</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>360</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>361</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>362</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>363</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>364</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>365</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>366</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>367</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>368</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>369</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>370</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>371</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>372</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>373</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>374</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>375</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>376</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>377</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>378</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>379</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>380</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>381</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>382</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CF$UID</key>\n\t\t\t\t\t<integer>383</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<integer>74</integer>\n\t\t<integer>77</integer>\n\t\t<integer>131</integer>\n\t\t<integer>81</integer>\n\t\t<integer>224</integer>\n\t\t<integer>82</integer>\n\t\t<integer>92</integer>\n\t\t<integer>211</integer>\n\t\t<integer>212</integer>\n\t\t<integer>201</integer>\n\t\t<integer>239</integer>\n\t\t<integer>199</integer>\n\t\t<integer>223</integer>\n\t\t<integer>216</integer>\n\t\t<integer>75</integer>\n\t\t<integer>23</integer>\n\t\t<integer>221</integer>\n\t\t<integer>206</integer>\n\t\t<integer>57</integer>\n\t\t<integer>150</integer>\n\t\t<integer>222</integer>\n\t\t<integer>210</integer>\n\t\t<integer>198</integer>\n\t\t<integer>249</integer>\n\t\t<integer>126</integer>\n\t\t<integer>243</integer>\n\t\t<integer>144</integer>\n\t\t<integer>195</integer>\n\t\t<integer>143</integer>\n\t\t<integer>246</integer>\n\t\t<integer>78</integer>\n\t\t<integer>19</integer>\n\t\t<integer>219</integer>\n\t\t<integer>232</integer>\n\t\t<integer>79</integer>\n\t\t<integer>58</integer>\n\t\t<integer>56</integer>\n\t\t<integer>248</integer>\n\t\t<integer>213</integer>\n\t\t<integer>136</integer>\n\t\t<integer>146</integer>\n\t\t<integer>235</integer>\n\t\t<integer>217</integer>\n\t\t<integer>218</integer>\n\t\t<integer>208</integer>\n\t\t<integer>152</integer>\n\t\t<integer>73</integer>\n\t\t<integer>145</integer>\n\t\t<integer>112</integer>\n\t\t<integer>242</integer>\n\t\t<integer>24</integer>\n\t\t<integer>86</integer>\n\t\t<integer>39</integer>\n\t\t<integer>225</integer>\n\t\t<integer>200</integer>\n\t\t<integer>29</integer>\n\t\t<integer>72</integer>\n\t\t<integer>87</integer>\n\t\t<integer>5</integer>\n\t\t<integer>202</integer>\n\t\t<integer>204</integer>\n\t\t<integer>241</integer>\n\t\t<integer>205</integer>\n\t\t<integer>227</integer>\n\t\t<integer>80</integer>\n\t\t<integer>230</integer>\n\t\t<integer>226</integer>\n\t\t<integer>209</integer>\n\t\t<integer>220</integer>\n\t\t<integer>193</integer>\n\t\t<integer>142</integer>\n\t\t<integer>247</integer>\n\t\t<integer>149</integer>\n\t\t<integer>153</integer>\n\t\t<integer>124</integer>\n\t\t<integer>111</integer>\n\t\t<integer>245</integer>\n\t\t<integer>231</integer>\n\t\t<integer>83</integer>\n\t\t<integer>240</integer>\n\t\t<integer>233</integer>\n\t\t<integer>228</integer>\n\t\t<integer>37</integer>\n\t\t<integer>1</integer>\n\t\t<integer>129</integer>\n\t\t<integer>203</integer>\n\t\t<integer>214</integer>\n\t\t<integer>127</integer>\n\t\t<integer>134</integer>\n\t\t<integer>196</integer>\n\t\t<integer>139</integer>\n\t\t<integer>106</integer>\n\t\t<integer>125</integer>\n\t\t<integer>197</integer>\n\t\t<integer>207</integer>\n\t\t<integer>130</integer>\n\t\t<integer>244</integer>\n\t\t<integer>122</integer>\n\t\t<integer>215</integer>\n\t\t<integer>103</integer>\n\t\t<integer>236</integer>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>175</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$class</key>\n\t\t\t<dict>\n\t\t\t\t<key>CF$UID</key>\n\t\t\t\t<integer>253</integer>\n\t\t\t</dict>\n\t\t\t<key>NS.objects</key>\n\t\t\t<array/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>$classes</key>\n\t\t\t<array>\n\t\t\t\t<string>NSIBObjectData</string>\n\t\t\t\t<string>NSObject</string>\n\t\t\t</array>\n\t\t\t<key>$classname</key>\n\t\t\t<string>NSIBObjectData</string>\n\t\t</dict>\n\t</array>\n\t<key>$top</key>\n\t<dict>\n\t\t<key>IB.objectdata</key>\n\t\t<dict>\n\t\t\t<key>CF$UID</key>\n\t\t\t<integer>1</integer>\n\t\t</dict>\n\t</dict>\n\t<key>$version</key>\n\t<integer>100000</integer>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/zh_TW.lproj/InfoPlist.strings",
    "content": "/* Localized versions of Info.plist keys */\n\nCFBundleName = \"FTPConnection\";\nNSHumanReadableCopyright = \"© __MyCompanyName__, 2004\";"
  },
  {
    "path": "Example/zh_TW.lproj/Localizable.strings",
    "content": "/* authorise */\n\"%@\\nWhat would you like to do?\" = \"%@\\n您打算怎麼做？\";\n\n/* ConnectionOpenPanel */\n\"A Connection Error Occurred\" = \"發生連線錯誤\";\n\n/* FTP Abort */\n\"Action Aborted. Local Error\" = \"放棄動作。本機發生錯誤\";\n\n/* FTP no data stream types available */\n\"All data connection modes have been exhausted. Check with the server administrator.\" = \"已嘗試所有資料連線模式。請與伺服器管理員確認。\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\n\"An intermediate directory does not exist and needs to be created before the current directory\" = \"中間目錄並不存在，您必須在目前目錄前製作該目錄。\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\n\"An unknown error occurred\" = \"發生未知的錯誤\";\n\n/* multiple connection joiner */\n\"and\" = \"和\";\n\n/* close window */\n\"Are you sure you want to stop the upload?\" = \"您是否確定要停止上傳？\";\n\n/* authorise */\n\"Authorize\" = \"認證\";\n\n/* authorise */\n\"Authorize Connection?\" = \"認證連線？\";\n\n/* connection type */\n\"auto\" = \"自動\";\n\n/* config */\n\"Bad Configuration\" = \"設定不正確\";\n\n/* error */\n\"Bad Droplet\" = \"Droplet 不正確\";\n\n/* Transfer Controller */\n\"Bad Password.\" = \"密碼不佳。\";\n\n/* context menu\n   tree controller action gear */\n\n\"Browse Packages\" = \"瀏覽套件\";\n\n/* filesize: bytes */\n\"bytes\" = \"bytes\";\n\n/* authorise */\n\"Cancel\" = \"取消\";\n\n/* FTP upload error */\n\"Cannot Upload File. Storage quota on server exceeded\" = \"無法上傳檔案。已超過伺服器的儲存空間\";\n\n/* connected message\n   transfer controller */\n\n\"Connected to %@\" = \"已連接至 %@\";\n\n/* file transcript */\n\"Connected to File System\\n\" = \"已連接至檔案系統\\n\";\n\n/* connection string */\n\"Connecting to %@\" = \"正在連接至 %@\";\n\n/* file transcript */\n\"Connecting…\\n\" = \"連接中⋯\\n\";\n\n/* close window */\n\"Continue Upload\" = \"繼續上傳\";\n\n/* file transcript */\n\"Copying %@ to %@\\n\" = \"正在拷貝 %1$@ 到 %2$@\\n\";\n\n/* FileConnection set permissions error */\n\"Could not change file permissions\" = \"無法更改檔案權限\";\n\n/* FileConnection create directory error */\n\"Could not create directory\" = \"無法製作目錄\";\n\n/* config */\n\"Couldn't find configuration file specified\\n %@\" = \"找不到指定的設定檔\\n %@\";\n\n/* file transcript */\n\"Create Directory %@ (%lo)\\n\" = \"建立目錄 %1$@（%2$lo）\\n\";\n\n/* FTP Create directory error */\n\"Create directory operation failed\" = \"製作目錄作業失敗\";\n\n/* Failed to open a data stream connection */\n\"Data Stream Timed Out\" = \"資料流逾時\";\n\n/* outline view column header name\n   outline view column context menu item */\n\n\"Date Modified\" = \"修改日期\";\n\n/* file transcript */\n\"Deleting File %@\\n\" = \"正在刪除檔案 %@\\n\";\n\n/* status */\n\"Disconnected\" = \"已中斷連線\";\n\n/* transfer controller */\n\"Disconnected from %@\" = \"已從 %@ 中斷連線\";\n\n/* unknown UTI name */\n\"Document\" = \"文件\";\n\n/* filesize: exabytes */\n\"EB\" = \"EB\";\n\n/* Directory Parsing Error */\n\"Error parsing directory listing\" = \"解析目錄列表時發生錯誤\";\n\n/* FTP no data streams available */\n\"Exhausted all connection types to server. Please contact server administrator\" = \"已嘗試與此伺服器的所有連線類型。請與伺服器管理員聯繫。\";\n\n/* Bad ftp command */\n\"Failed to change to directory\" = \"無法更改目錄\";\n\n/* WebDAV Directory Deletion Error\n   couldn't delete the file\n   MobileMe Directory Deletion Error */\n\n\n\"Failed to delete directory\" = \"無法刪除目錄\";\n\n/* error for deleting a directory */\n\"Failed to delete directory: %@\" = \"無法刪除目錄：%@\";\n\n/* WebDAV File Deletion Error\n   couldn't delete the file\n   MobileMe file deletion error */\n\n\n\"Failed to delete file\" = \"無法刪除檔案\";\n\n/* error for deleting a file */\n\"Failed to delete file: %@\" = \"無法刪除檔案：%@\";\n\n/* No MobileMe account or password */\n\"Failed to retrieve MobileMe account details\" = \"無法擷取 MobileMe 帳號的詳細資料\";\n\n/* FTP Upload error */\n\"Failed to set permissions for path %@\" = \"無法設定路徑 %@ 的權限\";\n\n/* FileConnection copy data error */\n\"Failed to upload data\" = \"無法載入資料\";\n\n/* error transferring */\n\"Failed to verify file transferred successfully\" = \"無法順利驗證傳輸的檔案\";\n\n/* FTP file download error */\n\"File %@ does not exist on server\" = \"伺服器上並沒有檔案 %@\";\n\n/* FTP error */\n\"File / Directory does not exist\" = \"檔案 / 目錄不存在\";\n\n/* FileConnection error */\n\"File Already Exists\" = \"檔案已存在\";\n\n/* FTP file in use */\n\"File in Use\" = \"檔案正在使用中\";\n\n/* FTP Upload error */\n\"Filename not Allowed\" = \"不允許此檔名\";\n\n/* directory kind */\n\"Folder\" = \"檔案夾\";\n\n/* FTP service timed out */\n\"FTP service not available; Remote server has closed connection\" = \"FTP 服務無法取得；遠端伺服器已關閉連線\";\n\n/* FTP no service */\n\"FTP Service Unavailable\" = \"無法取得 FTP 服務\";\n\n/* filesize: gigabytes */\n\"GB\" = \"GB\";\n\n/* transfer controller */\n\"Hide Files\" = \"隱藏檔案\";\n\n/* Couldn't open the port to the host */\n\"Host Unavailable\" = \"無法取得主機\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\n\"Insufficient storage space available\" = \"可用的儲存空間不足\";\n\n/* FTP Error */\n\"Invalid Account name\" = \"帳號名稱無效\";\n\n/* Stream Error before opening */\n\"Is the service running on the server\" = \"是在此伺服器上執行的服務\";\n\n/* filesize: kilobytes */\n\"KB\" = \"KB\";\n\n/* outline view column header name\n   outline view column context menu item */\n\n\"Kind\" = \"種類\";\n\n/* FTP download error */\n\"Local File already exists\" = \"本機檔案已存在\";\n\n/* filesize: megabytes */\n\"MB\" = \"MB\";\n\n/* outline view column header name\n   outline view column context menu item */\n\n\"Name\" = \"名稱\";\n\n/* new cat name */\n\"New Category\" = \"新增類別\";\n\n/* tree controller action gear */\n\"New Folder\" = \"新增檔案夾\";\n\n/* config */\n\"No configuration file specified\" = \"未指定設定檔\";\n\n/* failed to find a connection class */\n\"No connection available for requested connection type\" = \"請求的連線類型沒有可用的連線\";\n\n/* failed to find a connection class */\n\"No connection available for requested port\" = \"請求的傳輸埠沒有可用的連線\";\n\n/* failed to find a connection class */\n\"No connection available for requested protocol\" = \"請求的傳輸協定沒有可用的連線\";\n\n/* FTP Error */\n\"No Storage Space Available\" = \"沒有可用的儲存空間\";\n\n/* FTP Error */\n\"Not Logged In\" = \"尚未登入\";\n\n/* OK */\n\"OK\" = \"好\";\n\n/* WebDAV Uploading Error\n   MobileMe File Uploading Error */\n\n\"Parent Folder does not exist\" = \"主體檔案夾不存在\";\n\n/* No comment provided by engineer. */\n\"Password was not accepted.\" = \"不接受密碼。\";\n\n/* filesize: petabytes */\n\"PB\" = \"PB\";\n\n/* mimic Finder naming conventions */\n\"Plain text document\" = \"純文字文件\";\n\n/* config\n   error */\n\n\"Quit\" = \"結束\";\n\n/* tree controller action gear */\n\"Refresh\" = \"重新整理\";\n\n/* file transcript */\n\"Renaming %@ to %@\\n\" = \"正在將 %1$@ 重新命名為 %2$@\\n\";\n\n/* FTP Error */\n\"Request Aborted. Page Type Unknown\" = \"放棄請求。頁面類型未知\";\n\n/* abbreviation for seconds, e.g. 12 MB/s */\n\"s\" = \"s\";\n\n/* category name */\n\"Saved Hosts\" = \"儲存的主機\";\n\n/* transfer controller */\n\"Show Files\" = \"顯示檔案\";\n\n/* context menu\n   tree controller action gear */\n\n\"Show Hidden Files\" = \"顯示隱藏檔案\";\n\n/* context menu\n   tree controller action gear */\n\n\"Show Package Extensions\" = \"顯示套件擴充內容\";\n\n/* outline view column header name\n   outline view column context menu item */\n\n\"Size\" = \"大小\";\n\n/* close window */\n\"Stop Upload\" = \"停止上傳\";\n\n/* close window */\n\"Stop Upload?\" = \"停止上傳？\";\n\n/* Error creating stream */\n\"Stream Unavailable\" = \"資料流無法取得\";\n\n/* filesize: terabytes */\n\"TB\" = \"TB\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\n\"The body of the request is not supported\" = \"不支援此請求的內容\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\n\"The directory already exists\" = \"目錄已存在\";\n\n/* name of a host to connect to; in this case, the local file system rather than a remote server */\n\"the File System\" = \"檔案系統\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\n\"The server does not allow the creation of directories at the current location\" = \"此伺服器不允許在目前的位置製作目錄\";\n\n/* error transferring */\n\"The transferred file has a size of 0.\" = \"傳輸的檔案大小為 0。\";\n\n/* MobileMe Directory Contents Error */\n\"There is no MobileMe access to the directory\" = \"此目錄無法使用 MobileMe 存取\";\n\n/* No WebDAV access to the specified path */\n\"There is no WebDAV access to the directory\" = \"此目錄無法使用 WebDAV 存取\";\n\n/* error */\n\"This droplet is missing the original application that created it. You will need to reinstall the original application.\" = \"此 droplet 遺失原始的製作應用程式。您需要重新安裝其原始的應用程式。\";\n\n/* time out */\n\"Timed Out waiting for remote host.\" = \"等待遠端主機逾時。\";\n\n/* Transfer Controller */\n\"Too many files had transfer problems\" = \"太多檔案發生傳輸問題\";\n\n/* FileConnection failed to copy file */\n\"Unable to store data in file\" = \"無法儲存檔案資料\";\n\n/* WebDAV Error */\n\"Unknown Error Occurred\" = \"發生未知的錯誤\";\n\n/* status message */\n\"Uploading\" = \"上傳\";\n\n/* status */\n\"Uploading %@\" = \"正在上傳 %@\";\n\n/* No username or password */\n\"Username and Password are required for FTP connections\" = \"若要進行 FTP 連線，使用者名稱與密碼為必要項目\";\n\n/* No username or password */\n\"Username and Password are required for S3 connections\" = \"S3 連線需要使用者名稱與密碼\";\n\n/* No username or password */\n\"Username and Password are required for WebDAV connections\" = \"若要進行 WebDAV 連線，使用者名稱與密碼為必要項目\";\n\n/* file transcript */\n\"Writing data to %@\\n\" = \"正在將資料寫入 %@\\n\";\n\n/* Bonjour Error */\n\"You can not add a child collection to the Bonjour category.\" = \"您無法將子頁面集加到 Bonjour 類別中。\";\n\n/* Bonjour Error */\n\"You can not add a new server to the Bonjour category.\" = \"您無法將新伺服器加到 Bonjour 類別中。\";\n\n/* FTP file upload error */\n\"You do not have access to write file %@\" = \"您沒有存取權限可寫入檔案 %@\";\n\n/* FTP Error */\n\"You need an Account to Upload Files\" = \"您需要“上傳檔案”的帳號\";"
  },
  {
    "path": "Framework Debug.xcconfig",
    "content": "COPY_PHASE_STRIP = NO\nDYLIB_COMPATIBILITY_VERSION = 1\nDYLIB_CURRENT_VERSION = 1\nFRAMEWORK_VERSION = A\nGCC_DYNAMIC_NO_PIC = NO\nGCC_ENABLE_FIX_AND_CONTINUE = YES\nGCC_ENABLE_OBJC_EXCEPTIONS = YES\nGCC_GENERATE_DEBUGGING_SYMBOLS = YES\nGCC_MODEL_TUNING = G5\nGCC_OPTIMIZATION_LEVEL = 0\nGCC_PRECOMPILE_PREFIX_HEADER = YES\nGCC_PREFIX_HEADER = $(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h\nOTHER_LDFLAGS = -framework Foundation -framework AppKit\nPREBINDING = NO\nPRODUCT_NAME = iMediaBrowser\nSDKROOT = /Developer/SDKs/MacOSX10.4u.sdk\nZERO_LINK = YES\n"
  },
  {
    "path": "Framework Release.xcconfig",
    "content": "ARCHS = ppc i386\nCOPY_PHASE_STRIP = YES\nDYLIB_COMPATIBILITY_VERSION = 1\nDYLIB_CURRENT_VERSION = 1\nFRAMEWORK_VERSION = A\nGCC_ENABLE_FIX_AND_CONTINUE = NO\nGCC_ENABLE_OBJC_EXCEPTIONS = YES\nGCC_GENERATE_DEBUGGING_SYMBOLS = NO\nGCC_MODEL_TUNING = G5\nGCC_PRECOMPILE_PREFIX_HEADER = YES\nGCC_PREFIX_HEADER = $(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h\nOTHER_LDFLAGS = -framework Foundation -framework AppKit\nPREBINDING = NO\nSDKROOT = /Developer/SDKs/MacOSX10.4u.sdk\nZERO_LINK = NO\n"
  },
  {
    "path": "ProfilingTester/AppDelegate.h",
    "content": "//\n//  AppDelegate.h\n//  ProfilingTester\n//\n//  Created by Sam Deane on 27/03/2013.\n//\n//\n\n#import <Cocoa/Cocoa.h>\n\n@interface AppDelegate : NSObject <NSApplicationDelegate>\n\n@property (assign) IBOutlet NSWindow *window;\n\n@end\n"
  },
  {
    "path": "ProfilingTester/AppDelegate.m",
    "content": "//\n//  AppDelegate.m\n//  ProfilingTester\n//\n//  Created by Sam Deane on 27/03/2013.\n//\n//\n\n#import \"AppDelegate.h\"\n#import <ConnectionKit/Connection.h>\n\n@implementation AppDelegate\n\n- (void)dealloc\n{\n    [super dealloc];\n}\n\n- (void)applicationDidFinishLaunching:(NSNotification *)aNotification\n{\n    // Insert code here to initialize your application\n\n    CK2FileManager* fm = [[CK2FileManager alloc] init];\n\n    for (NSUInteger n = 0; n < 100; ++n)\n    {\n        NSURL* url = [NSURL URLWithString:@\"ftp://test:test@ftp.secureftp-test.com/\"];\n\n        [fm contentsOfDirectoryAtURL:url includingPropertiesForKeys:@[] options:NSDirectoryEnumerationSkipsHiddenFiles completionHandler:^(NSArray *contents, NSError *error) {\n            NSLog(@\"contents: %@  error: %@\", contents, error);\n        }];\n    }\n\n    [fm release];\n\n}\n\n@end\n"
  },
  {
    "path": "ProfilingTester/ProfilingTester-Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>${EXECUTABLE_NAME}</string>\n\t<key>CFBundleIconFile</key>\n\t<string></string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>${PRODUCT_NAME}</string>\n\t<key>CFBundlePackageType</key>\n\t<string>APPL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n\t<key>LSMinimumSystemVersion</key>\n\t<string>${MACOSX_DEPLOYMENT_TARGET}</string>\n\t<key>NSMainNibFile</key>\n\t<string>MainMenu</string>\n\t<key>NSPrincipalClass</key>\n\t<string>NSApplication</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "ProfilingTester/ProfilingTester-Prefix.pch",
    "content": "//\n// Prefix header for all source files of the 'ProfilingTester' target in the 'ProfilingTester' project\n//\n\n#ifdef __OBJC__\n    #import <Cocoa/Cocoa.h>\n#endif\n"
  },
  {
    "path": "ProfilingTester/en.lproj/Credits.rtf",
    "content": "{\\rtf0\\ansi{\\fonttbl\\f0\\fswiss Helvetica;}\n{\\colortbl;\\red255\\green255\\blue255;}\n\\paperw9840\\paperh8400\n\\pard\\tx560\\tx1120\\tx1680\\tx2240\\tx2800\\tx3360\\tx3920\\tx4480\\tx5040\\tx5600\\tx6160\\tx6720\\ql\\qnatural\n\n\\f0\\b\\fs24 \\cf0 Engineering:\n\\b0 \\\n\tSome people\\\n\\\n\n\\b Human Interface Design:\n\\b0 \\\n\tSome other people\\\n\\\n\n\\b Testing:\n\\b0 \\\n\tHopefully not nobody\\\n\\\n\n\\b Documentation:\n\\b0 \\\n\tWhoever\\\n\\\n\n\\b With special thanks to:\n\\b0 \\\n\tMom\\\n}\n"
  },
  {
    "path": "ProfilingTester/en.lproj/InfoPlist.strings",
    "content": "/* Localized versions of Info.plist keys */\n\n"
  },
  {
    "path": "ProfilingTester/en.lproj/MainMenu.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<archive type=\"com.apple.InterfaceBuilder3.Cocoa.XIB\" version=\"8.00\">\n\t<data>\n\t\t<int key=\"IBDocument.SystemTarget\">1080</int>\n\t\t<string key=\"IBDocument.SystemVersion\">11D50</string>\n\t\t<string key=\"IBDocument.InterfaceBuilderVersion\">2457</string>\n\t\t<string key=\"IBDocument.AppKitVersion\">1138.32</string>\n\t\t<string key=\"IBDocument.HIToolboxVersion\">568.00</string>\n\t\t<object class=\"NSMutableDictionary\" key=\"IBDocument.PluginVersions\">\n\t\t\t<string key=\"NS.key.0\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t<string key=\"NS.object.0\">2457</string>\n\t\t</object>\n\t\t<array key=\"IBDocument.IntegratedClassDependencies\">\n\t\t\t<string>NSWindowTemplate</string>\n\t\t\t<string>NSView</string>\n\t\t\t<string>NSMenu</string>\n\t\t\t<string>NSMenuItem</string>\n\t\t\t<string>NSCustomObject</string>\n\t\t</array>\n\t\t<array key=\"IBDocument.PluginDependencies\">\n\t\t\t<string>com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t</array>\n\t\t<object class=\"NSMutableDictionary\" key=\"IBDocument.Metadata\">\n\t\t\t<string key=\"NS.key.0\">PluginDependencyRecalculationVersion</string>\n\t\t\t<integer value=\"1\" key=\"NS.object.0\"/>\n\t\t</object>\n\t\t<array class=\"NSMutableArray\" key=\"IBDocument.RootObjects\" id=\"1048\">\n\t\t\t<object class=\"NSCustomObject\" id=\"1021\">\n\t\t\t\t<string key=\"NSClassName\">NSApplication</string>\n\t\t\t</object>\n\t\t\t<object class=\"NSCustomObject\" id=\"1014\">\n\t\t\t\t<string key=\"NSClassName\">FirstResponder</string>\n\t\t\t</object>\n\t\t\t<object class=\"NSCustomObject\" id=\"1050\">\n\t\t\t\t<string key=\"NSClassName\">NSApplication</string>\n\t\t\t</object>\n\t\t\t<object class=\"NSMenu\" id=\"649796088\">\n\t\t\t\t<string key=\"NSTitle\">AMainMenu</string>\n\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t<object class=\"NSMenuItem\" id=\"694149608\">\n\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"649796088\"/>\n\t\t\t\t\t\t<string key=\"NSTitle\">ProfilingTester</string>\n\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t<object class=\"NSCustomResource\" key=\"NSOnImage\" id=\"35465992\">\n\t\t\t\t\t\t\t<string key=\"NSClassName\">NSImage</string>\n\t\t\t\t\t\t\t<string key=\"NSResourceName\">NSMenuCheckmark</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"NSCustomResource\" key=\"NSMixedImage\" id=\"502551668\">\n\t\t\t\t\t\t\t<string key=\"NSClassName\">NSImage</string>\n\t\t\t\t\t\t\t<string key=\"NSResourceName\">NSMenuMixedState</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"110575045\">\n\t\t\t\t\t\t\t<string key=\"NSTitle\">ProfilingTester</string>\n\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"238522557\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"110575045\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">About ProfilingTester</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"304266470\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"110575045\"/>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSIsSeparator\">YES</bool>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"609285721\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"110575045\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Preferences…</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">,</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"481834944\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"110575045\"/>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSIsSeparator\">YES</bool>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"1046388886\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"110575045\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Services</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"752062318\">\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Services</string>\n\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\"/>\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSName\">_NSServicesMenu</string>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"646227648\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"110575045\"/>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSIsSeparator\">YES</bool>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"755159360\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"110575045\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Hide ProfilingTester</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">h</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"342932134\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"110575045\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Hide Others</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">h</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1572864</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"908899353\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"110575045\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Show All</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"1056857174\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"110575045\"/>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSIsSeparator\">YES</bool>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"632727374\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"110575045\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Quit ProfilingTester</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">q</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t<string key=\"NSName\">_NSAppleMenu</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSMenuItem\" id=\"379814623\">\n\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"649796088\"/>\n\t\t\t\t\t\t<string key=\"NSTitle\">File</string>\n\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"720053764\">\n\t\t\t\t\t\t\t<string key=\"NSTitle\">File</string>\n\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"705341025\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"720053764\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">New</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">n</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"722745758\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"720053764\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Open…</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">o</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"1025936716\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"720053764\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Open Recent</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"1065607017\">\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Open Recent</string>\n\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"759406840\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"1065607017\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Clear Menu</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSName\">_NSRecentDocumentsMenu</string>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"425164168\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"720053764\"/>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSIsSeparator\">YES</bool>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"776162233\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"720053764\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Close</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">w</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"1023925487\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"720053764\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Save…</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">s</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"579971712\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"720053764\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Revert to Saved</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"1010469920\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"720053764\"/>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSIsSeparator\">YES</bool>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"294629803\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"720053764\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Page Setup...</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">P</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1179648</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSToolTip\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"49223823\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"720053764\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Print…</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">p</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSMenuItem\" id=\"952259628\">\n\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"649796088\"/>\n\t\t\t\t\t\t<string key=\"NSTitle\">Edit</string>\n\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"789758025\">\n\t\t\t\t\t\t\t<string key=\"NSTitle\">Edit</string>\n\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"1058277027\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"789758025\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Undo</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">z</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"790794224\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"789758025\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Redo</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">Z</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1179648</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"1040322652\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"789758025\"/>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSIsSeparator\">YES</bool>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"296257095\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"789758025\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Cut</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">x</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"860595796\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"789758025\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Copy</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">c</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"29853731\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"789758025\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Paste</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">v</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"82994268\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"789758025\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Paste and Match Style</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">V</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1572864</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"437104165\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"789758025\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Delete</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"583158037\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"789758025\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Select All</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">a</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"212016141\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"789758025\"/>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSIsSeparator\">YES</bool>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"892235320\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"789758025\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Find</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"963351320\">\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Find</string>\n\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"447796847\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"963351320\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Find…</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">f</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSTag\">1</int>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"738670835\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"963351320\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Find and Replace…</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">f</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1572864</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSTag\">12</int>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"326711663\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"963351320\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Find Next</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">g</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSTag\">2</int>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"270902937\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"963351320\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Find Previous</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">G</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1179648</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSTag\">3</int>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"159080638\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"963351320\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Use Selection for Find</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">e</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSTag\">7</int>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"88285865\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"963351320\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Jump to Selection</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">j</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"972420730\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"789758025\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Spelling and Grammar</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"769623530\">\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Spelling and Grammar</string>\n\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"679648819\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"769623530\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Show Spelling and Grammar</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">:</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"96193923\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"769623530\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Check Document Now</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">;</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"859480356\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"769623530\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsSeparator\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"948374510\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"769623530\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Check Spelling While Typing</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"967646866\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"769623530\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Check Grammar With Spelling</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"795346622\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"769623530\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Correct Spelling Automatically</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"507821607\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"789758025\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Substitutions</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"698887838\">\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Substitutions</string>\n\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"65139061\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"698887838\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Show Substitutions</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"19036812\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"698887838\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsSeparator\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"605118523\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"698887838\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Smart Copy/Paste</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">f</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSTag\">1</int>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"197661976\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"698887838\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Smart Quotes</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">g</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSTag\">2</int>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"672708820\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"698887838\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Smart Dashes</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"708854459\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"698887838\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Smart Links</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">G</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1179648</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSTag\">3</int>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"537092702\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"698887838\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Text Replacement</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"288088188\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"789758025\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Transformations</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"579392910\">\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Transformations</string>\n\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"1060694897\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"579392910\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Make Upper Case</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"879586729\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"579392910\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Make Lower Case</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"56570060\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"579392910\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Capitalize</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"676164635\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"789758025\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Speech</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"785027613\">\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Speech</string>\n\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"731782645\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"785027613\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Start Speaking</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"680220178\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"785027613\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Stop Speaking</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSMenuItem\" id=\"302598603\">\n\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"649796088\"/>\n\t\t\t\t\t\t<string key=\"NSTitle\">Format</string>\n\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"941447902\">\n\t\t\t\t\t\t\t<string key=\"NSTitle\">Format</string>\n\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"792887677\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"941447902\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Font</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"786677654\">\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Font</string>\n\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"159677712\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"786677654\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Show Fonts</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">t</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"305399458\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"786677654\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Bold</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">b</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSTag\">2</int>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"814362025\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"786677654\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Italic</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">i</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSTag\">1</int>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"330926929\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"786677654\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Underline</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">u</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"533507878\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"786677654\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsSeparator\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"158063935\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"786677654\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Bigger</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">+</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSTag\">3</int>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"885547335\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"786677654\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Smaller</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">-</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSTag\">4</int>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"901062459\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"786677654\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsSeparator\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"767671776\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"786677654\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Kern</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"175441468\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Kern</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"252969304\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"175441468\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Use Default</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"766922938\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"175441468\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Use None</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"677519740\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"175441468\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Tighten</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"238351151\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"175441468\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Loosen</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"691570813\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"786677654\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Ligatures</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"1058217995\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Ligatures</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"706297211\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"1058217995\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Use Default</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"568384683\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"1058217995\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Use None</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"663508465\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"1058217995\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Use All</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"769124883\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"786677654\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Baseline</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"18263474\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Baseline</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"257962622\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"18263474\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Use Default</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"644725453\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"18263474\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Superscript</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"1037576581\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"18263474\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Subscript</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"941806246\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"18263474\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Raise</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"1045724900\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"18263474\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Lower</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"739652853\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"786677654\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsSeparator\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"1012600125\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"786677654\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Show Colors</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">C</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"214559597\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"786677654\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsSeparator\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"596732606\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"786677654\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Copy Style</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">c</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1572864</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"393423671\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"786677654\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Paste Style</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">v</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1572864</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSName\">_NSFontMenu</string>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"215659978\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"941447902\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Text</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"446991534\">\n\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Text</string>\n\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"875092757\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"446991534\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Align Left</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">{</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"630155264\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"446991534\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Center</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">|</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"945678886\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"446991534\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Justify</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"512868991\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"446991534\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Align Right</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">}</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"163117631\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"446991534\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsSeparator\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"31516759\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"446991534\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Writing Direction</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"956096989\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Writing Direction</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"257099033\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"956096989\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Paragraph</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"551969625\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"956096989\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string type=\"base64-UTF8\" key=\"NSTitle\">CURlZmF1bHQ</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"249532473\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"956096989\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string type=\"base64-UTF8\" key=\"NSTitle\">CUxlZnQgdG8gUmlnaHQ</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"607364498\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"956096989\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string type=\"base64-UTF8\" key=\"NSTitle\">CVJpZ2h0IHRvIExlZnQ</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"508151438\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"956096989\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsSeparator\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"981751889\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"956096989\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Selection</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"380031999\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"956096989\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string type=\"base64-UTF8\" key=\"NSTitle\">CURlZmF1bHQ</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"825984362\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"956096989\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string type=\"base64-UTF8\" key=\"NSTitle\">CUxlZnQgdG8gUmlnaHQ</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"560145579\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"956096989\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string type=\"base64-UTF8\" key=\"NSTitle\">CVJpZ2h0IHRvIExlZnQ</string>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"908105787\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"446991534\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t<bool key=\"NSIsSeparator\">YES</bool>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"644046920\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"446991534\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Show Ruler</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"231811626\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"446991534\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Copy Ruler</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">c</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1310720</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"883618387\">\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"446991534\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Paste Ruler</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">v</string>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1310720</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSMenuItem\" id=\"586577488\">\n\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"649796088\"/>\n\t\t\t\t\t\t<string key=\"NSTitle\">View</string>\n\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"466310130\">\n\t\t\t\t\t\t\t<string key=\"NSTitle\">View</string>\n\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"102151532\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"466310130\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Show Toolbar</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">t</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1572864</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"237841660\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"466310130\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Customize Toolbar…</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSMenuItem\" id=\"713487014\">\n\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"649796088\"/>\n\t\t\t\t\t\t<string key=\"NSTitle\">Window</string>\n\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"835318025\">\n\t\t\t\t\t\t\t<string key=\"NSTitle\">Window</string>\n\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"1011231497\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"835318025\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Minimize</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">m</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"575023229\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"835318025\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Zoom</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"299356726\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"835318025\"/>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSIsDisabled\">YES</bool>\n\t\t\t\t\t\t\t\t\t<bool key=\"NSIsSeparator\">YES</bool>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"625202149\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"835318025\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">Bring All to Front</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t<string key=\"NSName\">_NSWindowsMenu</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSMenuItem\" id=\"448692316\">\n\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"649796088\"/>\n\t\t\t\t\t\t<string key=\"NSTitle\">Help</string>\n\t\t\t\t\t\t<string key=\"NSKeyEquiv\"/>\n\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t<string key=\"NSAction\">submenuAction:</string>\n\t\t\t\t\t\t<object class=\"NSMenu\" key=\"NSSubmenu\" id=\"992780483\">\n\t\t\t\t\t\t\t<string key=\"NSTitle\">Help</string>\n\t\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"NSMenuItems\">\n\t\t\t\t\t\t\t\t<object class=\"NSMenuItem\" id=\"105068016\">\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMenu\" ref=\"992780483\"/>\n\t\t\t\t\t\t\t\t\t<string key=\"NSTitle\">ProfilingTester Help</string>\n\t\t\t\t\t\t\t\t\t<string key=\"NSKeyEquiv\">?</string>\n\t\t\t\t\t\t\t\t\t<int key=\"NSKeyEquivModMask\">1048576</int>\n\t\t\t\t\t\t\t\t\t<int key=\"NSMnemonicLoc\">2147483647</int>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSOnImage\" ref=\"35465992\"/>\n\t\t\t\t\t\t\t\t\t<reference key=\"NSMixedImage\" ref=\"502551668\"/>\n\t\t\t\t\t\t\t\t</object>\n\t\t\t\t\t\t\t</array>\n\t\t\t\t\t\t\t<string key=\"NSName\">_NSHelpMenu</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t</array>\n\t\t\t\t<string key=\"NSName\">_NSMainMenu</string>\n\t\t\t</object>\n\t\t\t<object class=\"NSWindowTemplate\" id=\"972006081\">\n\t\t\t\t<int key=\"NSWindowStyleMask\">15</int>\n\t\t\t\t<int key=\"NSWindowBacking\">2</int>\n\t\t\t\t<string key=\"NSWindowRect\">{{335, 390}, {480, 360}}</string>\n\t\t\t\t<int key=\"NSWTFlags\">1954021376</int>\n\t\t\t\t<string key=\"NSWindowTitle\">ProfilingTester</string>\n\t\t\t\t<string key=\"NSWindowClass\">NSWindow</string>\n\t\t\t\t<nil key=\"NSViewClass\"/>\n\t\t\t\t<nil key=\"NSUserInterfaceItemIdentifier\"/>\n\t\t\t\t<object class=\"NSView\" key=\"NSWindowView\" id=\"439893737\">\n\t\t\t\t\t<nil key=\"NSNextResponder\"/>\n\t\t\t\t\t<int key=\"NSvFlags\">256</int>\n\t\t\t\t\t<string key=\"NSFrameSize\">{480, 360}</string>\n\t\t\t\t</object>\n\t\t\t\t<string key=\"NSScreenRect\">{{0, 0}, {2560, 1418}}</string>\n\t\t\t\t<string key=\"NSMaxSize\">{10000000000000, 10000000000000}</string>\n\t\t\t\t<bool key=\"NSWindowIsRestorable\">YES</bool>\n\t\t\t</object>\n\t\t\t<object class=\"NSCustomObject\" id=\"976324537\">\n\t\t\t\t<string key=\"NSClassName\">AppDelegate</string>\n\t\t\t</object>\n\t\t\t<object class=\"NSCustomObject\" id=\"755631768\">\n\t\t\t\t<string key=\"NSClassName\">NSFontManager</string>\n\t\t\t</object>\n\t\t</array>\n\t\t<object class=\"IBObjectContainer\" key=\"IBDocument.Objects\">\n\t\t\t<array class=\"NSMutableArray\" key=\"connectionRecords\">\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">terminate:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1050\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"632727374\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">449</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">orderFrontStandardAboutPanel:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1021\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"238522557\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">142</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">delegate</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1021\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"976324537\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">495</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">performMiniaturize:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"1011231497\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">37</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">arrangeInFront:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"625202149\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">39</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">print:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"49223823\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">86</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">runPageLayout:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"294629803\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">87</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">clearRecentDocuments:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"759406840\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">127</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">performClose:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"776162233\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">193</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">toggleContinuousSpellChecking:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"948374510\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">222</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">undo:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"1058277027\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">223</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">copy:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"860595796\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">224</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">checkSpelling:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"96193923\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">225</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">paste:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"29853731\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">226</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">stopSpeaking:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"680220178\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">227</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">cut:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"296257095\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">228</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">showGuessPanel:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"679648819\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">230</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">redo:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"790794224\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">231</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">selectAll:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"583158037\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">232</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">startSpeaking:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"731782645\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">233</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">delete:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"437104165\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">235</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">performZoom:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"575023229\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">240</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">performFindPanelAction:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"447796847\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">241</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">centerSelectionInVisibleArea:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"88285865\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">245</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">toggleGrammarChecking:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"967646866\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">347</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">toggleSmartInsertDelete:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"605118523\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">355</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">toggleAutomaticQuoteSubstitution:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"197661976\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">356</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">toggleAutomaticLinkDetection:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"708854459\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">357</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">saveDocument:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"1023925487\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">362</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">revertDocumentToSaved:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"579971712\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">364</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">runToolbarCustomizationPalette:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"237841660\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">365</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">toggleToolbarShown:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"102151532\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">366</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">hide:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"755159360\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">367</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">hideOtherApplications:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"342932134\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">368</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">unhideAllApplications:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"908899353\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">370</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">newDocument:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"705341025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">373</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">openDocument:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"722745758\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">374</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">raiseBaseline:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"941806246\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">426</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">lowerBaseline:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"1045724900\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">427</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">copyFont:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"596732606\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">428</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">subscript:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"1037576581\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">429</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">superscript:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"644725453\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">430</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">tightenKerning:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"677519740\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">431</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">underline:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"330926929\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">432</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">orderFrontColorPanel:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"1012600125\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">433</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">useAllLigatures:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"663508465\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">434</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">loosenKerning:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"238351151\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">435</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">pasteFont:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"393423671\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">436</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">unscript:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"257962622\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">437</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">useStandardKerning:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"252969304\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">438</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">useStandardLigatures:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"706297211\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">439</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">turnOffLigatures:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"568384683\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">440</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">turnOffKerning:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"766922938\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">441</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">toggleAutomaticSpellingCorrection:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"795346622\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">456</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">orderFrontSubstitutionsPanel:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"65139061\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">458</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">toggleAutomaticDashSubstitution:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"672708820\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">461</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">toggleAutomaticTextReplacement:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"537092702\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">463</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">uppercaseWord:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"1060694897\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">464</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">capitalizeWord:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"56570060\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">467</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">lowercaseWord:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"879586729\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">468</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">pasteAsPlainText:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"82994268\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">486</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">performFindPanelAction:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"326711663\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">487</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">performFindPanelAction:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"270902937\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">488</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">performFindPanelAction:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"159080638\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">489</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">showHelp:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"105068016\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">493</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">alignCenter:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"630155264\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">518</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">pasteRuler:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"883618387\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">519</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">toggleRuler:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"644046920\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">520</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">alignRight:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"512868991\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">521</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">copyRuler:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"231811626\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">522</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">alignJustified:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"945678886\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">523</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">alignLeft:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"875092757\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">524</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">makeBaseWritingDirectionNatural:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"551969625\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">525</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">makeBaseWritingDirectionLeftToRight:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"249532473\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">526</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">makeBaseWritingDirectionRightToLeft:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"607364498\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">527</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">makeTextWritingDirectionNatural:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"380031999\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">528</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">makeTextWritingDirectionLeftToRight:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"825984362\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">529</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">makeTextWritingDirectionRightToLeft:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"560145579\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">530</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">performFindPanelAction:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"738670835\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">535</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">addFontTrait:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"755631768\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"305399458\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">421</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">addFontTrait:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"755631768\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"814362025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">422</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">modifyFont:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"755631768\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"885547335\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">423</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">orderFrontFontPanel:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"755631768\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"159677712\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">424</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBActionConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">modifyFont:</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"755631768\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"158063935\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">425</int>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBConnectionRecord\">\n\t\t\t\t\t<object class=\"IBOutletConnection\" key=\"connection\">\n\t\t\t\t\t\t<string key=\"label\">window</string>\n\t\t\t\t\t\t<reference key=\"source\" ref=\"976324537\"/>\n\t\t\t\t\t\t<reference key=\"destination\" ref=\"972006081\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<int key=\"connectionID\">532</int>\n\t\t\t\t</object>\n\t\t\t</array>\n\t\t\t<object class=\"IBMutableOrderedSet\" key=\"objectRecords\">\n\t\t\t\t<array key=\"orderedObjects\">\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">0</int>\n\t\t\t\t\t\t<array key=\"object\" id=\"0\"/>\n\t\t\t\t\t\t<reference key=\"children\" ref=\"1048\"/>\n\t\t\t\t\t\t<nil key=\"parent\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">-2</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1021\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t\t<string key=\"objectName\">File's Owner</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">-1</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1014\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t\t<string key=\"objectName\">First Responder</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">-3</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1050\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t\t<string key=\"objectName\">Application</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">29</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"649796088\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"713487014\"/>\n\t\t\t\t\t\t\t<reference ref=\"694149608\"/>\n\t\t\t\t\t\t\t<reference ref=\"952259628\"/>\n\t\t\t\t\t\t\t<reference ref=\"379814623\"/>\n\t\t\t\t\t\t\t<reference ref=\"586577488\"/>\n\t\t\t\t\t\t\t<reference ref=\"302598603\"/>\n\t\t\t\t\t\t\t<reference ref=\"448692316\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">19</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"713487014\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"835318025\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"649796088\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">56</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"694149608\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"110575045\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"649796088\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">217</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"952259628\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"789758025\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"649796088\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">83</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"379814623\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"720053764\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"649796088\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">81</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"720053764\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"1023925487\"/>\n\t\t\t\t\t\t\t<reference ref=\"49223823\"/>\n\t\t\t\t\t\t\t<reference ref=\"722745758\"/>\n\t\t\t\t\t\t\t<reference ref=\"705341025\"/>\n\t\t\t\t\t\t\t<reference ref=\"1025936716\"/>\n\t\t\t\t\t\t\t<reference ref=\"294629803\"/>\n\t\t\t\t\t\t\t<reference ref=\"776162233\"/>\n\t\t\t\t\t\t\t<reference ref=\"425164168\"/>\n\t\t\t\t\t\t\t<reference ref=\"579971712\"/>\n\t\t\t\t\t\t\t<reference ref=\"1010469920\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"379814623\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">75</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1023925487\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"720053764\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">78</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"49223823\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"720053764\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">72</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"722745758\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"720053764\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">82</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"705341025\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"720053764\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">124</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1025936716\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"1065607017\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"720053764\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">77</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"294629803\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"720053764\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">73</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"776162233\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"720053764\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">79</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"425164168\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"720053764\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">112</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"579971712\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"720053764\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">74</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1010469920\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"720053764\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">125</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1065607017\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"759406840\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1025936716\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">126</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"759406840\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1065607017\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">205</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"789758025\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"437104165\"/>\n\t\t\t\t\t\t\t<reference ref=\"583158037\"/>\n\t\t\t\t\t\t\t<reference ref=\"1058277027\"/>\n\t\t\t\t\t\t\t<reference ref=\"212016141\"/>\n\t\t\t\t\t\t\t<reference ref=\"296257095\"/>\n\t\t\t\t\t\t\t<reference ref=\"29853731\"/>\n\t\t\t\t\t\t\t<reference ref=\"860595796\"/>\n\t\t\t\t\t\t\t<reference ref=\"1040322652\"/>\n\t\t\t\t\t\t\t<reference ref=\"790794224\"/>\n\t\t\t\t\t\t\t<reference ref=\"892235320\"/>\n\t\t\t\t\t\t\t<reference ref=\"972420730\"/>\n\t\t\t\t\t\t\t<reference ref=\"676164635\"/>\n\t\t\t\t\t\t\t<reference ref=\"507821607\"/>\n\t\t\t\t\t\t\t<reference ref=\"288088188\"/>\n\t\t\t\t\t\t\t<reference ref=\"82994268\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"952259628\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">202</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"437104165\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"789758025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">198</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"583158037\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"789758025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">207</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1058277027\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"789758025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">214</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"212016141\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"789758025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">199</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"296257095\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"789758025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">203</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"29853731\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"789758025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">197</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"860595796\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"789758025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">206</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1040322652\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"789758025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">215</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"790794224\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"789758025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">218</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"892235320\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"963351320\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"789758025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">216</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"972420730\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"769623530\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"789758025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">200</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"769623530\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"948374510\"/>\n\t\t\t\t\t\t\t<reference ref=\"96193923\"/>\n\t\t\t\t\t\t\t<reference ref=\"679648819\"/>\n\t\t\t\t\t\t\t<reference ref=\"967646866\"/>\n\t\t\t\t\t\t\t<reference ref=\"859480356\"/>\n\t\t\t\t\t\t\t<reference ref=\"795346622\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"972420730\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">219</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"948374510\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"769623530\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">201</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"96193923\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"769623530\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">204</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"679648819\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"769623530\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">220</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"963351320\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"270902937\"/>\n\t\t\t\t\t\t\t<reference ref=\"88285865\"/>\n\t\t\t\t\t\t\t<reference ref=\"159080638\"/>\n\t\t\t\t\t\t\t<reference ref=\"326711663\"/>\n\t\t\t\t\t\t\t<reference ref=\"447796847\"/>\n\t\t\t\t\t\t\t<reference ref=\"738670835\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"892235320\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">213</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"270902937\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"963351320\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">210</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"88285865\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"963351320\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">221</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"159080638\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"963351320\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">208</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"326711663\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"963351320\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">209</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"447796847\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"963351320\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">57</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"110575045\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"238522557\"/>\n\t\t\t\t\t\t\t<reference ref=\"755159360\"/>\n\t\t\t\t\t\t\t<reference ref=\"908899353\"/>\n\t\t\t\t\t\t\t<reference ref=\"632727374\"/>\n\t\t\t\t\t\t\t<reference ref=\"646227648\"/>\n\t\t\t\t\t\t\t<reference ref=\"609285721\"/>\n\t\t\t\t\t\t\t<reference ref=\"481834944\"/>\n\t\t\t\t\t\t\t<reference ref=\"304266470\"/>\n\t\t\t\t\t\t\t<reference ref=\"1046388886\"/>\n\t\t\t\t\t\t\t<reference ref=\"1056857174\"/>\n\t\t\t\t\t\t\t<reference ref=\"342932134\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"694149608\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">58</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"238522557\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"110575045\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">134</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"755159360\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"110575045\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">150</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"908899353\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"110575045\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">136</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"632727374\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"110575045\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">144</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"646227648\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"110575045\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">129</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"609285721\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"110575045\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">143</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"481834944\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"110575045\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">236</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"304266470\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"110575045\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">131</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1046388886\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"752062318\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"110575045\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">149</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1056857174\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"110575045\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">145</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"342932134\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"110575045\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">130</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"752062318\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1046388886\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">24</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"835318025\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"299356726\"/>\n\t\t\t\t\t\t\t<reference ref=\"625202149\"/>\n\t\t\t\t\t\t\t<reference ref=\"575023229\"/>\n\t\t\t\t\t\t\t<reference ref=\"1011231497\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"713487014\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">92</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"299356726\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"835318025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">5</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"625202149\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"835318025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">239</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"575023229\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"835318025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">23</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1011231497\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"835318025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">295</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"586577488\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"466310130\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"649796088\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">296</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"466310130\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"102151532\"/>\n\t\t\t\t\t\t\t<reference ref=\"237841660\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"586577488\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">297</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"102151532\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"466310130\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">298</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"237841660\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"466310130\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">211</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"676164635\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"785027613\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"789758025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">212</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"785027613\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"680220178\"/>\n\t\t\t\t\t\t\t<reference ref=\"731782645\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"676164635\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">195</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"680220178\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"785027613\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">196</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"731782645\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"785027613\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">346</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"967646866\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"769623530\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">348</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"507821607\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"698887838\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"789758025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">349</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"698887838\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"605118523\"/>\n\t\t\t\t\t\t\t<reference ref=\"197661976\"/>\n\t\t\t\t\t\t\t<reference ref=\"708854459\"/>\n\t\t\t\t\t\t\t<reference ref=\"65139061\"/>\n\t\t\t\t\t\t\t<reference ref=\"19036812\"/>\n\t\t\t\t\t\t\t<reference ref=\"672708820\"/>\n\t\t\t\t\t\t\t<reference ref=\"537092702\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"507821607\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">350</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"605118523\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"698887838\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">351</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"197661976\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"698887838\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">354</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"708854459\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"698887838\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">371</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"972006081\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"439893737\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">372</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"439893737\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"972006081\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">375</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"302598603\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"941447902\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"649796088\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">376</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"941447902\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"792887677\"/>\n\t\t\t\t\t\t\t<reference ref=\"215659978\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"302598603\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">377</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"792887677\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"786677654\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"941447902\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">388</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"786677654\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"159677712\"/>\n\t\t\t\t\t\t\t<reference ref=\"305399458\"/>\n\t\t\t\t\t\t\t<reference ref=\"814362025\"/>\n\t\t\t\t\t\t\t<reference ref=\"330926929\"/>\n\t\t\t\t\t\t\t<reference ref=\"533507878\"/>\n\t\t\t\t\t\t\t<reference ref=\"158063935\"/>\n\t\t\t\t\t\t\t<reference ref=\"885547335\"/>\n\t\t\t\t\t\t\t<reference ref=\"901062459\"/>\n\t\t\t\t\t\t\t<reference ref=\"767671776\"/>\n\t\t\t\t\t\t\t<reference ref=\"691570813\"/>\n\t\t\t\t\t\t\t<reference ref=\"769124883\"/>\n\t\t\t\t\t\t\t<reference ref=\"739652853\"/>\n\t\t\t\t\t\t\t<reference ref=\"1012600125\"/>\n\t\t\t\t\t\t\t<reference ref=\"214559597\"/>\n\t\t\t\t\t\t\t<reference ref=\"596732606\"/>\n\t\t\t\t\t\t\t<reference ref=\"393423671\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"792887677\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">389</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"159677712\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"786677654\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">390</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"305399458\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"786677654\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">391</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"814362025\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"786677654\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">392</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"330926929\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"786677654\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">393</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"533507878\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"786677654\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">394</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"158063935\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"786677654\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">395</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"885547335\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"786677654\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">396</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"901062459\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"786677654\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">397</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"767671776\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"175441468\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"786677654\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">398</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"691570813\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"1058217995\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"786677654\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">399</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"769124883\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"18263474\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"786677654\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">400</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"739652853\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"786677654\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">401</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1012600125\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"786677654\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">402</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"214559597\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"786677654\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">403</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"596732606\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"786677654\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">404</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"393423671\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"786677654\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">405</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"18263474\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"257962622\"/>\n\t\t\t\t\t\t\t<reference ref=\"644725453\"/>\n\t\t\t\t\t\t\t<reference ref=\"1037576581\"/>\n\t\t\t\t\t\t\t<reference ref=\"941806246\"/>\n\t\t\t\t\t\t\t<reference ref=\"1045724900\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"769124883\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">406</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"257962622\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"18263474\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">407</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"644725453\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"18263474\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">408</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1037576581\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"18263474\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">409</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"941806246\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"18263474\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">410</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1045724900\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"18263474\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">411</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1058217995\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"706297211\"/>\n\t\t\t\t\t\t\t<reference ref=\"568384683\"/>\n\t\t\t\t\t\t\t<reference ref=\"663508465\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"691570813\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">412</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"706297211\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1058217995\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">413</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"568384683\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1058217995\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">414</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"663508465\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"1058217995\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">415</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"175441468\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"252969304\"/>\n\t\t\t\t\t\t\t<reference ref=\"766922938\"/>\n\t\t\t\t\t\t\t<reference ref=\"677519740\"/>\n\t\t\t\t\t\t\t<reference ref=\"238351151\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"767671776\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">416</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"252969304\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"175441468\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">417</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"766922938\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"175441468\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">418</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"677519740\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"175441468\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">419</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"238351151\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"175441468\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">420</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"755631768\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">450</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"288088188\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"579392910\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"789758025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">451</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"579392910\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"1060694897\"/>\n\t\t\t\t\t\t\t<reference ref=\"879586729\"/>\n\t\t\t\t\t\t\t<reference ref=\"56570060\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"288088188\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">452</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"1060694897\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"579392910\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">453</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"859480356\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"769623530\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">454</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"795346622\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"769623530\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">457</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"65139061\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"698887838\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">459</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"19036812\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"698887838\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">460</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"672708820\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"698887838\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">462</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"537092702\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"698887838\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">465</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"879586729\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"579392910\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">466</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"56570060\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"579392910\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">485</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"82994268\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"789758025\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">490</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"448692316\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"992780483\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"649796088\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">491</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"992780483\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"105068016\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"448692316\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">492</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"105068016\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"992780483\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">494</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"976324537\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"0\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">496</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"215659978\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"446991534\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"941447902\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">497</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"446991534\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"875092757\"/>\n\t\t\t\t\t\t\t<reference ref=\"630155264\"/>\n\t\t\t\t\t\t\t<reference ref=\"945678886\"/>\n\t\t\t\t\t\t\t<reference ref=\"512868991\"/>\n\t\t\t\t\t\t\t<reference ref=\"163117631\"/>\n\t\t\t\t\t\t\t<reference ref=\"31516759\"/>\n\t\t\t\t\t\t\t<reference ref=\"908105787\"/>\n\t\t\t\t\t\t\t<reference ref=\"644046920\"/>\n\t\t\t\t\t\t\t<reference ref=\"231811626\"/>\n\t\t\t\t\t\t\t<reference ref=\"883618387\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"215659978\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">498</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"875092757\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"446991534\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">499</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"630155264\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"446991534\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">500</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"945678886\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"446991534\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">501</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"512868991\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"446991534\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">502</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"163117631\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"446991534\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">503</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"31516759\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"956096989\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"446991534\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">504</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"908105787\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"446991534\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">505</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"644046920\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"446991534\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">506</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"231811626\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"446991534\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">507</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"883618387\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"446991534\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">508</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"956096989\"/>\n\t\t\t\t\t\t<array class=\"NSMutableArray\" key=\"children\">\n\t\t\t\t\t\t\t<reference ref=\"257099033\"/>\n\t\t\t\t\t\t\t<reference ref=\"551969625\"/>\n\t\t\t\t\t\t\t<reference ref=\"249532473\"/>\n\t\t\t\t\t\t\t<reference ref=\"607364498\"/>\n\t\t\t\t\t\t\t<reference ref=\"508151438\"/>\n\t\t\t\t\t\t\t<reference ref=\"981751889\"/>\n\t\t\t\t\t\t\t<reference ref=\"380031999\"/>\n\t\t\t\t\t\t\t<reference ref=\"825984362\"/>\n\t\t\t\t\t\t\t<reference ref=\"560145579\"/>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"31516759\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">509</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"257099033\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"956096989\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">510</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"551969625\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"956096989\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">511</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"249532473\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"956096989\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">512</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"607364498\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"956096989\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">513</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"508151438\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"956096989\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">514</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"981751889\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"956096989\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">515</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"380031999\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"956096989\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">516</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"825984362\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"956096989\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">517</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"560145579\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"956096989\"/>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBObjectRecord\">\n\t\t\t\t\t\t<int key=\"objectID\">534</int>\n\t\t\t\t\t\t<reference key=\"object\" ref=\"738670835\"/>\n\t\t\t\t\t\t<reference key=\"parent\" ref=\"963351320\"/>\n\t\t\t\t\t</object>\n\t\t\t\t</array>\n\t\t\t</object>\n\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"flattenedProperties\">\n\t\t\t\t<string key=\"-1.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"-2.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"-3.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"112.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"124.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"125.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"126.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"129.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"130.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"131.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"134.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"136.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"143.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"144.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"145.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"149.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"150.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"19.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"195.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"196.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"197.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"198.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"199.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"200.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"201.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"202.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"203.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"204.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"205.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"206.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"207.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"208.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"209.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"210.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"211.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"212.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"213.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"214.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"215.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"216.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"217.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"218.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"219.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"220.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"221.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"23.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"236.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"239.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"24.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"29.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"295.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"296.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"297.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"298.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"346.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"348.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"349.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"350.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"351.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"354.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"371.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"371.IBWindowTemplateEditedContentRect\">{{380, 496}, {480, 360}}</string>\n\t\t\t\t<integer value=\"1\" key=\"371.NSWindowTemplate.visibleAtLaunch\"/>\n\t\t\t\t<string key=\"372.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"375.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"376.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"377.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"388.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"389.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"390.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"391.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"392.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"393.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"394.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"395.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"396.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"397.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"398.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"399.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"400.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"401.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"402.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"403.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"404.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"405.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"406.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"407.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"408.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"409.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"410.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"411.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"412.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"413.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"414.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"415.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"416.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"417.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"418.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"419.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"420.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"450.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"451.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"452.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"453.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"454.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"457.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"459.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"460.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"462.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"465.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"466.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"485.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"490.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"491.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"492.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"494.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"496.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"497.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"498.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"499.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"5.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"500.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"501.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"502.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"503.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"504.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"505.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"506.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"507.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"508.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"509.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"510.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"511.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"512.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"513.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"514.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"515.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"516.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"517.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"534.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"56.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"57.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"58.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"72.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"73.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"74.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"75.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"77.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"78.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"79.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"81.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"82.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"83.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t\t<string key=\"92.IBPluginDependency\">com.apple.InterfaceBuilder.CocoaPlugin</string>\n\t\t\t</dictionary>\n\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"unlocalizedProperties\"/>\n\t\t\t<nil key=\"activeLocalization\"/>\n\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"localizations\"/>\n\t\t\t<nil key=\"sourceID\"/>\n\t\t\t<int key=\"maxID\">535</int>\n\t\t</object>\n\t\t<object class=\"IBClassDescriber\" key=\"IBDocument.Classes\">\n\t\t\t<array class=\"NSMutableArray\" key=\"referencedPartialClassDescriptions\">\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">ABCardController</string>\n\t\t\t\t\t<string key=\"superclassName\">NSObject</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"addCardViewField:\">id</string>\n\t\t\t\t\t\t<string key=\"copy:\">id</string>\n\t\t\t\t\t\t<string key=\"cut:\">id</string>\n\t\t\t\t\t\t<string key=\"doDelete:\">id</string>\n\t\t\t\t\t\t<string key=\"find:\">id</string>\n\t\t\t\t\t\t<string key=\"paste:\">id</string>\n\t\t\t\t\t\t<string key=\"saveChanges:\">id</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"addCardViewField:\">\n\t\t\t\t\t\t\t<string key=\"name\">addCardViewField:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"copy:\">\n\t\t\t\t\t\t\t<string key=\"name\">copy:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"cut:\">\n\t\t\t\t\t\t\t<string key=\"name\">cut:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"doDelete:\">\n\t\t\t\t\t\t\t<string key=\"name\">doDelete:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"find:\">\n\t\t\t\t\t\t\t<string key=\"name\">find:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"paste:\">\n\t\t\t\t\t\t\t<string key=\"name\">paste:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"saveChanges:\">\n\t\t\t\t\t\t\t<string key=\"name\">saveChanges:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"mCardView\">ABCardView</string>\n\t\t\t\t\t\t<string key=\"mEditButton\">NSButton</string>\n\t\t\t\t\t\t<string key=\"mManagedObjectContext\">NSManagedObjectContext</string>\n\t\t\t\t\t\t<string key=\"mSearchField\">NSSearchField</string>\n\t\t\t\t\t\t<string key=\"mStatusTextField\">NSTextField</string>\n\t\t\t\t\t\t<string key=\"mWindow\">NSWindow</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"mCardView\">\n\t\t\t\t\t\t\t<string key=\"name\">mCardView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">ABCardView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"mEditButton\">\n\t\t\t\t\t\t\t<string key=\"name\">mEditButton</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSButton</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"mManagedObjectContext\">\n\t\t\t\t\t\t\t<string key=\"name\">mManagedObjectContext</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSManagedObjectContext</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"mSearchField\">\n\t\t\t\t\t\t\t<string key=\"name\">mSearchField</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSSearchField</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"mStatusTextField\">\n\t\t\t\t\t\t\t<string key=\"name\">mStatusTextField</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSTextField</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"mWindow\">\n\t\t\t\t\t\t\t<string key=\"name\">mWindow</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSWindow</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/ABCardController.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">ABCardView</string>\n\t\t\t\t\t<string key=\"superclassName\">NSView</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"commitAndSave:\">id</string>\n\t\t\t\t\t\t<string key=\"statusImageClicked:\">id</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"commitAndSave:\">\n\t\t\t\t\t\t\t<string key=\"name\">commitAndSave:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"statusImageClicked:\">\n\t\t\t\t\t\t\t<string key=\"name\">statusImageClicked:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"mBindingsController\">NSObjectController</string>\n\t\t\t\t\t\t<string key=\"mBuddyStatusImage\">NSImageView</string>\n\t\t\t\t\t\t<string key=\"mHeaderView\">NSView</string>\n\t\t\t\t\t\t<string key=\"mNameView\">ABNameFrameView</string>\n\t\t\t\t\t\t<string key=\"mNextKeyView\">NSView</string>\n\t\t\t\t\t\t<string key=\"mUserImage\">NSImage</string>\n\t\t\t\t\t\t<string key=\"mUserImageView\">ABImageView</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"mBindingsController\">\n\t\t\t\t\t\t\t<string key=\"name\">mBindingsController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSObjectController</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"mBuddyStatusImage\">\n\t\t\t\t\t\t\t<string key=\"name\">mBuddyStatusImage</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSImageView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"mHeaderView\">\n\t\t\t\t\t\t\t<string key=\"name\">mHeaderView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"mNameView\">\n\t\t\t\t\t\t\t<string key=\"name\">mNameView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">ABNameFrameView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"mNextKeyView\">\n\t\t\t\t\t\t\t<string key=\"name\">mNextKeyView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"mUserImage\">\n\t\t\t\t\t\t\t<string key=\"name\">mUserImage</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSImage</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"mUserImageView\">\n\t\t\t\t\t\t\t<string key=\"name\">mUserImageView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">ABImageView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/ABCardView.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">ABImageView</string>\n\t\t\t\t\t<string key=\"superclassName\">NSImageView</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"copy:\">id</string>\n\t\t\t\t\t\t<string key=\"cut:\">id</string>\n\t\t\t\t\t\t<string key=\"delete:\">id</string>\n\t\t\t\t\t\t<string key=\"paste:\">id</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"copy:\">\n\t\t\t\t\t\t\t<string key=\"name\">copy:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"cut:\">\n\t\t\t\t\t\t\t<string key=\"name\">cut:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"delete:\">\n\t\t\t\t\t\t\t<string key=\"name\">delete:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"paste:\">\n\t\t\t\t\t\t\t<string key=\"name\">paste:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/ABImageView.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">DVTBorderedView</string>\n\t\t\t\t\t<string key=\"superclassName\">DVTLayoutView_ML</string>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">contentView</string>\n\t\t\t\t\t\t<string key=\"NS.object.0\">NSView</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">contentView</string>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"NS.object.0\">\n\t\t\t\t\t\t\t<string key=\"name\">contentView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/DVTBorderedView.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">DVTDelayedMenuButton</string>\n\t\t\t\t\t<string key=\"superclassName\">NSButton</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/DVTDelayedMenuButton.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">DVTGradientImageButton</string>\n\t\t\t\t\t<string key=\"superclassName\">NSButton</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/DVTGradientImageButton.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">DVTImageAndTextCell</string>\n\t\t\t\t\t<string key=\"superclassName\">NSTextFieldCell</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/DVTImageAndTextCell.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">DVTImageAndTextColumn</string>\n\t\t\t\t\t<string key=\"superclassName\">NSTableColumn</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/DVTImageAndTextColumn.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">DVTLayoutView_ML</string>\n\t\t\t\t\t<string key=\"superclassName\">NSView</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/DVTLayoutView_ML.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">DVTOutlineView</string>\n\t\t\t\t\t<string key=\"superclassName\">NSOutlineView</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/DVTOutlineView.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">DVTSplitView</string>\n\t\t\t\t\t<string key=\"superclassName\">NSSplitView</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/DVTSplitView.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">DVTStackView_ML</string>\n\t\t\t\t\t<string key=\"superclassName\">DVTLayoutView_ML</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/DVTStackView_ML.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">DVTTableView</string>\n\t\t\t\t\t<string key=\"superclassName\">NSTableView</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/DVTTableView.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">DVTViewController</string>\n\t\t\t\t\t<string key=\"superclassName\">NSViewController</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/DVTViewController.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">HFController</string>\n\t\t\t\t\t<string key=\"superclassName\">NSObject</string>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">selectAll:</string>\n\t\t\t\t\t\t<string key=\"NS.object.0\">id</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">selectAll:</string>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"NS.object.0\">\n\t\t\t\t\t\t\t<string key=\"name\">selectAll:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/HFController.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">HFRepresenterTextView</string>\n\t\t\t\t\t<string key=\"superclassName\">NSView</string>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">selectAll:</string>\n\t\t\t\t\t\t<string key=\"NS.object.0\">id</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">selectAll:</string>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"NS.object.0\">\n\t\t\t\t\t\t\t<string key=\"name\">selectAll:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/HFRepresenterTextView.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IBEditor</string>\n\t\t\t\t\t<string key=\"superclassName\">NSObject</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"changeFont:\">id</string>\n\t\t\t\t\t\t<string key=\"performCopy:\">id</string>\n\t\t\t\t\t\t<string key=\"performCut:\">id</string>\n\t\t\t\t\t\t<string key=\"selectAll:\">id</string>\n\t\t\t\t\t\t<string key=\"sizeSelectionToFit:\">id</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"changeFont:\">\n\t\t\t\t\t\t\t<string key=\"name\">changeFont:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"performCopy:\">\n\t\t\t\t\t\t\t<string key=\"name\">performCopy:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"performCut:\">\n\t\t\t\t\t\t\t<string key=\"name\">performCut:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"selectAll:\">\n\t\t\t\t\t\t\t<string key=\"name\">selectAll:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"sizeSelectionToFit:\">\n\t\t\t\t\t\t\t<string key=\"name\">sizeSelectionToFit:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IBEditor.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDECapsuleListView</string>\n\t\t\t\t\t<string key=\"superclassName\">DVTStackView_ML</string>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">dataSource</string>\n\t\t\t\t\t\t<string key=\"NS.object.0\">id</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">dataSource</string>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"NS.object.0\">\n\t\t\t\t\t\t\t<string key=\"name\">dataSource</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDECapsuleListView.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEDMArrayController</string>\n\t\t\t\t\t<string key=\"superclassName\">NSArrayController</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEDMArrayController.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEDMEditor</string>\n\t\t\t\t\t<string key=\"superclassName\">IDEEditor</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"bottomToolbarBorderView\">DVTBorderedView</string>\n\t\t\t\t\t\t<string key=\"sourceListSplitViewPane\">NSView</string>\n\t\t\t\t\t\t<string key=\"sourceListViewController\">IDEDMEditorSourceListController</string>\n\t\t\t\t\t\t<string key=\"splitView\">DVTSplitView</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"bottomToolbarBorderView\">\n\t\t\t\t\t\t\t<string key=\"name\">bottomToolbarBorderView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">DVTBorderedView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"sourceListSplitViewPane\">\n\t\t\t\t\t\t\t<string key=\"name\">sourceListSplitViewPane</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"sourceListViewController\">\n\t\t\t\t\t\t\t<string key=\"name\">sourceListViewController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDMEditorSourceListController</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"splitView\">\n\t\t\t\t\t\t\t<string key=\"name\">splitView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">DVTSplitView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEDMEditor.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEDMEditorController</string>\n\t\t\t\t\t<string key=\"superclassName\">IDEViewController</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEDMEditorController.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEDMEditorSourceListController</string>\n\t\t\t\t\t<string key=\"superclassName\">IDEDMEditorController</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"borderedView\">DVTBorderedView</string>\n\t\t\t\t\t\t<string key=\"parentEditor\">IDEDMEditor</string>\n\t\t\t\t\t\t<string key=\"primaryColumn\">DVTImageAndTextColumn</string>\n\t\t\t\t\t\t<string key=\"sourceListOutlineView\">DVTOutlineView</string>\n\t\t\t\t\t\t<string key=\"sourceListTreeController\">NSTreeController</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"borderedView\">\n\t\t\t\t\t\t\t<string key=\"name\">borderedView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">DVTBorderedView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"parentEditor\">\n\t\t\t\t\t\t\t<string key=\"name\">parentEditor</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDMEditor</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"primaryColumn\">\n\t\t\t\t\t\t\t<string key=\"name\">primaryColumn</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">DVTImageAndTextColumn</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"sourceListOutlineView\">\n\t\t\t\t\t\t\t<string key=\"name\">sourceListOutlineView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">DVTOutlineView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"sourceListTreeController\">\n\t\t\t\t\t\t\t<string key=\"name\">sourceListTreeController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSTreeController</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEDMEditorSourceListController.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEDMHighlightImageAndTextCell</string>\n\t\t\t\t\t<string key=\"superclassName\">DVTImageAndTextCell</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEDMHighlightImageAndTextCell.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEDataModelBrowserEditor</string>\n\t\t\t\t\t<string key=\"superclassName\">IDEDMEditorController</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"attributesTableViewController\">IDEDataModelPropertiesTableController</string>\n\t\t\t\t\t\t<string key=\"capsuleView\">IDECapsuleListView</string>\n\t\t\t\t\t\t<string key=\"entityArrayController\">NSArrayController</string>\n\t\t\t\t\t\t<string key=\"fetchedPropertiesTableViewController\">IDEDataModelPropertiesTableController</string>\n\t\t\t\t\t\t<string key=\"parentEditor\">IDEDataModelEntityContentsEditor</string>\n\t\t\t\t\t\t<string key=\"relationshipsTableViewController\">IDEDataModelPropertiesTableController</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"attributesTableViewController\">\n\t\t\t\t\t\t\t<string key=\"name\">attributesTableViewController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDataModelPropertiesTableController</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"capsuleView\">\n\t\t\t\t\t\t\t<string key=\"name\">capsuleView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDECapsuleListView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"entityArrayController\">\n\t\t\t\t\t\t\t<string key=\"name\">entityArrayController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSArrayController</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"fetchedPropertiesTableViewController\">\n\t\t\t\t\t\t\t<string key=\"name\">fetchedPropertiesTableViewController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDataModelPropertiesTableController</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"parentEditor\">\n\t\t\t\t\t\t\t<string key=\"name\">parentEditor</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDataModelEntityContentsEditor</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"relationshipsTableViewController\">\n\t\t\t\t\t\t\t<string key=\"name\">relationshipsTableViewController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDataModelPropertiesTableController</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEDataModelBrowserEditor.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEDataModelConfigurationEditor</string>\n\t\t\t\t\t<string key=\"superclassName\">IDEDMEditorController</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"capsuleListView\">IDECapsuleListView</string>\n\t\t\t\t\t\t<string key=\"parentEditor\">IDEDataModelEditor</string>\n\t\t\t\t\t\t<string key=\"tableController\">IDEDataModelConfigurationTableController</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"capsuleListView\">\n\t\t\t\t\t\t\t<string key=\"name\">capsuleListView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDECapsuleListView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"parentEditor\">\n\t\t\t\t\t\t\t<string key=\"name\">parentEditor</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDataModelEditor</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"tableController\">\n\t\t\t\t\t\t\t<string key=\"name\">tableController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDataModelConfigurationTableController</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEDataModelConfigurationEditor.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEDataModelConfigurationTableController</string>\n\t\t\t\t\t<string key=\"superclassName\">IDEDMEditorController</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"configurationsArrayController\">NSArrayController</string>\n\t\t\t\t\t\t<string key=\"entitiesArrayController\">NSArrayController</string>\n\t\t\t\t\t\t<string key=\"parentEditor\">IDEDataModelConfigurationEditor</string>\n\t\t\t\t\t\t<string key=\"tableView\">XDTableView</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"configurationsArrayController\">\n\t\t\t\t\t\t\t<string key=\"name\">configurationsArrayController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSArrayController</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"entitiesArrayController\">\n\t\t\t\t\t\t\t<string key=\"name\">entitiesArrayController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSArrayController</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"parentEditor\">\n\t\t\t\t\t\t\t<string key=\"name\">parentEditor</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDataModelConfigurationEditor</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"tableView\">\n\t\t\t\t\t\t\t<string key=\"name\">tableView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">XDTableView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEDataModelConfigurationTableController.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEDataModelDiagramEditor</string>\n\t\t\t\t\t<string key=\"superclassName\">IDEDMEditorController</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"diagramView\">XDDiagramView</string>\n\t\t\t\t\t\t<string key=\"parentEditor\">IDEDataModelEntityContentsEditor</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"diagramView\">\n\t\t\t\t\t\t\t<string key=\"name\">diagramView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">XDDiagramView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"parentEditor\">\n\t\t\t\t\t\t\t<string key=\"name\">parentEditor</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDataModelEntityContentsEditor</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEDataModelDiagramEditor.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEDataModelEditor</string>\n\t\t\t\t\t<string key=\"superclassName\">IDEDMEditor</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"addEntityButton\">DVTDelayedMenuButton</string>\n\t\t\t\t\t\t<string key=\"addPropertyButton\">DVTDelayedMenuButton</string>\n\t\t\t\t\t\t<string key=\"browserDiagramSegmentControl\">NSSegmentedControl</string>\n\t\t\t\t\t\t<string key=\"configurationViewController\">IDEDataModelConfigurationEditor</string>\n\t\t\t\t\t\t<string key=\"entityContentsViewController\">IDEDataModelEntityContentsEditor</string>\n\t\t\t\t\t\t<string key=\"fetchRequestViewController\">IDEDataModelFetchRequestEditor</string>\n\t\t\t\t\t\t<string key=\"hierarchySegmentControl\">NSSegmentedControl</string>\n\t\t\t\t\t\t<string key=\"tabView\">NSTabView</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"addEntityButton\">\n\t\t\t\t\t\t\t<string key=\"name\">addEntityButton</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">DVTDelayedMenuButton</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"addPropertyButton\">\n\t\t\t\t\t\t\t<string key=\"name\">addPropertyButton</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">DVTDelayedMenuButton</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"browserDiagramSegmentControl\">\n\t\t\t\t\t\t\t<string key=\"name\">browserDiagramSegmentControl</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSSegmentedControl</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"configurationViewController\">\n\t\t\t\t\t\t\t<string key=\"name\">configurationViewController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDataModelConfigurationEditor</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"entityContentsViewController\">\n\t\t\t\t\t\t\t<string key=\"name\">entityContentsViewController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDataModelEntityContentsEditor</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"fetchRequestViewController\">\n\t\t\t\t\t\t\t<string key=\"name\">fetchRequestViewController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDataModelFetchRequestEditor</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"hierarchySegmentControl\">\n\t\t\t\t\t\t\t<string key=\"name\">hierarchySegmentControl</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSSegmentedControl</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"tabView\">\n\t\t\t\t\t\t\t<string key=\"name\">tabView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSTabView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEDataModelEditor.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEDataModelEntityContentsEditor</string>\n\t\t\t\t\t<string key=\"superclassName\">IDEDMEditorController</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"browserViewController\">IDEDataModelBrowserEditor</string>\n\t\t\t\t\t\t<string key=\"diagramViewController\">IDEDataModelDiagramEditor</string>\n\t\t\t\t\t\t<string key=\"parentEditor\">IDEDataModelEditor</string>\n\t\t\t\t\t\t<string key=\"tabView\">NSTabView</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"browserViewController\">\n\t\t\t\t\t\t\t<string key=\"name\">browserViewController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDataModelBrowserEditor</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"diagramViewController\">\n\t\t\t\t\t\t\t<string key=\"name\">diagramViewController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDataModelDiagramEditor</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"parentEditor\">\n\t\t\t\t\t\t\t<string key=\"name\">parentEditor</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDataModelEditor</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"tabView\">\n\t\t\t\t\t\t\t<string key=\"name\">tabView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSTabView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEDataModelEntityContentsEditor.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEDataModelFetchRequestEditor</string>\n\t\t\t\t\t<string key=\"superclassName\">IDEDMEditorController</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"entityController\">NSArrayController</string>\n\t\t\t\t\t\t<string key=\"parentEditor\">IDEDataModelEditor</string>\n\t\t\t\t\t\t<string key=\"tableView\">IDECapsuleListView</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"entityController\">\n\t\t\t\t\t\t\t<string key=\"name\">entityController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSArrayController</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"parentEditor\">\n\t\t\t\t\t\t\t<string key=\"name\">parentEditor</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDataModelEditor</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"tableView\">\n\t\t\t\t\t\t\t<string key=\"name\">tableView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDECapsuleListView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEDataModelFetchRequestEditor.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEDataModelPropertiesTableController</string>\n\t\t\t\t\t<string key=\"superclassName\">IDEDMEditorController</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"arrayController\">IDEDMArrayController</string>\n\t\t\t\t\t\t<string key=\"entitiesColumn\">NSTableColumn</string>\n\t\t\t\t\t\t<string key=\"entityArrayController\">NSArrayController</string>\n\t\t\t\t\t\t<string key=\"parentEditor\">IDEDataModelBrowserEditor</string>\n\t\t\t\t\t\t<string key=\"propertyNameAndImageCell\">IDEDMHighlightImageAndTextCell</string>\n\t\t\t\t\t\t<string key=\"tableView\">XDTableView</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"arrayController\">\n\t\t\t\t\t\t\t<string key=\"name\">arrayController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDMArrayController</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"entitiesColumn\">\n\t\t\t\t\t\t\t<string key=\"name\">entitiesColumn</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSTableColumn</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"entityArrayController\">\n\t\t\t\t\t\t\t<string key=\"name\">entityArrayController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSArrayController</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"parentEditor\">\n\t\t\t\t\t\t\t<string key=\"name\">parentEditor</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDataModelBrowserEditor</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"propertyNameAndImageCell\">\n\t\t\t\t\t\t\t<string key=\"name\">propertyNameAndImageCell</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDMHighlightImageAndTextCell</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"tableView\">\n\t\t\t\t\t\t\t<string key=\"name\">tableView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">XDTableView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEDataModelPropertiesTableController.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEDocDownloadsTableViewController</string>\n\t\t\t\t\t<string key=\"superclassName\">NSObject</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"_downloadButtonCell\">NSButtonCell</string>\n\t\t\t\t\t\t<string key=\"_tableView\">DVTTableView</string>\n\t\t\t\t\t\t<string key=\"prefPaneController\">IDEDocViewingPrefPaneController</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_downloadButtonCell\">\n\t\t\t\t\t\t\t<string key=\"name\">_downloadButtonCell</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSButtonCell</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_tableView\">\n\t\t\t\t\t\t\t<string key=\"name\">_tableView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">DVTTableView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"prefPaneController\">\n\t\t\t\t\t\t\t<string key=\"name\">prefPaneController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDocViewingPrefPaneController</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEDocDownloadsTableViewController.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEDocSetOutlineView</string>\n\t\t\t\t\t<string key=\"superclassName\">NSOutlineView</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEDocSetOutlineView.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEDocSetOutlineViewController</string>\n\t\t\t\t\t<string key=\"superclassName\">NSObject</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"getDocSetAction:\">id</string>\n\t\t\t\t\t\t<string key=\"showProblemInfoForUpdate:\">id</string>\n\t\t\t\t\t\t<string key=\"subscribeToPublisherAction:\">id</string>\n\t\t\t\t\t\t<string key=\"unsubscribeFromPublisher:\">id</string>\n\t\t\t\t\t\t<string key=\"updateDocSetAction:\">id</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"getDocSetAction:\">\n\t\t\t\t\t\t\t<string key=\"name\">getDocSetAction:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"showProblemInfoForUpdate:\">\n\t\t\t\t\t\t\t<string key=\"name\">showProblemInfoForUpdate:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"subscribeToPublisherAction:\">\n\t\t\t\t\t\t\t<string key=\"name\">subscribeToPublisherAction:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"unsubscribeFromPublisher:\">\n\t\t\t\t\t\t\t<string key=\"name\">unsubscribeFromPublisher:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"updateDocSetAction:\">\n\t\t\t\t\t\t\t<string key=\"name\">updateDocSetAction:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">docSetOutlineView</string>\n\t\t\t\t\t\t<string key=\"NS.object.0\">IDEDocSetOutlineView</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">docSetOutlineView</string>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"NS.object.0\">\n\t\t\t\t\t\t\t<string key=\"name\">docSetOutlineView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDocSetOutlineView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEDocSetOutlineViewController.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEDocViewingPrefPaneController</string>\n\t\t\t\t\t<string key=\"superclassName\">IDEViewController</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"addSubscription:\">id</string>\n\t\t\t\t\t\t<string key=\"checkForAndInstallUpdatesNow:\">id</string>\n\t\t\t\t\t\t<string key=\"deleteDocSet:\">id</string>\n\t\t\t\t\t\t<string key=\"downloadAction:\">id</string>\n\t\t\t\t\t\t<string key=\"minimumFontSizeComboBoxAction:\">id</string>\n\t\t\t\t\t\t<string key=\"minimumFontSizeEnabledAction:\">id</string>\n\t\t\t\t\t\t<string key=\"showHelp:\">id</string>\n\t\t\t\t\t\t<string key=\"showSubscriptionSheet:\">id</string>\n\t\t\t\t\t\t<string key=\"subscriptionCancelAction:\">id</string>\n\t\t\t\t\t\t<string key=\"toggleAutoCheckForAndInstallUpdates:\">id</string>\n\t\t\t\t\t\t<string key=\"toggleDocSetInfo:\">id</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"addSubscription:\">\n\t\t\t\t\t\t\t<string key=\"name\">addSubscription:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"checkForAndInstallUpdatesNow:\">\n\t\t\t\t\t\t\t<string key=\"name\">checkForAndInstallUpdatesNow:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"deleteDocSet:\">\n\t\t\t\t\t\t\t<string key=\"name\">deleteDocSet:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"downloadAction:\">\n\t\t\t\t\t\t\t<string key=\"name\">downloadAction:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"minimumFontSizeComboBoxAction:\">\n\t\t\t\t\t\t\t<string key=\"name\">minimumFontSizeComboBoxAction:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"minimumFontSizeEnabledAction:\">\n\t\t\t\t\t\t\t<string key=\"name\">minimumFontSizeEnabledAction:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"showHelp:\">\n\t\t\t\t\t\t\t<string key=\"name\">showHelp:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"showSubscriptionSheet:\">\n\t\t\t\t\t\t\t<string key=\"name\">showSubscriptionSheet:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"subscriptionCancelAction:\">\n\t\t\t\t\t\t\t<string key=\"name\">subscriptionCancelAction:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"toggleAutoCheckForAndInstallUpdates:\">\n\t\t\t\t\t\t\t<string key=\"name\">toggleAutoCheckForAndInstallUpdates:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"toggleDocSetInfo:\">\n\t\t\t\t\t\t\t<string key=\"name\">toggleDocSetInfo:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"_addButton\">DVTGradientImageButton</string>\n\t\t\t\t\t\t<string key=\"_deleteButton\">DVTGradientImageButton</string>\n\t\t\t\t\t\t<string key=\"_showInfoAreaButton\">DVTGradientImageButton</string>\n\t\t\t\t\t\t<string key=\"_splitView\">NSSplitView</string>\n\t\t\t\t\t\t<string key=\"_splitViewDocSetInfoSubview\">NSView</string>\n\t\t\t\t\t\t<string key=\"_splitViewDocSetsListSubview\">NSView</string>\n\t\t\t\t\t\t<string key=\"borderedViewAroundSplitView\">DVTBorderedView</string>\n\t\t\t\t\t\t<string key=\"borderedViewBelowTable\">DVTBorderedView</string>\n\t\t\t\t\t\t<string key=\"checkAndInstallNowButton\">NSButton</string>\n\t\t\t\t\t\t<string key=\"docSetInfoTextView\">NSTextView</string>\n\t\t\t\t\t\t<string key=\"docSetOutlineViewController\">IDEDocSetOutlineViewController</string>\n\t\t\t\t\t\t<string key=\"downloadsTableViewController\">IDEDocDownloadsTableViewController</string>\n\t\t\t\t\t\t<string key=\"minimumFontSizeControl\">NSComboBox</string>\n\t\t\t\t\t\t<string key=\"noUpdatesAvailableMessage\">NSTextField</string>\n\t\t\t\t\t\t<string key=\"showInfoButton\">NSButton</string>\n\t\t\t\t\t\t<string key=\"subscriptionTextField\">NSTextField</string>\n\t\t\t\t\t\t<string key=\"subscriptionWindow\">NSWindow</string>\n\t\t\t\t\t\t<string key=\"validateAddSubscriptionButton\">NSButton</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_addButton\">\n\t\t\t\t\t\t\t<string key=\"name\">_addButton</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">DVTGradientImageButton</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_deleteButton\">\n\t\t\t\t\t\t\t<string key=\"name\">_deleteButton</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">DVTGradientImageButton</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_showInfoAreaButton\">\n\t\t\t\t\t\t\t<string key=\"name\">_showInfoAreaButton</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">DVTGradientImageButton</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_splitView\">\n\t\t\t\t\t\t\t<string key=\"name\">_splitView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSSplitView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_splitViewDocSetInfoSubview\">\n\t\t\t\t\t\t\t<string key=\"name\">_splitViewDocSetInfoSubview</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"_splitViewDocSetsListSubview\">\n\t\t\t\t\t\t\t<string key=\"name\">_splitViewDocSetsListSubview</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"borderedViewAroundSplitView\">\n\t\t\t\t\t\t\t<string key=\"name\">borderedViewAroundSplitView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">DVTBorderedView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"borderedViewBelowTable\">\n\t\t\t\t\t\t\t<string key=\"name\">borderedViewBelowTable</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">DVTBorderedView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"checkAndInstallNowButton\">\n\t\t\t\t\t\t\t<string key=\"name\">checkAndInstallNowButton</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSButton</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"docSetInfoTextView\">\n\t\t\t\t\t\t\t<string key=\"name\">docSetInfoTextView</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSTextView</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"docSetOutlineViewController\">\n\t\t\t\t\t\t\t<string key=\"name\">docSetOutlineViewController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDocSetOutlineViewController</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"downloadsTableViewController\">\n\t\t\t\t\t\t\t<string key=\"name\">downloadsTableViewController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDocDownloadsTableViewController</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"minimumFontSizeControl\">\n\t\t\t\t\t\t\t<string key=\"name\">minimumFontSizeControl</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSComboBox</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"noUpdatesAvailableMessage\">\n\t\t\t\t\t\t\t<string key=\"name\">noUpdatesAvailableMessage</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSTextField</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"showInfoButton\">\n\t\t\t\t\t\t\t<string key=\"name\">showInfoButton</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSButton</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"subscriptionTextField\">\n\t\t\t\t\t\t\t<string key=\"name\">subscriptionTextField</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSTextField</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"subscriptionWindow\">\n\t\t\t\t\t\t\t<string key=\"name\">subscriptionWindow</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSWindow</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"validateAddSubscriptionButton\">\n\t\t\t\t\t\t\t<string key=\"name\">validateAddSubscriptionButton</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSButton</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEDocViewingPrefPaneController.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEEditor</string>\n\t\t\t\t\t<string key=\"superclassName\">IDEViewController</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEEditor.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IDEViewController</string>\n\t\t\t\t\t<string key=\"superclassName\">DVTViewController</string>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IDEViewController.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">IKImageView</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"copy:\">id</string>\n\t\t\t\t\t\t<string key=\"crop:\">id</string>\n\t\t\t\t\t\t<string key=\"cut:\">id</string>\n\t\t\t\t\t\t<string key=\"paste:\">id</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"copy:\">\n\t\t\t\t\t\t\t<string key=\"name\">copy:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"crop:\">\n\t\t\t\t\t\t\t<string key=\"name\">crop:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"cut:\">\n\t\t\t\t\t\t\t<string key=\"name\">cut:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"paste:\">\n\t\t\t\t\t\t\t<string key=\"name\">paste:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/IKImageView.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">NSDocument</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"printDocument:\">id</string>\n\t\t\t\t\t\t<string key=\"revertDocumentToSaved:\">id</string>\n\t\t\t\t\t\t<string key=\"runPageLayout:\">id</string>\n\t\t\t\t\t\t<string key=\"saveDocument:\">id</string>\n\t\t\t\t\t\t<string key=\"saveDocumentAs:\">id</string>\n\t\t\t\t\t\t<string key=\"saveDocumentTo:\">id</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"printDocument:\">\n\t\t\t\t\t\t\t<string key=\"name\">printDocument:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"revertDocumentToSaved:\">\n\t\t\t\t\t\t\t<string key=\"name\">revertDocumentToSaved:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"runPageLayout:\">\n\t\t\t\t\t\t\t<string key=\"name\">runPageLayout:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"saveDocument:\">\n\t\t\t\t\t\t\t<string key=\"name\">saveDocument:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"saveDocumentAs:\">\n\t\t\t\t\t\t\t<string key=\"name\">saveDocumentAs:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"saveDocumentTo:\">\n\t\t\t\t\t\t\t<string key=\"name\">saveDocumentTo:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/NSDocument.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">NSResponder</string>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">_insertFindPattern:</string>\n\t\t\t\t\t\t<string key=\"NS.object.0\">id</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">_insertFindPattern:</string>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"NS.object.0\">\n\t\t\t\t\t\t\t<string key=\"name\">_insertFindPattern:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/NSResponder.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">QLPreviewBubble</string>\n\t\t\t\t\t<string key=\"superclassName\">NSObject</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"hide:\">id</string>\n\t\t\t\t\t\t<string key=\"show:\">id</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"hide:\">\n\t\t\t\t\t\t\t<string key=\"name\">hide:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"show:\">\n\t\t\t\t\t\t\t<string key=\"name\">show:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">parentWindow</string>\n\t\t\t\t\t\t<string key=\"NS.object.0\">NSWindow</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">parentWindow</string>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"NS.object.0\">\n\t\t\t\t\t\t\t<string key=\"name\">parentWindow</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">NSWindow</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/QLPreviewBubble.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">QTMovieView</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"showAll:\">id</string>\n\t\t\t\t\t\t<string key=\"showCustomButton:\">id</string>\n\t\t\t\t\t\t<string key=\"toggleLoops:\">id</string>\n\t\t\t\t\t\t<string key=\"zoomIn:\">id</string>\n\t\t\t\t\t\t<string key=\"zoomOut:\">id</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"showAll:\">\n\t\t\t\t\t\t\t<string key=\"name\">showAll:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"showCustomButton:\">\n\t\t\t\t\t\t\t<string key=\"name\">showCustomButton:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"toggleLoops:\">\n\t\t\t\t\t\t\t<string key=\"name\">toggleLoops:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"zoomIn:\">\n\t\t\t\t\t\t\t<string key=\"name\">zoomIn:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"zoomOut:\">\n\t\t\t\t\t\t\t<string key=\"name\">zoomOut:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/QTMovieView.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">WebView</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"reloadFromOrigin:\">id</string>\n\t\t\t\t\t\t<string key=\"resetPageZoom:\">id</string>\n\t\t\t\t\t\t<string key=\"zoomPageIn:\">id</string>\n\t\t\t\t\t\t<string key=\"zoomPageOut:\">id</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"reloadFromOrigin:\">\n\t\t\t\t\t\t\t<string key=\"name\">reloadFromOrigin:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"resetPageZoom:\">\n\t\t\t\t\t\t\t<string key=\"name\">resetPageZoom:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"zoomPageIn:\">\n\t\t\t\t\t\t\t<string key=\"name\">zoomPageIn:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"zoomPageOut:\">\n\t\t\t\t\t\t\t<string key=\"name\">zoomPageOut:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/WebView.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">XDDiagramView</string>\n\t\t\t\t\t<string key=\"superclassName\">NSView</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"_graphLayouterMenuItemAction:\">id</string>\n\t\t\t\t\t\t<string key=\"_zoomPopUpButtonAction:\">id</string>\n\t\t\t\t\t\t<string key=\"alignBottomEdges:\">id</string>\n\t\t\t\t\t\t<string key=\"alignCentersHorizontallyInContainer:\">id</string>\n\t\t\t\t\t\t<string key=\"alignCentersVerticallyInContainer:\">id</string>\n\t\t\t\t\t\t<string key=\"alignHorizontalCenters:\">id</string>\n\t\t\t\t\t\t<string key=\"alignLeftEdges:\">id</string>\n\t\t\t\t\t\t<string key=\"alignRightEdges:\">id</string>\n\t\t\t\t\t\t<string key=\"alignTopEdges:\">id</string>\n\t\t\t\t\t\t<string key=\"alignVerticalCenters:\">id</string>\n\t\t\t\t\t\t<string key=\"bringToFront:\">id</string>\n\t\t\t\t\t\t<string key=\"collapseAllCompartments:\">id</string>\n\t\t\t\t\t\t<string key=\"copy:\">id</string>\n\t\t\t\t\t\t<string key=\"cut:\">id</string>\n\t\t\t\t\t\t<string key=\"delete:\">id</string>\n\t\t\t\t\t\t<string key=\"deleteBackward:\">id</string>\n\t\t\t\t\t\t<string key=\"deleteForward:\">id</string>\n\t\t\t\t\t\t<string key=\"deselectAll:\">id</string>\n\t\t\t\t\t\t<string key=\"diagramZoomIn:\">id</string>\n\t\t\t\t\t\t<string key=\"diagramZoomOut:\">id</string>\n\t\t\t\t\t\t<string key=\"expandAllCompartments:\">id</string>\n\t\t\t\t\t\t<string key=\"flipHorizontally:\">id</string>\n\t\t\t\t\t\t<string key=\"flipVertically:\">id</string>\n\t\t\t\t\t\t<string key=\"layoutGraphicsConcentrically:\">id</string>\n\t\t\t\t\t\t<string key=\"layoutGraphicsHierarchically:\">id</string>\n\t\t\t\t\t\t<string key=\"lock:\">id</string>\n\t\t\t\t\t\t<string key=\"makeSameHeight:\">id</string>\n\t\t\t\t\t\t<string key=\"makeSameWidth:\">id</string>\n\t\t\t\t\t\t<string key=\"moveDown:\">id</string>\n\t\t\t\t\t\t<string key=\"moveDownAndModifySelection:\">id</string>\n\t\t\t\t\t\t<string key=\"moveLeft:\">id</string>\n\t\t\t\t\t\t<string key=\"moveLeftAndModifySelection:\">id</string>\n\t\t\t\t\t\t<string key=\"moveRight:\">id</string>\n\t\t\t\t\t\t<string key=\"moveRightAndModifySelection:\">id</string>\n\t\t\t\t\t\t<string key=\"moveUp:\">id</string>\n\t\t\t\t\t\t<string key=\"moveUpAndModifySelection:\">id</string>\n\t\t\t\t\t\t<string key=\"paste:\">id</string>\n\t\t\t\t\t\t<string key=\"rollDownAllCompartments:\">id</string>\n\t\t\t\t\t\t<string key=\"rollUpAllCompartments:\">id</string>\n\t\t\t\t\t\t<string key=\"selectAll:\">id</string>\n\t\t\t\t\t\t<string key=\"sendToBack:\">id</string>\n\t\t\t\t\t\t<string key=\"sizeToFit:\">id</string>\n\t\t\t\t\t\t<string key=\"toggleGridShown:\">id</string>\n\t\t\t\t\t\t<string key=\"toggleHiddenGraphicsShown:\">id</string>\n\t\t\t\t\t\t<string key=\"togglePageBreaksShown:\">id</string>\n\t\t\t\t\t\t<string key=\"toggleRuler:\">id</string>\n\t\t\t\t\t\t<string key=\"toggleSnapsToGrid:\">id</string>\n\t\t\t\t\t\t<string key=\"unlock:\">id</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"_graphLayouterMenuItemAction:\">\n\t\t\t\t\t\t\t<string key=\"name\">_graphLayouterMenuItemAction:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"_zoomPopUpButtonAction:\">\n\t\t\t\t\t\t\t<string key=\"name\">_zoomPopUpButtonAction:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"alignBottomEdges:\">\n\t\t\t\t\t\t\t<string key=\"name\">alignBottomEdges:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"alignCentersHorizontallyInContainer:\">\n\t\t\t\t\t\t\t<string key=\"name\">alignCentersHorizontallyInContainer:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"alignCentersVerticallyInContainer:\">\n\t\t\t\t\t\t\t<string key=\"name\">alignCentersVerticallyInContainer:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"alignHorizontalCenters:\">\n\t\t\t\t\t\t\t<string key=\"name\">alignHorizontalCenters:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"alignLeftEdges:\">\n\t\t\t\t\t\t\t<string key=\"name\">alignLeftEdges:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"alignRightEdges:\">\n\t\t\t\t\t\t\t<string key=\"name\">alignRightEdges:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"alignTopEdges:\">\n\t\t\t\t\t\t\t<string key=\"name\">alignTopEdges:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"alignVerticalCenters:\">\n\t\t\t\t\t\t\t<string key=\"name\">alignVerticalCenters:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"bringToFront:\">\n\t\t\t\t\t\t\t<string key=\"name\">bringToFront:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"collapseAllCompartments:\">\n\t\t\t\t\t\t\t<string key=\"name\">collapseAllCompartments:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"copy:\">\n\t\t\t\t\t\t\t<string key=\"name\">copy:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"cut:\">\n\t\t\t\t\t\t\t<string key=\"name\">cut:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"delete:\">\n\t\t\t\t\t\t\t<string key=\"name\">delete:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"deleteBackward:\">\n\t\t\t\t\t\t\t<string key=\"name\">deleteBackward:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"deleteForward:\">\n\t\t\t\t\t\t\t<string key=\"name\">deleteForward:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"deselectAll:\">\n\t\t\t\t\t\t\t<string key=\"name\">deselectAll:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"diagramZoomIn:\">\n\t\t\t\t\t\t\t<string key=\"name\">diagramZoomIn:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"diagramZoomOut:\">\n\t\t\t\t\t\t\t<string key=\"name\">diagramZoomOut:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"expandAllCompartments:\">\n\t\t\t\t\t\t\t<string key=\"name\">expandAllCompartments:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"flipHorizontally:\">\n\t\t\t\t\t\t\t<string key=\"name\">flipHorizontally:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"flipVertically:\">\n\t\t\t\t\t\t\t<string key=\"name\">flipVertically:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"layoutGraphicsConcentrically:\">\n\t\t\t\t\t\t\t<string key=\"name\">layoutGraphicsConcentrically:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"layoutGraphicsHierarchically:\">\n\t\t\t\t\t\t\t<string key=\"name\">layoutGraphicsHierarchically:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"lock:\">\n\t\t\t\t\t\t\t<string key=\"name\">lock:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"makeSameHeight:\">\n\t\t\t\t\t\t\t<string key=\"name\">makeSameHeight:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"makeSameWidth:\">\n\t\t\t\t\t\t\t<string key=\"name\">makeSameWidth:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"moveDown:\">\n\t\t\t\t\t\t\t<string key=\"name\">moveDown:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"moveDownAndModifySelection:\">\n\t\t\t\t\t\t\t<string key=\"name\">moveDownAndModifySelection:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"moveLeft:\">\n\t\t\t\t\t\t\t<string key=\"name\">moveLeft:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"moveLeftAndModifySelection:\">\n\t\t\t\t\t\t\t<string key=\"name\">moveLeftAndModifySelection:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"moveRight:\">\n\t\t\t\t\t\t\t<string key=\"name\">moveRight:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"moveRightAndModifySelection:\">\n\t\t\t\t\t\t\t<string key=\"name\">moveRightAndModifySelection:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"moveUp:\">\n\t\t\t\t\t\t\t<string key=\"name\">moveUp:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"moveUpAndModifySelection:\">\n\t\t\t\t\t\t\t<string key=\"name\">moveUpAndModifySelection:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"paste:\">\n\t\t\t\t\t\t\t<string key=\"name\">paste:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"rollDownAllCompartments:\">\n\t\t\t\t\t\t\t<string key=\"name\">rollDownAllCompartments:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"rollUpAllCompartments:\">\n\t\t\t\t\t\t\t<string key=\"name\">rollUpAllCompartments:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"selectAll:\">\n\t\t\t\t\t\t\t<string key=\"name\">selectAll:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"sendToBack:\">\n\t\t\t\t\t\t\t<string key=\"name\">sendToBack:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"sizeToFit:\">\n\t\t\t\t\t\t\t<string key=\"name\">sizeToFit:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"toggleGridShown:\">\n\t\t\t\t\t\t\t<string key=\"name\">toggleGridShown:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"toggleHiddenGraphicsShown:\">\n\t\t\t\t\t\t\t<string key=\"name\">toggleHiddenGraphicsShown:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"togglePageBreaksShown:\">\n\t\t\t\t\t\t\t<string key=\"name\">togglePageBreaksShown:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"toggleRuler:\">\n\t\t\t\t\t\t\t<string key=\"name\">toggleRuler:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"toggleSnapsToGrid:\">\n\t\t\t\t\t\t\t<string key=\"name\">toggleSnapsToGrid:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"unlock:\">\n\t\t\t\t\t\t\t<string key=\"name\">unlock:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"outlets\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">_diagramController</string>\n\t\t\t\t\t\t<string key=\"NS.object.0\">IDEDataModelDiagramEditor</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"toOneOutletInfosByName\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">_diagramController</string>\n\t\t\t\t\t\t<object class=\"IBToOneOutletInfo\" key=\"NS.object.0\">\n\t\t\t\t\t\t\t<string key=\"name\">_diagramController</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">IDEDataModelDiagramEditor</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/XDDiagramView.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">XDTableView</string>\n\t\t\t\t\t<string key=\"superclassName\">NSTableView</string>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">showAllTableColumns:</string>\n\t\t\t\t\t\t<string key=\"NS.object.0\">id</string>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<string key=\"NS.key.0\">showAllTableColumns:</string>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"NS.object.0\">\n\t\t\t\t\t\t\t<string key=\"name\">showAllTableColumns:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</object>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/XDTableView.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t\t<object class=\"IBPartialClassDescription\">\n\t\t\t\t\t<string key=\"className\">AppDelegate</string>\n\t\t\t\t\t<string key=\"superclassName\">NSObject</string>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actions\">\n\t\t\t\t\t\t<string key=\"applicationShouldTerminate:\">id</string>\n\t\t\t\t\t\t<string key=\"applicationWillFinishLaunching:\">id</string>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<dictionary class=\"NSMutableDictionary\" key=\"actionInfosByName\">\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"applicationShouldTerminate:\">\n\t\t\t\t\t\t\t<string key=\"name\">applicationShouldTerminate:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t\t<object class=\"IBActionInfo\" key=\"applicationWillFinishLaunching:\">\n\t\t\t\t\t\t\t<string key=\"name\">applicationWillFinishLaunching:</string>\n\t\t\t\t\t\t\t<string key=\"candidateClassName\">id</string>\n\t\t\t\t\t\t</object>\n\t\t\t\t\t</dictionary>\n\t\t\t\t\t<object class=\"IBClassDescriptionSource\" key=\"sourceIdentifier\">\n\t\t\t\t\t\t<string key=\"majorKey\">IBProjectSource</string>\n\t\t\t\t\t\t<string key=\"minorKey\">./Classes/AppDelegate.h</string>\n\t\t\t\t\t</object>\n\t\t\t\t</object>\n\t\t\t</array>\n\t\t</object>\n\t\t<int key=\"IBDocument.localizationMode\">0</int>\n\t\t<string key=\"IBDocument.TargetRuntimeIdentifier\">IBCocoaFramework</string>\n\t\t<bool key=\"IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion\">YES</bool>\n\t\t<int key=\"IBDocument.defaultPropertyAccessControl\">3</int>\n\t\t<dictionary class=\"NSMutableDictionary\" key=\"IBDocument.LastKnownImageSizes\">\n\t\t\t<string key=\"NSMenuCheckmark\">{11, 11}</string>\n\t\t\t<string key=\"NSMenuMixedState\">{10, 3}</string>\n\t\t</dictionary>\n\t\t<bool key=\"IBDocument.UseAutolayout\">YES</bool>\n\t</data>\n</archive>\n"
  },
  {
    "path": "ProfilingTester/main.m",
    "content": "//\n//  main.m\n//  ProfilingTester\n//\n//  Created by Sam Deane on 27/03/2013.\n//\n//\n\n#import <Cocoa/Cocoa.h>\n\nint main(int argc, char *argv[])\n{\n    return NSApplicationMain(argc, (const char **)argv);\n}\n"
  },
  {
    "path": "README.md",
    "content": "Development\n===========\n\nConnectionKit 2 is still under heavy development, but the front-end API is probably stable.\n\nThings someone could do if they're feeling nice:\n\n* Cancellation support for the File protocol\n* Improve handling of invalid certificates for FTPS\n* Amazon S3 protocol\n* API for downloading/reading files\n\nFeatures\n========\n\nConnectionKit provides a Cocoa-friendly, block-based API for asynchronously working with:\n\n* FTP, SFTP and WebDAV servers\n* Local files\n\n## What's new since the original ConnectionKit?\n\nA high-level summary:\n\n* Use of blocks for simple completion and error-handling\n* URLs replace paths throughout the API\n* Management of raw connections is hidden behind the scenes, handling multiple connections and re-connections for you\n* Same authentication workflow as `NSURLSession` and friends\n* No longer tied to the main thread\n* libcurl is used for FTP, instead of custom implementation\n* `NSURLConnection` (via DAVKit) is used for WebDAV, instead of custom HTTP stack\n* libssh2 (via libcurl) is used for SFTP, instead of calling out to the command-line `sftp` program\n\nContributors and Contact Info\n=======\n\nI'm Mike Abdullah, of [Karelia Software](http://karelia.com). [@mikeabdullah](http://twitter.com/mikeabdullah) on Twitter.\n\nQuestions about the code are best left as issues at https://github.com/karelia/ConnectionKit but you can also message me on Twitter (just don't expect more than a terse reply!).\n\nBig thanks to:\n\n* Paul Kim of [Noodlesoft](http://www.noodlesoft.com) for:\n\t* `CK2OpenPanel`\n\t* Logic for guessing icon etc. of remote files\n* [Fabian Jäger](https://github.com/fjaeger) for discovering and helping fix various bugs\n* [Sam Deane](http://twitter.com/samdeane) of [Elegant Chaos](http://www.elegantchaos.com) for:\n\t* Sooo much testing, especially Mock Server\n\t* The WebDAV protocol implementation\n\t* Improving the File protocol implementation\n* And all contributors to the submodules of course!\n\nDependencies\n============\n\nRequires OS X v10.6+\n\nRelies upon CURLHandle and DAVKit. They are provided as submodules and may have their own dependencies in turn. Out of the box, provided you initialise all submodules, `CURLHandle.framework` should be able to nicely build, self-containing all its dependencies.\n\nConnectionKit supports both 64 and 32bit Macs. We hope to expand to iOS before too long too. Note that support for the legacy Objective-C runtime (32bit Mac) currently precludes switching the codebase to ARC.\n\nLicense\n=======\n\n## CURLHandle\n\nPlease see https://github.com/karelia/CurlHandle for details of CURLHandle and its subcomponents' licensing.\n\n## DAVKit\n\nPlease see https://github.com/karelia/DAVKit for details of DAVKit and its subcomponents' licensing.\n\n## Legacy\n\nExisting ConnectionKit code should declare its licensing at the top of the file, most likely BSD or MIT.\n\n## ConnectionKit 2 code\n\nLicensed under the BSD License <http://www.opensource.org/licenses/bsd-license>\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\nEXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\nOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\nSHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\nBUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\nSTRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF\nTHE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\nUsage\n=====\n\n## Getting the code\n\nIf you're already using Git, you likely want to add ConnectionKit as a submodule of your project:\n\n\tgit submodule add https://github.com/karelia/ConnectionKit.git\n\nIf you're using another version control system, you can grab the code directly:\n\n\tgit clone https://github.com/karelia/ConnectionKit.git\n\nIf you're not using version control at all, remind me to come yell at you at a mutually convenient time.\n\nConnectionKit includes several (nested) submodules of its own, so have Git grab them too:\n\n\tcd ConnectionKit\n\tgit submodule update --recursive --init\n\nSubstitute the URL above for your own if you've created a fork of ConnectionKit. Git should automatically checkout the recommended branch for you (`v2.x-beta` at present).\n\nThen:\n\n1. Add `Connection.xcodeproj` to your project\n2. Add the ConnectionKit framework as a dependency of your project's build target\n3. Set `Connection.framework` to be copied into a suitable location inside your build target; e.g the `Frameworks` directory\n\n## Actually, y'know, doing stuff\n\nInteracting with ConnectionKit is usually entirely through `CK2FileManager`. It's quite a lot like `NSFileManager`, but asynchronous, and with a few more bells and whistles to handle the complexities of remote servers. Also there's no shared instance; you must create your own.\n\nSo to get a directory listing from an FTP server for example:\n\n\t- (void)listDirectoryAtPath:(NSString *)path\n\t{\n\t\tNSURL *ftpServer = [NSURL URLWithString:@\"ftp://example.com/\"];\n\t\tNSURL *directory = [CK2FileManager URLWithPath:path relativeToURL:ftpServer];\n\t\t\n\t\tCK2FileManager *fileManager = [[CK2FileManager alloc] init];\n\t\tfileManager.delegate = self;\n\t\t\n\t\t[fileManager contentsOfDirectoryAtURL:directory\n\t\t           includingPropertiesForKeys:nil\n\t\t                              options:NSDirectoryEnumerationSkipsHiddenFiles\n\t\t                    completionHandler:^(NSArray *contents, NSError *error) {\n\t\t\t\n\t\t\t// Display contents in your UI, or present the error if failed\n\t\t}];\n\t}\n\nNote how `CK2FileManager` is used to construct URLs. This is to handle the difference in URL formats different protocols require.\n\nDelegate methods are used to handle authentication (more on that below) and transcripts. Be sure to read through `CK2FileManager.h` as there's plenty of helpful documentation in there.\n\n## Authentication\n\nConnectionKit follows the same approach as `NSURLSession`: During an operation, it vends out as many authentication challenges as it sees fit. Your delegate should implement this method to reply to the challenges:\n\n\t- (void)fileManager:(CK2FileManager *)manager\n\t          operation:(CK2FileOperation *)operation\n\tdidReceiveChallenge:(NSURLAuthenticationChallenge *)challenge\n\t  completionHandler:(void (^)(CK2AuthChallengeDisposition, NSURLCredential*))completionHandler;\n\nReplies are made by calling `completionHandler` with your preferred disposition, and, if needed, a credential to use. This is asynchronous, giving you a chance to present some UI asking the user what they'd like to do if necessary.\n\nSupplying a credential set to `NSURLCredentialPersistencePermanent` will cause ConnectionKit to add it to the keychain if successful.\n\nAuthentication challenges carry a great deal of information, including `.previousFailureCount` and `.protectionSpace` which are very useful for determining how to treat an individual challenge.\n\n### WebDAV over HTTP\n\nWebDAV servers can selectively choose whether to require authentication (e.g. public servers have no need to). If authentication is requested, you'll receive an authentication challenge encapsulating the auth method to be used (e.g. HTTP Digest). Respond with a username and password credential. ConnectionKit will do its best to supply `-proposedCredential` from the user's keychain.\n\n### FTP\n\nFTP is very similar to plain WebDAV, except it always asks for authentication. Usually, you respond with a username and password, but can pass a `nil` credential for anonymous FTP login.\n\n### WebDAV and FTP with TLS/SSL\n\nThe authenticity of the server is checked by examining its certificate during connection. This takes the form of potentially multiple challenges with the either of the following authentication methods:\n\n* `NSURLAuthenticationMethodServerTrust`\n* `NSURLAuthenticationMethodClientCertificate`\n\t\nGenerally it's best to use `CK2AuthChallengePerformDefaultHandling` to let Cocoa decide what to do.\n\n### SFTP\n\nSFTP is a tricky blighter. You can opt to supply a username and password like other protocols. Our implementation also supports public key authentication, whereby you reply with a credential constructed using:\n\n    +[NSURLCredential ck2_credentialWithUser:publicKeyURL:privateKeyURL:password:persistence:]\n\nThe public key is generally optional, as ConnectionKit can derive it from the private key. It's also possible to use SSH-Agent, but Apple discourage this, and it is unavailable to sandboxed apps. Detailed documentation on the above method can be found in `CK2Authentication.h`.\n\nOnce connected to the server, ConnectionKit checks its fingerprint against the `~/.ssh/known_hosts` file. Note that for sandboxed apps this is inside of your container! An authentication challenge (`CK2AuthenticationMethodHostFingerprint`) is issued with the result of this. Your delegate can use `CK2AuthChallengeCancelAuthenticationChallenge` to reject the fingerprint, or reply with a credential for acceptance, constructed using:\n\n\t+[NSURLCredential ck2_credentialForKnownHostWithPersistence:]\n\nThe default behaviour (`CK2AuthChallengePerformDefaultHandling`) accepts new fingerprints, adding them to the `known_hosts` file, and causes the operation to fail with an error for mismatched fingerprints.\n\nAfter checking the host fingerprint, SFTP moves on to actually authenticating the client.\n\n## Resource Properties/Attributes\n\nConnectionKit's API is a little asymmetric for handling resource properties:\n\nWhen creating a file or directory, *opening* attributes may be specified. Generally only `NSFilePosixPermissions` is respected. This **only** applies to protocols where permissions can be specified at creation time (i.e. SFTP). But even then there are some servers in my experience that sometimes ignore this value anyway. So:\n\nTo set the properties of an existing item, use `-[CK2FileManager setAttributes:ofItemAtURL:completionHandler:]`. Again this only applies to certain protocols/servers; see `CK2FileManager.h` for up-to-date information on this.\n\nMany protocols do not have an efficient mechanism for retrieving the attributes of an individual item. Instead, you should get a listing of the *parent* directory, and pull out the properties of whichever resources you're interested in.\n\n## Open Panel\n\nConnectionKit also offers a companion framework for OS X: `ConnectionKitUI`. If you build this framework into your app as well as ConnectionKit itself, it exposes `CK2OpenPanel`, an `NSOpenPanel` workalike for browsing and selecting files on remote servers.\n\nLegacy\n======\n\nFor anyone relying on one of the old branches, they have been archived to be tags:\n\n* master => v1.x\n* release-1.2 => v1.2.x\n* BrianWorkInProgress => brian-work-in-progress\n* CKFTPResponse => ckftpresponse\n* release-2.0 => experiment-2.0\n"
  },
  {
    "path": "Resources/Framework-Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>${EXECUTABLE_NAME}</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundlePackageType</key>\n\t<string>FMWK</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1.0</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Resources/da.lproj/InfoPlist.strings",
    "content": "/* Localized versions of Info.plist keys */\n\nCFBundleName = \"FTPConnection\";\nNSHumanReadableCopyright = \"© __MyCompanyName__, 2004\";"
  },
  {
    "path": "Resources/da.lproj/Localizable.strings",
    "content": "/* authorise */\n\"%@\\nWhat would you like to do?\" = \"%@\\nHvad vil du gøre?\";\n\n/* ConnectionOpenPanel */\n\"A Connection Error Occurred\" = \"Der opstod en forbindelsesfejl\";\n\n/* FTP Abort */\n\"Action Aborted. Local Error\" = \"Handling afbrudt. Lokal fejl\";\n\n/* FTP no data stream types available */\n\"All data connection modes have been exhausted. Check with the server administrator.\" = \"Alle dataforbindelsesmuligheder er udtømte. Spørg serveradministratoren.\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\n\"An intermediate directory does not exist and needs to be created before the current directory\" = \"Et midlertidigt bibliotek findes ikke og skal oprettes før det aktuelle bibliotek\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\n\"An unknown error occurred\" = \"Der opstod en ukendt fejl\";\n\n/* multiple connection joiner */\n\"and\" = \"og\";\n\n/* close window */\n\"Are you sure you want to stop the upload?\" = \"Er du sikker på du vil stoppe din upload?\";\n\n/* authorise */\n\"Authorize\" = \"Godkend\";\n\n/* authorise */\n\"Authorize Connection?\" = \"Godkend forbindelse?\";\n\n/* connection type */\n\"auto\" = \"auto\";\n\n/* config */\n\"Bad Configuration\" = \"Fejlkonfiguration\";\n\n/* error */\n\"Bad Droplet\" = \"Ugyldig Droplet\";\n\n/* context menu\n   tree controller action gear */\n\n\"Browse Packages\" = \"Gennemse pakker\";\n\n/* filesize: bytes */\n\"bytes\" = \"bytes\";\n\n/* authorise */\n\"Cancel\" = \"Annuller\";\n\n/* FTP upload error */\n\"Cannot Upload File. Storage quota on server exceeded\" = \"Kan ikke uploade arkiv. Opbevaringskvota på serveren er overskredet\";\n\n/* connected message\n   transfer controller */\n\n\"Connected to %@\" = \"Forbundet til %@\";\n\n/* file transcript */\n\"Connected to File System\" = \"Forbundet til denne Mac\";\n\n/* connection string */\n\"Connecting to %@\" = \"Forbinder til %@\";\n\n/* file transcript */\n\"Connecting…\" = \"Forbinder…\";\n\n/* close window */\n\"Continue Upload\" = \"Fortsæt upload\";\n\n/* file transcript */\n\"Copying %@ to %@\" = \"Kopierer %1$@ til %2$@\";\n\n/* FileConnection set permissions error */\n\"Could not change file permissions\" = \"Kunne ikke ændre arkivtilladelser\";\n\n/* FileConnection create directory error */\n\"Could not create directory\" = \"Kunne ikke oprette mappe\";\n\n/* config */\n\"Couldn't find configuration file specified\\n %@\" = \"Kunne ikke finde det angivne konfigurationsarkiv\\n %@\";\n\n/* file transcript */\n\"Create Directory %@ (%lo)\" = \"Opret mappe %1$@ (%2$lo)\";\n\n/* FTP Create directory error\n   Create directory operation failed */\n\n\"Create directory operation failed\" = \"Opret mappe-handling mislykkedes\";\n\n/* Failed to open a data stream connection */\n\"Data Stream Timed Out\" = \"Datastrøm udløb\";\n\n/* outline view column header name\n   outline view column context menu item */\n\n\"Date Modified\" = \"Ændringsdato\";\n\n/* file transcript */\n\"Deleting File %@\" = \"Sletter arkiv %@\";\n\n/* status */\n\"Disconnected\" = \"Ikke forbundet\";\n\n/* transfer controller */\n\"Disconnected from %@\" = \"Lukker forbindelse til %@\";\n\n/* unknown UTI name */\n\"Document\" = \"Dokument\";\n\n/* filesize: exabytes */\n\"EB\" = \"EB\";\n\n/* Directory Parsing Error */\n\"Error parsing directory listing\" = \"Fejl ved undersøgelse af mappeindhold\";\n\n/* FTP no data streams available */\n\"Exhausted all connection types to server. Please contact server administrator\" = \"Har udtømt alle forbindelsestyper til serveren. Kontakt venligst serveradministratoren\";\n\n/* Failed to change to directory\n   Bad FTP command */\n\n\"Failed to change to directory\" = \"Kunne ikke skifte mappe\";\n\n/* WebDAV Directory Deletion Error\n   couldn't delete the file\n   MobileMe Directory Deletion Error */\n\n\n\"Failed to delete directory\" = \"Kunne ikke slette mappe\";\n\n/* error for deleting a directory */\n\"Failed to delete directory: %@\" = \"Kunne ikke slette mappen: %@\";\n\n/* WebDAV File Deletion Error\n   couldn't delete the file\n   MobileMe file deletion error */\n\n\n\"Failed to delete file\" = \"Kunne ikke slette arkiv\";\n\n/* error for deleting a file */\n\"Failed to delete file: %@\" = \"Kunne ikke slette arkiv: %@\";\n\n/* Failed to download file. */\n\"Failed to download file.\" = \"Kunne ikke downloade arkiv.\";\n\n/* Failed to rename file. */\n\"Failed to rename file.\" = \"Kunne ikke omdøbe arkiv.\";\n\n/* FTP Upload error\n   SFTP Upload error */\n\n\"Failed to set permissions for path %@\" = \"Kunne ikke indstille tilladelser for stien %@\";\n\n/* FileConnection copy data error */\n\"Failed to upload data\" = \"Kunne ikke oploade data\";\n\n/* Failed to upload file. */\n\"Failed to upload file.\" = \"Kunne ikke uploade arkiv.\";\n\n/* error transferring */\n\"Failed to verify file transferred successfully\" = \"Kunne ikke bekræfte at arkivoverførsel lykkedes\";\n\n/* FTP file download error */\n\"File %@ does not exist on server\" = \"Arkiver %@ findes ikke på serveren\";\n\n/* FileConnection error */\n\"File Already Exists\" = \"Arkivet findes allerede\";\n\n/* FTP file in use */\n\"File in Use\" = \"Arkivet er i brug\";\n\n/* directory kind */\n\"Folder\" = \"Mappe\";\n\n/* FTP service timed out */\n\"FTP service not available; Remote server has closed connection\" = \"FTP-service ikke tilgængelig. Serveren har lukket forbindelsen\";\n\n/* FTP no service */\n\"FTP Service Unavailable\" = \"FTP-service ikke tilgængelig\";\n\n/* filesize: gigabytes */\n\"GB\" = \"GB\";\n\n/* transfer controller */\n\"Hide Files\" = \"Skjul arkiver\";\n\n/* Couldn't open the port to the host\n   Host Unavailable */\n\n\"Host Unavailable\" = \"Vært ikke tilgængelig\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\n\"Insufficient storage space available\" = \"Ikke nok plads tilgængelig\";\n\n/* FTP Error */\n\"Invalid Account name\" = \"Ugyldigt kontonavn\";\n\n/* Stream Error before opening */\n\"Is the service running on the server\" = \"Kører denne service på serveren\";\n\n/* filesize: kilobytes */\n\"KB\" = \"KB\";\n\n/* outline view column header name\n   outline view column context menu item */\n\n\"Kind\" = \"Type\";\n\n/* File doesn't exist */\n\"Local file %@ doesn't exist\" = \"Lokalt arkiv %@ findes ikke\";\n\n/* FTP download error */\n\"Local File already exists\" = \"Lokalt arkiv findes allerede\";\n\n/* filesize: megabytes */\n\"MB\" = \"MB\";\n\n/* outline view column header name\n   outline view column context menu item */\n\n\"Name\" = \"Navn\";\n\n/* tree controller action gear */\n\"New Folder\" = \"Ny mappe\";\n\n/* config */\n\"No configuration file specified\" = \"Intet konfigurationsarkiv angivet\";\n\n/* failed to find a connection class */\n\"No connection available for requested connection type\" = \"Ingen forbindelse tilgængelig for den ønskede forbindelsestype\";\n\n/* FTP Error */\n\"No Storage Space Available\" = \"Ingen ledig plads tilgængelig\";\n\n/* No such file */\n\"No such file\" = \"Arkivet findes ikke\";\n\n/* FTP Error */\n\"Not Logged In\" = \"Ikke logget ind\";\n\n/* OK */\n\"OK\" = \"OK\";\n\n/* WebDAV Uploading Error\n   MobileMe File Uploading Error */\n\n\"Parent Folder does not exist\" = \"Overliggende mappe findes ikke\";\n\n/* filesize: petabytes */\n\"PB\" = \"PB\";\n\n/* Permission Denied */\n\"Permission Denied\" = \"Tilladelse nægtet\";\n\n/* mimic Finder naming conventions */\n\"Plain text document\" = \"Normalt tekstdokument\";\n\n/* config\n   error */\n\n\"Quit\" = \"Slut\";\n\n/* tree controller action gear */\n\"Refresh\" = \"Opdater\";\n\n/* file transcript */\n\"Renaming %@ to %@\" = \"Omdøber %1$@ til %2$@\";\n\n/* abbreviation for seconds, e.g. 12 MB/s */\n\"s\" = \"s\";\n\n/* SFTP authenticaton error */\n\"SFTP connections require some form of authentication.\" = \"SFTP-forbindelser kræve en form for godkendelse.\";\n\n/* transfer controller */\n\"Show Files\" = \"Vis arkiver\";\n\n/* context menu\n   tree controller action gear */\n\n\"Show Hidden Files\" = \"Vis skjulte arkiver\";\n\n/* context menu\n   tree controller action gear */\n\n\"Show Package Extensions\" = \"Vis pakke-endelser\";\n\n/* outline view column header name\n   outline view column context menu item */\n\n\"Size\" = \"Str.\";\n\n/* close window */\n\"Stop Upload\" = \"Stop upload\";\n\n/* close window */\n\"Stop Upload?\" = \"Stop upload?\";\n\n/* Error creating stream */\n\"Stream Unavailable\" = \"Stream ikke tilgængelig\";\n\n/* filesize: terabytes */\n\"TB\" = \"TB\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\n\"The body of the request is not supported\" = \"Indholdet af anmodningen understøttes ikke\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\n\"The directory already exists\" = \"Mappen findes allerede\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\n\"The server does not allow the creation of directories at the current location\" = \"Serveren tillader ikke oprettelse af mapper på dette sted\";\n\n/* error transferring */\n\"The transferred file has a size of 0.\" = \"Det overførte arkivs størrelse er 0.\";\n\n/* MobileMe Directory Contents Error */\n\"There is no MobileMe access to the directory\" = \"Der er ikke MobileMe-adgang til mappen\";\n\n/* No WebDAV access to the specified path */\n\"There is no WebDAV access to the directory\" = \"Der er ikke WebDAV-adgang til mappen\";\n\n/* error */\n\"This droplet is missing the original application that created it. You will need to reinstall the original application.\" = \"Denne droplet mangler det originale program der oprettede den. Du er nød til at geninstallere det originale program.\";\n\n/* time out */\n\"Timed Out waiting for remote host.\" = \"Time out under venten på vært.\";\n\n/* Transfer Controller */\n\"Too many files had transfer problems\" = \"For mange arkiver havde overførselsproblemer\";\n\n/* FileConnection failed to copy file */\n\"Unable to store data in file\" = \"Kunne ikke opbevare data i arkivet\";\n\n/* WebDAV Error */\n\"Unknown Error Occurred\" = \"Der opstod en ukendt fejl\";\n\n/* status message */\n\"Uploading\" = \"Uploader\";\n\n/* status */\n\"Uploading %@\" = \"Uploader %@\";\n\n/* file transcript */\n\"Writing data to %@\" = \"Skriver data til %@\";\n\n/* Bonjour Error */\n\"You can not add a child collection to the Bonjour category.\" = \"Du kan ikke tilføje en underliggende samling til Bonjour-kategorien.\";\n\n/* Bonjour Error */\n\"You can not add a new server to the Bonjour category.\" = \"Du kan ikke tilføje en ny server til Bonjour-kategorien.\";\n\n/* FTP file upload error */\n\"You do not have access to write file %@\" = \"Du har ikke tilladelse til at skrive arkivet %@\";\n\n/* FTP Error */\n\"You need an Account to Upload Files\" = \"Du skal have en konto for et kunne uploade arkiver\";"
  },
  {
    "path": "Resources/de.lproj/InfoPlist.strings",
    "content": "/* Localized versions of Info.plist keys */\n\nCFBundleName = \"FTPConnection\";\nNSHumanReadableCopyright = \"© __MyCompanyName__, 2004\";"
  },
  {
    "path": "Resources/de.lproj/Localizable.strings",
    "content": "/* authorise */\n\"%@\\nWhat would you like to do?\" = \"%@\\nWas möchten Sie tun?\";\n\n/* ConnectionOpenPanel */\n\"An unknown error occurred.\" = \"Ein unbekannter Fehler ist aufgetreten. \";\n\n/* close window */\n\"Are you sure you want to stop the upload?\" = \"Wollen Sie die Übertragung wirklich stoppen?\";\n\n/* authorise */\n\"Authorize\" = \"Autorisieren\";\n\n/* authorise */\n\"Authorize Connection?\" = \"Verbindung autorisieren?\";\n\n/* config */\n\"Bad Configuration\" = \"Falsche Konfiguration\";\n\n/* error */\n\"Bad Droplet\" = \"Falsches Droplet\";\n\n/* filesize: bytes */\n\"bytes\" = \"Byte\";\n\n/* authorise */\n\"Cancel\" = \"Abbrechen\";\n\n/* connected message */\n\"Connected to %@\" = \"Verbunden mit %@\";\n\n/* connection string */\n\"Connecting to %@\" = \"Mit %@ verbinden\";\n\n/* close window */\n\"Continue Upload\" = \"Übertragung fortsetzen\";\n\n/* config */\n\"Couldn't find configuration file specified\\n %@\" = \"Konnte angegebene Konfigurationsdatei nicht finden\\n %@\";\n\n/* status */\n\"Disconnected\" = \"Getrennt\";\n\n/* filesize: exabytes */\n\"EB\" = \"EB\";\n\n/* filesize: gigabytes */\n\"GB\" = \"GB\";\n\n/* filesize: kilobytes */\n\"KB\" = \"KB\";\n\n/* FTP download error */\n\"Local File already exists\" = \"Lokale Datei existiert bereits\";\n\n/* filesize: megabytes */\n\"MB\" = \"MB\";\n\n/* config */\n\"No configuration file specified\" = \"Keine Konfigurationsdatei angegeben\";\n\n/* failed to find a connection class */\n\"No connection available for requested connection type\" = \"Keine verfügbare Verbindung für gewählte Verbindungsart\";\n\n/* filesize: petabytes */\n\"PB\" = \"PB\";\n\n/* ConnectionOpenPanel */\n\"Please check your settings.\" = \"Bitte prüfen Sie Ihre Einstellungen.\";\n\n/* config\n   error */\n\n\"Quit\" = \"Beenden\";\n\n/* close window */\n\"Stop Upload\" = \"Übertragung stoppen\";\n\n/* close window */\n\"Stop Upload?\" = \"Übertragung stoppen?\";\n\n/* filesize: terabytes */\n\"TB\" = \"TB\";\n\n/* error */\n\"This droplet is missing the original application that created it. You will need to reinstall the original application.\" = \"Diesem Droplet fehlt das Originalprogramm mit welchem es erstellt wurden. Bitte reinstallieren Sie das Originalprogramm.\";\n\n/* status */\n\"Uploading %@\" = \"Hochladen von %@\";"
  },
  {
    "path": "Resources/en.lproj/Localizable.strings",
    "content": "﻿/* authorise */\n\"%@\\nWhat would you like to do?\" = \"%@\\nWhat would you like to do?\";\n\n/* ConnectionOpenPanel */\n\"An unknown error occurred.\" = \"An unknown error occurred.\";\n\n/* close window */\n\"Are you sure you want to stop the upload?\" = \"Are you sure you want to stop the upload?\";\n\n/* authorise */\n\"Authorize\" = \"Authorize\";\n\n/* authorise */\n\"Authorize Connection?\" = \"Authorize Connection?\";\n\n/* config */\n\"Bad Configuration\" = \"Bad Configuration\";\n\n/* error */\n\"Bad Droplet\" = \"Bad Droplet\";\n\n/* filesize: bytes */\n\"bytes\" = \"bytes\";\n\n/* authorise */\n\"Cancel\" = \"Cancel\";\n\n/* connected message */\n\"Connected to %@\" = \"Connected to %@\";\n\n/* connection string */\n\"Connecting to %@\" = \"Connecting to %@\";\n\n/* close window */\n\"Continue Upload\" = \"Continue Upload\";\n\n/* config */\n\"Couldn't find configuration file specified\\n %@\" = \"Couldn't find configuration file specified\\n %@\";\n\n/* status */\n\"Disconnected\" = \"Disconnected\";\n\n/* filesize: exabytes */\n\"EB\" = \"EB\";\n\n/* filesize: gigabytes */\n\"GB\" = \"GB\";\n\n/* filesize: kilobytes */\n\"KB\" = \"KB\";\n\n/* FTP download error */\n\"Local File already exists\" = \"Local File already exists\";\n\n/* filesize: megabytes */\n\"MB\" = \"MB\";\n\n/* config */\n\"No configuration file specified\" = \"No configuration file specified\";\n\n/* failed to find a connection class */\n\"No connection available for requested connection type\" = \"No connection available for requested connection type\";\n\n/* filesize: petabytes */\n\"PB\" = \"PB\";\n\n/* ConnectionOpenPanel */\n\"Please check your settings.\" = \"Please check your settings.\";\n\n/* config\n   error */\n\"Quit\" = \"Quit\";\n\n/* close window */\n\"Stop Upload\" = \"Stop Upload\";\n\n/* close window */\n\"Stop Upload?\" = \"Stop Upload?\";\n\n/* filesize: terabytes */\n\"TB\" = \"TB\";\n\n/* error */\n\"This droplet is missing the original application that created it. You will need to reinstall the original application.\" = \"This droplet is missing the original application that created it. You will need to reinstall the original application.\";\n\n/* status */\n\"Uploading %@\" = \"Uploading %@\";\n\n"
  },
  {
    "path": "Resources/es.lproj/Localizable.strings",
    "content": "/* authorise */\n\"%@\\nWhat would you like to do?\" = \"%@\\n¿Qué desea hacer?\";\n\n/* ConnectionOpenPanel */\n\"An unknown error occurred.\" = \"Se ha producido un error desconocido.\";\n\n/* close window */\n\"Are you sure you want to stop the upload?\" = \"¿Está seguro que desea detener la carga del archivo en el servidor?\";\n\n/* authorise */\n\"Authorize\" = \"Autorizar\";\n\n/* authorise */\n\"Authorize Connection?\" = \"¿Autorizar conexión?\";\n\n/* config */\n\"Bad Configuration\" = \"Error de configuración\";\n\n/* error */\n\"Bad Droplet\" = \"Gotero dañado\";\n\n/* filesize: bytes */\n\"bytes\" = \"bytes\";\n\n/* authorise */\n\"Cancel\" = \"Cancelar\";\n\n/* connected message */\n\"Connected to %@\" = \"Conectado a %@\";\n\n/* connection string */\n\"Connecting to %@\" = \"Conectado a %@\";\n\n/* close window */\n\"Continue Upload\" = \"Continuar la carga del archivo.\";\n\n/* config */\n\"Couldn't find configuration file specified\\n %@\" = \"No se pudo encontrar el archivo de configuración especificado\\n %@\";\n\n/* status */\n\"Disconnected\" = \"Desconectado\";\n\n/* filesize: exabytes */\n\"EB\" = \"EB\";\n\n/* filesize: gigabytes */\n\"GB\" = \"GB\";\n\n/* filesize: kilobytes */\n\"KB\" = \"KB\";\n\n/* FTP download error */\n\"Local File already exists\" = \"El archivo local ya existe\";\n\n/* filesize: megabytes */\n\"MB\" = \"MB\";\n\n/* config */\n\"No configuration file specified\" = \"No se especificó un archivo de configuración\";\n\n/* failed to find a connection class */\n\"No connection available for requested connection type\" = \"No hay una conexión disponible para el tipo requerido\";\n\n/* filesize: petabytes */\n\"PB\" = \"PB\";\n\n/* ConnectionOpenPanel */\n\"Please check your settings.\" = \"Por favor, revise su configuración.\";\n\n/* config\n   error */\n\n\"Quit\" = \"Salir\";\n\n/* close window */\n\"Stop Upload\" = \"Detener la carga del archivo\";\n\n/* close window */\n\"Stop Upload?\" = \"¿Detener la carga?\";\n\n/* filesize: terabytes */\n\"TB\" = \"TB\";\n\n/* error */\n\"This droplet is missing the original application that created it. You will need to reinstall the original application.\" = \"Este gotero no encuentra la aplicación original con el que fue creado; necesitará reinstalarla.\";\n\n/* status */\n\"Uploading %@\" = \"Cargando %@\";"
  },
  {
    "path": "Resources/fr.lproj/InfoPlist.strings",
    "content": "/* Localized versions of Info.plist keys */\n\nCFBundleName = \"FTPConnection\";\nNSHumanReadableCopyright = \"© __MyCompanyName__, 2004\";"
  },
  {
    "path": "Resources/fr.lproj/Localizable.strings",
    "content": "/* authorise */\n\"%@\\nWhat would you like to do?\" = \"%@\\nQue désirez-vous faire ?\";\n\n/* ConnectionOpenPanel */\n\"An unknown error occurred.\" = \"Une erreur inconnue s'est produite.\";\n\n/* close window */\n\"Are you sure you want to stop the upload?\" = \"Êtes-vous sûr de vouloir arrêter le chargement ?\";\n\n/* authorise */\n\"Authorize\" = \"Autoriser\";\n\n/* authorise */\n\"Authorize Connection?\" = \"Autoriser la connexion ?\";\n\n/* config */\n\"Bad Configuration\" = \"Mauvaise configuration\";\n\n/* error */\n\"Bad Droplet\" = \"Mauvaise 'droplet'\";\n\n/* filesize: bytes */\n\"bytes\" = \"octets\";\n\n/* authorise */\n\"Cancel\" = \"Annuler\";\n\n/* connected message */\n\"Connected to %@\" = \"Connecté à %@\";\n\n/* connection string */\n\"Connecting to %@\" = \"Se connecte à %@\";\n\n/* close window */\n\"Continue Upload\" = \"Continuer le chargement\";\n\n/* config */\n\"Couldn't find configuration file specified\\n %@\" = \"N'a pu trouver le fichier de configuration indiqué\\n %@\";\n\n/* status */\n\"Disconnected\" = \"Déconnecté\";\n\n/* filesize: exabytes */\n\"EB\" = \"Eo\";\n\n/* filesize: gigabytes */\n\"GB\" = \"Go\";\n\n/* filesize: kilobytes */\n\"KB\" = \"ko\";\n\n/* FTP download error */\n\"Local File already exists\" = \"Le fichier local existe déjà\";\n\n/* filesize: megabytes */\n\"MB\" = \"Mo\";\n\n/* config */\n\"No configuration file specified\" = \"Aucun fichier de configuration indiqué\";\n\n/* failed to find a connection class */\n\"No connection available for requested connection type\" = \"Aucune connexion disponible pour le type de connexion demandé\";\n\n/* filesize: petabytes */\n\"PB\" = \"Po\";\n\n/* ConnectionOpenPanel */\n\"Please check your settings.\" = \"Veuillez vérifiez vos réglages.\";\n\n/* config\n   error */\n\n\"Quit\" = \"Quitter\";\n\n/* close window */\n\"Stop Upload\" = \"Arrêter le chargement\";\n\n/* close window */\n\"Stop Upload?\" = \"Arrêter le chargement ?\";\n\n/* filesize: terabytes */\n\"TB\" = \"To\";\n\n/* error */\n\"This droplet is missing the original application that created it. You will need to reinstall the original application.\" = \"Il manque à cette droplet l'application originale qui l'a créée. Vous devrez réinstaller l'application originale.\";\n\n/* status */\n\"Uploading %@\" = \"Chargement de %@\";"
  },
  {
    "path": "Resources/it.lproj/InfoPlist.strings",
    "content": "/* Localized versions of Info.plist keys */\n\nCFBundleName = \"FTPConnection\";\nNSHumanReadableCopyright = \"© __MyCompanyName__, 2004\";"
  },
  {
    "path": "Resources/it.lproj/Localizable.strings",
    "content": "/* authorise */\n\"%@\\nWhat would you like to do?\" = \"%@\\nChe cosa ti piacerebbe fare?\";\n\n/* ConnectionOpenPanel */\n\"An unknown error occurred.\" = \"Si è verificato un errore sconosciuto.\";\n\n/* close window */\n\"Are you sure you want to stop the upload?\" = \"Sei sicuro di voler interrompere il caricamento?\";\n\n/* authorise */\n\"Authorize\" = \"Autorizza\";\n\n/* authorise */\n\"Authorize Connection?\" = \"Autorizza connessione?\";\n\n/* config */\n\"Bad Configuration\" = \"Configurazione errata\";\n\n/* error */\n\"Bad Droplet\" = \"Droplet errato\";\n\n/* filesize: bytes */\n\"bytes\" = \"byte\";\n\n/* authorise */\n\"Cancel\" = \"Annulla\";\n\n/* connected message */\n\"Connected to %@\" = \"Connesso a %@\";\n\n/* connection string */\n\"Connecting to %@\" = \"Connessione a %@\";\n\n/* close window */\n\"Continue Upload\" = \"Continua caricamento\";\n\n/* config */\n\"Couldn't find configuration file specified\\n %@\" = \"Impossibile trovare il file di configurazione specificato\\n %@\";\n\n/* status */\n\"Disconnected\" = \"Disconnesso\";\n\n/* filesize: exabytes */\n\"EB\" = \"EB\";\n\n/* filesize: gigabytes */\n\"GB\" = \"GB\";\n\n/* filesize: kilobytes */\n\"KB\" = \"KB\";\n\n/* FTP download error */\n\"Local File already exists\" = \"Il file locale esiste già\";\n\n/* filesize: megabytes */\n\"MB\" = \"MB\";\n\n/* config */\n\"No configuration file specified\" = \"Non è stato specificato nessun file di configurazione\";\n\n/* failed to find a connection class */\n\"No connection available for requested connection type\" = \"Nessuna connessione è disponibile per il tipo di connessione richiesto\";\n\n/* filesize: petabytes */\n\"PB\" = \"PB\";\n\n/* ConnectionOpenPanel */\n\"Please check your settings.\" = \"Verifica le tue impostazioni.\";\n\n/* config\n   error */\n\n\"Quit\" = \"Esci\";\n\n/* close window */\n\"Stop Upload\" = \"Interrompi caricamento\";\n\n/* close window */\n\"Stop Upload?\" = \"Interrompere caricamento?\";\n\n/* filesize: terabytes */\n\"TB\" = \"TB\";\n\n/* error */\n\"This droplet is missing the original application that created it. You will need to reinstall the original application.\" = \"Il droplet ha perduto la connessione con l'applicazione che l'ha creato. Dovrai reinstallare l'applicazione originale.\";\n\n/* status */\n\"Uploading %@\" = \"Sto caricando %@\";"
  },
  {
    "path": "Resources/ja.lproj/InfoPlist.strings",
    "content": "/* Localized versions of Info.plist keys */\n\nCFBundleName = \"FTPConnection\";\nNSHumanReadableCopyright = \"© __MyCompanyName__, 2004\";"
  },
  {
    "path": "Resources/ja.lproj/Localizable.strings",
    "content": "/* authorise */\n\"%@\\nWhat would you like to do?\" = \"%@\\nどうしますか?\";\n\n/* ConnectionOpenPanel */\n\"An unknown error occurred.\" = \"不明なエラーが発生しました。\";\n\n/* close window */\n\"Are you sure you want to stop the upload?\" = \"アップロードを中断してもよろしいですか?\";\n\n/* authorise */\n\"Authorize\" = \"認証\";\n\n/* authorise */\n\"Authorize Connection?\" = \"接続を承認しますか?\";\n\n/* config */\n\"Bad Configuration\" = \"設定が悪い\";\n\n/* error */\n\"Bad Droplet\" = \"ドロップレットが悪い\";\n\n/* filesize: bytes */\n\"bytes\" = \"バイト\";\n\n/* authorise */\n\"Cancel\" = \"キャンセル\";\n\n/* connected message */\n\"Connected to %@\" = \"%@ に接続\";\n\n/* connection string */\n\"Connecting to %@\" = \"%@ に接続中\";\n\n/* close window */\n\"Continue Upload\" = \"アップロードを継続\";\n\n/* config */\n\"Couldn't find configuration file specified\\n %@\" = \"指定した設定ファイルが見つかりませんでした\\n %@\";\n\n/* status */\n\"Disconnected\" = \"切断\";\n\n/* filesize: exabytes */\n\"EB\" = \"EB\";\n\n/* filesize: gigabytes */\n\"GB\" = \"GB\";\n\n/* filesize: kilobytes */\n\"KB\" = \"KB\";\n\n/* FTP download error */\n\"Local File already exists\" = \"このローカルファイルはすでに存在します\";\n\n/* filesize: megabytes */\n\"MB\" = \"MB\";\n\n/* config */\n\"No configuration file specified\" = \"設定ファイルが指定されていません\";\n\n/* failed to find a connection class */\n\"No connection available for requested connection type\" = \"この接続タイプは有効ではありません\";\n\n/* filesize: petabytes */\n\"PB\" = \"PB\";\n\n/* ConnectionOpenPanel */\n\"Please check your settings.\" = \"設定を確認して下さい。\";\n\n/* config\n   error */\n\n\"Quit\" = \"終了\";\n\n/* close window */\n\"Stop Upload\" = \"アップロードを停止\";\n\n/* close window */\n\"Stop Upload?\" = \"アップロードを停止しますか?\";\n\n/* filesize: terabytes */\n\"TB\" = \"TB\";\n\n/* error */\n\"This droplet is missing the original application that created it. You will need to reinstall the original application.\" = \"ドロップレットを作成したときのアプリケーションがありません。そのアプリケーションを再インストールする必要があります。\";\n\n/* status */\n\"Uploading %@\" = \"%@ をアップロード中\";"
  },
  {
    "path": "Resources/pt_BR.lproj/Localizable.strings",
    "content": "/* authorise */\n\"%@\\nWhat would you like to do?\" = \"%@\\nO que você gostaria de fazer?\";\n\n/* ConnectionOpenPanel */\n\"An unknown error occurred.\" = \"Ocorreu um erro desconhecido.\";\n\n/* close window */\n\"Are you sure you want to stop the upload?\" = \"Você deseja realmente suspender o envio?\";\n\n/* authorise */\n\"Authorize\" = \"Autorizar\";\n\n/* authorise */\n\"Authorize Connection?\" = \"Autorizar Conexão?\";\n\n/* config */\n\"Bad Configuration\" = \"Configuração Errada\";\n\n/* error */\n\"Bad Droplet\" = \"Droplet Danificado\";\n\n/* filesize: bytes */\n\"bytes\" = \"bytes\";\n\n/* authorise */\n\"Cancel\" = \"Cancelar\";\n\n/* connected message */\n\"Connected to %@\" = \"Conectado a %@\";\n\n/* connection string */\n\"Connecting to %@\" = \"Conectando a %@\";\n\n/* close window */\n\"Continue Upload\" = \"Continuar Enviando\";\n\n/* config */\n\"Couldn't find configuration file specified\\n %@\" = \"Não foi possível encontrar a configuração do arquivo especificado\\n %@\";\n\n/* status */\n\"Disconnected\" = \"Desconectado\";\n\n/* filesize: exabytes */\n\"EB\" = \"EB\";\n\n/* filesize: gigabytes */\n\"GB\" = \"GB\";\n\n/* filesize: kilobytes */\n\"KB\" = \"KB\";\n\n/* FTP download error */\n\"Local File already exists\" = \"O Arquivo Local já existe\";\n\n/* filesize: megabytes */\n\"MB\" = \"MB\";\n\n/* config */\n\"No configuration file specified\" = \"Nenhum arquivo de configuração especificado\";\n\n/* failed to find a connection class */\n\"No connection available for requested connection type\" = \"Nenhuma conexão disponível para o tipo de conexão exigida\";\n\n/* filesize: petabytes */\n\"PB\" = \"PB\";\n\n/* ConnectionOpenPanel */\n\"Please check your settings.\" = \"Por favor, verifique suas configurações.\";\n\n/* config\n   error */\n\n\"Quit\" = \"Encerrar\";\n\n/* close window */\n\"Stop Upload\" = \"Suspender o Envio\";\n\n/* close window */\n\"Stop Upload?\" = \"Suspender o Envio?\";\n\n/* filesize: terabytes */\n\"TB\" = \"TB\";\n\n/* error */\n\"This droplet is missing the original application that created it. You will need to reinstall the original application.\" = \"Este droplet está faltando ao aplicativo original no qual foi criado. Você precisa reinstalar o aplicativo original.\";\n\n/* status */\n\"Uploading %@\" = \"Enviando %@\";"
  },
  {
    "path": "Resources/zh_CN.lproj/InfoPlist.strings",
    "content": "/* Localized versions of Info.plist keys */\n\nCFBundleName = \"FTPConnection\";\nNSHumanReadableCopyright = \"© __MyCompanyName__, 2004\";"
  },
  {
    "path": "Resources/zh_CN.lproj/Localizable.strings",
    "content": "/* authorise */\n\"%@\\nWhat would you like to do?\" = \"%@\\n您想要怎么做？\";\n\n/* ConnectionOpenPanel */\n\"An unknown error occurred.\" = \"发生了未知错误。\";\n\n/* close window */\n\"Are you sure you want to stop the upload?\" = \"你确定要停止上传吗？\";\n\n/* authorise */\n\"Authorize\" = \"批准\";\n\n/* authorise */\n\"Authorize Connection?\" = \"批准连接？\";\n\n/* config */\n\"Bad Configuration\" = \"不良配置\";\n\n/* error */\n\"Bad Droplet\" = \"不良 Droplet\";\n\n/* filesize: bytes */\n\"bytes\" = \"字节\";\n\n/* authorise */\n\"Cancel\" = \"取消\";\n\n/* connected message */\n\"Connected to %@\" = \"已连接到 %@\";\n\n/* connection string */\n\"Connecting to %@\" = \"正在连接到 %@\";\n\n/* close window */\n\"Continue Upload\" = \"继续上传\";\n\n/* config */\n\"Couldn't find configuration file specified\\n %@\" = \"无法找到指定的配置文件\\n %@\";\n\n/* status */\n\"Disconnected\" = \"已断开\";\n\n/* filesize: exabytes */\n\"EB\" = \"EB\";\n\n/* filesize: gigabytes */\n\"GB\" = \"GB\";\n\n/* filesize: kilobytes */\n\"KB\" = \"KB\";\n\n/* FTP download error */\n\"Local File already exists\" = \"本机文件已存在\";\n\n/* filesize: megabytes */\n\"MB\" = \"MB\";\n\n/* config */\n\"No configuration file specified\" = \"没有指定的配置文件\";\n\n/* failed to find a connection class */\n\"No connection available for requested connection type\" = \"请求的连接类型没有可用的连接\";\n\n/* filesize: petabytes */\n\"PB\" = \"PB\";\n\n/* ConnectionOpenPanel */\n\"Please check your settings.\" = \"请检查你的设置。\";\n\n/* config\n   error */\n\n\"Quit\" = \"退出\";\n\n/* close window */\n\"Stop Upload\" = \"停止上传\";\n\n/* close window */\n\"Stop Upload?\" = \"停止上传？\";\n\n/* filesize: terabytes */\n\"TB\" = \"TB\";\n\n/* error */\n\"This droplet is missing the original application that created it. You will need to reinstall the original application.\" = \"该 Droplet 丢失了创建它的原应用程序。你需要重新安装该应用程序。\";\n\n/* status */\n\"Uploading %@\" = \"正在上传 %@\";"
  },
  {
    "path": "Resources/zh_TW.lproj/InfoPlist.strings",
    "content": "/* Localized versions of Info.plist keys */\n\nCFBundleName = \"FTPConnection\";\nNSHumanReadableCopyright = \"© __MyCompanyName__, 2004\";"
  },
  {
    "path": "Resources/zh_TW.lproj/Localizable.strings",
    "content": "/* authorise */\n\"%@\\nWhat would you like to do?\" = \"%@\\n您打算怎麼做？\";\n\n/* ConnectionOpenPanel */\n\"A Connection Error Occurred\" = \"發生連線錯誤\";\n\n/* FTP Abort */\n\"Action Aborted. Local Error\" = \"放棄動作。本機發生錯誤\";\n\n/* FTP no data stream types available */\n\"All data connection modes have been exhausted. Check with the server administrator.\" = \"已嘗試所有資料連線模式。請與伺服器管理員確認。\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\n\"An intermediate directory does not exist and needs to be created before the current directory\" = \"中間目錄並不存在，您必須在目前目錄前製作該目錄。\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\n\"An unknown error occurred\" = \"發生未知的錯誤\";\n\n/* multiple connection joiner */\n\"and\" = \"和\";\n\n/* close window */\n\"Are you sure you want to stop the upload?\" = \"您是否確定要停止上傳？\";\n\n/* authorise */\n\"Authorize\" = \"認證\";\n\n/* authorise */\n\"Authorize Connection?\" = \"認證連線？\";\n\n/* connection type */\n\"auto\" = \"自動\";\n\n/* config */\n\"Bad Configuration\" = \"設定不正確\";\n\n/* error */\n\"Bad Droplet\" = \"Droplet 不正確\";\n\n/* context menu\n   tree controller action gear */\n\n\"Browse Packages\" = \"瀏覽套件\";\n\n/* filesize: bytes */\n\"bytes\" = \"bytes\";\n\n/* authorise */\n\"Cancel\" = \"取消\";\n\n/* FTP upload error */\n\"Cannot Upload File. Storage quota on server exceeded\" = \"無法上傳檔案。已超過伺服器的儲存空間\";\n\n/* connected message\n   transfer controller */\n\n\"Connected to %@\" = \"已連接至 %@\";\n\n/* file transcript */\n\"Connected to File System\" = \"已連線至檔案系統\";\n\n/* connection string */\n\"Connecting to %@\" = \"正在連接至 %@\";\n\n/* file transcript */\n\"Connecting…\" = \"連線中⋯\";\n\n/* close window */\n\"Continue Upload\" = \"繼續上傳\";\n\n/* file transcript */\n\"Copying %@ to %@\" = \"正在拷貝 %1$@ 至 %2$@\";\n\n/* FileConnection set permissions error */\n\"Could not change file permissions\" = \"無法更改檔案權限\";\n\n/* FileConnection create directory error */\n\"Could not create directory\" = \"無法製作目錄\";\n\n/* config */\n\"Couldn't find configuration file specified\\n %@\" = \"找不到指定的設定檔\\n %@\";\n\n/* file transcript */\n\"Create Directory %@ (%lo)\" = \"製作目錄 %1$@ (%2$lo)\";\n\n/* FTP Create directory error\n   Create directory operation failed */\n\n\"Create directory operation failed\" = \"製作目錄作業失敗\";\n\n/* Failed to open a data stream connection */\n\"Data Stream Timed Out\" = \"資料流逾時\";\n\n/* outline view column header name\n   outline view column context menu item */\n\n\"Date Modified\" = \"修改日期\";\n\n/* file transcript */\n\"Deleting File %@\" = \"正在刪除檔案 %@\";\n\n/* status */\n\"Disconnected\" = \"已中斷連線\";\n\n/* transfer controller */\n\"Disconnected from %@\" = \"已從 %@ 中斷連線\";\n\n/* unknown UTI name */\n\"Document\" = \"文件\";\n\n/* filesize: exabytes */\n\"EB\" = \"EB\";\n\n/* Directory Parsing Error */\n\"Error parsing directory listing\" = \"解析目錄列表時發生錯誤\";\n\n/* FTP no data streams available */\n\"Exhausted all connection types to server. Please contact server administrator\" = \"已嘗試與此伺服器的所有連線類型。請與伺服器管理員聯繫。\";\n\n/* Failed to change to directory\n   Bad FTP command */\n\n\"Failed to change to directory\" = \"無法更改目錄\";\n\n/* WebDAV Directory Deletion Error\n   couldn't delete the file\n   MobileMe Directory Deletion Error */\n\n\n\"Failed to delete directory\" = \"無法刪除目錄\";\n\n/* error for deleting a directory */\n\"Failed to delete directory: %@\" = \"無法刪除目錄：%@\";\n\n/* WebDAV File Deletion Error\n   couldn't delete the file\n   MobileMe file deletion error */\n\n\n\"Failed to delete file\" = \"無法刪除檔案\";\n\n/* error for deleting a file */\n\"Failed to delete file: %@\" = \"無法刪除檔案：%@\";\n\n/* Failed to download file. */\n\"Failed to download file.\" = \"無法下載檔案。\";\n\n/* Failed to rename file. */\n\"Failed to rename file.\" = \"無法重新命名檔案。\";\n\n/* FTP Upload error\n   SFTP Upload error */\n\n\"Failed to set permissions for path %@\" = \"無法設定路徑 %@ 的權限\";\n\n/* FileConnection copy data error */\n\"Failed to upload data\" = \"無法載入資料\";\n\n/* Failed to upload file. */\n\"Failed to upload file.\" = \"無法上傳檔案。\";\n\n/* error transferring */\n\"Failed to verify file transferred successfully\" = \"無法順利驗證傳輸的檔案\";\n\n/* FTP file download error */\n\"File %@ does not exist on server\" = \"伺服器上並沒有檔案 %@\";\n\n/* FileConnection error */\n\"File Already Exists\" = \"檔案已存在\";\n\n/* FTP file in use */\n\"File in Use\" = \"檔案正在使用中\";\n\n/* directory kind */\n\"Folder\" = \"檔案夾\";\n\n/* FTP service timed out */\n\"FTP service not available; Remote server has closed connection\" = \"FTP 服務無法取得；遠端伺服器已關閉連線\";\n\n/* FTP no service */\n\"FTP Service Unavailable\" = \"無法取得 FTP 服務\";\n\n/* filesize: gigabytes */\n\"GB\" = \"GB\";\n\n/* transfer controller */\n\"Hide Files\" = \"隱藏檔案\";\n\n/* Couldn't open the port to the host\n   Host Unavailable */\n\n\"Host Unavailable\" = \"無法取得主機\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\n\"Insufficient storage space available\" = \"可用的儲存空間不足\";\n\n/* FTP Error */\n\"Invalid Account name\" = \"帳號名稱無效\";\n\n/* Stream Error before opening */\n\"Is the service running on the server\" = \"是在此伺服器上執行的服務\";\n\n/* filesize: kilobytes */\n\"KB\" = \"KB\";\n\n/* outline view column header name\n   outline view column context menu item */\n\n\"Kind\" = \"種類\";\n\n/* File doesn't exist */\n\"Local file %@ doesn't exist\" = \"本機檔案 %@ 不存在\";\n\n/* FTP download error */\n\"Local File already exists\" = \"本機檔案已存在\";\n\n/* filesize: megabytes */\n\"MB\" = \"MB\";\n\n/* outline view column header name\n   outline view column context menu item */\n\n\"Name\" = \"名稱\";\n\n/* tree controller action gear */\n\"New Folder\" = \"新增檔案夾\";\n\n/* config */\n\"No configuration file specified\" = \"未指定設定檔\";\n\n/* failed to find a connection class */\n\"No connection available for requested connection type\" = \"請求的連線類型沒有可用的連線\";\n\n/* FTP Error */\n\"No Storage Space Available\" = \"沒有可用的儲存空間\";\n\n/* No such file */\n\"No such file\" = \"無此檔案\";\n\n/* FTP Error */\n\"Not Logged In\" = \"尚未登入\";\n\n/* OK */\n\"OK\" = \"好的\";\n\n/* WebDAV Uploading Error\n   MobileMe File Uploading Error */\n\n\"Parent Folder does not exist\" = \"主體檔案夾不存在\";\n\n/* filesize: petabytes */\n\"PB\" = \"PB\";\n\n/* Permission Denied */\n\"Permission Denied\" = \"權限遭拒絕\";\n\n/* mimic Finder naming conventions */\n\"Plain text document\" = \"純文字文件\";\n\n/* config\n   error */\n\n\"Quit\" = \"結束\";\n\n/* tree controller action gear */\n\"Refresh\" = \"重新整理\";\n\n/* file transcript */\n\"Renaming %@ to %@\" = \"正在將 %1$@ 重新命名為 %2$@\";\n\n/* abbreviation for seconds, e.g. 12 MB/s */\n\"s\" = \"s\";\n\n/* SFTP authenticaton error */\n\"SFTP connections require some form of authentication.\" = \"SFTP 連線需要進行某種形式的認證。\";\n\n/* transfer controller */\n\"Show Files\" = \"顯示檔案\";\n\n/* context menu\n   tree controller action gear */\n\n\"Show Hidden Files\" = \"顯示隱藏檔案\";\n\n/* context menu\n   tree controller action gear */\n\n\"Show Package Extensions\" = \"顯示套件擴充內容\";\n\n/* outline view column header name\n   outline view column context menu item */\n\n\"Size\" = \"大小\";\n\n/* close window */\n\"Stop Upload\" = \"停止上傳\";\n\n/* close window */\n\"Stop Upload?\" = \"停止上傳？\";\n\n/* Error creating stream */\n\"Stream Unavailable\" = \"資料流無法取得\";\n\n/* filesize: terabytes */\n\"TB\" = \"TB\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\n\"The body of the request is not supported\" = \"不支援此請求的內容\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\n\"The directory already exists\" = \"目錄已存在\";\n\n/* MobileMe Create Directory Error\n   WebDAV Create Directory Error */\n\n\"The server does not allow the creation of directories at the current location\" = \"此伺服器不允許在目前的位置製作目錄\";\n\n/* error transferring */\n\"The transferred file has a size of 0.\" = \"傳輸的檔案大小為 0。\";\n\n/* MobileMe Directory Contents Error */\n\"There is no MobileMe access to the directory\" = \"此目錄無法使用 MobileMe 存取\";\n\n/* No WebDAV access to the specified path */\n\"There is no WebDAV access to the directory\" = \"此目錄無法使用 WebDAV 存取\";\n\n/* error */\n\"This droplet is missing the original application that created it. You will need to reinstall the original application.\" = \"此 droplet 遺失原始的製作應用程式。您需要重新安裝其原始的應用程式。\";\n\n/* time out */\n\"Timed Out waiting for remote host.\" = \"等待遠端主機逾時。\";\n\n/* Transfer Controller */\n\"Too many files had transfer problems\" = \"太多檔案發生傳輸問題\";\n\n/* FileConnection failed to copy file */\n\"Unable to store data in file\" = \"無法儲存檔案資料\";\n\n/* WebDAV Error */\n\"Unknown Error Occurred\" = \"發生未知的錯誤\";\n\n/* status message */\n\"Uploading\" = \"上傳\";\n\n/* status */\n\"Uploading %@\" = \"正在上傳 %@\";\n\n/* file transcript */\n\"Writing data to %@\" = \"正在寫入資料至 %@\";\n\n/* Bonjour Error */\n\"You can not add a child collection to the Bonjour category.\" = \"您無法將子頁面集加到 Bonjour 類別中。\";\n\n/* Bonjour Error */\n\"You can not add a new server to the Bonjour category.\" = \"您無法將新伺服器加到 Bonjour 類別中。\";\n\n/* FTP file upload error */\n\"You do not have access to write file %@\" = \"您沒有存取權限可寫入檔案 %@\";\n\n/* FTP Error */\n\"You need an Account to Upload Files\" = \"您需要“上傳檔案”的帳號\";"
  },
  {
    "path": "UKQueue/UKKQueue_Symbols",
    "content": "_UKFileWatcherRenameNotification\n_UKFileWatcherLinkCountChangeNotification\n_UKFileWatcherDeleteNotification\n_UKFileWatcherAccessRevocationNotification\n_UKFileWatcherWriteNotification\n_UKFileWatcherAttributeChangeNotification\n_UKFileWatcherSizeIncreaseNotification\n.objc_class_name_UKFNSubscribeFileWatcher\n_UKFileSubscriptionProc\n.objc_class_name_UKKQueue\n.objc_category_name_NSObject_UKMainThreadProxy\n.objc_class_name_UKMainThreadProxy\n"
  },
  {
    "path": "UnitTests/BaseCKProtocolTests.h",
    "content": "//\n//  Created by Sam Deane on 06/11/2012.\n//  Copyright 2012 Karelia Software. All rights reserved.\n//\n\n#import \"BaseCKTests.h\"\n\n@interface BaseCKProtocolTests : BaseCKTests\n\n\n@end\n\n"
  },
  {
    "path": "UnitTests/BaseCKProtocolTests.m",
    "content": "//\n//  Created by Sam Deane on 06/11/2012.\n//  Copyright 2012 Karelia Software. All rights reserved.\n//\n\n#import \"BaseCKProtocolTests.h\"\n\n#import \"KMSServer.h\"\n#import \"KMSTranscriptEntry.h\"\n\n#import \"CK2FileManagerWithTestSupport.h\"\n\n#import \"CK2Authentication.h\"\n\n#import <XCTest/XCTest.h>\n#import <curl/curl.h>\n\n@implementation BaseCKProtocolTests\n\n\n- (BOOL)setupTest\n{\n    BOOL result;\n    if ([self isMemberOfClass:[BaseCKProtocolTests class]])\n    {\n        XCTFail(@\"Are you trying to run the tests on BaseCKProtocolTests? They should be run by subclasses.\");\n        result = NO;\n    }\n    else\n    {\n        result = [super setupTest];\n    }\n\n    return result;\n}\n\n- (void)tearDown\n{\n    if ([self isSetup])\n    {\n        [self removeTestDirectory];\n    }\n\n    [super tearDown];\n}\n\n- (void)enumerateWithBadURLS:(void (^)(NSURL* url))block\n{\n    if ([self setupTest])\n    {\n        NSArray* badURLS = @[@\"idontexist-noreally.com/nonexistantfolder\", @\"127.0.0.1/nonexistantfolder\"];\n        for (NSString* urlPart in badURLS)\n        {\n            NSURL* url = [NSURL URLWithString:[NSString stringWithFormat:@\"%@://%@\", [self.protocol lowercaseString], urlPart]];\n            block(url);\n        }\n    }\n}\n\n\n\n#pragma mark - Tests\n\n- (void)testMakeRemoveOnly\n{\n    if ([self setupTest])\n    {\n        [self makeTestDirectoryWithFiles:YES];\n        [self removeTestDirectory];\n    }\n}\n\n- (void)testContentsOfDirectoryAtURL\n{\n    if ([self setupTest])\n    {\n        [self makeTestDirectoryWithFiles:YES];\n        if (self.useMockServer)\n        {\n            self.server.data = [self mockServerDirectoryListingData];\n        }\n\n        NSURL* url = [self URLForTestFolder];\n        NSDirectoryEnumerationOptions options = NSDirectoryEnumerationSkipsSubdirectoryDescendants;\n        [self.manager contentsOfDirectoryAtURL:url includingPropertiesForKeys:nil options:options completionHandler:^(NSArray *contents, NSError *error) {\n\n            if (error)\n            {\n                XCTFail(@\"got error %@\", error);\n            }\n            else\n            {\n                NSUInteger count = [contents count];\n                XCTAssertTrue(count == 2, @\"should have two results, had %ld\", count);\n                if (count == 2)\n                {\n                    [self checkURL:contents[0] isNamed:[[self URLForTestFile1] lastPathComponent]];\n                    [self checkURL:contents[1] isNamed:[[self URLForTestFile2] lastPathComponent]];\n                }\n            }\n\n            [self pause];\n        }];\n\n        [self runUntilPaused];\n    }\n}\n\n- (void)testContentsOfDirectoryAtURLBadURL\n{\n    [self enumerateWithBadURLS:^(NSURL *url) {\n        NSDirectoryEnumerationOptions options = NSDirectoryEnumerationSkipsSubdirectoryDescendants;\n        [self.manager contentsOfDirectoryAtURL:url includingPropertiesForKeys:nil options:options completionHandler:^(NSArray *contents, NSError *error) {\n            XCTAssertNotNil(error, @\"expected an error\");\n            [self pause];\n        }];\n        [self runUntilPaused];\n    }];\n}\n\n- (void)testContentsOfDirectoryAtURLBadLogin\n{\n    if ([self setupTest] && [self protocolUsesAuthentication])\n    {\n        [self useBadLogin];\n\n        NSURL* url = [self URLForTestFolder];\n        NSDirectoryEnumerationOptions options = NSDirectoryEnumerationSkipsSubdirectoryDescendants;\n        [self.manager contentsOfDirectoryAtURL:url includingPropertiesForKeys:nil options:options completionHandler:^(NSArray *contents, NSError *error) {\n\n            XCTAssertTrue([self checkIsAuthenticationError:error], @\"was expecting authentication error, got %@\", error);\n            XCTAssertTrue([contents count] == 0, @\"shouldn't get content\");\n\n            [self pause];\n        }];\n\n        [self runUntilPaused];\n    }\n}\n\n- (void)testEnumerateContentsOfURL\n{\n    if ([self setupTest])\n    {\n        [self makeTestDirectoryWithFiles:YES];\n        if (self.useMockServer)\n        {\n            self.server.data = [self mockServerDirectoryListingData];\n        }\n\n        NSURL* url = [self URLForTestFolder];\n        NSDirectoryEnumerationOptions options = NSDirectoryEnumerationSkipsSubdirectoryDescendants|CK2DirectoryEnumerationIncludesDirectory;\n        NSMutableArray* expectedURLS = [NSMutableArray arrayWithArray:@[\n                                        url,\n                                        [self URLForTestFile1],\n                                        [self URLForTestFile2]\n                                        ]];\n\n        [self.manager enumerateContentsOfURL:url includingPropertiesForKeys:nil options:options usingBlock:^(NSURL *item) {\n            NSLog(@\"got item %@\", item);\n            [self checkURLs:expectedURLS containItemNamed:[item lastPathComponent]];\n        } completionHandler:^(NSError *error) {\n            if (error)\n            {\n                XCTFail(@\"got error %@\", error);\n            }\n            [self pause];\n        }];\n\n        [self runUntilPaused];\n    }\n}\n\n- (void)testEnumerateContentsOfURLBadURL\n{\n    [self enumerateWithBadURLS:^(NSURL *url) {\n        NSDirectoryEnumerationOptions options = NSDirectoryEnumerationSkipsSubdirectoryDescendants|CK2DirectoryEnumerationIncludesDirectory;\n        [self.manager enumerateContentsOfURL:url includingPropertiesForKeys:nil options:options usingBlock:^(NSURL *item) {\n        } completionHandler:^(NSError *error) {\n            XCTAssertNotNil(error, @\"expected an error\");\n            [self pause];\n        }];\n        [self runUntilPaused];\n    }];\n}\n\n- (void)testEnumerateContentsOfURLBadLogin\n{\n    if ([self setupTest] && [self protocolUsesAuthentication])\n    {\n        [self useBadLogin];\n        NSURL* url = [self URLForTestFolder];\n        NSDirectoryEnumerationOptions options = NSDirectoryEnumerationSkipsSubdirectoryDescendants|CK2DirectoryEnumerationIncludesDirectory;\n        [self.manager enumerateContentsOfURL:url includingPropertiesForKeys:nil options:options usingBlock:^(NSURL *item) {\n\n            XCTFail(@\"shouldn't get any items\");\n\n        } completionHandler:^(NSError *error) {\n\n            XCTAssertTrue([self checkIsAuthenticationError:error], @\"was expecting authentication error, got %@\", error);\n            [self pause];\n\n        }];\n\n        [self runUntilPaused];\n    }\n}\n\n- (void)testCreateDirectoryAtURL\n{\n    if ([self setupTest])\n    {\n        [self removeTestDirectory];\n\n        NSURL* url = [self URLForTestFolder];\n        [self.manager createDirectoryAtURL:url withIntermediateDirectories:YES openingAttributes:nil completionHandler:^(NSError *error) {\n            XCTAssertNil(error, @\"got unexpected error %@\", error);\n\n            [self pause];\n        }];\n        \n        [self runUntilPaused];\n    }\n}\n\n- (void)testCreateDirectoryAtURLBadURL\n{\n    [self enumerateWithBadURLS:^(NSURL *url) {\n        [self.manager createDirectoryAtURL:url withIntermediateDirectories:YES openingAttributes:nil completionHandler:^(NSError *error) {\n            XCTAssertNotNil(error, @\"expected an error\");\n            [self pause];\n        }];\n        [self runUntilPaused];\n    }];\n}\n\n- (void)testCreateDirectoryAtURLAlreadyExists\n{\n    if ([self setupTest])\n    {\n        [self makeTestDirectoryWithFiles:NO];\n        [self useResponseSet:@\"make fails\"];\n\n        NSURL* url = [self URLForTestFolder];\n        [self.manager createDirectoryAtURL:url withIntermediateDirectories:YES openingAttributes:nil completionHandler:^(NSError *error) {\n            BOOL errorCanBeNil = [self usingProtocol:@\"file\"]; // the file protocol doesn't report an error in this situation\n            XCTAssertTrue([self checkIsCreationError:error nilAllowed:errorCanBeNil], @\"expected file can't write error, got %@\", error);\n\n            [self pause];\n        }];\n        \n        [self runUntilPaused];\n    }\n}\n\n- (void)testCreateDirectoryAtURLBadLogin\n{\n    if ([self setupTest] && [self protocolUsesAuthentication])\n    {\n        [self useBadLogin];\n        NSURL* url = [self URLForTestFolder];\n        [self.manager createDirectoryAtURL:url withIntermediateDirectories:YES openingAttributes:nil completionHandler:^(NSError *error) {\n\n            XCTAssertTrue([self checkIsAuthenticationError:error], @\"was expecting authentication error, got %@ underlying %@\", error, error.userInfo[NSUnderlyingErrorKey]);\n            [self pause];\n        }];\n\n        [self runUntilPaused];\n    }\n}\n\n- (void)testCreateFileAtURL\n{\n    if ([self setupTest])\n    {\n        [self makeTestDirectoryWithFiles:NO];\n\n        NSURL* url = [self URLForTestFile1];\n        NSData* data = [@\"Some test text\" dataUsingEncoding:NSUTF8StringEncoding];\n        [self.manager createFileAtURL:url contents:data withIntermediateDirectories:YES openingAttributes:nil progressBlock:nil completionHandler:^(NSError *error) {\n            XCTAssertNil(error, @\"got unexpected error %@\", error);\n\n            [self pause];\n        }];\n\n        [self runUntilPaused];\n    }\n}\n\n- (void)testCreateFileAtURLBadURL\n{\n    NSData* data = [@\"Some test text\" dataUsingEncoding:NSUTF8StringEncoding];\n    [self enumerateWithBadURLS:^(NSURL *url) {\n        [self.manager createFileAtURL:url contents:data withIntermediateDirectories:YES openingAttributes:nil progressBlock:nil completionHandler:^(NSError *error) {\n            XCTAssertNotNil(error, @\"expected an error\");\n            [self pause];\n        }];\n        [self runUntilPaused];\n    }];\n}\n\n- (void)testCreateFileAtURL2\n{\n    if ([self setupTest])\n    {\n        [self makeTestDirectoryWithFiles:NO];\n\n        NSURL* temp = [NSURL fileURLWithPath:NSTemporaryDirectory()];\n        NSURL* source = [temp URLByAppendingPathComponent:@\"test.txt\"];\n        NSError* error = nil;\n        XCTAssertTrue([@\"Some test text\" writeToURL:source atomically:YES encoding:NSUTF8StringEncoding error:&error], @\"failed to write temporary file with error %@\", error);\n\n        NSURL* url = [self URLForTestFile1];\n\n        [self.manager createFileAtURL:url withContentsOfURL:source withIntermediateDirectories:YES openingAttributes:nil progressBlock:nil completionHandler:^(NSError *error) {\n            XCTAssertNil(error, @\"got unexpected error %@\", error);\n\n            [self pause];\n        }];\n\n        [self runUntilPaused];\n\n        XCTAssertTrue([[NSFileManager defaultManager] removeItemAtURL:source error:&error], @\"failed to remove temporary file with error %@\", error);\n    }\n}\n\n- (void)testCreateFileAtURLBadURL2\n{\n    NSURL* temp = [NSURL fileURLWithPath:NSTemporaryDirectory()];\n    NSURL* source = [temp URLByAppendingPathComponent:@\"test.txt\"];\n    NSError* error = nil;\n    XCTAssertTrue([@\"Some test text\" writeToURL:source atomically:YES encoding:NSUTF8StringEncoding error:&error], @\"failed to write temporary file with error %@\", error);\n\n    [self enumerateWithBadURLS:^(NSURL *url) {\n        [self.manager createFileAtURL:url withContentsOfURL:source withIntermediateDirectories:YES openingAttributes:nil progressBlock:nil completionHandler:^(NSError *error) {\n            XCTAssertNotNil(error, @\"expected an error\");\n            [self pause];\n        }];\n        [self runUntilPaused];\n    }];\n\n    XCTAssertTrue([[NSFileManager defaultManager] removeItemAtURL:source error:&error], @\"failed to remove temporary file with error %@\", error);\n}\n\n- (void)testCreateFileAtURLSourceDoesntExist\n{\n    if ([self setupTest])\n    {\n        NSURL* source = [NSURL fileURLWithPath:@\"/tmp/i-dont-exist.txt\"];\n        NSURL* url = [self URLForTestFile1];\n\n        [self.manager createFileAtURL:url withContentsOfURL:source withIntermediateDirectories:YES openingAttributes:nil progressBlock:nil completionHandler:^(NSError *error) {\n            XCTAssertNotNil(error, @\"expected an error\");\n\n            [self pause];\n        }];\n\n        [self runUntilPaused];\n    }\n}\n\n- (void)testCreateFileAtURLSourceIsntLocal\n{\n    if ([self setupTest])\n    {\n        NSURL* source = [NSURL URLWithString:@\"http://karelia.com/tmp/i-dont-exist.txt\"];\n        NSURL* url = [self URLForTestFile1];\n\n        [self.manager createFileAtURL:url withContentsOfURL:source withIntermediateDirectories:YES openingAttributes:nil progressBlock:nil completionHandler:^(NSError *error) {\n            XCTAssertNotNil(error, @\"expected an error\");\n\n            [self pause];\n        }];\n\n        [self runUntilPaused];\n    }\n}\n\n- (void)testUploadOver16k\n{\n    if ([self setupTest])\n    {\n        [self makeTestDirectoryWithFiles:NO];\n\n        NSURL* url = [self URLForTestFile1];\n\n        // make a block of data and fill it with stuff in an attempt to avoid any sneaky compression speeding things up\n        NSUInteger length = 32768;\n        NSMutableData* data = [NSMutableData dataWithCapacity:length * sizeof(UInt16)];\n        UInt16* bytes = (UInt16*)data.bytes;\n        for (NSUInteger n = 0; n < length; ++n)\n        {\n            bytes[n] = n;\n        }\n\n        [self.manager createFileAtURL:url contents:data withIntermediateDirectories:YES openingAttributes:nil progressBlock:nil completionHandler:^(NSError *error) {\n            XCTAssertNil(error, @\"got unexpected error %@\", error);\n\n            [self pause];\n        }];\n\n        [self runUntilPaused];\n    }\n}\n\n- (void)testCreateFileDenied\n{\n    if ([self setupTest])\n    {\n        [self useResponseSet:@\"stor denied\"];\n        NSURL* url = [self URLForPath:@\"/BaseCKProtocolTests/test.txt\"]; // should fail as it's at the root - we put it in a subfolder just in case\n        NSData* data = [@\"Some test text\" dataUsingEncoding:NSUTF8StringEncoding];\n\n        [self.manager createFileAtURL:url contents:data withIntermediateDirectories:YES openingAttributes:nil progressBlock:nil completionHandler:^(NSError *error) {\n            XCTAssertNotNil(error);\n            // TODO: Test for specific error\n\n            [self pause];\n        }];\n\n        [self runUntilPaused];\n    }\n}\n\n- (void)testCreateFileAtRootReallyGoesIntoRoot\n{\n    // I found we were constructing URLs wrong for the paths like: /example.txt\n    // Such files were ending up in the home folder, rather than root\n\n    if ([self setupTest] && [self usingMockServerWithProtocol:@\"ftp\"]) // only perform this test for FTP using MockServer\n    {\n        [self useResponseSet:@\"chroot fail\"];\n        NSURL* url = [self URLForPath:@\"/test.txt\"];\n        NSData* data = [@\"Some test text\" dataUsingEncoding:NSUTF8StringEncoding];\n\n        [self.manager createFileAtURL:url contents:data withIntermediateDirectories:YES openingAttributes:nil progressBlock:nil completionHandler:^(NSError *error) {\n            XCTAssertNil(error, @\"got unexpected error %@\", error);\n\n            // Make sure the file went into root, rather than home\n            // This could be done by changing directory to /, or storing directly to /test.txt\n            [self.server.transcript enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(KMSTranscriptEntry *aTranscriptEntry, NSUInteger idx, BOOL *stop) {\n\n                // Search back for the STOR command\n                if (aTranscriptEntry.type == KMSTranscriptInput && [aTranscriptEntry.value hasPrefix:@\"STOR \"])\n                {\n                    *stop = YES;\n\n                    // Was the STOR command itself valid?\n                    if ([aTranscriptEntry.value hasPrefix:@\"STOR /test.txt\"])\n                    {\n\n                    }\n                    else\n                    {\n                        // Search back for the preceeding CWD command\n                        NSIndexSet *indexes = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, idx)];\n                        __block BOOL haveChangedDirectory = NO;\n\n                        [self.server.transcript enumerateObjectsAtIndexes:indexes options:NSEnumerationReverse usingBlock:^(KMSTranscriptEntry *aTranscriptEntry, NSUInteger idx, BOOL *stop) {\n\n                            if (aTranscriptEntry.type == KMSTranscriptInput && [aTranscriptEntry.value hasPrefix:@\"CWD \"])\n                            {\n                                *stop = YES;\n                                haveChangedDirectory = YES;\n                                XCTAssertTrue([aTranscriptEntry.value isEqualToString:@\"CWD /\\r\\n\"], @\"libcurl changed to the wrong directory: %@\", aTranscriptEntry.value);\n                            }\n                        }];\n\n                        XCTAssertTrue(haveChangedDirectory, @\"libcurl never changed directory\");\n                    }\n                }\n            }];\n\n            [self pause];\n        }];\n\n        [self runUntilPaused];\n    }\n}\n\n- (void)testCreateFileSerialThrash\n{\n    // Create the same file multiple times in a row. This has been tending to fail weirdly when testing CURLTransfer directly\n\n    if ([self setupTest])\n    {\n        [self makeTestDirectoryWithFiles:NO];\n\n        NSURL* url = [self URLForTestFile1];\n        NSData* data = [@\"Some test text\" dataUsingEncoding:NSUTF8StringEncoding];\n\n        [self.manager createFileAtURL:url contents:data withIntermediateDirectories:YES openingAttributes:nil progressBlock:nil completionHandler:^(NSError *error) {\n\n            XCTAssertNil(error, @\"got unexpected error %@\", error);\n\n            [self.manager createFileAtURL:url contents:data withIntermediateDirectories:YES openingAttributes:nil progressBlock:nil completionHandler:^(NSError *error) {\n\n                XCTAssertNil(error, @\"got unexpected error %@\", error);\n\n                [self.manager createFileAtURL:url contents:data withIntermediateDirectories:YES openingAttributes:nil progressBlock:nil completionHandler:^(NSError *error) {\n\n                    XCTAssertNil(error, @\"got unexpected error %@\", error);\n\n                    [self.manager createFileAtURL:url contents:data withIntermediateDirectories:YES openingAttributes:nil progressBlock:nil completionHandler:^(NSError *error) {\n\n                        XCTAssertNil(error, @\"got unexpected error %@\", error);\n                        [self pause];\n                    }];\n                }];\n            }];\n        }];\n\n        [self runUntilPaused];\n    }\n}\n\n- (void)testRenameFileAtURL\n{\n    if ([self setupTest])\n    {\n        [self makeTestDirectoryWithFiles:YES];\n        NSURL* url = [self URLForTestFile1];\n        NSString* extension = [url pathExtension];\n        NSString* newName = [@\"renamed\" stringByAppendingPathExtension:extension];\n        NSURL* renamed = [[url URLByDeletingLastPathComponent] URLByAppendingPathComponent:newName];\n\n        // rename file\n        [self.manager renameItemAtURL:url toFilename:newName completionHandler:^(NSError *error) {\n            XCTAssertNil(error, @\"got unexpected error %@\", error);\n\n            if (!self.useMockServer)\n            {\n                // try to remove original file - if we don't get an error here it's a hint that the move didn't work (although sadly for SFTP we won't get an error currently, so it's not conclusive)\n                [self.manager removeItemAtURL:url completionHandler:^(NSError *error) {\n                    BOOL errorCanBeNil = [self usingMockServerWithProtocol:@\"sftp\"]; // SFTP is a bit crap at reporting errors\n                    XCTAssertTrue([self checkIsRemovalError:error nilAllowed:errorCanBeNil], @\"expected removal error, got %@\", error);\n\n                    // try to remove renamed file - again, if we get an error here it's a big hint that the move didn't work\n                    [self.manager removeItemAtURL:renamed completionHandler:^(NSError *error) {\n                        XCTAssertNil(error, @\"got unexpected error %@\", error);\n                        [self pause];\n                    }];\n                }];\n            }\n            else\n            {\n                [self pause];\n            }\n        }];\n        \n        [self runUntilPaused];\n    }\n}\n\n- (void)testRemoveFileAtURL\n{\n    if ([self setupTest])\n    {\n        [self makeTestDirectoryWithFiles:YES];\n        NSURL* url = [self URLForTestFile1];\n        [self.manager removeItemAtURL:url completionHandler:^(NSError *error) {\n            XCTAssertNil(error, @\"got unexpected error %@\", error);\n            [self pause];\n        }];\n        \n        [self runUntilPaused];\n    }\n}\n\n- (void)testRemoveFileAtURLBadURL\n{\n    [self enumerateWithBadURLS:^(NSURL *url) {\n        [self.manager removeItemAtURL:url completionHandler:^(NSError *error) {\n            XCTAssertNotNil(error, @\"expected an error\");\n            [self pause];\n        }];\n        [self runUntilPaused];\n    }];\n}\n\n- (void)testRemoveFileAtURLFileDoesnExist\n{\n    if ([self setupTest])\n    {\n        [self makeTestDirectoryWithFiles:NO];\n        [self useResponseSet:@\"delete fails\"];\n        NSURL* url = [self URLForTestFile1];\n        [self.manager removeItemAtURL:url completionHandler:^(NSError *error) {\n\n            BOOL errorCanBeNil = [self usingProtocol:@\"sftp\"]; // SFTP is a bit crap at reporting errors\n            XCTAssertTrue([self checkIsRemovalError:error nilAllowed:errorCanBeNil], @\"expected removal error, got %@\", error);\n\n            [self pause];\n        }];\n\n        [self runUntilPaused];\n    }\n\n}\n\n- (void)testRemoveFileAtURLContainingFolderDoesnExist\n{\n    if ([self setupTest])\n    {\n        [self removeTestDirectory];\n        [self useResponseSet:@\"delete fails missing directory\"];\n        NSURL* url = [self URLForTestFile1];\n        [self.manager removeItemAtURL:url completionHandler:^(NSError *error) {\n            BOOL errorCanBeNil = [self usingMockServerWithProtocol:@\"sftp\"]; // SFTP is a bit crap at reporting errors\n            XCTAssertTrue([self checkIsRemovalError:error nilAllowed:errorCanBeNil], @\"expected removal error, got %@\", error);\n\n            [self pause];\n        }];\n\n        [self runUntilPaused];\n    }\n\n}\n\n- (void)testRemoveFileAtURLBadLogin\n{\n    if ([self setupTest] && [self protocolUsesAuthentication])\n    {\n        [self useBadLogin];\n        NSURL* url = [self URLForTestFile1];\n        [self.manager removeItemAtURL:url completionHandler:^(NSError *error) {\n\n            XCTAssertTrue([self checkIsAuthenticationError:error], @\"was expecting authentication error, got %@\", error);\n            [self pause];\n        }];\n\n        [self runUntilPaused];\n    }\n}\n\n- (void)testSetUnknownAttributes\n{\n    if ([self setupTest])\n    {\n        [self makeTestDirectoryWithFiles:YES];\n        NSURL* url = [self URLForTestFile1];\n        NSDictionary* values = @{ @\"test\" : @\"test\" };\n        [self.manager setAttributes:values ofItemAtURL:url completionHandler:^(NSError *error) {\n            XCTAssertNil(error, @\"got unexpected error %@\", error);\n            [self pause];\n        }];\n\n        [self runUntilPaused];\n    }\n}\n\n- (void)testSetAttributesOnFile\n{\n    if ([self setupTest])\n    {\n        [self makeTestDirectoryWithFiles:YES];\n        NSURL* url = [self URLForTestFile1];\n        NSDictionary* values = @{ NSFilePosixPermissions : @(0744)};\n        [self.manager setAttributes:values ofItemAtURL:url completionHandler:^(NSError *error) {\n            XCTAssertNil(error, @\"got unexpected error %@\", error);\n            [self pause];\n        }];\n\n        [self runUntilPaused];\n    }\n}\n\n- (void)testSetAttributesOnFileBadURL\n{\n    NSDictionary* values = @{ NSFilePosixPermissions : @(0744)};\n    [self enumerateWithBadURLS:^(NSURL *url) {\n        [self.manager setAttributes:values ofItemAtURL:url completionHandler:^(NSError *error) {\n            XCTAssertNotNil(error, @\"expected an error\");\n            [self pause];\n        }];\n        [self runUntilPaused];\n    }];\n}\n\n- (void)testSetAttributesOnFolder\n{\n    if ([self setupTest])\n    {\n        [self makeTestDirectoryWithFiles:NO];\n        NSURL* url = [self URLForTestFolder];\n        NSDictionary* values = @{ NSFilePosixPermissions : @(0777)};\n        [self.manager setAttributes:values ofItemAtURL:url completionHandler:^(NSError *error) {\n            XCTAssertNil(error, @\"got unexpected error %@\", error);\n            [self pause];\n        }];\n\n        [self runUntilPaused];\n    }\n}\n\n- (void)testSetAttributesOnFileDoesntExist\n{\n    if ([self setupTest])\n    {\n        [self makeTestDirectoryWithFiles:NO];\n        [self useResponseSet:@\"chmod not permitted\"];\n        NSURL* url = [self URLForTestFile1];\n        NSDictionary* values = @{ NSFilePosixPermissions : @(0744)};\n        [self.manager setAttributes:values ofItemAtURL:url completionHandler:^(NSError *error) {\n            BOOL errorCanBeNil = [self usingMockServerWithProtocol:@\"webdav\"]; // no errors because it's not supported in WebDAV\n            XCTAssertTrue([self checkIsUpdateError:error nilAllowed:errorCanBeNil], @\"expected file can't write error, got %@\", error);\n            [self pause];\n        }];\n\n        [self runUntilPaused];\n    }\n}\n\n- (void)testSetAttributesOnFolderDoesntExist\n{\n    if ([self setupTest])\n    {\n        [self removeTestDirectory];\n        [self useResponseSet:@\"chmod not permitted\"];\n        NSURL* url = [self URLForTestFolder];\n        NSDictionary* values = @{ NSFilePosixPermissions : @(0744)};\n        [self.manager setAttributes:values ofItemAtURL:url completionHandler:^(NSError *error) {\n            BOOL errorCanBeNil = [self usingMockServerWithProtocol:@\"webdav\"]; // no errors because it's not supported in WebDAV\n            XCTAssertTrue([self checkIsUpdateError:error nilAllowed:errorCanBeNil], @\"expected file can't write error, got %@\", error);\n            [self pause];\n        }];\n\n        [self runUntilPaused];\n    }\n}\n\n- (void)testSetAttributesCHMODNotUnderstood\n{\n    if (self.useMockServer && [self setupTest]) // no way to test this on a real server (unless it actually doesn't understand CHMOD of course...)\n    {\n        [self useResponseSet:@\"chmod not understood\"];\n        NSURL* url = [self URLForPath:@\"/directory/intermediate/test.txt\"];\n        NSDictionary* values = @{ NSFilePosixPermissions : @(0744)};\n        [self.manager setAttributes:values ofItemAtURL:url completionHandler:^(NSError *error) {\n            // For servers which don't understand or support CHMOD, treat as success, like -[NSURL setResourceValue:forKey:error:] does\n            XCTAssertNil(error, @\"got unexpected error %@\", error);\n            [self pause];\n        }];\n\n        [self runUntilPaused];\n    }\n}\n\n- (void)testSetAttributesCHMODUnsupported\n{\n    if (self.useMockServer && [self setupTest]) // no way to test this on a real server (unless it actually doesn't support CHMOD of course...)\n    {\n        [self useResponseSet:@\"chmod unsupported\"];\n        NSURL* url = [self URLForPath:@\"/directory/intermediate/test.txt\"];\n        NSDictionary* values = @{ NSFilePosixPermissions : @(0744)};\n        [self.manager setAttributes:values ofItemAtURL:url completionHandler:^(NSError *error) {\n            // For servers which don't understand or support CHMOD, treat as success, like -[NSURL setResourceValue:forKey:error:] does\n            XCTAssertNil(error, @\"got unexpected error %@\", error);\n            [self pause];\n        }];\n\n        [self runUntilPaused];\n    }\n}\n\n- (void)testSetAttributesOperationNotPermitted\n{\n    if (self.useMockServer && [self setupTest]) // can't reliably target a file that we don't have permission to change on a real server, since we don't know what it has\n    {\n        [self useResponseSet:@\"chmod not permitted\"];\n        NSURL* url = [self URLForTestFile1];\n        NSDictionary* values = @{ NSFilePosixPermissions : @(0744)};\n        [self.manager setAttributes:values ofItemAtURL:url completionHandler:^(NSError *error) {\n            NSString* domain = error.domain;\n            if ([domain isEqualToString:NSURLErrorDomain])\n            {\n                // get NSURLErrorNoPermissionsToReadFile if the path doesn't exist or isn't readable on the server\n                XCTAssertTrue(error.code == NSURLErrorNoPermissionsToReadFile, @\"unexpected error %@\", error);\n            }\n            else if ([domain isEqualToString:NSCocoaErrorDomain])\n            {\n                XCTAssertTrue((error.code == NSFileWriteUnknownError || // FTP has no hard way to know it was a permissions error\n                              error.code == NSFileWriteNoPermissionError), @\"unexpected error %@\", error);\n            }\n            else\n            {\n                XCTFail(@\"unexpected error %@\", error);\n            }\n\n            [self pause];\n        }];\n        \n        [self runUntilPaused];\n    }\n}\n\n- (void)testBadLoginThenGoodLogin\n{\n    if ([self setupTest] && [self protocolUsesAuthentication])\n    {\n        [self removeTestDirectory];\n        [self useBadLogin];\n        \n        NSURL* url = [self URLForTestFolder];\n        [self.manager createDirectoryAtURL:url withIntermediateDirectories:YES openingAttributes:nil completionHandler:^(NSError *error) {\n            \n            XCTAssertTrue([self checkIsAuthenticationError:error], @\"was expecting authentication error, got %@\", error);\n            \n            self.user = self.originalUser;\n            [self useResponseSet:@\"default\"];\n            \n            [self.manager createDirectoryAtURL:url withIntermediateDirectories:YES openingAttributes:nil completionHandler:^(NSError *error) {\n                XCTAssertNil(error, @\"got unexpected error %@\", error);\n                \n                [self pause];\n            }];\n        }];\n\n        [self runUntilPaused];\n    }\n}\n\n@end"
  },
  {
    "path": "UnitTests/BaseCKTests.h",
    "content": "//\n//  Created by Sam Deane on 06/11/2012.\n//  Copyright 2012 Karelia Software. All rights reserved.\n//\n\n#import \"KMSTestCase.h\"\n#import \"KMSState.h\"\n#import \"CK2FileManager.h\"\n\n@interface BaseCKTests : KMSTestCase<CK2FileManagerDelegate>\n\n@property (strong, nonatomic) CK2FileManager* manager;\n@property (assign, atomic) KMSState state;\n@property (strong, nonatomic) NSMutableString* transcript;\n@property (readonly, nonatomic) NSString* protocol;\n@property (assign, nonatomic) BOOL useMockServer;\n@property (strong, nonatomic) NSString* originalUser;\n@property (strong, nonatomic) NSString* originalPassword;\n\n\n- (BOOL)setupTest;\n- (BOOL)isSetup;\n- (BOOL)protocolUsesAuthentication;\n- (NSURL*)temporaryFolder;\n\n- (BOOL)usingProtocol:(NSString*)type;\n- (BOOL)usingMockServerWithProtocol:(NSString*)type;\n- (void)useBadLogin;\n- (NSData*)mockServerDirectoryListingData;\n\n#pragma mark - Test File Support\n\n- (NSURL*)URLForTestFolder;\n- (NSURL*)URLForTestFile1;\n- (NSURL*)URLForTestFile2;\n- (void)makeTestDirectoryWithFiles:(BOOL)withFiles;\n- (void)removeTestDirectory;\n\n#pragma mark - Checking\n\n- (void)checkURL:(NSURL*)url isNamed:(NSString*)name;\n- (void)checkURLs:(NSMutableArray*)urls containItemNamed:(NSString*)name;\n- (BOOL)checkIsAuthenticationError:(NSError*)error;\n- (BOOL)checkIsCreationError:(NSError*)error nilAllowed:(BOOL)nilAllowed;\n- (BOOL)checkIsRemovalError:(NSError*)error nilAllowed:(BOOL)nilAllowed;\n- (BOOL)checkIsUpdateError:(NSError*)error nilAllowed:(BOOL)nilAllowed;\n- (BOOL)checkIsMissingError:(NSError*)error nilAllowed:(BOOL)nilAllowed;\n@end\n"
  },
  {
    "path": "UnitTests/BaseCKTests.m",
    "content": "//\n//  Created by Sam Deane on 06/11/2012.\n//  Copyright 2012 Karelia Software. All rights reserved.\n//\n\n#import \"BaseCKTests.h\"\n#import \"CK2Authentication.h\"\n\n#import \"CK2FileManagerWithTestSupport.h\"\n#import \"KMSServer.h\"\n\nstatic const BOOL kMakeRemoveTestFilesOnMockServer = YES;\n\n@interface TestFileDelegate : CK2FileManager<CK2FileManagerDelegate>\n\n@property (strong, nonatomic) BaseCKTests* tests;\n\n@end\n\n/**\n This delegate is used instead of the test itself for operations which are either creating or\n removing the test files and folders on the server.\n\n This helps to prevent those operations from interfering with the state of the actual tests themselves.\n */\n\n@implementation TestFileDelegate\n\n//#define LogHousekeeping NSLog // macro to use for logging \"housekeeping\" output - ie stuff related to making/removing test files, rather than the tests themselves\n#define LogHousekeeping(...)\n\n+ (TestFileDelegate*)delegateWithTest:(BaseCKTests*)tests\n{\n    TestFileDelegate* result = [[TestFileDelegate alloc] init];\n    result.tests = tests;\n\n    return [result autorelease];\n}\n\n- (void)fileManager:(CK2FileManager *)manager operation:(CK2FileOperation *)operation didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(CK2AuthChallengeDisposition, NSURLCredential *))completionHandler;\n{\n    if (challenge.previousFailureCount > 0)\n    {\n        completionHandler(CK2AuthChallengeCancelAuthenticationChallenge, nil);\n    }\n    else\n    {\n\n        NSURLCredential* credential;\n        if ([challenge.protectionSpace.authenticationMethod isEqualToString:CK2AuthenticationMethodHostFingerprint])\n        {\n            credential = [NSURLCredential ck2_credentialForKnownHostWithPersistence:NSURLCredentialPersistenceNone];\n        }\n        else\n        {\n            credential = [NSURLCredential credentialWithUser:self.tests.user password:self.tests.password persistence:NSURLCredentialPersistenceNone];\n        }\n        completionHandler(CK2AuthChallengeUseCredential, credential);\n    }\n\n}\n\n- (void)fileManager:(CK2FileManager *)manager appendString:(NSString *)info toTranscript:(CK2TranscriptType)transcriptType\n{\n    switch (transcriptType)\n    {\n        case CK2TranscriptHeaderIn:\n        case CK2TranscriptHeaderOut:\n            LogHousekeeping(@\"housekeeping %d: %@\", transcriptType, info);\n            break;\n\n        default:\n            break;\n    }\n}\n\n@end\n\n\n@implementation BaseCKTests\n\n- (void)dealloc\n{\n    [_manager release];\n    [_originalPassword release];\n    [_originalUser release];\n    [_transcript release];\n    \n    [super dealloc];\n}\n\n\n- (NSURL*)temporaryFolder\n{\n    NSURL* result = [[NSURL fileURLWithPath:NSTemporaryDirectory()] URLByAppendingPathComponent:[NSString stringWithFormat:@\"%@Tests\", self.protocol]];\n    NSError* error = nil;\n    BOOL ok = [[NSFileManager defaultManager] createDirectoryAtURL:result withIntermediateDirectories:YES attributes:nil error:&error];\n    XCTAssertTrue(ok, @\"failed to make temporary folder with error %@\", error);\n\n    return result;\n}\n\n- (void)removeTemporaryFolder\n{\n    NSError* error = nil;\n    NSURL* tempFolder = [self temporaryFolder];\n    NSFileManager* fm = [NSFileManager defaultManager];\n    [fm removeItemAtURL:tempFolder error:&error];\n}\n\n- (BOOL)makeTemporaryFolder\n{\n    NSError* error = nil;\n    NSFileManager* fm = [NSFileManager defaultManager];\n    NSURL* tempFolder = [self temporaryFolder];\n    BOOL ok = [fm createDirectoryAtURL:tempFolder withIntermediateDirectories:YES attributes:nil error:&error];\n    XCTAssertTrue(ok, @\"couldn't make temporary directory: %@\", error);\n\n    return ok;\n}\n\n- (BOOL)setupManager\n{\n    CK2FileManagerWithTestSupport* fm = [[CK2FileManagerWithTestSupport alloc] init];\n    fm.dontShareConnections = YES;\n    fm.delegate = self;\n    self.manager = fm;\n    self.transcript = [[[NSMutableString alloc] init] autorelease];\n    [fm release];\n\n    return self.manager != nil;\n}\n\n- (BOOL)isSetup\n{\n    return self.manager != nil;\n}\n\n- (NSString*)protocol\n{\n    return @\"Unknown\";\n}\n\n- (BOOL)protocolUsesAuthentication\n{\n    return NO;\n}\n\n- (BOOL)usingProtocol:(NSString*)type\n{\n    return [[self.protocol lowercaseString] isEqualToString:type];\n}\n\n- (BOOL)usingMockServerWithProtocol:(NSString*)type\n{\n    return self.useMockServer && [self usingProtocol:type];\n}\n\n- (void)useBadLogin\n{\n    self.user = @\"bad\";\n    [self useResponseSet:@\"bad login\"];\n}\n\n\n- (NSData*)mockServerDirectoryListingData\n{\n    return nil;\n}\n\n\n- (BOOL)setupFromSettings\n{\n    NSString* setting = nil;\n    NSString* protocol = self.protocol;\n    \n    if (protocol)\n    {\n        NSString* key = [NSString stringWithFormat:@\"CK%@TestURL\", protocol];\n        setting = [[NSUserDefaults standardUserDefaults] objectForKey:key];\n        XCTAssertNotNil(setting, @\"You need to set a test server address for %@ tests. Use the defaults command on the command line: defaults write otest %@ \\\"server-url-here\\\". Use \\\"MockServer\\\" instead of a url to use a mock server instead. Use \\\"Off\\\" instead of a url to disable %@ tests\", protocol, key, key, protocol);\n    }\n\n    BOOL ok;\n    if (!setting || [setting isEqualToString:@\"Off\"])\n    {\n        NSLog(@\"Tests turned off for %@\", protocol);\n        ok = NO;\n    }\n    else if ([setting isEqualToString:@\"MockServer\"])\n    {\n        NSLog(@\"Tests using MockServer for %@\", protocol);\n        self.useMockServer = YES;\n        ok = [super setupServerWithResponseFileNamed:[self.protocol lowercaseString]];\n        [KMSServer setLoggingLevel:KMSLoggingOff];\n    }\n    else\n    {\n        NSURL* url = [NSURL URLWithString:setting];\n        self.user = url.user;\n        self.password = url.password;\n        self.url = [NSURL URLWithString:[NSString stringWithFormat:@\"%@://%@%@/\", url.scheme, url.host, url.path]];\n        ok = YES;\n    }\n\n    return ok;\n}\n\n- (NSString*)testName\n{\n    NSString* name = [[[self.name substringToIndex:[self.name length] - 1] componentsSeparatedByString:@\" \"] objectAtIndex:1];\n    return name;\n}\n\n- (BOOL)setupTest\n{\n    BOOL ok = [self setupFromSettings];\n    if (ok)\n    {\n        self.originalUser = self.user;\n        self.originalPassword = self.password;\n\n        [self setupManager];\n        ok = self.manager != nil;\n    }\n\n    if (ok)\n    {\n        NSLog(@\"Tests setup for %@, user:%@, password:%@ url:%@\", self.protocol, self.user, self.password, self.url);\n    }\n    else\n    {\n        NSLog(@\"Tests not setup for %@\", self.protocol);\n    }\n\n    NSLog(@\"====================================================================\");\n\n    return ok;\n}\n\n- (void)useResponseSet:(NSString*)name\n{\n    if (self.useMockServer)\n    {\n        [super useResponseSet:name];\n    }\n}\n\n#pragma mark - Delegate\n\n- (void)fileManager:(CK2FileManager *)manager operation:(CK2FileOperation *)operation didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(CK2AuthChallengeDisposition, NSURLCredential *))completionHandler\n{\n    NSString *authMethod = [[challenge protectionSpace] authenticationMethod];\n    if (challenge.previousFailureCount > 0)\n    {\n        NSLog(@\"cancelling authentication\");\n        completionHandler(CK2AuthChallengeCancelAuthenticationChallenge, nil);\n    }\n    else\n    {\n\n        if ([authMethod isEqualToString:NSURLAuthenticationMethodDefault] ||\n            [authMethod isEqualToString:NSURLAuthenticationMethodHTTPDigest] ||\n            [authMethod isEqualToString:NSURLAuthenticationMethodHTMLForm] ||\n            [authMethod isEqualToString:NSURLAuthenticationMethodNTLM] ||\n            [authMethod isEqualToString:NSURLAuthenticationMethodNegotiate])\n        {\n            NSLog(@\"authenticating as %@ %@\", self.user, self.password);\n            NSURLCredential* credential = [NSURLCredential credentialWithUser:self.user password:self.password persistence:NSURLCredentialPersistenceNone];\n            completionHandler(CK2AuthChallengeUseCredential, credential);\n        }\n        else if ([authMethod isEqualToString:CK2AuthenticationMethodHostFingerprint])\n        {\n            NSLog(@\"checking fingerprint\");\n            NSURLCredential* credential = [NSURLCredential ck2_credentialForKnownHostWithPersistence:NSURLCredentialPersistenceNone];\n            completionHandler(CK2AuthChallengeUseCredential, credential);\n        }\n        else\n        {\n            NSLog(@\"performing default authentication\");\n            completionHandler(CK2AuthChallengePerformDefaultHandling, nil);\n        }\n    }\n\n}\n\n- (void)fileManager:(CK2FileManager *)manager appendString:(NSString *)info toTranscript:(CK2TranscriptType)transcriptType\n{\n    NSString* prefix;\n    switch (transcriptType)\n    {\n        case CK2TranscriptHeaderOut:\n            prefix = @\"-->\";\n            break;\n\n        case CK2TranscriptHeaderIn:\n            prefix = @\"<--\";\n            break;\n\n        /*case CKTranscriptData:\n            prefix = @\"(d)\";\n            break;\n         */\n        case CK2TranscriptText:\n            prefix = @\"(i)\";\n            break;\n\n        default:\n            prefix = @\"(?)\";\n    }\n\n    @synchronized(self.transcript)\n    {\n        [self.transcript appendFormat:@\"%@ %@\", prefix, info];\n        UniChar lastChar = [info characterAtIndex:[info length] - 1];\n        if ((lastChar != '\\n') && (lastChar != '\\r'))\n            [self.transcript appendString:@\"\\n\"];\n    }\n}\n\n- (NSURL*)URLForPath:(NSString*)path\n{\n    NSURL* url = [CK2FileManager URLWithPath:path relativeToURL:self.url];\n    return [url absoluteURL];   // account for relative URLs\n}\n\n\n- (void)runUntilPaused\n{\n    if (self.useMockServer)\n    {\n        [super runUntilPaused];\n    }\n    else\n    {\n        while (self.state != KMSPauseRequested)\n        {\n            @autoreleasepool {\n                [[NSRunLoop currentRunLoop] runUntilDate:[NSDate date]];\n            }\n        }\n        self.state = KMSPaused;\n    }\n}\n\n- (void)pause\n{\n    if (self.useMockServer)\n    {\n        [super pause];\n    }\n    else\n    {\n        self.state = KMSPauseRequested;\n    }\n}\n\n- (void)setUp\n{\n    [self removeTemporaryFolder];\n    [self makeTemporaryFolder];\n}\n\n- (void)tearDown\n{\n    [super tearDown];\n    if ([self.transcript length] > 0)\n    {\n        NSLog(@\"\\n\\nSession transcript:\\n%@\\n\\n\", self.transcript);\n    }\n    [self removeTemporaryFolder];\n}\n\n#pragma mark - Test File Support\n\n- (NSURL*)URLForTestFolder\n{\n    return [self URLForPath:[[@\"CK2FileManagerTests\" stringByAppendingPathComponent:self.protocol] stringByAppendingPathComponent:[self testName]]];\n}\n\n- (NSURL*)URLForTestFile1\n{\n    return [[self URLForTestFolder] URLByAppendingPathComponent:@\"file1.txt\"];\n}\n\n- (NSURL*)URLForTestFile2\n{\n    return [[self URLForTestFolder] URLByAppendingPathComponent:@\"file2.txt\"];\n}\n\n- (void)makeTestDirectoryWithFiles:(BOOL)withFiles\n{\n    // we do report errors from here, since something going wrong is likely to affect the result of the test that called us\n\n    if (kMakeRemoveTestFilesOnMockServer || !self.useMockServer)\n    {\n        // if we don't want the test files, remove everything first\n        if (!withFiles)\n        {\n            [self removeTestDirectory];\n        }\n\n        LogHousekeeping(@\"<<<< Making Test Directory\");\n\n        CK2FileManagerWithTestSupport* session = [[CK2FileManagerWithTestSupport alloc] init];\n        session.dontShareConnections = YES;\n        session.delegate = [TestFileDelegate delegateWithTest:self];\n\n        // make the folder if necessary\n        NSURL* url = [self URLForTestFolder];\n        [session createDirectoryAtURL:url withIntermediateDirectories:YES openingAttributes:nil completionHandler:^(NSError *error) {\n            XCTAssertTrue([self checkIsCreationError:error nilAllowed:YES], @\"expected no error or file exists error, got %@\", error);\n\n            // if we want the files, make them too\n            if (withFiles)\n            {\n                NSData* contents = [@\"This is a test file\" dataUsingEncoding:NSUTF8StringEncoding];\n                [session createFileAtURL:[self URLForTestFile1] contents:contents withIntermediateDirectories:YES openingAttributes:nil progressBlock:nil completionHandler:^(NSError *error) {\n                    XCTAssertTrue([self checkIsCreationError:error nilAllowed:YES], @\"expected no error or file exists error, got %@\", error);\n                    [session createFileAtURL:[self URLForTestFile2] contents:contents withIntermediateDirectories:YES openingAttributes:nil progressBlock:nil completionHandler:^(NSError *error) {\n                        XCTAssertTrue([self checkIsCreationError:error nilAllowed:YES], @\"expected no error or file exists error, got %@\", error);\n                        [self pause];\n                        LogHousekeeping(@\"<<<< Made Test Files\");\n                    }];\n                }];\n            }\n            else\n            {\n                [self pause];\n            }\n            LogHousekeeping(@\"<<<< Made Test Directory\");\n        }];\n\n        [self runUntilPaused];\n\n        [session release];\n    }\n}\n\n- (void)removeTestDirectory\n{\n    if (kMakeRemoveTestFilesOnMockServer || !self.useMockServer)\n    {\n        LogHousekeeping(@\"<<<< Removing Test Files\");\n        CK2FileManagerWithTestSupport* session = [[CK2FileManagerWithTestSupport alloc] init];\n        session.dontShareConnections = YES;\n        session.delegate = [TestFileDelegate delegateWithTest:self];\n\n        // we don't care about errors here, we just want to do our best to clean up after any tests\n        [session removeItemAtURL:[self URLForTestFile2] completionHandler:^(NSError *error) {\n            if (error) LogHousekeeping(@\"housekeeping error : %@\", error);\n            [session removeItemAtURL:[self URLForTestFile1] completionHandler:^(NSError *error) {\n                if (error) LogHousekeeping(@\"housekeeping error : %@\", error);\n                [session removeItemAtURL:[self URLForTestFolder] completionHandler:^(NSError *error) {\n                    if (error) LogHousekeeping(@\"housekeeping error : %@\", error);\n                    [self pause];\n\n                    LogHousekeeping(@\"<<<< Removed Test Files\");\n                }];\n            }];\n        }];\n        \n        [self runUntilPaused];\n        [session release];\n    }\n}\n\n#pragma mark - Checking Helpers\n\n- (void)checkURL:(NSURL*)url isNamed:(NSString*)name\n{\n    XCTAssertTrue([[url lastPathComponent] isEqualToString:name], @\"URL %@ name was wrong, expected %@\", url, name);\n}\n\n- (void)checkURLs:(NSMutableArray*)urls containItemNamed:(NSString*)name\n{\n    BOOL found = NO;\n    NSUInteger count = [urls count];\n    for (NSUInteger n = 0; n < count; ++n)\n    {\n        NSURL* url = urls[n];\n        if ([[url lastPathComponent] isEqualToString:name])\n        {\n            [urls removeObjectAtIndex:n];\n            found = YES;\n            break;\n        }\n    }\n\n    XCTAssertTrue(found, @\"unexpected item with name %@\", name);\n}\n\n- (BOOL)checkIsAuthenticationError:(NSError*)error log:(BOOL)log\n{\n    BOOL domainOK = [error.domain isEqualToString:NSURLErrorDomain];\n    BOOL codeOK = error.code == NSURLErrorUserAuthenticationRequired || error.code == NSURLErrorUserCancelledAuthentication;\n    BOOL result = domainOK && codeOK;\n    if (log && !result)\n    {\n        NSLog(@\"expecting authentication error, got %@\", error);\n    }\n\n    return result;\n}\n\n- (BOOL)checkIsAuthenticationError:(NSError*)error\n{\n    return [self checkIsAuthenticationError:error log:YES];\n}\n\n- (BOOL)checkIsFileCantWriteError:(NSError*)error log:(BOOL)log\n{\n    BOOL domainOK = [error.domain isEqualToString:NSCocoaErrorDomain];\n    BOOL codeOK = error.code == NSFileWriteUnknownError;\n    BOOL result = domainOK && codeOK;\n    if (log && !result)\n    {\n        NSLog(@\"expecting cant write error, got %@\", error);\n    }\n\n    return result;\n}\n\n- (BOOL)checkIsFileCantReadError:(NSError*)error log:(BOOL)log\n{\n    BOOL domainOK = [error.domain isEqualToString:NSCocoaErrorDomain];\n    BOOL codeOK = error.code == NSFileReadUnknownError;\n    BOOL result = domainOK && codeOK;\n    if (log && !result)\n    {\n        NSLog(@\"expecting file not found error, got %@\", error);\n    }\n\n    return result;\n}\n\n\n- (BOOL)checkIsFileNotFoundError:(NSError*)error log:(BOOL)log\n{\n    BOOL domainOK = [error.domain isEqualToString:NSCocoaErrorDomain];\n    BOOL codeOK = error.code == NSFileNoSuchFileError;\n    BOOL result = domainOK && codeOK;\n    if (log && !result)\n    {\n        NSLog(@\"expecting file not found error, got %@\", error);\n    }\n\n    return result;\n}\n\n- (BOOL)checkIsFileExistsError:(NSError*)error log:(BOOL)log\n{\n    BOOL domainOK = [error.domain isEqualToString:NSCocoaErrorDomain];\n    BOOL codeOK = error.code == NSFileWriteFileExistsError;\n    BOOL result = domainOK && codeOK;\n    if (log && !result)\n    {\n        NSLog(@\"expecting file exists error, got %@\", error);\n    }\n\n    return result;\n}\n\n\n- (BOOL)checkIsRemovalError:(NSError*)error nilAllowed:(BOOL)nilAllowed\n{\n    BOOL result = nilAllowed && error == nil;\n    if (!result)\n    {\n        result = [self checkIsFileNotFoundError:error log:NO]; // file wasn't there?\n    }\n    \n    if (!result)\n    {\n        result = [self checkIsFileCantWriteError:error log:NO]; // file was there but locked - or protocol is bad at reporting file not found\n    }\n\n    if (!result)\n    {\n        result = [self checkIsFileCantReadError:error log:NO]; // file wasn't there, but protocol isn't good a reporting it?\n    }\n\n    if (!result)\n    {\n        NSLog(@\"expecting file not found or can't read or write errors, got %@\", error);\n    }\n\n    return result;\n}\n\n- (BOOL)checkIsCreationError:(NSError*)error nilAllowed:(BOOL)nilAllowed\n{\n    BOOL result = nilAllowed && error == nil;\n    if (!result)\n    {\n        result = [self checkIsFileExistsError:error log:NO];\n    }\n    \n    if (!result)\n    {\n        result = [self checkIsFileCantWriteError:error log:NO];\n    }\n\n    if (!result)\n    {\n        NSLog(@\"expecting file exists or can't write errors, got %@\", error);\n    }\n    \n    return result;\n}\n\n- (BOOL)checkIsUpdateError:(NSError*)error nilAllowed:(BOOL)nilAllowed\n{\n    BOOL result = nilAllowed && error == nil;\n    if (!result)\n    {\n        result = [self checkIsFileNotFoundError:error log:NO];\n    }\n    if (!result)\n    {\n        result = [self checkIsFileCantWriteError:error log:NO];\n    }\n\n    if (!result)\n    {\n        NSLog(@\"expecting file not found or file can't write error, got %@\", error);\n    }\n    \n    return result;\n}\n\n- (BOOL)checkIsMissingError:(NSError*)error nilAllowed:(BOOL)nilAllowed\n{\n    BOOL result = nilAllowed && error == nil;\n    if (!result)\n    {\n        result = [self checkIsFileNotFoundError:error log:NO];\n    }\n\n    if (!result)\n    {\n        result = [self checkIsFileCantReadError:error log:NO];\n    }\n\n    if (!result)\n    {\n        NSLog(@\"expecting file not found or file can't read errors, got %@\", error);\n    }\n\n    return result;\n}\n\n\n@end"
  },
  {
    "path": "UnitTests/CKUploaderTests.m",
    "content": "//\n//  Created by Sam Deane on 06/11/2012.\n//  Copyright 2012 Karelia Software. All rights reserved.\n//\n\n#import \"BaseCKTests.h\"\n#import \"KMSServer.h\"\n\n#import \"CKUploader.h\"\n\n#import <XCTest/XCTest.h>\n#import <curl/curl.h>\n\n\n@interface CKUploaderTests : BaseCKTests<CKUploaderDelegate>\n\n@property (strong, nonatomic) NSError* error;\n@property (assign, nonatomic) BOOL finished;\n@property (assign, nonatomic) BOOL uploading;\n@property (assign, nonatomic) BOOL failAuthentication;\n\n@end\n\n@implementation CKUploaderTests\n\n- (void)dealloc\n{\n    [_error release];\n\n    [super dealloc];\n}\n\n- (CKUploader*)setupUploader\n{\n    CKUploader* result = nil;\n    if ([self setupTest])\n    {\n        NSURL* url = [self URLForPath:@\"/\"];\n        NSURLRequest* request = [NSURLRequest requestWithURL:url];\n        CKUploadingOptions options = 0;\n        result = [CKUploader uploaderWithRequest:request options:options delegate:self];\n    }\n\n    return result;\n}\n\n- (NSString *)protocol; { return @\"WebDAV\"; }\n\n#pragma mark - Upload Delegate Methods\n\n- (void)uploaderDidBecomeInvalid:(CKUploader *)uploader\n{\n    self.finished = YES;\n    [self pause];\n}\n\n- (void)uploader:(CKUploader *)uploader transferRecord:(CKTransferRecord *)record didCompleteWithError:(NSError *)error;\n{\n    self.error = error;\n}\n\n- (void)uploader:(CKUploader *)uploader didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(CK2AuthChallengeDisposition, NSURLCredential *))completionHandler\n{\n    if (challenge.previousFailureCount > 0)\n    {\n        NSLog(@\"cancelling authentication\");\n        completionHandler(CK2AuthChallengeCancelAuthenticationChallenge, nil);\n    }\n\n    else\n    {\n        NSString* user = self.failAuthentication ? @\"wrong\" : @\"user\";\n        NSString* pass = self.failAuthentication ? @\"wrong\" : @\"pass\";\n        NSURLCredential* credential = [NSURLCredential credentialWithUser:user password:pass persistence:NSURLCredentialPersistenceNone];\n        completionHandler(CK2AuthChallengeUseCredential, credential);\n    }\n}\n\n- (void)uploader:(CKUploader *)uploader didBeginUploadToPath:(NSString *)path\n{\n    self.uploading = YES;\n    NSLog(@\"uploading\");\n}\n\n\n- (void)uploader:(CKUploader *)uploader appendString:(NSString *)string toTranscript:(CK2TranscriptType)transcript\n{\n    NSLog(@\"%d: %@\", (int)transcript, string);\n}\n\n#pragma mark - Utilities\n\n- (void)checkResultForRecord:(CKTransferRecord*)record uploading:(BOOL)uploading\n{\n    if (self.failAuthentication)\n    {\n        XCTAssertTrue([self.error.domain isEqualToString:NSURLErrorDomain], @\"unexpected error %@\", self.error);\n        XCTAssertTrue(self.error.code == kCFURLErrorUserCancelledAuthentication, @\"unexpected error %@\", self.error);\n        XCTAssertTrue(self.finished, @\"should be finished\");\n        if (record)\n        {\n            XCTAssertTrue([record.error.domain isEqualToString:NSURLErrorDomain], @\"unexpected error %@\", self.error);\n            XCTAssertTrue(record.error.code == kCFURLErrorUserCancelledAuthentication, @\"unexpected error %@\", self.error);\n        }\n    }\n    else\n    {\n        XCTAssertTrue(self.finished, @\"should be finished\");\n        XCTAssertTrue(self.error == nil, @\"unexpected error %@\", self.error);\n        XCTAssertNil(record.error, @\"unexpected error %@\", record.error);\n    }\n    XCTAssertTrue(self.uploading == uploading, @\"uploading method %@ have been called\", uploading ? @\"should\" : @\"shouldn't\");\n\n}\n\n#pragma mark - Tests\n\n- (void)testUploadFile\n{\n    CKUploader* uploader = [self setupUploader];\n    if (uploader)\n    {\n        NSURL* folder = [self temporaryFolder];\n        NSURL* url = [folder URLByAppendingPathComponent:@\"test.txt\"];\n        NSString* testData = @\"Some test content\";\n        NSError* error = nil;\n        BOOL ok = [testData writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:&error];\n        XCTAssertTrue(ok, @\"failed to write test file with error %@\", error);\n\n        CKTransferRecord *record = [uploader uploadToURL:[CK2FileManager URLWithPath:@\"test/test.txt\" relativeToURL:uploader.baseRequest.URL]\n                                                fromFile:url];\n        XCTAssertNotNil(record, @\"got a transfer record\");\n        XCTAssertTrue(record.size == [[testData dataUsingEncoding:NSUTF8StringEncoding] length], @\"unexpected size %ld\", record.size);\n        [uploader finishOperationsAndInvalidate];\n\n        [self runUntilPaused];\n        [self checkResultForRecord:record uploading:YES];\n    }\n}\n\n- (void)testUploadFileNoAuthentication\n{\n    self.failAuthentication = YES;\n    [self testUploadFile];\n}\n\n- (void)testUploadData\n{\n    CKUploader* uploader = [self setupUploader];\n    if (uploader)\n    {\n        NSData* testData = [@\"Some test content\" dataUsingEncoding:NSUTF8StringEncoding];\n        CKTransferRecord *record = [uploader uploadToURL:[CK2FileManager URLWithPath:@\"test/test.txt\" relativeToURL:uploader.baseRequest.URL]\n                                                fromData:testData];\n        XCTAssertNotNil(record, @\"got a transfer record\");\n        XCTAssertTrue(record.size == [testData length], @\"unexpected size %ld\", record.size);\n        [uploader finishOperationsAndInvalidate];\n\n        [self runUntilPaused];\n        [self checkResultForRecord:record uploading:YES];\n    }\n}\n\n- (void)testUploadDataNoAuthentication\n{\n    self.failAuthentication = YES;\n    [self testUploadData];\n}\n\n- (void)testRemoveFileAtPath\n{\n    CKUploader* uploader = [self setupUploader];\n    if (uploader)\n    {\n        NSURL *url = [CK2FileManager URLWithPath:@\"test/test.txt\" relativeToURL:uploader.baseRequest.URL];\n        [uploader removeItemAtURL:url completionHandler:NULL];\n        [uploader finishOperationsAndInvalidate];\n\n        [self runUntilPaused];\n        [self checkResultForRecord:nil uploading:NO];\n    }\n\n}\n\n- (void)testRemoveFileAtPathNoAuthentication\n{\n    self.failAuthentication = YES;\n    [self testRemoveFileAtPath];\n}\n\n- (void)testCancel\n{\n    CKUploader* uploader = [self setupUploader];\n    if (uploader)\n    {\n        NSData* testData = [@\"Some test content\" dataUsingEncoding:NSUTF8StringEncoding];\n        CKTransferRecord *record = [uploader uploadToURL:[CK2FileManager URLWithPath:@\"test/test.txt\" relativeToURL:uploader.baseRequest.URL]\n                                                fromData:testData];\n        XCTAssertNotNil(record, @\"got a transfer record\");\n        XCTAssertTrue(record.size == [testData length], @\"unexpected size %ld\", record.size);\n        [uploader finishOperationsAndInvalidate];\n        XCTAssertFalse(self.finished, @\"should not be finished\");\n        [uploader invalidateAndCancel];\n        [self runUntilPaused];\n    }\n}\n\n@end\n"
  },
  {
    "path": "UnitTests/ErrorTests.m",
    "content": "//\n//  CK2FileManagerErrorTests.m\n//  Connection\n//\n//  Created by Sam Deane on 10/04/2013.\n//  Copyright (c) 2012 Karelia Software. All rights reserved.\n//\n\n#import \"CK2FileManager.h\"\n\n#import <XCTest/XCTest.h>\n\n@interface CK2FileManagerErrorTests : XCTestCase\n\n@end\n\n@implementation CK2FileManagerErrorTests\n\n#pragma mark FTP\n\n- (void)testUnsupportedScheme\n{\n    CK2FileManager* fm = [[CK2FileManager alloc] init];\n\n    NSURL* url = [NSURL URLWithString:@\"bogus://example.com\"];\n\n    [fm contentsOfDirectoryAtURL:url includingPropertiesForKeys:@[] options:NSDirectoryEnumerationSkipsHiddenFiles completionHandler:^(NSArray *contents, NSError *error) {\n        XCTAssertNotNil(error, @\"expecting an error\");\n    }];\n\n    [fm removeItemAtURL:url completionHandler:^(NSError *error) {\n        XCTAssertNotNil(error, @\"expecting an error\");\n    }];\n\n    [fm enumerateContentsOfURL:url includingPropertiesForKeys:@[] options:NSDirectoryEnumerationSkipsHiddenFiles usingBlock:^(NSURL *url) {\n    } completionHandler:^(NSError *error) {\n        XCTAssertNotNil(error, @\"expecting an error\");\n    }];\n\n    [fm createDirectoryAtURL:url withIntermediateDirectories:YES openingAttributes:@{} completionHandler:^(NSError *error) {\n        XCTAssertNotNil(error, @\"expecting an error\");\n    }];\n\n    [fm createFileAtURL:url contents:[NSData data] withIntermediateDirectories:YES openingAttributes:@{} progressBlock:^(int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToSend) {\n    } completionHandler:^(NSError *error) {\n        XCTAssertNotNil(error, @\"expecting an error\");\n    }];\n\n    [fm createFileAtURL:url withContentsOfURL:url withIntermediateDirectories:YES openingAttributes:@{} progressBlock:^(int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToSend) {\n    } completionHandler:^(NSError *error) {\n        XCTAssertNotNil(error, @\"expecting an error\");\n    }];\n    \n    [fm release];\n}\n\n@end"
  },
  {
    "path": "UnitTests/FTPAuthenticationTests.m",
    "content": "//\n//  Created by Sam Deane on 06/11/2012.\n//  Copyright 2012 Karelia Software. All rights reserved.\n//\n\n#import \"BaseCKTests.h\"\n\n#import \"CK2FileManager.h\"\n\n#import <CURLHandle/CURLTransfer.h>\n\n@interface FTPAuthenticationTests : BaseCKTests\n\n@end\n\n@implementation FTPAuthenticationTests\n\n- (void)fileManager:(CK2FileManager *)manager operation:(CK2FileOperation *)operation didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(CK2AuthChallengeDisposition, NSURLCredential *))completionHandler;\n{\n    NSString* user;\n    NSString* password;\n\n    if (challenge.previousFailureCount > 0)\n    {\n        user = self.originalUser;\n        password = self.originalPassword;\n\n        [self useResponseSet:@\"default\"];\n    }\n    else\n    {\n        user = @\"bad\";\n        password = @\"bad\";\n    }\n\n    NSLog(@\"authenticating as %@ %@\", self.user, self.password);\n    NSURLCredential* credential = [NSURLCredential credentialWithUser:user password:password persistence:NSURLCredentialPersistenceNone];\n    completionHandler(CK2AuthChallengeUseCredential, credential);\n}\n\n- (NSString*)protocol\n{\n    return @\"FTP\";\n}\n\n#pragma mark - Tests\n\n- (void)testBadLoginThenGoodLogin\n{\n    // the server starts by rejecting the password\n    // after the first challenge though, we switch to the \"normal\" responses so that it accepts it\n    if ([self setupTest])\n    {\n        [self removeTestDirectory];\n        [self useResponseSet:@\"bad login\"];\n\n        NSURL* url = [self URLForTestFolder];\n        [self.manager createDirectoryAtURL:url withIntermediateDirectories:YES openingAttributes:nil completionHandler:^(NSError *error) {\n            XCTAssertNil(error, @\"got unexpected error %@\", error);\n\n            [self pause];\n        }];\n    }\n\n    [self runUntilPaused];\n}\n\n@end"
  },
  {
    "path": "UnitTests/FTPTests.m",
    "content": "//\n//  Created by Sam Deane on 06/11/2012.\n//  Copyright 2012 Karelia Software. All rights reserved.\n//\n\n#import \"BaseCKProtocolTests.h\"\n\n@interface FTPTests : BaseCKProtocolTests\n\n@end\n\n@implementation FTPTests\n\n- (NSString*)protocol\n{\n    return @\"FTP\";\n}\n\n- (BOOL)protocolUsesAuthentication\n{\n    return YES;\n}\n\n- (NSData*)mockServerDirectoryListingData\n{\n    NSString* listing = [NSString stringWithFormat:\n                         @\"total 1\\r\\n-rw-------   1 user  staff     3 Mar  6  2012 %@\\r\\n-rw-------   1 user  staff     3 Mar  6  2012 %@\\r\\n\\r\\n\",\n                         [[self URLForTestFile1] lastPathComponent],\n                         [[self URLForTestFile2] lastPathComponent]\n                         ];\n    \n    return [listing dataUsingEncoding:NSUTF8StringEncoding];\n}\n\n@end"
  },
  {
    "path": "UnitTests/FileTests.m",
    "content": "//\n//  Created by Sam Deane on 06/11/2012.\n//  Copyright 2012 Karelia Software. All rights reserved.\n//\n\n#import \"BaseCKProtocolTests.h\"\n\n@interface FileTests : BaseCKProtocolTests\n\n@end\n\n@implementation FileTests\n\n- (NSString*)protocol\n{\n    return @\"File\";\n}\n\n- (BOOL)setupFromSettings\n{\n    // for the file tests, we always want to use a URL to a temporary folder\n    self.url = [self temporaryFolder];\n\n    return YES;\n}\n\n- (NSURL*)makeTestContents\n{\n    BOOL ok;\n    NSError* error = nil;\n    NSFileManager* fm = [NSFileManager defaultManager];\n    NSURL* tempFolder = [self temporaryFolder];\n    NSURL* testSubfolder = [tempFolder URLByAppendingPathComponent:@\"subfolder\"];\n\n    NSURL* testFile = [tempFolder URLByAppendingPathComponent:@\"test.txt\"];\n    ok = [@\"Some test text\" writeToURL:testFile atomically:YES encoding:NSUTF8StringEncoding error:&error];\n    XCTAssertTrue(ok, @\"couldn't make test file: %@\", error);\n\n    if (ok)\n    {\n        ok = [fm createDirectoryAtURL:testSubfolder withIntermediateDirectories:YES attributes:nil error:&error];\n        XCTAssertTrue(ok, @\"couldn't make test subdirectory: %@\", error);\n    }\n\n    if (ok)\n    {\n        NSURL* otherFile = [testSubfolder URLByAppendingPathComponent:@\"another.txt\"];\n        ok = [@\"Some more text\" writeToURL:otherFile atomically:YES encoding:NSUTF8StringEncoding error:&error];\n        XCTAssertTrue(ok, @\"couldn't make other test file: %@\", error);\n    }\n\n    if (!ok)\n    {\n        tempFolder = nil;\n    }\n\n    return tempFolder;\n}\n\n#pragma mark - Extra File-Only Tests\n\n- (void)testCreateDirectoryAtURLNoPermission\n{\n    if ([self setupTest])\n    {\n        NSFileManager* fm = [NSFileManager defaultManager];\n        NSURL* url = [NSURL fileURLWithPath:@\"/System/Test Directory\"];\n\n        // try to make subdirectory in /System - this really ought to fail\n        [self.manager createDirectoryAtURL:url withIntermediateDirectories:NO openingAttributes:nil completionHandler:^(NSError *error) {\n            XCTAssertNotNil(error, @\"expected an error here\");\n            XCTAssertTrue([[error domain] isEqualToString:NSCocoaErrorDomain], @\"unexpected error domain %@\", [error domain]);\n            XCTAssertEqual([error code], (NSInteger) NSFileWriteNoPermissionError, @\"unexpected error code %ld\", [error code]);\n\n            [self pause];\n        }];\n\n        [self runUntilPaused];\n        XCTAssertFalse([fm fileExistsAtPath:[url path]], @\"directory shouldn't exist\");\n    }\n}\n\n\n- (void)testCreateFileAtURLNoPermission\n{\n    if ([self setupTest])\n    {\n        NSData* data = [@\"Some test text\" dataUsingEncoding:NSUTF8StringEncoding];\n\n        // try to make file - should fail because we don't have permission\n        NSURL* url = [NSURL fileURLWithPath:@\"/System/test.txt\"];\n        [self.manager createFileAtURL:url contents:data withIntermediateDirectories:NO openingAttributes:nil progressBlock:nil completionHandler:^(NSError *error) {\n            XCTAssertNotNil(error, @\"expected an error here\");\n            XCTAssertTrue([[error domain] isEqualToString:NSCocoaErrorDomain], @\"unexpected error domain %@\", [error domain]);\n            XCTAssertEqual([error code], (NSInteger) NSFileWriteNoPermissionError, @\"unexpected error code %ld\", [error code]);\n\n            [self pause];\n        }];\n\n        [self runUntilPaused];\n\n        // try again, should fail again, but this time because we can't make the intermediate directory\n        url = [NSURL fileURLWithPath:@\"/System/Test Directory/test.txt\"];\n        [self.manager createFileAtURL:url contents:data withIntermediateDirectories:YES openingAttributes:nil progressBlock:nil completionHandler:^(NSError *error) {\n            XCTAssertNotNil(error, @\"expected an error here\");\n            XCTAssertTrue([[error domain] isEqualToString:NSCocoaErrorDomain], @\"unexpected error domain %@\", [error domain]);\n            XCTAssertEqual([error code], (NSInteger) NSFileWriteNoPermissionError, @\"unexpected error code %ld\", [error code]);\n\n            [self pause];\n        }];\n\n        [self runUntilPaused];\n\n    }\n}\n\n\n\n// NSFileManager will happily delete a directory that contains stuff, so\n// currently CK2FileManager is doing the same thing.\n// If we ever change that, set the following variable to 1 to test for it\n#define DELETING_DIRECTORY_WITH_ITEMS_FAILS 0\n\n- (void)testRemoveFileAtURLDirectoryContainingItems\n{\n    if ([self setupTest])\n    {\n        NSURL* temp = [self makeTestContents];\n        NSURL* subdirectory = [temp URLByAppendingPathComponent:@\"subfolder\"];\n\n        // remove subdirectory that has something in it - should fail\n        [self.manager removeItemAtURL:subdirectory completionHandler:^(NSError *error) {\n#if DELETING_DIRECTORY_WITH_ITEMS_FAILS\n            STAssertNotNil(error, @\"expected error\");\n            STAssertTrue([[error domain] isEqualToString:NSCocoaErrorDomain], @\"unexpected error domain %@\", [error domain]);\n            STAssertEquals([error code], (NSInteger) NSFileNoSuchFileError, @\"unexpected error code %ld\", [error code]);\n#else\n            XCTAssertNil(error, @\"got unexpected error %@\", error);\n#endif\n            [self pause];\n        }];\n        [self runUntilPaused];\n\n#if DELETING_DIRECTORY_WITH_ITEMS_FAILS\n        NSFileManager* fm = [NSFileManager defaultManager];\n        STAssertTrue([fm fileExistsAtPath:[subdirectory path]], @\"removal should have failed\");\n#endif\n    }\n    \n}\n\n@end"
  },
  {
    "path": "UnitTests/PathTests.m",
    "content": "//\n//  PathTests.m\n//  Connection\n//\n//  Created by Sam Deane on 08/03/2012.\n//  Copyright 2012 Karelia Software. All rights reserved.\n//\n\n#import \"CK2FileManager.h\"\n\n#import <XCTest/XCTest.h>\n\n@interface PathTests : XCTestCase\n\n@end\n\n@implementation PathTests\n\n- (void)testNilURL\n{\n    NSString *path;\n    XCTAssertNoThrow(path = [CK2FileManager pathOfURL:nil]);\n    XCTAssertNil(path);\n}\n\n- (void)testFTPEmptyNoTrailingSlash\n{\n    NSURL* testURL = [NSURL URLWithString:@\"ftp://user:pass@test.ftp.com\"];\n    NSString* path = [CK2FileManager pathOfURL:testURL];\n    XCTAssertTrue([path length] == 0, @\"path should be empty\");\n}\n\n- (void)testFTPEmptyTrailingSlash\n{\n    NSURL* testURL = [NSURL URLWithString:@\"ftp://user:pass@test.ftp.com/\"];\n    NSString* path = [CK2FileManager pathOfURL:testURL];\n    XCTAssertTrue([path length] == 0, @\"path should be empty\");\n}\n\n- (void)testFTPRelative\n{\n    NSURL* testURL = [NSURL URLWithString:@\"ftp://user:pass@test.ftp.com/relative/path/file.txt\"];\n    NSString* path = [CK2FileManager pathOfURL:testURL];\n    XCTAssertTrue([path isEqualToString:@\"relative/path/file.txt\"], @\"path shouldn't start with slash\");\n}\n\n- (void)testFTPAbsolute\n{\n    NSURL* testURL = [NSURL URLWithString:@\"ftp://user:pass@test.ftp.com//absolute/path/file.txt\"];\n    NSString* path = [CK2FileManager pathOfURL:testURL];\n    XCTAssertTrue([path isEqualToString:@\"/absolute/path/file.txt\"], @\"path should start with slash\");\n}\n\n- (void)testFTPAbsolutePercentEncoded\n{\n    NSURL* testURL = [NSURL URLWithString:@\"ftp://user:pass@test.ftp.com/%2Fabsolute/path/file.txt\"];\n    NSString* path = [CK2FileManager pathOfURL:testURL];\n    XCTAssertTrue([path isEqualToString:@\"/absolute/path/file.txt\"], @\"path should start with slash\");\n}\n\n- (void)testFTPAbsolutePercentEncodedExtraSlash\n{\n    NSURL* testURL = [NSURL URLWithString:@\"ftp://user:pass@test.ftp.com/%2F/absolute/path/file.txt\"];\n    NSString* path = [CK2FileManager pathOfURL:testURL];\n    XCTAssertTrue([path isEqualToString:@\"//absolute/path/file.txt\"], @\"path should start with slash\");\n}\n\n- (void)testFTPRoot\n{\n    NSURL* testURL = [NSURL URLWithString:@\"ftp://user:pass@test.ftp.com//\"];\n    NSString* path = [CK2FileManager pathOfURL:testURL];\n    XCTAssertTrue([path isEqualToString:@\"/\"], @\"path should start with slash\");\n}\n\n- (void)testFTPRootPercentEncoded\n{\n    NSURL* testURL = [NSURL URLWithString:@\"ftp://user:pass@test.ftp.com/%2F\"];\n    NSString* path = [CK2FileManager pathOfURL:testURL];\n    XCTAssertTrue([path isEqualToString:@\"/\"], @\"path should start with slash\");\n}\n\n- (void)testFTPRootPercentEncodedExtraSlash\n{\n    NSURL* testURL = [NSURL URLWithString:@\"ftp://user:pass@test.ftp.com/%2F/\"];\n    NSString* path = [CK2FileManager pathOfURL:testURL];\n    XCTAssertTrue([path isEqualToString:@\"/\"], @\"trailing slashes should be trimmed\");\n}\n\n- (void)testHTTPEmptyNoTrailingSlash\n{\n    NSURL* testURL = [NSURL URLWithString:@\"http://www.test.com:8080\"];\n    NSString* path = [CK2FileManager pathOfURL:testURL];\n    XCTAssertTrue([path length] == 0, @\"path should be empty\");\n}\n\n- (void)testHTTPEmptyTrailingSlash\n{\n    NSURL* testURL = [NSURL URLWithString:@\"http://www.test.com:8080/\"];\n    NSString* path = [CK2FileManager pathOfURL:testURL];\n    XCTAssertTrue([path isEqualToString:@\"/\"], @\"path should be /\");\n}\n\n- (void)testHTTPRelative\n{\n    NSURL* testURL = [NSURL URLWithString:@\"http://www.test.com:8080/relative/path/file.txt\"];\n    NSString* path = [CK2FileManager pathOfURL:testURL];\n    XCTAssertTrue([path isEqualToString:@\"/relative/path/file.txt\"], @\"path should be absolute from root\");\n}\n\n- (void)testHTTPAbsolute\n{\n    NSURL* testURL = [NSURL URLWithString:@\"http://www.test.com:8080//absolute/path/file.txt\"];\n    NSString* path = [CK2FileManager pathOfURL:testURL];\n    XCTAssertTrue([path isEqualToString:@\"//absolute/path/file.txt\"], @\"path should start with double slash\");\n}\n\n- (void)testSFTPEmptyNoTrailingSlash\n{\n    NSURL* testURL = [NSURL URLWithString:@\"sftp://user@test.sftp.com\"];\n    NSString* path = [CK2FileManager pathOfURL:testURL];\n    XCTAssertTrue([path length] == 0, @\"path should be empty\");\n}\n\n- (void)testSFTPEmptyTrailingSlash\n{\n    NSURL* testURL = [NSURL URLWithString:@\"sftp://user@test.sftp.com/\"];\n    NSString* path = [CK2FileManager pathOfURL:testURL];\n    XCTAssertTrue([path isEqualToString:@\"/\"], @\"path should be /\");\n}\n\n- (void)testSFTPRelative\n{\n    NSURL* testURL = [NSURL URLWithString:@\"sftp://user@test.sftp.com/relative/path/file.txt\"];\n    NSString* path = [CK2FileManager pathOfURL:testURL];\n    XCTAssertTrue([path isEqualToString:@\"/relative/path/file.txt\"], @\"path should be absolute from root\");\n}\n\n- (void)testSFTPAbsolute\n{\n    NSURL* testURL = [NSURL URLWithString:@\"sftp://user@test.sftp.com//absolute/path/file.txt\"];\n    NSString* path = [CK2FileManager pathOfURL:testURL];\n    XCTAssertTrue([path isEqualToString:@\"//absolute/path/file.txt\"], @\"path should start with double slash\");\n}\n\n- (void)testSFTPUser\n{\n    NSURL* testURL = [NSURL URLWithString:@\"sftp://user@test.sftp.com/~/absolute/path/file.txt\"];\n    NSString* path = [CK2FileManager pathOfURL:testURL];\n    XCTAssertTrue([path isEqualToString:@\"absolute/path/file.txt\"], @\"path should strip the /~\");\n}\n\n- (void)testSCPEmptyNoTrailingSlash\n{\n    NSURL* testURL = [NSURL URLWithString:@\"scp://user@test.scp.com\"];\n    NSString* path = [CK2FileManager pathOfURL:testURL];\n    XCTAssertTrue([path length] == 0, @\"path should be empty\");\n}\n\n- (void)testSCPEmptyTrailingSlash\n{\n    NSURL* testURL = [NSURL URLWithString:@\"scp://user@test.scp.com/\"];\n    NSString* path = [CK2FileManager pathOfURL:testURL];\n    XCTAssertTrue([path isEqualToString:@\"/\"], @\"path should be /\");\n}\n\n- (void)testSCPRelative\n{\n    NSURL* testURL = [NSURL URLWithString:@\"scp://user@test.scp.com/relative/path/file.txt\"];\n    NSString* path = [CK2FileManager pathOfURL:testURL];\n    XCTAssertTrue([path isEqualToString:@\"/relative/path/file.txt\"], @\"path should be absolute from root\");\n}\n\n- (void)testSCPAbsolute\n{\n    NSURL* testURL = [NSURL URLWithString:@\"scp://user@test.scp.com//absolute/path/file.txt\"];\n    NSString* path = [CK2FileManager pathOfURL:testURL];\n    XCTAssertTrue([path isEqualToString:@\"//absolute/path/file.txt\"], @\"path should start with double slash\");\n}\n\n- (void)testSCPUser\n{\n    NSURL* testURL = [NSURL URLWithString:@\"scp://user@test.scp.com/~/absolute/path/file.txt\"];\n    NSString* path = [CK2FileManager pathOfURL:testURL];\n    XCTAssertTrue([path isEqualToString:@\"absolute/path/file.txt\"], @\"path should strip the /~\");\n}\n\n@end\n"
  },
  {
    "path": "UnitTests/README.md",
    "content": "A quick overview of the unit tests, since some of them are fairly involved.\n\n# Server Configuration\n\nSince some of the tests talk to servers, the tests can be configured using the defaults command:\n\n    defaults write otest <key> <url>\n    \nwith a key of CKWebDAVTest, CKFTPTest, or CKSFTPTest.\n\nSetting the value to the url of a server will use that server for the tests.\n\nSetting the value to \"MockServer\" will use MockServer (where possible).\n\nSetting the value to \"Off\" will disable those tests.\n\n\n# Tests\n\n## CK2FileManagerPathTests\n\nThese test that [CK2FileManager pathOfURL] works correctly.\n\n\n\n## CK2FileManagerFileTests\n\nThese test the file manager's support for file operations on the local machine (ie using file:// urls).\n\n\n\n## CK2FileManagerFTPTests\n\nThese test the file manager's support for FTP and SFTP.\n\nWhen the test suite is constructed, it actually makes two test suites containing the same tests, one using ftp and one sftp.\n\nThe underpinning inherited from CK2FileManagerBaseTests is used to ensure that the correct server value is read from the defaults, and the correct MockServer responses file is loaded if appropriate.\n\n\n## CK2FileManagerFTPAuthenticationTests\n\nThis tests FTP support, in the specific situation where the first authentication attempt is bad, but the second one is good.\n\n\n\n## CK2FileManagerURLTests\n\nThese test the CK2FileManager routines for creating URLs:\n\n- [CK2FileManager URLWithPath:relativeToURL:]\n- [CK2FileManager URLWithPath:hostURL:]\n\n\n## CK2CURLProtocolURLManipulationTests\n\nThese perform various URL manipulation tests.\n\n- Some tests check that NSURL is behaving as expected.\n- Some check that CFURLHasDirectoryPath() hasn't changed behaviour.\n- Some check that [CK2FTPProtocol newRequestWithRequest:isDirectory:] is working.\n\n\n## CK2FileManagerBaseTests\n\nThis is a base class used by the other tests.\n\n"
  },
  {
    "path": "UnitTests/SFTPTests.m",
    "content": "//\n//  Created by Sam Deane on 06/11/2012.\n//  Copyright 2012 Karelia Software. All rights reserved.\n//\n\n#import \"BaseCKProtocolTests.h\"\n\n@interface SFTPTests : BaseCKProtocolTests\n\n@end\n\n@implementation SFTPTests\n\n- (NSString*)protocol\n{\n    return @\"SFTP\";\n}\n\n- (BOOL)protocolUsesAuthentication\n{\n    return YES;\n}\n\n@end"
  },
  {
    "path": "UnitTests/URLAppendingTests.m",
    "content": "//\n//  URLAppendingTests.m\n//  Connection\n//\n//  Created by Mike on 31/01/2013.\n//\n//\n\n#import <XCTest/XCTest.h>\n\n@interface URLAppendingTests : XCTestCase\n\n@end\n\n\n@implementation URLAppendingTests\n\n- (void)testFTPAppendToRoot;\n{\n    XCTAssertEqualObjects([[NSURL URLWithString:@\"ftp://example.com/%2F\"] URLByAppendingPathComponent:@\"test1.txt\"],\n                         [NSURL URLWithString:@\"ftp://example.com/%2F/test1.txt\"]);\n    \n    XCTAssertEqualObjects([[NSURL URLWithString:@\"ftp://example.com//\"] URLByAppendingPathComponent:@\"test1.txt\"],\n                         [NSURL URLWithString:@\"ftp://example.com//test1.txt\"]);\n}\n\n- (void)testFTPAppendToAbsoluteDirectory;\n{\n    XCTAssertEqualObjects([[NSURL URLWithString:@\"ftp://example.com/%2Ftest/\"] URLByAppendingPathComponent:@\"test1.txt\"],\n                         [NSURL URLWithString:@\"ftp://example.com/%2Ftest/test1.txt\"]);\n    \n    XCTAssertEqualObjects([[NSURL URLWithString:@\"ftp://example.com//test/\"] URLByAppendingPathComponent:@\"test1.txt\"],\n                         [NSURL URLWithString:@\"ftp://example.com//test/test1.txt\"]);\n}\n\n- (void)testFTPAppendToHome;\n{\n    XCTAssertEqualObjects([[NSURL URLWithString:@\"ftp://example.com/\"] URLByAppendingPathComponent:@\"test1.txt\"],\n                         [NSURL URLWithString:@\"ftp://example.com/test1.txt\"]);\n}\n\n- (void)testFTPAppendToHomeSubdirectory;\n{\n    XCTAssertEqualObjects([[NSURL URLWithString:@\"ftp://example.com/test/\"] URLByAppendingPathComponent:@\"test1.txt\"],\n                         [NSURL URLWithString:@\"ftp://example.com/test/test1.txt\"]);\n}\n\n- (void)testSFTPAppendToRoot;\n{\n    XCTAssertEqualObjects([[NSURL URLWithString:@\"sftp://example.com/\"] URLByAppendingPathComponent:@\"test1.txt\"],\n                         [NSURL URLWithString:@\"sftp://example.com/test1.txt\"]);\n}\n\n- (void)testSFTPAppendToAbsoluteDirectory;\n{\n    XCTAssertEqualObjects([[NSURL URLWithString:@\"sftp://example.com/test/\"] URLByAppendingPathComponent:@\"test1.txt\"],\n                         [NSURL URLWithString:@\"sftp://example.com/test/test1.txt\"]);\n}\n\n- (void)testSFTPAppendToHome;\n{\n    XCTAssertEqualObjects([[NSURL URLWithString:@\"sftp://example.com/~/\"] URLByAppendingPathComponent:@\"test1.txt\"],\n                         [NSURL URLWithString:@\"sftp://example.com/~/test1.txt\"]);\n}\n\n- (void)testSFTPAppendToHomeSubdirectory;\n{\n    XCTAssertEqualObjects([[NSURL URLWithString:@\"sftp://example.com/~/test/\"] URLByAppendingPathComponent:@\"test1.txt\"],\n                         [NSURL URLWithString:@\"sftp://example.com/~/test/test1.txt\"]);\n}\n\n- (void)testFTPRootIsDirectory;\n{\n    BOOL isDirectory = CFURLHasDirectoryPath((CFURLRef)[NSURL URLWithString:@\"ftp://example.com/%2F\"]);\n    XCTAssertFalse(isDirectory);\n}\n\n- (void)testFTPRootWithTrailingSlashIsDirectory;\n{\n    BOOL isDirectory = CFURLHasDirectoryPath((CFURLRef)[NSURL URLWithString:@\"ftp://example.com/%2F/\"]);\n    XCTAssertTrue(isDirectory);\n}\n\n- (void)testFTPHomeIsDirectory;\n{\n    BOOL isDirectory = CFURLHasDirectoryPath((CFURLRef)[NSURL URLWithString:@\"ftp://example.com/\"]);\n    XCTAssertTrue(isDirectory);\n}\n\n- (void)testFTPHomeWithoutTrailingSlashIsDirectory;\n{\n    BOOL isDirectory = CFURLHasDirectoryPath((CFURLRef)[NSURL URLWithString:@\"ftp://example.com\"]);\n    XCTAssertFalse(isDirectory);\n}\n\n- (void)testFTPAbsoluteFileIsDirectory;\n{\n    BOOL isDirectory = CFURLHasDirectoryPath((CFURLRef)[NSURL URLWithString:@\"ftp://example.com/%2F/test.txt\"]);\n    XCTAssertFalse(isDirectory);\n}\n\n- (void)testFTPRelativeFileIsDirectory;\n{\n    BOOL isDirectory = CFURLHasDirectoryPath((CFURLRef)[NSURL URLWithString:@\"ftp://example.com/test.txt\"]);\n    XCTAssertFalse(isDirectory);\n}\n\n@end\n\n"
  },
  {
    "path": "UnitTests/URLCanonicalizationTests.m",
    "content": "//\n//  URLAppendingTests.m\n//  Connection\n//\n//  Created by Mike on 31/01/2013.\n//\n//\n\n#import <XCTest/XCTest.h>\n\n#import \"CK2CURLBasedProtocol.h\"\n\n@interface URLCanonicalizationTests : XCTestCase\n@end\n\n\n@implementation URLCanonicalizationTests\n\n- (void)testIncludingUser;\n{    \n    // Test first with no user set. e.g. anonymous login\n    NSURL *url = [CK2CURLBasedProtocol URLByReplacingUserInfoInURL:[NSURL URLWithString:@\"ftp://example.com/image.png\"] withUser:nil];\n    XCTAssertEqualObjects(url.absoluteString, @\"ftp://example.com/image.png\");\n    \n    // Adding user into the URL\n    url = [CK2CURLBasedProtocol URLByReplacingUserInfoInURL:[NSURL URLWithString:@\"ftp://example.com/image.png\"] withUser:@\"user\"];\n    XCTAssertEqualObjects(url.absoluteString, @\"ftp://user@example.com/image.png\");\n    \n    // Replacing existing user\n    url = [CK2CURLBasedProtocol URLByReplacingUserInfoInURL:[NSURL URLWithString:@\"ftp://test@example.com/image.png\"] withUser:@\"user\"];\n    XCTAssertEqualObjects(url.absoluteString, @\"ftp://user@example.com/image.png\");\n    \n    // Replacing existing user + password\n    url = [CK2CURLBasedProtocol URLByReplacingUserInfoInURL:[NSURL URLWithString:@\"ftp://test:sekret@example.com/image.png\"] withUser:@\"user\"];\n    XCTAssertEqualObjects(url.absoluteString, @\"ftp://user@example.com/image.png\");\n    \n    // Escaping of unusual characters\n    url = [CK2CURLBasedProtocol URLByReplacingUserInfoInURL:[NSURL URLWithString:@\"ftp://example.com/image.png\"] withUser:@\"user/:1@example.com\"];\n    XCTAssertEqualObjects(url.absoluteString, @\"ftp://user%2F%3A1%40example.com@example.com/image.png\");\n}\n\n@end\n"
  },
  {
    "path": "UnitTests/URLDirectoryTests.m",
    "content": "//\n//  URLAppendingTests.m\n//  Connection\n//\n//  Created by Mike on 31/01/2013.\n//\n//\n\n#import <XCTest/XCTest.h>\n\n#import \"CK2FTPProtocol.h\"\n\n@interface CK2CURLBasedProtocol (UnitTesting)\n+ (NSURLRequest *)newRequestWithRequest:(NSURLRequest *)request isDirectory:(BOOL)directory;\n@end\n\n\n@interface URLDirectoryTests : XCTestCase\n@end\n\n\n@implementation URLDirectoryTests\n\n/*  We test with all absolute FTP URL forms to make sure they don't get mangled\n */\n\n- (void)testFileURL;\n{\n    NSURL *url = [CK2FTPProtocol newRequestWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@\"ftp://example.com//test\"]]\n                                                 isDirectory:NO].URL;\n    XCTAssertEqualObjects(url.absoluteString, @\"ftp://example.com//test\");\n    \n    url = [CK2FTPProtocol newRequestWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@\"ftp://example.com/%2Ftest\"]]\n                                          isDirectory:NO].URL;\n    XCTAssertEqualObjects(url.absoluteString, @\"ftp://example.com/%2Ftest\");\n    \n    url = [CK2FTPProtocol newRequestWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@\"ftp://example.com/%2F/test\"]]\n                                          isDirectory:NO].URL;\n    XCTAssertEqualObjects(url.absoluteString, @\"ftp://example.com/%2F/test\");\n}\n\n- (void)testMakingFileIntoFolder;\n{\n    NSURL *url = [CK2FTPProtocol newRequestWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@\"ftp://example.com//test\"]]\n                                                 isDirectory:YES].URL;\n    XCTAssertEqualObjects(url.absoluteString, @\"ftp://example.com//test/\");\n    \n    url = [CK2FTPProtocol newRequestWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@\"ftp://example.com/%2Ftest\"]]\n                                          isDirectory:YES].URL;\n    XCTAssertEqualObjects(url.absoluteString, @\"ftp://example.com/%2Ftest/\");\n    \n    url = [CK2FTPProtocol newRequestWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@\"ftp://example.com/%2F/test\"]]\n                                          isDirectory:YES].URL;\n    XCTAssertEqualObjects(url.absoluteString, @\"ftp://example.com/%2F/test/\");\n    \n    // This has been giving some problems where Cocoa normally recognises the %2F as a folder, I think\n    url = [CK2FTPProtocol newRequestWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@\"ftp://example.com/%2F\"]]\n                                          isDirectory:YES].URL;\n    XCTAssertEqualObjects(url.absoluteString, @\"ftp://example.com/%2F/\");\n}\n\n- (void)testFolderURL;\n{\n    NSURL *url = [CK2FTPProtocol newRequestWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@\"ftp://example.com//test/\"]]\n                                                 isDirectory:YES].URL;\n    XCTAssertEqualObjects(url.absoluteString, @\"ftp://example.com//test/\");\n    \n    url = [CK2FTPProtocol newRequestWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@\"ftp://example.com/%2Ftest/\"]]\n                                          isDirectory:YES].URL;\n    XCTAssertEqualObjects(url.absoluteString, @\"ftp://example.com/%2Ftest/\");\n    \n    url = [CK2FTPProtocol newRequestWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@\"ftp://example.com/%2F/test/\"]]\n                                          isDirectory:YES].URL;\n    XCTAssertEqualObjects(url.absoluteString, @\"ftp://example.com/%2F/test/\");\n    \n    url = [CK2FTPProtocol newRequestWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@\"ftp://example.com/%2F/\"]]\n                                          isDirectory:YES].URL;\n    XCTAssertEqualObjects(url.absoluteString, @\"ftp://example.com/%2F/\");\n}\n\n- (void)testMakingFolderIntoFile;\n{\n    NSURL *url = [CK2FTPProtocol newRequestWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@\"ftp://example.com//test/\"]]\n                                                 isDirectory:NO].URL;\n    XCTAssertEqualObjects(url.absoluteString, @\"ftp://example.com//test\");\n    \n    url = [CK2FTPProtocol newRequestWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@\"ftp://example.com/%2Ftest/\"]]\n                                          isDirectory:NO].URL;\n    XCTAssertEqualObjects(url.absoluteString, @\"ftp://example.com//test\");\n    \n    url = [CK2FTPProtocol newRequestWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@\"ftp://example.com/%2F/test/\"]]\n                                          isDirectory:NO].URL;\n    XCTAssertEqualObjects(url.absoluteString, @\"ftp://example.com/%2F/test\");\n}\n\n@end\n\n"
  },
  {
    "path": "UnitTests/URLTests.m",
    "content": "//\n//  URLTests.m\n//  Connection\n//\n//  Created by Mike Abdullah on 09/03/2012.\n//  Copyright (c) 2012 Karelia Software. All rights reserved.\n//\n\n#import \"CK2FileManager.h\"\n\n#import <XCTest/XCTest.h>\n\n@interface URLTests : XCTestCase\n\n@end\n\n@implementation URLTests\n\n- (void)testURLs {\n    NSURL *suiteURL = [[NSBundle bundleForClass:self.class] URLForResource:@\"URLs\" withExtension:@\"testdata\"];\n    NSArray *suite = [NSJSONSerialization JSONObjectWithData:[NSData dataWithContentsOfURL:suiteURL] options:0 error:NULL];\n    XCTAssertTrue(suite.count >= 1);\n    \n    for (NSDictionary *values in suite) {\n        NSString *path = values[@\"path\"];\n        BOOL directory = [values[@\"isDirectory\"] boolValue];\n        NSURL *base = [NSURL URLWithString:values[@\"hostURL\"]];\n        \n        NSURL *url = [CK2FileManager URLWithPath:path isDirectory:directory hostURL:base];\n        XCTAssertEqualObjects(url.absoluteString, values[@\"Output\"]);\n        XCTAssertNil(url.baseURL, @\"+URLWithPath:isDirectory:hostURL: should always return an absolute URL\");\n    }\n}\n\n#pragma mark FTP\n\n- (void)testFTPRelative\n{\n    NSURL *url = [CK2FileManager URLWithPath:@\"relative/path/file.txt\"\n                                                                relativeToURL:[NSURL URLWithString:@\"ftp://user:pass@test.ftp.com\"]];\n    XCTAssertTrue([[url absoluteString] isEqualToString:@\"ftp://user:pass@test.ftp.com/relative/path/file.txt\"], @\"path should start with slash\");\n}\n\n- (void)testFTPRelativeDirectory\n{\n    NSURL *url = [CK2FileManager URLWithPath:@\"relative/path/directory\"\n                               relativeToURL:[NSURL URLWithString:@\"ftp://user:pass@test.ftp.com\"]];\n    XCTAssertTrue([[url absoluteString] isEqualToString:@\"ftp://user:pass@test.ftp.com/relative/path/directory\"], @\"path should start with slash\");\n}\n\n- (void)testFTPAbsolute\n{\n    NSURL *url = [CK2FileManager URLWithPath:@\"/absolute/path/file.txt\"\n                                                                relativeToURL:[NSURL URLWithString:@\"ftp://user:pass@test.ftp.com\"]];\n    XCTAssertEqualObjects([url absoluteString], @\"ftp://user:pass@test.ftp.com//absolute/path/file.txt\");\n}\n\n- (void)testFTPAbsoluteNonRootURL\n{\n    NSURL *url = [CK2FileManager URLWithPath:@\"/absolute/path/file.txt\"\n                               relativeToURL:[NSURL URLWithString:@\"ftp://user:pass@test.ftp.com/example/path/\"]];\n    XCTAssertEqualObjects([url absoluteString], @\"ftp://user:pass@test.ftp.com//absolute/path/file.txt\");\n}\n\n- (void)testFTPRelativeNonRootFolderURL\n{\n    NSURL *url = [CK2FileManager URLWithPath:@\"relative/path/file.txt\"\n                               relativeToURL:[NSURL URLWithString:@\"ftp://user:pass@test.ftp.com/example/path/\"]];\n    XCTAssertEqualObjects(url.absoluteString, @\"ftp://user:pass@test.ftp.com/example/path/relative/path/file.txt\");\n}\n\n- (void)testFTPRelativeNonRootFileURL\n{\n    NSURL *url = [CK2FileManager URLWithPath:@\"relative/path/file.txt\"\n                               relativeToURL:[NSURL URLWithString:@\"ftp://user:pass@test.ftp.com/example/file\"]];\n    XCTAssertEqualObjects(url.absoluteString, @\"ftp://user:pass@test.ftp.com/example/relative/path/file.txt\");\n}\n\n- (void)testFTPRoot\n{\n    NSURL *url = [CK2FileManager URLWithPath:@\"/\"\n                                                                relativeToURL:[NSURL URLWithString:@\"ftp://user:pass@test.ftp.com\"]];\n    XCTAssertTrue([[url absoluteString] isEqualToString:@\"ftp://user:pass@test.ftp.com//\"]);\n}\n\n- (void)testFTPRootNonRootURL\n{\n    NSURL *url = [CK2FileManager URLWithPath:@\"/\"\n                               relativeToURL:[NSURL URLWithString:@\"ftp://user:pass@test.ftp.com/example/path/\"]];\n    XCTAssertTrue([[url absoluteString] isEqualToString:@\"ftp://user:pass@test.ftp.com//\"]);\n}\n\n#pragma mark WebDAV\n\n- (void)testHTTPRelative\n{\n    NSURL *url = [CK2FileManager URLWithPath:@\"relative/path/file.txt\"\n                                                                relativeToURL:[NSURL URLWithString:@\"http://www.test.com:8080\"]];\n    XCTAssertEqualObjects([url absoluteString], @\"http://www.test.com:8080/relative/path/file.txt\", @\"path should be normal\");\n}\n\n- (void)testHTTPRelativeDirectory\n{\n    NSURL *url = [CK2FileManager URLWithPath:@\"relative/path/directory\"\n                                                                relativeToURL:[NSURL URLWithString:@\"http://www.test.com:8080\"]];\n    XCTAssertEqualObjects([url absoluteString], @\"http://www.test.com:8080/relative/path/directory\", @\"path should be normal\");\n}\n\n- (void)testHTTPAbsolute\n{\n    NSURL *url = [CK2FileManager URLWithPath:@\"/absolute/path/file.txt\"\n                                                                relativeToURL:[NSURL URLWithString:@\"http://www.test.com:8080\"]];\n    XCTAssertEqualObjects([url absoluteString], @\"http://www.test.com:8080/absolute/path/file.txt\", @\"path should be normal\");\n}\n\n- (void)testHTTPRelativeNonRootFolderURL\n{\n    NSURL *url = [CK2FileManager URLWithPath:@\"relative/path/file.txt\"\n                               relativeToURL:[NSURL URLWithString:@\"http://www.test.com:8080/example/path/\"]];\n    XCTAssertEqualObjects([url absoluteString], @\"http://www.test.com:8080/example/path/relative/path/file.txt\");\n}\n\n- (void)testHTTPRelativeNonRootFileURL\n{\n    NSURL *url = [CK2FileManager URLWithPath:@\"relative/path/file.txt\"\n                               relativeToURL:[NSURL URLWithString:@\"http://www.test.com:8080/example/file\"]];\n    XCTAssertEqualObjects([url absoluteString], @\"http://www.test.com:8080/example/relative/path/file.txt\");\n}\n\n#pragma mark SSH\n\n- (void)testSFTPRelative\n{\n    NSURL *url = [CK2FileManager URLWithPath:@\"relative/path/file.txt\"\n                                                                relativeToURL:[NSURL URLWithString:@\"sftp://user@test.sftp.com\"]];\n    XCTAssertEqualObjects([url absoluteString], @\"sftp://user@test.sftp.com/~/relative/path/file.txt\", @\"path should start with ~\");\n}\n\n- (void)testSFTPRelativeTrailingSlash\n{\n    NSURL *url = [CK2FileManager URLWithPath:@\"relative/path/file.txt\"\n                                                                relativeToURL:[NSURL URLWithString:@\"sftp://user@test.sftp.com/\"]];\n    XCTAssertEqualObjects([url absoluteString], @\"sftp://user@test.sftp.com/~/relative/path/file.txt\", @\"path should start with ~\");\n}\n\n- (void)testSFTPRelativeDirectory\n{\n    NSURL *url = [CK2FileManager URLWithPath:@\"relative/path/directory\"\n                                                                relativeToURL:[NSURL URLWithString:@\"sftp://user@test.sftp.com\"]];\n    XCTAssertEqualObjects([url absoluteString], @\"sftp://user@test.sftp.com/~/relative/path/directory\", @\"path should start with ~\");\n}\n\n- (void)testSFTPAbsolute\n{\n    NSURL *url = [CK2FileManager URLWithPath:@\"/absolute/path/file.txt\"\n                                                                relativeToURL:[NSURL URLWithString:@\"sftp://user@test.sftp.com\"]];\n    \n    XCTAssertEqualObjects([url absoluteString], @\"sftp://user@test.sftp.com/absolute/path/file.txt\", @\"path should be normal\");\n}\n\n- (void)testSFTPAbsoluteTrailingSlash\n{\n    NSURL *url = [CK2FileManager URLWithPath:@\"/absolute/path/file.txt\"\n                                                                relativeToURL:[NSURL URLWithString:@\"sftp://user@test.sftp.com/\"]];\n    \n    XCTAssertEqualObjects([url absoluteString], @\"sftp://user@test.sftp.com/absolute/path/file.txt\", @\"path should be normal\");\n}\n\n- (void)testSCPRelative\n{\n    NSURL *url = [CK2FileManager URLWithPath:@\"relative/path/file.txt\"\n                                                                relativeToURL:[NSURL URLWithString:@\"scp://user@test.scp.com\"]];\n    \n    XCTAssertEqualObjects([url absoluteString], @\"scp://user@test.scp.com/~/relative/path/file.txt\", @\"path should start with ~\");\n}\n\n- (void)testSCPRelativeTrailingSlash\n{\n    NSURL *url = [CK2FileManager URLWithPath:@\"relative/path/file.txt\"\n                                                                relativeToURL:[NSURL URLWithString:@\"scp://user@test.scp.com/\"]];\n    \n    XCTAssertEqualObjects([url absoluteString], @\"scp://user@test.scp.com/~/relative/path/file.txt\", @\"path should start with ~\");\n}\n\n- (void)testSCPAbsolute\n{\n    NSURL *url = [CK2FileManager URLWithPath:@\"/absolute/path/file.txt\"\n                                                                relativeToURL:[NSURL URLWithString:@\"scp://user@test.scp.com\"]];\n    \n    XCTAssertEqualObjects([url absoluteString], @\"scp://user@test.scp.com/absolute/path/file.txt\", @\"path should be normal\");\n}\n\n- (void)testSCPAbsoluteTrailingSlash\n{\n    NSURL *url = [CK2FileManager URLWithPath:@\"/absolute/path/file.txt\"\n                                                                relativeToURL:[NSURL URLWithString:@\"scp://user@test.scp.com/\"]];\n    \n    XCTAssertEqualObjects([url absoluteString], @\"scp://user@test.scp.com/absolute/path/file.txt\", @\"path should be normal\");\n}\n\n@end\n"
  },
  {
    "path": "UnitTests/URLs.testdata",
    "content": "[\n  {\n    \"path\" : \"relative\\/path to\\/file.txt\",\n    \"hostURL\" : \"ftp:\\/\\/user:pass@test.ftp.com\",\n    \"Output\" : \"ftp:\\/\\/user:pass@test.ftp.com\\/relative\\/path%20to\\/file.txt\",\n    \"isDirectory\" : 0,\n    \"Notes\" : \"Where possible, test with a space in the path to ensure percent encoding is doing its job properly\"\n  },\n  {\n    \"path\" : \"relative\\/path to\\/directory\",\n    \"hostURL\" : \"ftp:\\/\\/user:pass@test.ftp.com\",\n    \"Output\" : \"ftp:\\/\\/user:pass@test.ftp.com\\/relative\\/path%20to\\/directory\\/\",\n    \"isDirectory\" : 1\n  },\n  {\n    \"path\" : \"\",\n    \"hostURL\" : \"ftp:\\/\\/user:pass@test.ftp.com:21\",\n    \"Output\" : \"ftp:\\/\\/user:pass@test.ftp.com:21\\/\",\n    \"isDirectory\" : 1\n  },\n  {\n    \"path\" : \"\\/absolute\\/path to\\/file.txt\",\n    \"hostURL\" : \"ftp:\\/\\/user:pass@test.ftp.com\",\n    \"Output\" : \"ftp:\\/\\/user:pass@test.ftp.com\\/\\/absolute\\/path%20to\\/file.txt\",\n    \"isDirectory\" : 0\n  },\n  {\n    \"path\" : \"\\/absolute\\/path to\\/file.txt\",\n    \"hostURL\" : \"ftp:\\/\\/user:pass@test.ftp.com\\/example\\/path\\/\",\n    \"Output\" : \"ftp:\\/\\/user:pass@test.ftp.com\\/\\/absolute\\/path%20to\\/file.txt\",\n    \"isDirectory\" : 0\n  },\n  {\n    \"path\" : \"relative\\/path to\\/file.txt\",\n    \"hostURL\" : \"ftp:\\/\\/user:pass@test.ftp.com\\/example\\/path\\/\",\n    \"Output\" : \"ftp:\\/\\/user:pass@test.ftp.com\\/relative\\/path%20to\\/file.txt\",\n    \"isDirectory\" : 0\n  },\n  {\n    \"path\" : \"relative\\/path to\\/file.txt\",\n    \"hostURL\" : \"ftp:\\/\\/user:pass@test.ftp.com\\/example\\/file\",\n    \"Output\" : \"ftp:\\/\\/user:pass@test.ftp.com\\/relative\\/path%20to\\/file.txt\",\n    \"isDirectory\" : 0\n  },\n  {\n    \"path\" : \"\\/\",\n    \"hostURL\" : \"ftp:\\/\\/user:pass@test.ftp.com\",\n    \"Output\" : \"ftp:\\/\\/user:pass@test.ftp.com\\/\\/\",\n    \"isDirectory\" : 1\n  },\n  {\n    \"path\" : \"\\/\",\n    \"hostURL\" : \"ftp:\\/\\/user:pass@test.ftp.com\",\n    \"Output\" : \"ftp:\\/\\/user:pass@test.ftp.com\\/\\/\",\n    \"isDirectory\" : 0\n  },\n  {\n    \"path\" : \"\\/\",\n    \"hostURL\" : \"ftp:\\/\\/user:pass@test.ftp.com\\/example\\/path\\/\",\n    \"Output\" : \"ftp:\\/\\/user:pass@test.ftp.com\\/\\/\",\n    \"isDirectory\" : 1\n  },\n  {\n    \"path\" : \"\\/\",\n    \"hostURL\" : \"ftp:\\/\\/user:pass@test.ftp.com\\/example\\/path\\/\",\n    \"Output\" : \"ftp:\\/\\/user:pass@test.ftp.com\\/\\/\",\n    \"isDirectory\" : 0\n  },\n  {\n    \"path\" : \"relative\\/path to\\/file.txt\",\n    \"hostURL\" : \"http:\\/\\/www.test.com:8080\",\n    \"Output\" : \"http:\\/\\/www.test.com:8080\\/relative\\/path%20to\\/file.txt\",\n    \"isDirectory\" : 0\n  },\n  {\n    \"path\" : \"relative\\/path to\\/directory\",\n    \"Output\" : \"http:\\/\\/www.test.com:8080\\/relative\\/path%20to\\/directory\\/\",\n    \"hostURL\" : \"http:\\/\\/www.test.com:8080\",\n    \"isDirectory\" : 1\n  },\n  {\n    \"path\" : \"\\/absolute\\/path to\\/file.txt\",\n    \"hostURL\" : \"http:\\/\\/www.test.com:8080\",\n    \"Output\" : \"http:\\/\\/www.test.com:8080\\/absolute\\/path%20to\\/file.txt\",\n    \"isDirectory\" : 0\n  },\n  {\n    \"path\" : \"relative\\/path to\\/file.txt\",\n    \"hostURL\" : \"http:\\/\\/www.test.com:8080\\/example\\/path\\/\",\n    \"Output\" : \"http:\\/\\/www.test.com:8080\\/relative\\/path%20to\\/file.txt\",\n    \"isDirectory\" : 0\n  },\n  {\n    \"path\" : \"relative\\/path to\\/file.txt\",\n    \"hostURL\" : \"http:\\/\\/www.test.com:8080\\/example\\/file\",\n    \"Output\" : \"http:\\/\\/www.test.com:8080\\/relative\\/path%20to\\/file.txt\",\n    \"isDirectory\" : 0\n  },\n  {\n    \"path\" : \"relative\\/path to\\/file.txt\",\n    \"hostURL\" : \"sftp:\\/\\/user@test.sftp.com\",\n    \"Output\" : \"sftp:\\/\\/user@test.sftp.com\\/~\\/relative\\/path%20to\\/file.txt\",\n    \"isDirectory\" : 0\n  },\n  {\n    \"path\" : \"relative\\/path to\\/file.txt\",\n    \"hostURL\" : \"sftp:\\/\\/user@test.sftp.com\\/\",\n    \"Output\" : \"sftp:\\/\\/user@test.sftp.com\\/~\\/relative\\/path%20to\\/file.txt\",\n    \"isDirectory\" : 0\n  },\n  {\n    \"path\" : \"relative\\/path to\\/file.txt\",\n    \"hostURL\" : \"sftp:\\/\\/user:pass@test.ftp.com\\/example\\/path\\/\",\n    \"Output\" : \"sftp:\\/\\/user:pass@test.ftp.com\\/~\\/relative\\/path%20to\\/file.txt\",\n    \"isDirectory\" : 0\n  },\n  {\n    \"path\" : \"relative\\/path to\\/file.txt\",\n    \"hostURL\" : \"sftp:\\/\\/user:pass@test.ftp.com\\/example\\/file\",\n    \"Output\" : \"sftp:\\/\\/user:pass@test.ftp.com\\/~\\/relative\\/path%20to\\/file.txt\",\n    \"isDirectory\" : 0\n  },\n  {\n    \"path\" : \"relative\\/path to\\/directory\",\n    \"hostURL\" : \"sftp:\\/\\/user@test.sftp.com\",\n    \"Output\" : \"sftp:\\/\\/user@test.sftp.com\\/~\\/relative\\/path%20to\\/directory\\/\",\n    \"isDirectory\" : 1\n  },\n  {\n    \"path\" : \"\\/absolute\\/path to\\/file.txt\",\n    \"hostURL\" : \"sftp:\\/\\/user@test.sftp.com\",\n    \"Output\" : \"sftp:\\/\\/user@test.sftp.com\\/absolute\\/path%20to\\/file.txt\",\n    \"isDirectory\" : 0\n  },\n  {\n    \"path\" : \"relative\\/path to\\/file.txt\",\n    \"hostURL\" : \"scp:\\/\\/user@test.scp.com\",\n    \"Output\" : \"scp:\\/\\/user@test.scp.com\\/~\\/relative\\/path%20to\\/file.txt\",\n    \"isDirectory\" : 0\n  },\n  {\n    \"path\" : \"\\/Users\\/Shared\",\n    \"hostURL\" : \"file:\\/\\/\\/foo\\/bar\",\n    \"Output\" : \"file:\\/\\/\\/Users\\/Shared\\/\",\n    \"isDirectory\" : 1,\n    \"Notes\" : \"My standard trick of making a directory by appending path component of @\\\"\\\" turns out to have a caveat: http:\\/\\/www.mikeabdullah.net\\/guaranteeing-directory-urls.html. This isn't too good for our clients as an inconsistency\"\n  }\n]"
  },
  {
    "path": "UnitTests/UnitTest-Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>${EXECUTABLE_NAME}</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundlePackageType</key>\n\t<string>BNDL</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1.0</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "UnitTests/UnitTests_Prefix.pch",
    "content": "\n//#define MockServerLogDetail(...)\n"
  },
  {
    "path": "UnitTests/WebDAVTests.m",
    "content": "//\n//  Created by Sam Deane on 06/11/2012.\n//  Copyright 2012 Karelia Software. All rights reserved.\n//\n\n#import \"BaseCKProtocolTests.h\"\n\n@interface WebDAVTests : BaseCKProtocolTests\n\n@end\n\n@implementation WebDAVTests\n\n- (NSString*)protocol\n{\n    return @\"WebDAV\";\n}\n\n- (BOOL)protocolUsesAuthentication\n{\n    return YES;\n}\n\n- (NSData*)mockServerDirectoryListingData\n{\n    NSString* xml = [NSString stringWithFormat:\n                     @\"<D:multistatus xmlns:D=\\\"DAV:\\\" xmlns:ns0=\\\"DAV:\\\">\"\n\n                     \"<D:response xmlns:lp1=\\\"DAV:\\\">\"\n                     \"<D:href>%@</D:href>\"\n                     \"<D:propstat>\"\n                     \"<D:prop>\"\n                     \"<lp1:resourcetype><D:collection/></lp1:resourcetype>\"\n                     \"</D:prop>\"\n                     \"<D:status>HTTP/1.1 200 OK</D:status>\"\n                     \"</D:propstat>\"\n                     \"</D:response>\"\n\n                     \"<D:response xmlns:lp1=\\\"DAV:\\\">\"\n                     \"<D:href>%@</D:href>\"\n                     \"<D:propstat>\"\n                     \"<D:prop>\"\n                     \"<lp1:resourcetype/>\"\n                     \"</D:prop>\"\n                     \"<D:status>HTTP/1.1 200 OK</D:status>\"\n                     \"</D:propstat>\"\n                     \"</D:response>\"\n\n                     \"<D:response xmlns:lp1=\\\"DAV:\\\">\"\n                     \"<D:href>%@</D:href>\"\n                     \"<D:propstat>\"\n                     \"<D:prop>\"\n                     \"<lp1:resourcetype/>\"\n                     \"</D:prop>\"\n                     \"<D:status>HTTP/1.1 200 OK</D:status>\"\n                     \"</D:propstat>\"\n                     \"</D:response>\"\n\n                     \"</D:multistatus>\\r\\n\", [self URLForTestFolder], [self URLForTestFile1], [self URLForTestFile2]];\n\n    NSData* data = [xml dataUsingEncoding:NSUTF8StringEncoding];\n    \n    return data;\n}\n\n@end"
  },
  {
    "path": "UnitTests/test.sh",
    "content": "#!/usr/bin/env bash\n\n# This script builds and runs the unit tests and produces output in a format that is compatible with Jenkins.\n\nbase=`dirname $0`\necho \"$base\"\npushd \"$base/..\" > /dev/null\nbuild=\"$PWD/test-build\"\nocunit2junit=\"$base/../CurlHandle/CURLHandleSource/Tests/MockServer/UnitTests/OCUnit2JUnit/bin/ocunit2junit\"\npopd > /dev/null\n\nsym=\"$build/sym\"\nobj=\"$build/obj\"\n\ntestout=\"$build/output.log\"\ntesterr=\"$build/error.log\"\n\nrm -rf \"$build\"\nmkdir -p \"$build\"\n\necho Building 32-bit\n\nxcodebuild -workspace \"ConnectionKit.xcworkspace\" -scheme \"ConnectionKit\" -sdk \"macosx\" -config \"Debug\" -arch i386 build OBJROOT=\"$obj\" SYMROOT=\"$sym\" > \"$testout\" 2> \"$testerr\"\nif [ $? != 0 ]; then\n\techo \"32-bit build failed\"\n\tcat \"$testerr\"\nfi\n\n\necho Building and Testing 64-bit\n\nxcodebuild -workspace \"ConnectionKit.xcworkspace\" -scheme \"ConnectionKit\" -sdk \"macosx\" -config \"Debug\" -arch x86_64 test OBJROOT=\"$obj\" SYMROOT=\"$sym\" > \"$testout\" 2> \"$testerr\"\nif [ $? != 0 ]; then\n\techo \"64-bit build failed\"\n\tcat \"$testerr\"\nelse\n\tcd \"$build\"\n\t\"../$ocunit2junit\" < \"$testout\"\nfi\n\n\n"
  },
  {
    "path": "UnitTests/use-ftp-server.sh",
    "content": "#!/usr/bin/env bash\n\ndefaults write otest CKFTPTestURL $1\n"
  },
  {
    "path": "UnitTests/use-mockserver.sh",
    "content": "#!/usr/bin/env bash\n\ndefaults write otest CKFTPTestURL MockServer\ndefaults write otest CKWebDAVTestURL MockServer\ndefaults write otest CKSFTPTestURL MockServer\n"
  },
  {
    "path": "UnitTests/use-sftp-server.sh",
    "content": "#!/usr/bin/env bash\n\ndefaults write otest CKSFTPTestURL $1\n"
  },
  {
    "path": "UnitTests/use-webdav-server.sh",
    "content": "#!/usr/bin/env bash\n\ndefaults write otest CKWebDAVTestURL $1\n"
  },
  {
    "path": "version.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>BuildVersion</key>\n\t<string>92</string>\n\t<key>CFBundleVersion</key>\n\t<string>1.0</string>\n\t<key>ProductBuildVersion</key>\n\t<string>7K571</string>\n\t<key>ProjectName</key>\n\t<string>NibPBTemplates</string>\n\t<key>SourceVersion</key>\n\t<string>1200000</string>\n</dict>\n</plist>\n"
  }
]