Commit 5af16f7a authored by Felix Paul Kühne's avatar Felix Paul Kühne

Menu: add an open network stream UI with a history of the last 15 items

parent a3984c7b
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#define kVLCSettingTextEncodingDefaultValue @"Windows-1252" #define kVLCSettingTextEncodingDefaultValue @"Windows-1252"
#define kVLCShowRemainingTime @"show-remaining-time" #define kVLCShowRemainingTime @"show-remaining-time"
#define kVLCRecentURLs @"recent-urls"
#define kSupportedFileExtensions @"\\.(3gp|3gp|3gp2|3gpp|amv|asf|avi|axv|divx|dv|flv|f4v|gvi|gxf|m1v|m2p|m2t|m2ts|m2v|m4v|mks|mkv|moov|mov|mp2v|mp4|mpeg|mpeg1|mpeg2|mpeg4|mpg|mpv|mt2s|mts|mxf|nsv|nuv|oga|ogg|ogm|ogv|ogx|spx|ps|qt|rar|rec|rm|rmvb|tod|ts|tts|vob|vro|webm|wm|wmv|wtv|xesc)$" #define kSupportedFileExtensions @"\\.(3gp|3gp|3gp2|3gpp|amv|asf|avi|axv|divx|dv|flv|f4v|gvi|gxf|m1v|m2p|m2t|m2ts|m2v|m4v|mks|mkv|moov|mov|mp2v|mp4|mpeg|mpeg1|mpeg2|mpeg4|mpg|mpv|mt2s|mts|mxf|nsv|nuv|oga|ogg|ogm|ogv|ogx|spx|ps|qt|rar|rec|rm|rmvb|tod|ts|tts|vob|vro|webm|wm|wmv|wtv|xesc)$"
#define kSupportedSubtitleFileExtensions @"\\.(cdg|idx|srt|sub|utf|ass|ssa|aqt|jss|psb|rt|smi|txt|smil)$" #define kSupportedSubtitleFileExtensions @"\\.(cdg|idx|srt|sub|utf|ass|ssa|aqt|jss|psb|rt|smi|txt|smil)$"
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
#import "Reachability.h" #import "Reachability.h"
#import "VLCHTTPFileDownloader.h" #import "VLCHTTPFileDownloader.h"
#import "IASKAppSettingsViewController.h" #import "IASKAppSettingsViewController.h"
#import "VLCOpenNetworkStreamViewController.h"
#import <ifaddrs.h> #import <ifaddrs.h>
#import <arpa/inet.h> #import <arpa/inet.h>
...@@ -129,13 +130,9 @@ ...@@ -129,13 +130,9 @@
- (IBAction)openNetworkStream:(id)sender - (IBAction)openNetworkStream:(id)sender
{ {
if (sender == self.openNetworkStreamButton) { UIViewController *openURLController = [[VLCOpenNetworkStreamViewController alloc] initWithNibName:nil bundle:nil];
[self _presentOpenURLViewFromView:self.openNetworkStreamButton forSelector:@selector(openNetworkStream:)];
} else { [self.navigationController pushViewController:openURLController animated:YES];
VLCAppDelegate* appDelegate = [UIApplication sharedApplication].delegate;
[appDelegate.playlistViewController openMovieFromURL:[NSURL URLWithString:self.openURLField.text]];
[self _hideAnimated:YES];
}
} }
- (IBAction)downloadFromHTTPServer:(id)sender - (IBAction)downloadFromHTTPServer:(id)sender
......
//
// VLCOpenNetworkStreamViewController.h
// VLC for iOS
//
// Created by Felix Paul Kühne on 16.06.13.
// Copyright (c) 2013 VideoLAN. All rights reserved.
//
// Refer to the COPYING file of the official project for license.
//
@interface VLCOpenNetworkStreamViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
@property (strong, nonatomic) IBOutlet UITextField *urlField;
@property (strong, nonatomic) IBOutlet UIButton *openButton;
@property (strong, nonatomic) IBOutlet UISwitch *privateToggleSwitch;
@property (strong, nonatomic) IBOutlet UILabel *privateModeLabel;
@property (strong, nonatomic) IBOutlet UITableView *historyTableView;
- (IBAction)openButtonAction:(id)sender;
@end
//
// VLCOpenNetworkStreamViewController.m
// VLC for iOS
//
// Created by Felix Paul Kühne on 16.06.13.
// Copyright (c) 2013 VideoLAN. All rights reserved.
//
// Refer to the COPYING file of the official project for license.
//
#import "VLCOpenNetworkStreamViewController.h"
#import "VLCAppDelegate.h"
#import "VLCPlaylistViewController.h"
@interface VLCOpenNetworkStreamViewController ()
{
NSMutableArray *_recentURLs;
}
@end
@implementation VLCOpenNetworkStreamViewController
+ (void)initialize
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSDictionary *appDefaults = @{kVLCRecentURLs : @[]};
[defaults registerDefaults:appDefaults];
}
- (void)viewDidLoad
{
[super viewDidLoad];
[self.openButton setTitle:NSLocalizedString(@"BUTTON_OPEN", @"") forState:UIControlStateNormal];
}
- (void)viewWillAppear:(BOOL)animated
{
self.navigationController.navigationBarHidden = NO;
if ([[UIPasteboard generalPasteboard] containsPasteboardTypes:@[@"public.url", @"public.text"]]) {
NSURL *pasteURL = [[UIPasteboard generalPasteboard] valueForPasteboardType:@"public.url"];
if (!pasteURL || [[pasteURL absoluteString] isEqualToString:@""]) {
NSString *pasteString = [[UIPasteboard generalPasteboard] valueForPasteboardType:@"public.text"];
pasteURL = [NSURL URLWithString:pasteString];
}
if (pasteURL && ![[pasteURL scheme] isEqualToString:@""] && ![[pasteURL absoluteString] isEqualToString:@""])
self.urlField.text = [pasteURL absoluteString];
}
_recentURLs = [NSMutableArray arrayWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:kVLCRecentURLs]];
[super viewWillAppear:animated];
}
- (void)viewWillDisappear:(BOOL)animated
{
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
self.navigationController.navigationBarHidden = YES;
[super viewWillDisappear:animated];
}
#pragma mark - UI interaction
- (IBAction)openButtonAction:(id)sender
{
if ([self.urlField.text length] > 0) {
if (!self.privateToggleSwitch.on) {
if (_recentURLs.count >= 15)
[_recentURLs removeLastObject];
[_recentURLs addObject:self.urlField.text];
[self.historyTableView reloadData];
}
[self _openURLStringAndDismiss:self.urlField.text];
}
}
#pragma mark - table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return _recentURLs.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"StreamingHistoryCell";
UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
cell.textLabel.textColor = [UIColor whiteColor];
cell.detailTextLabel.textColor = [UIColor colorWithWhite:.72 alpha:1.];
}
NSInteger row = indexPath.row;
cell.textLabel.text = [_recentURLs[row] lastPathComponent];
cell.detailTextLabel.text = _recentURLs[row];
return cell;
}
#pragma mark - table view delegate
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
cell.backgroundColor = (indexPath.row % 2 == 0)? [UIColor blackColor]: [UIColor colorWithWhite:.122 alpha:1.];
}
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
return YES;
}
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
[_recentURLs removeObjectAtIndex:indexPath.row];
[tableView reloadData];
}
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self _openURLStringAndDismiss:_recentURLs[indexPath.row]];
[self.historyTableView deselectRowAtIndexPath:indexPath animated:NO];
}
#pragma mark - internals
- (void)_openURLStringAndDismiss:(NSString *)url
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[NSArray arrayWithArray:_recentURLs] forKey:kVLCRecentURLs];
[defaults synchronize];
VLCAppDelegate* appDelegate = [UIApplication sharedApplication].delegate;
[appDelegate.playlistViewController openMovieFromURL:[NSURL URLWithString:url]];
[self dismissModalViewControllerAnimated:YES];
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
[appDelegate.playlistViewController.addMediaPopoverController dismissPopoverAnimated:YES];
}
@end
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="8.00">
<data>
<int key="IBDocument.SystemTarget">1296</int>
<string key="IBDocument.SystemVersion">12E55</string>
<string key="IBDocument.InterfaceBuilderVersion">3084</string>
<string key="IBDocument.AppKitVersion">1187.39</string>
<string key="IBDocument.HIToolboxVersion">626.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="NS.object.0">2083</string>
</object>
<array key="IBDocument.IntegratedClassDependencies">
<string>IBProxyObject</string>
<string>IBUIButton</string>
<string>IBUIImageView</string>
<string>IBUILabel</string>
<string>IBUISwitch</string>
<string>IBUITableView</string>
<string>IBUITextField</string>
<string>IBUIView</string>
</array>
<array key="IBDocument.PluginDependencies">
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</array>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<string key="NS.key.0">PluginDependencyRecalculationVersion</string>
<integer value="1" key="NS.object.0"/>
</object>
<array class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<object class="IBProxyObject" id="372490531">
<string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBProxyObject" id="975951072">
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUIView" id="191373211">
<reference key="NSNextResponder"/>
<int key="NSvFlags">274</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="IBUIView" id="975400831">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="IBUIImageView" id="602492749">
<reference key="NSNextResponder" ref="975400831"/>
<int key="NSvFlags">292</int>
<string key="NSFrameSize">{320, 112}</string>
<reference key="NSSuperview" ref="975400831"/>
<reference key="NSNextKeyView" ref="554522247"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<object class="NSCustomResource" key="IBUIImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">menuBtnBck.png</string>
</object>
</object>
<object class="IBUITextField" id="554522247">
<reference key="NSNextResponder" ref="975400831"/>
<int key="NSvFlags">294</int>
<string key="NSFrame">{{20, 20}, {202, 30}}</string>
<reference key="NSSuperview" ref="975400831"/>
<reference key="NSNextKeyView" ref="504069026"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<int key="IBUIContentVerticalAlignment">0</int>
<string key="IBUIText"/>
<int key="IBUIBorderStyle">3</int>
<object class="NSColor" key="IBUITextColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MAA</bytes>
<object class="NSColorSpace" key="NSCustomColorSpace" id="752413907">
<int key="NSID">2</int>
</object>
</object>
<bool key="IBUIAdjustsFontSizeToFit">YES</bool>
<float key="IBUIMinimumFontSize">17</float>
<object class="IBUITextInputTraits" key="IBUITextInputTraits">
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="NSCustomResource" key="IBUIBackground">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">input.png</string>
</object>
<object class="IBUIFontDescription" key="IBUIFontDescription">
<int key="type">1</int>
<double key="pointSize">14</double>
</object>
<object class="NSFont" key="IBUIFont">
<string key="NSName">Helvetica</string>
<double key="NSSize">14</double>
<int key="NSfFlags">16</int>
</object>
</object>
<object class="IBUIButton" id="504069026">
<reference key="NSNextResponder" ref="975400831"/>
<int key="NSvFlags">289</int>
<string key="NSFrame">{{230, 13}, {70, 44}}</string>
<reference key="NSSuperview" ref="975400831"/>
<reference key="NSNextKeyView" ref="826405785"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<int key="IBUIButtonType">1</int>
<string key="IBUINormalTitle">Ouvrir</string>
<object class="NSColor" key="IBUIHighlightedTitleColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MQA</bytes>
</object>
<object class="NSColor" key="IBUINormalTitleColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
</object>
<object class="NSColor" key="IBUINormalTitleShadowColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC41AA</bytes>
</object>
<object class="NSCustomResource" key="IBUINormalBackgroundImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">menuButton.png</string>
</object>
<object class="IBUIFontDescription" key="IBUIFontDescription">
<int key="type">2</int>
<double key="pointSize">15</double>
</object>
<object class="NSFont" key="IBUIFont">
<string key="NSName">Helvetica-Bold</string>
<double key="NSSize">15</double>
<int key="NSfFlags">16</int>
</object>
</object>
<object class="IBUISwitch" id="826405785">
<reference key="NSNextResponder" ref="975400831"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{5, 65}, {94, 27}}</string>
<reference key="NSSuperview" ref="975400831"/>
<reference key="NSNextKeyView" ref="455902210"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<object class="NSColor" key="IBUIOnTintColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MCAwLjYxAA</bytes>
<reference key="NSCustomColorSpace" ref="752413907"/>
</object>
</object>
<object class="IBUILabel" id="455902210">
<reference key="NSNextResponder" ref="975400831"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{105, 68}, {195, 21}}</string>
<reference key="NSSuperview" ref="975400831"/>
<reference key="NSNextKeyView" ref="298922959"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUIContentMode">7</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<string key="IBUIText">Private Playback</string>
<object class="NSColor" key="IBUITextColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MC43NDY1OTE5OTYyIDAuNzQ2NTkxOTk2MiAwLjc0NjU5MTk5NjIAA</bytes>
</object>
<nil key="IBUIHighlightedColor"/>
<int key="IBUIBaselineAdjustment">0</int>
<object class="IBUIFontDescription" key="IBUIFontDescription">
<int key="type">1</int>
<double key="pointSize">17</double>
</object>
<object class="NSFont" key="IBUIFont">
<string key="NSName">Helvetica</string>
<double key="NSSize">17</double>
<int key="NSfFlags">16</int>
</object>
<bool key="IBUIAdjustsFontSizeToFit">NO</bool>
</object>
</array>
<string key="NSFrameSize">{320, 112}</string>
<reference key="NSSuperview" ref="191373211"/>
<reference key="NSNextKeyView" ref="602492749"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
</object>
<object class="IBUISimulatedSizeMetrics" key="IBUISimulatedDestinationMetrics" id="919046301">
<string key="IBUISimulatedSizeMetricsClass">IBUISimulatedFreeformSizeMetricsSentinel</string>
<string key="IBUIDisplayName">Freeform</string>
</object>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUITableView" id="298922959">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">274</int>
<string key="NSFrame">{{0, 111}, {320, 272}}</string>
<reference key="NSSuperview" ref="191373211"/>
<reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MCAwLjYxAA</bytes>
<reference key="NSCustomColorSpace" ref="752413907"/>
</object>
<bool key="IBUIClipsSubviews">YES</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<bool key="IBUIAlwaysBounceVertical">YES</bool>
<bool key="IBUIShowsVerticalScrollIndicator">NO</bool>
<int key="IBUISeparatorStyle">1</int>
<object class="NSColor" key="IBUISeparatorColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MCAwLjYxAA</bytes>
<reference key="NSCustomColorSpace" ref="752413907"/>
</object>
<int key="IBUISectionIndexMinimumDisplayRowCount">0</int>
<bool key="IBUIShowsSelectionImmediatelyOnTouchBegin">YES</bool>
<float key="IBUIRowHeight">44</float>
<float key="IBUISectionHeaderHeight">22</float>
<float key="IBUISectionFooterHeight">22</float>
</object>
</array>
<string key="NSFrameSize">{320, 383}</string>
<reference key="NSSuperview"/>
<reference key="NSNextKeyView" ref="975400831"/>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MAA</bytes>
</object>
<reference key="IBUISimulatedDestinationMetrics" ref="919046301"/>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
</array>
<object class="IBObjectContainer" key="IBDocument.Objects">
<array class="NSMutableArray" key="connectionRecords">
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">view</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="191373211"/>
</object>
<int key="connectionID">3</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">urlField</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="554522247"/>
</object>
<int key="connectionID">11</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">privateToggleSwitch</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="826405785"/>
</object>
<int key="connectionID">12</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">privateModeLabel</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="455902210"/>
</object>
<int key="connectionID">13</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">openButton</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="504069026"/>
</object>
<int key="connectionID">14</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">historyTableView</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="298922959"/>
</object>
<int key="connectionID">15</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchEventConnection" key="connection">
<string key="label">openButtonAction:</string>
<reference key="source" ref="504069026"/>
<reference key="destination" ref="372490531"/>
<int key="IBEventType">7</int>
</object>
<int key="connectionID">16</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">delegate</string>
<reference key="source" ref="298922959"/>
<reference key="destination" ref="372490531"/>
</object>
<int key="connectionID">17</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">dataSource</string>
<reference key="source" ref="298922959"/>
<reference key="destination" ref="372490531"/>
</object>
<int key="connectionID">18</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects">
<object class="IBObjectRecord">
<int key="objectID">0</int>
<array key="object" id="0"/>
<reference key="children" ref="1000"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1</int>
<reference key="object" ref="191373211"/>
<array class="NSMutableArray" key="children">
<reference ref="975400831"/>
<reference ref="298922959"/>
</array>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="372490531"/>
<reference key="parent" ref="0"/>
<string key="objectName">File's Owner</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="975951072"/>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">4</int>
<reference key="object" ref="975400831"/>
<array class="NSMutableArray" key="children">
<reference ref="602492749"/>
<reference ref="554522247"/>
<reference ref="504069026"/>
<reference ref="826405785"/>
<reference ref="455902210"/>
</array>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">5</int>
<reference key="object" ref="602492749"/>
<reference key="parent" ref="975400831"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">6</int>
<reference key="object" ref="554522247"/>
<reference key="parent" ref="975400831"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">7</int>
<reference key="object" ref="504069026"/>
<reference key="parent" ref="975400831"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">8</int>
<reference key="object" ref="826405785"/>
<reference key="parent" ref="975400831"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">9</int>
<reference key="object" ref="455902210"/>