diff --git a/AppKit/AppKit.j b/AppKit/AppKit.j index a090a7805..aad960d62 100644 --- a/AppKit/AppKit.j +++ b/AppKit/AppKit.j @@ -37,6 +37,7 @@ @import "CPCibControlConnector.j" @import "CPCibLoading.j" @import "CPCibOutletConnector.j" +@import "CPCibRuntimeAttributesConnector.j" @import "CPClipView.j" @import "CPCollectionView.j" @import "CPCollectionViewItem.j" @@ -59,6 +60,7 @@ @import "CPImage.j" @import "CPImageView.j" @import "CPKeyBinding.j" +@import "CPLevelIndicator.j" @import "CPMenu.j" @import "CPMenuItem.j" @import "CPOpenPanel.j" @@ -66,9 +68,12 @@ @import "CPPanel.j" @import "CPPasteboard.j" @import "CPPopUpButton.j" +@import "CPPredicateEditor.j" +@import "CPPredicateEditorRowTemplate.j" @import "CPProgressIndicator.j" @import "CPRadio.j" @import "CPResponder.j" +@import "CPRuleEditor.j" @import "CPScroller.j" @import "CPScrollView.j" @import "CPSearchField.j" @@ -89,6 +94,7 @@ @import "CPToolbarItem.j" @import "_CPToolTip.j" @import "CPTreeNode.j" +@import "CPUserDefaultsController.j" @import "CPView.j" @import "CPViewAnimation.j" @import "CPViewController.j" diff --git a/AppKit/CPApplication.j b/AppKit/CPApplication.j index c6046ad0b..6fa5c020d 100644 --- a/AppKit/CPApplication.j +++ b/AppKit/CPApplication.j @@ -1292,8 +1292,12 @@ var _CPAppBootstrapperActions = nil, + (void)blendDidFinishLoading:(CPThemeBlend)aThemeBlend { - [[CPApplication sharedApplication] setThemeBlend:aThemeBlend]; - [CPTheme setDefaultTheme:[CPTheme themeNamed:[CPApplication defaultThemeName]]]; + var themeBlends = [CPApp themeBlends]; + + [themeBlends addObject:aThemeBlend]; + + if ([themeBlends count] === 1) + [CPTheme setDefaultTheme:[CPTheme themeNamed:[CPApplication defaultThemeName]]]; if (_CPAppThemeURLsToLoad.length === 0) [self performActions]; diff --git a/AppKit/CPArrayController.j b/AppKit/CPArrayController.j index d98f159d7..42ad4acc3 100644 --- a/AppKit/CPArrayController.j +++ b/AppKit/CPArrayController.j @@ -70,7 +70,8 @@ + (CPSet)keyPathsForValuesAffectingArrangedObjects { - return [CPSet setWithObjects:"content", "filterPredicate", "sortDescriptors"]; + // Also depends on "filterPredicate" but we'll handle that manually. + return [CPSet setWithObjects:"content", "sortDescriptors"]; } + (CPSet)keyPathsForValuesAffectingSelection @@ -488,7 +489,14 @@ */ - (void)setFilterPredicate:(CPPredicate)value { + if (_filterPredicate === value) + return; + + // __setFilterPredicate will call _rearrangeObjects without + // sending notifications, so we must send them instead. + [self willChangeValueForKey:@"arrangedObjects"]; [self __setFilterPredicate:value]; + [self didChangeValueForKey:@"arrangedObjects"]; } /* @@ -501,8 +509,7 @@ return; _filterPredicate = value; - // Use the non-notification version since arrangedObjects already depends - // on filterPredicate. + // Use the non-notification version. [self _rearrangeObjects]; } @@ -712,8 +719,12 @@ if (![self canAdd]) return; - if (_clearsFilterPredicateOnInsertion) + var willClearPredicate = NO; + if (_clearsFilterPredicateOnInsertion && _filterPredicate) + { [self willChangeValueForKey:@"filterPredicate"]; + willClearPredicate = YES; + } [self willChangeValueForKey:@"content"]; @@ -728,11 +739,15 @@ [_contentObject addObject:object]; _disableSetContent = NO; - if (_clearsFilterPredicateOnInsertion) - [self __setFilterPredicate:nil]; - - if (_filterPredicate === nil || [_filterPredicate evaluateWithObject:object]) + if (willClearPredicate) { + // Full rearrange needed due to changed filter. + _filterPredicate = nil; + [self _rearrangeObjects]; + } + else if (_filterPredicate === nil || [_filterPredicate evaluateWithObject:object]) + { + // Insert directly into the array. var pos = [_arrangedObjects insertObject:object inArraySortedByDescriptors:_sortDescriptors]; // selectionIndexes change notification will be fired as a result of the @@ -742,11 +757,16 @@ else [_selectionIndexes shiftIndexesStartingAtIndex:pos by:1]; } - else - [self _rearrangeObjects]; + /* + else if (_filterPredicate !== nil) + ... + // Implies _filterPredicate && ![_filterPredicate evaluateWithObject:object], so the new object does + // not appear in arrangedObjects and we do not have to update at all. + */ + // This will also send notificaitons for arrangedObjects. [self didChangeValueForKey:@"content"]; - if (_clearsFilterPredicateOnInsertion) + if (willClearPredicate) [self didChangeValueForKey:@"filterPredicate"]; } diff --git a/AppKit/CPBox.j b/AppKit/CPBox.j index f9994b5e7..1e5de960f 100644 --- a/AppKit/CPBox.j +++ b/AppKit/CPBox.j @@ -35,6 +35,12 @@ CPLineBorder = 1; CPBezelBorder = 2; CPGrooveBorder = 3; +/*! + @ingroup appkit + @class CPBox + + A CPBox is a simple view which can display a border. +*/ @implementation CPBox : CPView { CPBoxType _boxType; @@ -89,16 +95,46 @@ CPGrooveBorder = 3; // Configuring Boxes +/*! + Returns the receiver's border rectangle. + + @return the border rectangle of the box +*/ - (CPRect)borderRect { return [self bounds]; } +/*! + Returns the receiver's border type. Possible values are: + +
+    CPNoBorder
+    CPLineBorder
+    CPBezelBorder
+    CPGrooveBorder
+    
+ + @return the border type of the box +*/ - (CPBorderType)borderType { return _borderType; } + +/*! + Sets the receiver's border type. Valid values are: + +
+    CPNoBorder
+    CPLineBorder
+    CPBezelBorder
+    CPGrooveBorder
+    
+ + @param borderType the border type to use +*/ - (void)setBorderType:(CPBorderType)aBorderType { if (_borderType === aBorderType) @@ -108,11 +144,41 @@ CPGrooveBorder = 3; [self setNeedsDisplay:YES]; } +/*! + Returns the receiver's box type. Possible values are: + +
+    CPBoxPrimary
+    CPBoxSecondary
+    CPBoxSeparator
+    CPBoxOldStyle
+    CPBoxCustom
+    
+ + (In the current implementation, all values act the same except CPBoxSeparator.) + + @return the box type of the box. +*/ - (CPBoxType)boxType { return _boxType; } +/*! + Sets the receiver's box type. Valid values are: + +
+    CPBoxPrimary
+    CPBoxSecondary
+    CPBoxSeparator
+    CPBoxOldStyle
+    CPBoxCustom
+    
+ + (In the current implementation, all values act the same except CPBoxSeparator.) + + @param aBoxType the box type of the box. +*/ - (void)setBoxType:(CPBoxType)aBoxType { if (_boxType === aBoxType) diff --git a/AppKit/CPButton.j b/AppKit/CPButton.j index 911a56d5b..095d3d0a3 100644 --- a/AppKit/CPButton.j +++ b/AppKit/CPButton.j @@ -560,14 +560,9 @@ CPButtonImageOffset = 3.0; return bounds; } -/*! - Adjust the size of the button to fit the title and surrounding button image. -*/ -- (void)sizeToFit +- (CGSize)_minimumFrameSize { - [self layoutSubviews]; - - var size, + var size = CGSizeMakeZero(), contentView = [self ephemeralSubviewNamed:@"content-view"]; if (contentView) @@ -591,9 +586,19 @@ CPButtonImageOffset = 3.0; if (maxSize.height >= 0.0) size.height = MIN(size.height, maxSize.height); - [self setFrameSize:size]; + return size; +} - if (contentView) +/*! + Adjust the size of the button to fit the title and surrounding button image. +*/ +- (void)sizeToFit +{ + [self layoutSubviews]; + + [self setFrameSize:[self _minimumFrameSize]]; + + if ([self ephemeralSubviewNamed:@"content-view"]) [self layoutSubviews]; } diff --git a/AppKit/CPCollectionView.j b/AppKit/CPCollectionView.j index a48c11c39..ec57e1b69 100644 --- a/AppKit/CPCollectionView.j +++ b/AppKit/CPCollectionView.j @@ -131,6 +131,49 @@ /*! Sets the item prototype to \c anItem + + The item prototype should implement the CPCoding protocol + because the item is copied by archiving and unarchiving the + prototypal view. + + Example: + +
+      @implement MyCustomView : CPCollectionViewItem
+      {
+          CPArray   items   @accessors;
+      }
+
+      - (id)initWithFrame:(CGRect)aFrame
+      {
+        self = [super initWithFrame:aFrame];
+        if (self)
+        {
+          items = [];
+        }
+        return self;
+      }
+
+      - (id)initWithCoder:(CPCoder)aCoder
+      {
+        self = [super initWithCoder:aCoder];
+        items = [aCoder decodeObjectForKey:@"KEY"];
+        return self;
+      }
+
+      - (void)encodeWithCoder:(CPCoder)aCoder
+      {
+        [aCoder encodeObject:items forKey:@"KEY"];
+        [super encodeWithCoder:aCoder];
+      }
+
+      @end
+    
+ + This will allow the collection view to create multiple 'clean' copies + of the item prototype which will maintain the original values for item + and all of the properties archived by the super class. + @param anItem the new item prototype */ - (void)setItemPrototype:(CPCollectionViewItem)anItem @@ -343,7 +386,7 @@ _items = []; - if (!_itemPrototype || !_content) + if (!_itemPrototype) return; var index = 0; @@ -369,7 +412,7 @@ { var width = CGRectGetWidth([self bounds]); - if (![_content count] || width == _tileWidth) + if (width == _tileWidth) return; // We try to fit as many views per row as possible. Any remaining space is then diff --git a/AppKit/CPController.j b/AppKit/CPController.j index 9dd4fce90..8e2eb6f32 100644 --- a/AppKit/CPController.j +++ b/AppKit/CPController.j @@ -50,7 +50,7 @@ var CPControllerDeclaredKeysKey = @"CPControllerDeclaredKeysKey"; _declaredKeys = [aDecoder decodeObjectForKey:CPControllerDeclaredKeysKey] || []; } - return nil; + return self; } - (BOOL)isEditing diff --git a/AppKit/CPEvent.j b/AppKit/CPEvent.j index b0cc6a03d..dc3f918a0 100644 --- a/AppKit/CPEvent.j +++ b/AppKit/CPEvent.j @@ -583,11 +583,11 @@ var _CPEventPeriodicEventPeriod = 0, c === CPEnterCharacter || c === CPNewlineCharacter || c === CPCarriageReturnCharacter || + c === CPEscapeFunctionKey || (!firstResponderIsText && (c === CPSpaceFunctionKey || c === CPDeleteCharacter || - c === CPBackspaceCharacter || - c === CPEscapeFunctionKey))) + c === CPBackspaceCharacter))) { return YES; } diff --git a/AppKit/CPKeyValueBinding.j b/AppKit/CPKeyValueBinding.j index 3ced7029c..a1b1baecd 100644 --- a/AppKit/CPKeyValueBinding.j +++ b/AppKit/CPKeyValueBinding.j @@ -174,10 +174,6 @@ var CPBindingOperationAnd = 0, - (id)transformValue:(id)aValue withOptions:(CPDictionary)options { - var valueTransformerName, - valueTransformer, - placeholder; - var valueTransformerName = [options objectForKey:CPValueTransformerNameBindingOption], valueTransformer; diff --git a/AppKit/CPLevelIndicator.j b/AppKit/CPLevelIndicator.j new file mode 100644 index 000000000..39e3b1408 --- /dev/null +++ b/AppKit/CPLevelIndicator.j @@ -0,0 +1,403 @@ +/* + * CPLevelIndicator.j + * AppKit + * + * Created by Alexander Ljungberg. + * Copyright 2011, WireLoad Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +@import "CPControl.j" + +CPTickMarkBelow = 0; +CPTickMarkAbove = 1; +CPTickMarkLeft = CPTickMarkAbove; +CPTickMarkRight = CPTickMarkBelow; + +CPRelevancyLevelIndicatorStyle = 0; +CPContinuousCapacityLevelIndicatorStyle = 1; +CPDiscreteCapacityLevelIndicatorStyle = 2; +CPRatingLevelIndicatorStyle = 3; + +var _CPLevelIndicatorBezelColor = nil, + _CPLevelIndicatorSegmentEmptyColor = nil, + _CPLevelIndicatorSegmentNormalColor = nil, + _CPLevelIndicatorSegmentWarningColor = nil, + _CPLevelIndicatorSegmentCriticalColor = nil, + + _CPLevelIndicatorSpacing = 1; + +/*! + @ingroup appkit + @class CPLevelIndicator + + CPLevelIndicator is a control which indicates a value visually on a scale. +*/ +@implementation CPLevelIndicator : CPControl +{ + CPLevelIndicator _levelIndicatorStyle @accessors(property=levelIndicatorStyle); + double _minValue @accessors(property=minValue); + double _maxValue @accessors(property=maxValue); + double _warningValue @accessors(property=warningValue); + double _criticalValue @accessors(property=criticalValue); + CPTickMarkPosition _tickMarkPosition @accessors(property=tickMarkPosition); + int _numberOfTickMarks @accessors(property=numberOfTickMarks); + int _numberOfMajorTickMarks @accessors(property=numberOfMajorTickMarks); + + BOOL _isEditable; + + BOOL _isTracking; +} + ++ (void)initialize +{ + var bundle = [CPBundle bundleForClass:CPLevelIndicator]; + + _CPLevelIndicatorBezelColor = [CPColor colorWithPatternImage:[[CPThreePartImage alloc] initWithImageSlices: + [ + [[CPImage alloc] initWithContentsOfFile:[bundle pathForResource:@"CPLevelIndicator/level-indicator-bezel-left.png"] size:CGSizeMake(3.0, 18.0)], + [[CPImage alloc] initWithContentsOfFile:[bundle pathForResource:@"CPLevelIndicator/level-indicator-bezel-center.png"] size:CGSizeMake(1.0, 18.0)], + [[CPImage alloc] initWithContentsOfFile:[bundle pathForResource:@"CPLevelIndicator/level-indicator-bezel-right.png"] size:CGSizeMake(3.0, 18.0)] + ] + isVertical:NO + ]]; + + _CPLevelIndicatorSegmentEmptyColor = [CPColor colorWithPatternImage:[[CPThreePartImage alloc] initWithImageSlices: + [ + [[CPImage alloc] initWithContentsOfFile:[bundle pathForResource:@"CPLevelIndicator/level-indicator-segment-empty-left.png"] size:CGSizeMake(3.0, 17.0)], + [[CPImage alloc] initWithContentsOfFile:[bundle pathForResource:@"CPLevelIndicator/level-indicator-segment-empty-center.png"] size:CGSizeMake(1.0, 17.0)], + [[CPImage alloc] initWithContentsOfFile:[bundle pathForResource:@"CPLevelIndicator/level-indicator-segment-empty-right.png"] size:CGSizeMake(3.0, 17.0)] + ] + isVertical:NO + ]]; + + _CPLevelIndicatorSegmentNormalColor = [CPColor colorWithPatternImage:[[CPThreePartImage alloc] initWithImageSlices: + [ + [[CPImage alloc] initWithContentsOfFile:[bundle pathForResource:@"CPLevelIndicator/level-indicator-segment-normal-left.png"] size:CGSizeMake(3.0, 17.0)], + [[CPImage alloc] initWithContentsOfFile:[bundle pathForResource:@"CPLevelIndicator/level-indicator-segment-normal-center.png"] size:CGSizeMake(1.0, 17.0)], + [[CPImage alloc] initWithContentsOfFile:[bundle pathForResource:@"CPLevelIndicator/level-indicator-segment-normal-right.png"] size:CGSizeMake(3.0, 17.0)] + ] + isVertical:NO + ]]; + + _CPLevelIndicatorSegmentWarningColor = [CPColor colorWithPatternImage:[[CPThreePartImage alloc] initWithImageSlices: + [ + [[CPImage alloc] initWithContentsOfFile:[bundle pathForResource:@"CPLevelIndicator/level-indicator-segment-warning-left.png"] size:CGSizeMake(3.0, 17.0)], + [[CPImage alloc] initWithContentsOfFile:[bundle pathForResource:@"CPLevelIndicator/level-indicator-segment-warning-center.png"] size:CGSizeMake(1.0, 17.0)], + [[CPImage alloc] initWithContentsOfFile:[bundle pathForResource:@"CPLevelIndicator/level-indicator-segment-warning-right.png"] size:CGSizeMake(3.0, 17.0)] + ] + isVertical:NO + ]]; + + _CPLevelIndicatorSegmentCriticalColor = [CPColor colorWithPatternImage:[[CPThreePartImage alloc] initWithImageSlices: + [ + [[CPImage alloc] initWithContentsOfFile:[bundle pathForResource:@"CPLevelIndicator/level-indicator-segment-critical-left.png"] size:CGSizeMake(3.0, 17.0)], + [[CPImage alloc] initWithContentsOfFile:[bundle pathForResource:@"CPLevelIndicator/level-indicator-segment-critical-center.png"] size:CGSizeMake(1.0, 17.0)], + [[CPImage alloc] initWithContentsOfFile:[bundle pathForResource:@"CPLevelIndicator/level-indicator-segment-critical-right.png"] size:CGSizeMake(3.0, 17.0)] + ] + isVertical:NO + ]]; +} + +- (id)initWithFrame:(CGRect)aFrame +{ + self = [super initWithFrame:aFrame]; + + if (self) + { + _levelIndicatorStyle = CPDiscreteCapacityLevelIndicatorStyle; + _maxValue = 2; + _warningValue = 2; + _criticalValue = 2; + + [self _init]; + } + + return self; +} + +- (void)_init +{ +} + +- (void)layoutSubviews +{ + var bezelView = [self layoutEphemeralSubviewNamed:"bezel" + positioned:CPWindowBelow + relativeToEphemeralSubviewNamed:nil]; + // TODO Make themable. + [bezelView setBackgroundColor:_CPLevelIndicatorBezelColor]; + + var segmentCount = _maxValue - _minValue; + + if (segmentCount <= 0) + return; + + var filledColor = _CPLevelIndicatorSegmentNormalColor, + value = [self doubleValue]; + + if (value < _criticalValue) + filledColor = _CPLevelIndicatorSegmentCriticalColor; + else if (value < _warningValue) + filledColor = _CPLevelIndicatorSegmentWarningColor; + + for (var i = 0; i < segmentCount; i++) + { + var segmentView = [self layoutEphemeralSubviewNamed:"segment-bezel-" + i + positioned:CPWindowAbove + relativeToEphemeralSubviewNamed:bezelView]; + + [segmentView setBackgroundColor:(_minValue + i) < value ? filledColor : _CPLevelIndicatorSegmentEmptyColor]; + } +} + +- (CPView)createEphemeralSubviewNamed:(CPString)aName +{ + return [[CPView alloc] initWithFrame:_CGRectMakeZero()]; +} + +- (CGRect)rectForEphemeralSubviewNamed:(CPString)aViewName +{ + // TODO Put into theme attributes. + var bezelHeight = 18, + segmentHeight = 17, + bounds = _CGRectCreateCopy([self bounds]); + + if (aViewName == "bezel") + { + bounds.origin.y = (_CGRectGetHeight(bounds) - bezelHeight) / 2.0; + bounds.size.height = bezelHeight; + return bounds; + } + else if (aViewName.indexOf("segment-bezel") === 0) + { + var segment = parseInt(aViewName.substring("segment-bezel-".length), 10), + segmentCount = _maxValue - _minValue; + + if (segment >= segmentCount) + return _CGRectMakeZero(); + + var basicSegmentWidth = bounds.size.width / segmentCount, + segmentFrame = CGRectCreateCopy([self bounds]); + + segmentFrame.origin.y = (_CGRectGetHeight(bounds) - bezelHeight) / 2.0; + segmentFrame.origin.x = FLOOR(segment * basicSegmentWidth); + segmentFrame.size.width = (segment == segmentCount - 1) ? bounds.size.width - segmentFrame.origin.x : FLOOR(((segment + 1) * basicSegmentWidth)) - FLOOR((segment * basicSegmentWidth)) - _CPLevelIndicatorSpacing; + segmentFrame.size.height = segmentHeight; + + return segmentFrame; + } + + return _CGRectMakeZero(); +} + +/*! + Sets whether or not the receiver level indicator can be edited. +*/ +- (void)setEditable:(BOOL)shouldBeEditable +{ + if (_isEditable === shouldBeEditable) + return; + + _isEditable = shouldBeEditable; +} + +/*! + Returns \c YES if the textfield is currently editable by the user. +*/ +- (BOOL)isEditable +{ + return _isEditable; +} + +- (void)mouseDown:(CPEvent)anEvent +{ + if (![self isEditable] || ![self isEnabled]) + return; + + [self _trackMouse:anEvent]; +} + +- (void)_trackMouse:(CPEvent)anEvent +{ + var type = [anEvent type]; + + if (type == CPLeftMouseDown || type == CPLeftMouseDragged) + { + var segmentCount = _maxValue - _minValue; + + if (segmentCount <= 0) + return; + + var location = [self convertPoint:[anEvent locationInWindow] fromView:nil], + bounds = [self bounds], + oldValue = [self doubleValue]; + newValue = oldValue; + + // Moving the mouse outside of the widget to the left sets it + // to its minimum, and moving outside on the right sets it to + // its maximum. + if (type == CPLeftMouseDragged && location.x < 0) + { + newValue = _minValue; + } + else if (type == CPLeftMouseDragged && location.x > bounds.size.width) + { + newValue = _maxValue; + } + else + { + for (var i = 0; i < segmentCount; i++) + { + var rect = [self rectForEphemeralSubviewNamed:"segment-bezel-" + i]; + + // Once we're tracking the mouse, we only care about horizontal mouse movement. + if (location.x >= CGRectGetMinX(rect) && location.x < CGRectGetMaxX(rect)) + { + newValue = (_minValue + i + 1); + break; + } + } + } + + if (newValue != oldValue) + [self setDoubleValue:newValue]; + + // Track the mouse to support click and slide value editing. + _isTracking = YES; + [CPApp setTarget:self selector:@selector(_trackMouse:) forNextEventMatchingMask:CPLeftMouseDraggedMask | CPLeftMouseUpMask untilDate:nil inMode:nil dequeue:YES]; + + if ([self isContinuous]) + [self sendAction:[self action] to:[self target]]; + } + else if (_isTracking) + { + _isTracking = NO; + [self sendAction:[self action] to:[self target]]; + } +} + +/* +- (CPLevelIndicatorStyle)style; +- (void)setLevelIndicatorStyle:(CPLevelIndicatorStyle)style; +*/ + +- (void)setMinValue:(double)minValue +{ + if (_minValue === minValue) + return; + _minValue = minValue; + + [self setNeedsLayout]; +} + +- (void)setMaxValue:(double)maxValue +{ + if (_maxValue === maxValue) + return; + _maxValue = maxValue; + + [self setNeedsLayout]; +} + +- (void)setWarningValue:(double)warningValue; +{ + if (_warningValue === warningValue) + return; + _warningValue = warningValue; + + [self setNeedsLayout]; +} + +- (void)setCriticalValue:(double)criticalValue; +{ + if (_criticalValue === criticalValue) + return; + _criticalValue = criticalValue; + + [self setNeedsLayout]; +} + +/* +- (CPTickMarkPosition)tickMarkPosition; +- (void)setTickMarkPosition:(CPTickMarkPosition)position; + +- (int)numberOfTickMarks; +- (void)setNumberOfTickMarks:(int)count; + +- (int)numberOfMajorTickMarks; +- (void)setNumberOfMajorTickMarks:(int)count; + +- (double)tickMarkValueAtIndex:(int)index; +- (CGRect)rectOfTickMarkAtIndex:(int)index; +*/ + +@end + +var CPLevelIndicatorStyleKey = "CPLevelIndicatorStyleKey", + CPLevelIndicatorMinValueKey = "CPLevelIndicatorMinValueKey", + CPLevelIndicatorMaxValueKey = "CPLevelIndicatorMaxValueKey", + CPLevelIndicatorWarningValueKey = "CPLevelIndicatorWarningValueKey", + CPLevelIndicatorCriticalValueKey = "CPLevelIndicatorCriticalValueKey", + CPLevelIndicatorTickMarkPositionKey = "CPLevelIndicatorTickMarkPositionKey", + CPLevelIndicatorNumberOfTickMarksKey = "CPLevelIndicatorNumberOfTickMarksKey", + CPLevelIndicatorNumberOfMajorTickMarksKey = "CPLevelIndicatorNumberOfMajorTickMarksKey", + CPLevelIndicatorIsEditableKey = "CPLevelIndicatorIsEditableKey"; + +@implementation CPLevelIndicator (CPCoding) + +- (id)initWithCoder:(CPCoder)aCoder +{ + self = [super initWithCoder:aCoder]; + + if (self) + { + _levelIndicatorStyle = [aCoder decodeIntForKey:CPLevelIndicatorStyleKey]; + _minValue = [aCoder decodeDoubleForKey:CPLevelIndicatorMinValueKey]; + _maxValue = [aCoder decodeDoubleForKey:CPLevelIndicatorMaxValueKey]; + _warningValue = [aCoder decodeDoubleForKey:CPLevelIndicatorWarningValueKey]; + _criticalValue = [aCoder decodeDoubleForKey:CPLevelIndicatorCriticalValueKey]; + _tickMarkPosition = [aCoder decodeIntForKey:CPLevelIndicatorTickMarkPositionKey]; + _numberOfTickMarks = [aCoder decodeIntForKey:CPLevelIndicatorNumberOfTickMarksKey]; + _numberOfMajorTickMarks = [aCoder decodeIntForKey:CPLevelIndicatorNumberOfMajorTickMarksKey]; + + _isEditable = [aCoder decodeBoolForKey:CPLevelIndicatorIsEditableKey]; + + [self _init]; + + [self setNeedsLayout]; + [self setNeedsDisplay:YES]; + } + + return self; +} + +- (void)encodeWithCoder:(CPCoder)aCoder +{ + [super encodeWithCoder:aCoder]; + + [aCoder encodeInt:_levelIndicatorStyle forKey:CPLevelIndicatorStyleKey]; + [aCoder encodeDouble:_minValue forKey:CPLevelIndicatorMinValueKey]; + [aCoder encodeDouble:_maxValue forKey:CPLevelIndicatorMaxValueKey]; + [aCoder encodeDouble:_warningValue forKey:CPLevelIndicatorWarningValueKey]; + [aCoder encodeDouble:_criticalValue forKey:CPLevelIndicatorCriticalValueKey]; + [aCoder encodeInt:_tickMarkPosition forKey:CPLevelIndicatorTickMarkPositionKey]; + [aCoder encodeInt:_numberOfTickMarks forKey:CPLevelIndicatorNumberOfTickMarksKey]; + [aCoder encodeInt:_numberOfMajorTickMarks forKey:CPLevelIndicatorNumberOfMajorTickMarksKey]; + [aCoder encodeBool:_isEditable forKey:CPLevelIndicatorIsEditableKey]; +} + +@end diff --git a/AppKit/CPRuleEditor/CPPredicateEditor.j b/AppKit/CPRuleEditor/CPPredicateEditor.j new file mode 100644 index 000000000..b26bdc520 --- /dev/null +++ b/AppKit/CPRuleEditor/CPPredicateEditor.j @@ -0,0 +1,504 @@ +/* + * CPPredicateEditor.j + * AppKit + * + * Created by cacaodev. + * Copyright 2011, cacaodev. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +@import "CPRuleEditor.j" +@import "_CPPredicateEditorTree.j" +@import "_CPPredicateEditorRowNode.j" +@import "CPPredicateEditorRowTemplate.j" + +@implementation CPPredicateEditor : CPRuleEditor +{ + CPArray _allTemplates; + CPArray _rootTrees; + CPArray _rootHeaderTrees; + id _predicateTarget @accessors(property=target); + SEL _predicateAction @accessors(property=action); +} + +#pragma mark public methods +/*! + @ingroup appkit + @class CPPredicateEditor + + @brief CPPredicateEditor is a subclass of CPRuleEditor that is specialized for editing CPPredicate objects. + + CPPredicateEditor provides a CPPredicate property—objectValue (inherited from CPControl)—that you can get and set directly, and that you can bind using bindings (you typically configure a predicate editor in Interface Builder). CPPredicateEditor depends on another class, CPPredicateEditorRowTemplate, that describes the available predicates and how to display them. + + Unlike CPRuleEditor, CPPredicateEditor does not depend on its delegate to populate its rows (and does not call the populating delegate methods). Instead, its rows are populated from its objectValue property (an instance of CPPredicate). CPPredicateEditor relies on instances CPPredicateEditorRowTemplate, which are responsible for mapping back and forth between the displayed view values and various predicates. + + CPPredicateEditor exposes one property, rowTemplates, which is an array of CPPredicateEditorRowTemplate objects. +*/ + +/*! + @brief Returns the row templates for the receiver. + @return The row templates for the receiver. + @discussion Until otherwise set, this contains a single compound CPPredicateEditorRowTemplate object. + @see setRowTemplates: +*/ +- (CPArray)rowTemplates +{ + return _allTemplates; +} + +/*! + @brief Sets the row templates for the receiver. + @param rowTemplates An array of CPPredicateEditorRowTemplate objects. + @see rowTemplates +*/ +- (void)setRowTemplates:(id)rowTemplates +{ + if (_allTemplates == rowTemplates) + return; + + _allTemplates = rowTemplates; + + [self _updateItemsByCompoundTemplates]; + [self _updateItemsBySimpleTemplates]; + + if ([self numberOfRows] > 0) + { + var predicate = [super predicate]; + [self _reflectPredicate:predicate]; + } +} + +/*! @cond */ +- (void)_initRuleEditorShared +{ + [super _initRuleEditorShared]; + + _rootTrees = [CPArray array]; + _rootHeaderTrees = [CPArray array]; +} + +- (id)initWithFrame:(CGRect)aFrame +{ + self = [super initWithFrame:aFrame]; + if (self != nil) + { + var initialTemplate = [[CPPredicateEditorRowTemplate alloc] initWithCompoundTypes:[CPAndPredicateType, CPOrPredicateType]]; + _allTemplates = [CPArray arrayWithObject:initialTemplate]; + } + + return self; +} + +- (id)objectValue +{ + return [super predicate]; +} + +- (void)_updateItemsBySimpleTemplates +{ + var templates = [CPMutableArray array], + count = [_allTemplates count], + t; + + while (count--) + { + var t = _allTemplates[count]; + if ([t _rowType] == CPRuleEditorRowTypeSimple) + [templates insertObject:t atIndex:0]; + } + + var trees = [self _constructTreesForTemplates:templates]; + if ([trees count] > 0) + _rootTrees = [self _mergeTree:trees]; +} + +- (void)_updateItemsByCompoundTemplates +{ + var templates = [CPMutableArray array], + count = [_allTemplates count], + t; + + while (count--) + { + var t = _allTemplates[count]; + if ([t _rowType] == CPRuleEditorRowTypeCompound) + [templates insertObject:t atIndex:0]; + } + + var trees = [self _constructTreesForTemplates:templates]; + if ([trees count] > 0) + _rootHeaderTrees = [self _mergeTree:trees]; +} + +- (CPArray)_constructTreesForTemplates:(id)templates +{ + var trees = [CPMutableArray array], + count = [templates count]; + + for (var i = 0; i < count; i++) + { + var tree = [self _constructTreeForTemplate:templates[i]]; + [trees addObjectsFromArray:tree]; + } + + return trees; +} + +- (id)_mergeTree:(id)tree +{ + var merged = [CPMutableArray array], + titles = [CPMutableArray array], + count = [tree count]; + + for (var i = 0; i < count; i++) + { + var t = tree[i], + title = [CPString stringWithString:[t title]]; + + if ([titles containsObject:title]) + { + CPLogConsole("CPPredicateEditor does not support templates merging yet. Ignoring duplicate template: " + [t description]); + continue; + } + + [merged addObject:t]; + [titles addObject:title]; + } + + return merged; +} + +- (id)_constructTreeForTemplate:(CPPredicateEditorRowTemplate)aTemplate +{ + var tree = [CPArray array], + templateViews = [aTemplate templateViews], + count = [templateViews count]; + + while (count--) + { + var children = [CPArray array], + itemsCount = 0, + menuIndex = -1, + itemsArray, + + templateView = [templateViews objectAtIndex:count], + isPopup = [templateView isKindOfClass:[CPPopUpButton class]]; + + if (isPopup) + { + itemArray = [[templateView itemArray] valueForKey:@"title"]; + itemsCount = [itemArray count], + menuIndex = 0; + } + + for (; menuIndex < itemsCount; menuIndex++) + { + var item = [_CPPredicateEditorTree new]; + [item setIndexIntoTemplate:count]; + [item setTemplate:aTemplate]; + [item setMenuItemIndex:menuIndex]; + if (isPopup) + [item setTitle:[itemArray objectAtIndex:menuIndex]]; + + [children addObject:item]; + } + + [children makeObjectsPerformSelector:@selector(setChildren:) withObject:tree]; + tree = children; + } + + return tree; +} + +#pragma mark Set the Predicate + +- (void)setObjectValue:(id)objectValue +{ + if (![[objectValue predicateFormat] isEqualToString:[[super predicate] predicateFormat]]) // ?? + [self _reflectPredicate:objectValue]; +} + +- (void)_reflectPredicate:(id)predicate +{ + var animation = _currentAnimation; + _currentAnimation = nil; + + if (predicate != nil) + { + if ((_nestingMode == CPRuleEditorNestingModeSimple || _nestingMode == CPRuleEditorNestingModeCompound) + && [predicate isKindOfClass:[CPComparisonPredicate class]]) + predicate = [[CPCompoundPredicate alloc] initWithType:[self _compoundPredicateTypeForRootRows] subpredicates:[CPArray arrayWithObject:predicate]]; + + var row = [self _rowObjectFromPredicate:predicate]; + if (row != nil) + [_boundArrayOwner setValue:[CPArray arrayWithObject:row] forKey:_boundArrayKeyPath]; + } + + [self setAnimation:animation]; +} + +- (id)_rowObjectFromPredicate:(CPPredicate)predicate +{ + var quality, // TODO: We should use this ref somewhere ! + type, + matchedTemplate = [CPPredicateEditorRowTemplate _bestMatchForPredicate:predicate inTemplates:[self rowTemplates] quality:quality]; + + if (matchedTemplate == nil) + return nil; + + var copyTemplate = [matchedTemplate copy], + subpredicates = [matchedTemplate displayableSubpredicatesOfPredicate:predicate]; + + if (subpredicates == nil) + { + [copyTemplate _setComparisonPredicate:predicate]; + type = CPRuleEditorRowTypeSimple; + } + else + { + [copyTemplate _setCompoundPredicate:predicate]; + type = CPRuleEditorRowTypeCompound; + } + + var row = [self _rowFromTemplate:copyTemplate originalTemplate:matchedTemplate withRowType:type]; + + if (subpredicates == nil) + return row; + + var count = [subpredicates count], + subrows = [CPMutableArray array]; + + for (var i = 0; i < count; i++) + { + var subrow = [self _rowObjectFromPredicate:subpredicates[i]]; + if (subrow != nil) + [subrows addObject:subrow]; + } + + [row setValue:subrows forKey:[super subrowsKeyPath]]; + + return row; +} + +- (id)_rowFromTemplate:(CPPredicateEditorRowTemplate)aTemplate originalTemplate:(CPPredicateEditorRowTemplate)originalTemplate withRowType:(CPRuleEditorRowType)rowType +{ + var criteria = [CPArray array], + values = [CPArray array], + templateViews = [aTemplate templateViews], + rootItems, + count; + + rootItems = (rowType == CPRuleEditorRowTypeSimple) ? _rootTrees : _rootHeaderTrees; + + while ((count = [rootItems count]) > 0) + { + var treeChild; + for (var i = 0; i < count; i++) + { + treeChild = [rootItems objectAtIndex:i]; + + var currentView = [templateViews objectAtIndex:[treeChild indexIntoTemplate]], + menuItemIndex = [treeChild menuItemIndex]; + + if (menuItemIndex == -1 || [[treeChild title] isEqual:[currentView titleOfSelectedItem]]) + { + var node = [_CPPredicateEditorRowNode rowNodeFromTree:treeChild]; + [node applyTemplate:aTemplate withViews:templateViews forOriginalTemplate:originalTemplate]; + + [criteria addObject:node]; + [values addObject:[node displayValue]]; + break; + } + } + + rootItems = [treeChild children]; + } + + var row = [CPDictionary dictionaryWithObjectsAndKeys:criteria, @"criteria", values, @"displayValues", rowType, @"rowType"]; + + return row; +} + +#pragma mark Get the predicate + +- (void)_updatePredicate +{ + [self willChangeValueForKey:@"objectValue"]; + [self _updatePredicateFromRows]; + [self didChangeValueForKey:@"objectValue"]; +} + +- (void)_updatePredicateFromRows +{ + var rootRowsArray = [super _rootRowsArray], + subpredicates = [CPMutableArray array], + count = count2 = [rootRowsArray count], + predicate; + + while (count--) + { + var item = [rootRowsArray objectAtIndex:count], + subpredicate = [self _predicateFromRowItem:item]; + + if (subpredicate != nil) + [subpredicates insertObject:subpredicate atIndex:0]; + } + + if (_nestingMode != CPRuleEditorNestingModeList && count2 == 1) + predicate = [subpredicates lastObject]; + else + predicate = [[CPCompoundPredicate alloc] initWithType:[self _compoundPredicateTypeForRootRows] subpredicates:subpredicates]; + + [super _setPredicate:predicate]; +} + +- (id)_predicateFromRowItem:(id)rowItem +{ + var subpredicates = [CPArray array], + rowType = [rowItem valueForKey:_typeKeyPath]; + + if (rowType == CPRuleEditorRowTypeCompound) + { + var subrows = [rowItem valueForKey:_subrowsArrayKeyPath], + count = [subrows count]; + + for (var i = 0; i < count; i++) + { + var subrow = [subrows objectAtIndex:i]; + var predicate = [self _predicateFromRowItem:subrow]; + [subpredicates addObject:predicate]; + } + } + + var criteria = [rowItem valueForKey:_itemsKeyPath], + displayValues = [rowItem valueForKey:_valuesKeyPath], + count = [criteria count], + lastItem = [criteria lastObject], + template = [lastItem templateForRow], + templateViews = [template templateViews]; + + for (var j = 0; j < count; j++) + { + var view = [templateViews objectAtIndex:j], + value = [displayValues objectAtIndex:j]; + [[criteria objectAtIndex:j] setTemplateViews:templateViews]; + + if ([view isKindOfClass:[CPPopUpButton class]]) + [view selectItemWithTitle:value]; + else if ([view respondsToSelector:@selector(setObjectValue:)]) + [view setObjectValue:[value objectValue]]; + } + + return [template predicateWithSubpredicates:subpredicates]; +} + +- (CPCompoundPredicateType)_compoundPredicateTypeForRootRows +{ + return CPAndPredicateType; +} + +#pragma mark Control delegate + +- (void)_sendRuleAction +{ + [self _updatePredicate]; + [super _sendRuleAction]; +} + +- (BOOL)_sendsActionOnIncompleteTextChange +{ + return NO; +} + +/* +- (void)_setDefaultTargetAndActionOnView:(CPView)view +{ + if ([view isKindOfClass:[CPControl class]]) + { + [view setTarget:self]; + [view setAction:@selector(_templateControlValueDidChange:)]; + } +} +- (void)_templateControlValueDidChange:(id)sender +{ +} +- (void)controlTextDidBeginEditing:(CPNotification)notification +{ +} +- (void)controlTextDidEndEditing:(CPNotification)notification +{ +} +- (void)controlTextDidChange:(CPNotification)notification +{ +} +*/ + +#pragma mark RuleEditor delegate methods + +- (int)_queryNumberOfChildrenOfItem:(id)rowItem withRowType:(int)type +{ + if (rowItem == nil) + { + var trees = (type == CPRuleEditorRowTypeSimple) ? _rootTrees : _rootHeaderTrees; + return [trees count]; + } + return [[rowItem children] count]; +} + +- (id)_queryChild:(int)childIndex ofItem:(id)rowItem withRowType:(int)type +{ + if (rowItem == nil) + { + var trees = (type == CPRuleEditorRowTypeSimple) ? _rootTrees : _rootHeaderTrees; + return [_CPPredicateEditorRowNode rowNodeFromTree:trees[childIndex]]; + } + + return [[rowItem children] objectAtIndex:childIndex]; +} + +- (id)_queryValueForItem:(id)rowItem inRow:(int)rowIndex +{ + return [rowItem displayValue]; +} + +@end + +var CPPredicateTemplatesKey = @"CPPredicateTemplates"; + +@implementation CPPredicateEditor (CPCoding) + +- (id)initWithCoder:(id)aCoder +{ + self = [super initWithCoder:aCoder]; + if (self != nil) + { + var nibTemplates = [aCoder decodeObjectForKey:CPPredicateTemplatesKey]; + if (nibTemplates != nil) + [self setRowTemplates:nibTemplates]; + } + + return self; +} + +- (void)encodeWithCoder:(id)aCoder +{ + [super encodeWithCoder:aCoder]; + [aCoder encodeObject:_allTemplates forKey:CPPredicateTemplatesKey]; +} + +@end + +/*! @endcond */ \ No newline at end of file diff --git a/AppKit/CPRuleEditor/CPPredicateEditorRowTemplate.j b/AppKit/CPRuleEditor/CPPredicateEditorRowTemplate.j new file mode 100644 index 000000000..dbca2884a --- /dev/null +++ b/AppKit/CPRuleEditor/CPPredicateEditorRowTemplate.j @@ -0,0 +1,788 @@ +/* + * CPPredicateEditorRowTemplate.j + * AppKit + * + * Created by cacaodev. + * Copyright 2011, cacaodev. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +CPUndefinedAttributeType = 0, +CPInteger16AttributeType = 100, +CPInteger32AttributeType = 200, +CPInteger64AttributeType = 300, +CPDecimalAttributeType = 400, +CPDoubleAttributeType = 500, +CPFloatAttributeType = 600, +CPStringAttributeType = 700, +CPBooleanAttributeType = 800, +CPDateAttributeType = 900, +CPBinaryDataAttributeType = 1000, +CPTransformableAttributeType = 1800; + +@implementation CPPredicateEditorRowTemplate : CPObject +{ + int _templateType @accessors(readwrite, getter=_templateType, setter=_setTemplateType:); + unsigned _predicateOptions @accessors(readwrite, setter=_setOptions:); + unsigned _predicateModifier @accessors(readwrite, setter=_setModifier:); + unsigned _leftAttributeType @accessors(readwrite, getter=leftAttributeType, setter=_setLeftAttributeType:); + unsigned _rightAttributeType @accessors(readwrite, getter=rightAttributeType, setter=_setRightAttributeType:); + BOOL _leftIsWildcard @accessors(property=leftIsWildcard); + BOOL _rightIsWildcard @accessors(property=rightIsWildcard); + CPArray _views @accessors(setter=setTemplateViews:); + +} + +/*! + @ingroup appkit + @class CPPredicateEditorRowTemplate + + @brief CPPredicateEditorRowTemplate describes available predicates and how to display them. + + You can create instances of CPPredicateEditorRowTemplate programmatically or in Interface Builder. By default, a non-compound row template has three views: a popup (or static text field) on the left, a popup or static text field for operators, and either a popup or other view on the right. You can subclass CPPredicateEditorRowTemplate to create a row template with different numbers or types of views. + + CPPredicateEditorRowTemplate is a concrete class, but it has five primitive methods which are called by CPPredicateEditor: -#templateViews, -#matchForPredicate:, -#setPredicate:, -#displayableSubpredicatesOfPredicate:, and -#predicateWithSubpredicates:. CPPredicateEditorRowTemplate implements all of them, but you can override them for custom templates. The primitive methods are used by an instance of CPPredicateEditor as follows. + + First, an instance of CPPredicateEditor is created, and some row templates are set on it—either through a nib file or programmatically. The first thing predicate editor does is ask each of the templates for their views, using templateViews. + + After setting up the predicate editor, you typically send it a CPPredicateEditor#setObjectValue: message to restore a saved predicate. CPPredicateEditor needs to determine which of its templates should display each predicate in the predicate tree. It does this by sending each of its row templates a matchForPredicate: message and choosing the one that returns the highest value. + + After finding the best match for a predicate, CPPredicateEditor copies that template to get fresh views, inserts them into the proper row, and then sets the predicate on the template using setPredicate:. Within that method, the CPPredicateEditorRowTemplate object must set its views' values to represent that predicate. + + CPPredicateEditorRowTemplate next asks the template for the “displayable sub-predicates” of the predicate by sending a -#displayableSubpredicatesOfPredicate: message. If a template represents a predicate in its entirety, or if the predicate has no subpredicates, it can return nil for this. Otherwise, it should return a list of predicates to be made into sub-rows of that template's row. The whole process repeats for each sub-predicate. + + At this point, the user sees the predicate that was saved. If the user then makes some changes to the views of the templates, this causes CPPredicateEditor to recompute its predicate by asking each of the templates to return the predicate represented by the new view values, passing in the subpredicates represented by the sub-rows (an empty array if there are none, or nil if they aren't supported by that predicate type). +*/ + +/*! + @name Initializing a Template +*/ + +/*! + @brief Initializes and returns a “pop-up-pop-up-pop-up”-style row template. + @param leftExpressions An array of CPExpression objects that represent the left hand side of a predicate. + @param rightExpressions An array of CPExpression objects that represent the right hand side of a predicate. + @param modifier A modifier for the predicate (see @c CPComparisonPredicateModifier for possible values). + @param operators An array of CPNumber objects specifying the operator type (see @c CPPredicateOperatorType for possible values). + @param options Options for the predicate (see @c CPComparisonPredicateOptions for possible values). + @return A row template of the “pop-up-pop-up-pop-up”-form, with the left and right popups representing the left and right expression arrays -#leftExpressions and -#rightExpressions, and the center popup representing the operators. +*/ +- (id)initWithLeftExpressions:(CPArray)leftExpressions rightExpressions:(CPArray)rightExpressions modifier:(int)modifier operators:(CPArray)operators options:(int)options +{ + self = [super init]; + if (self != nil) + { + _templateType = 1; + _leftIsWildcard = NO; + _rightIsWildcard = NO; + _leftAttributeType = 0; + _rightAttributeType = 0; + _predicateModifier = modifier; + _predicateOptions = options; + + var leftView = [self _viewFromExpressions:leftExpressions], + rightView = [self _viewFromExpressions:rightExpressions], + middleView = [self _viewFromOperatorTypes:operators]; + + _views = [[CPArray alloc] initWithObjects:leftView, middleView, rightView]; + } + + return self; +} + +/*! + @brief Initializes and returns a “pop-up-pop-up-view”-style row template. + @param leftExpressions An array of CPExpression objects that represent the left hand side of a predicate. + @param attributeType An attribute type for the right hand side of a predicate. This value dictates the type of view created, and how the control’s object value is coerced before putting it into a predicate. + @param modifier A modifier for the predicate (see @c CPComparisonPredicateModifier for possible values). + @param operators An array of CPNumber objects specifying the operator type (see @c CPPredicateOperatorType for possible values). + @param options Options for the predicate (see CPComparisonPredicateOptions for possible values). + @return A row template initialized using the given arguments. +*/ +- (id)initWithLeftExpressions:(CPArray )leftExpressions rightExpressionAttributeType:(CPAttributeType)attributeType modifier:(CPComparisonPredicateModifier)modifier operators:(CPArray )operators options:(int)options +{ + self = [super init]; + if (self != nil) + { + var leftView = [self _viewFromExpressions:leftExpressions], + middleView = [self _viewFromOperatorTypes:operators], + rightView = [self _viewFromAttributeType:attributeType]; + + _templateType = 1; + _leftIsWildcard = NO; + _rightIsWildcard = YES; + _leftAttributeType = 0; + _rightAttributeType = attributeType; + _predicateModifier = modifier; + _predicateOptions = options; + _views = [[CPArray alloc] initWithObjects:leftView, middleView, rightView]; + } + + return self; +} + +/*! + @brief Initializes and returns a row template suitable for displaying compound predicates. + @param compoundTypes An array of CPNumber objects specifying compound predicate types. See @c CPCompoundPredicateTypes for possible values. + @return A row template initialized for displaying compound predicates of the types specified by @a compoundTypes. + @discussion CPPredicateEditor contains such a template by default. +*/ +- (id)initWithCompoundTypes:(CPArray )compoundTypes +{ + self = [super init]; + if (self != nil) + { + var leftView = [self _viewFromCompoundTypes:compoundTypes], + rightView = [[CPPopUpButton alloc] init]; + + [rightView addItemWithTitle:@"of the following are true"]; + + _templateType = 2; + _leftIsWildcard = NO; + _rightIsWildcard = NO; + _rightAttributeType = 0; + _views = [[CPArray alloc] initWithObjects:leftView, rightView]; + } + return self; +} + +/*! + @name Primitive Methods +*/ + +/*! + @brief Returns a positive number if the receiver can represent a given predicate, and 0 if it cannot. + @return A positive number if the template can represent predicate, and @c 0 if it cannot. + @discussion By default, returns values in the range @c 0 to @c 1. + The highest match among all the templates determines which template is responsible for displaying the predicate. You can override this to determine which predicates your custom template handles. +*/ +- (double)matchForPredicate:(CPPredicate)predicate +{ + // How exactly this value (float 0-1) is computed ? + if ([self _templateType] == 2 && [predicate isKindOfClass:[CPCompoundPredicate class]]) + { + if ([[self compoundTypes] containsObject:[predicate compoundPredicateType]]) + return 1; + } + else if ([self _templateType] == 1 && [predicate isKindOfClass:[CPComparisonPredicate class]]) + { + if (!_leftIsWildcard && ![[self leftExpressions] containsObject:[predicate leftExpression]]) + return 0; + + if (![[self operators] containsObject:[predicate predicateOperatorType]]) + return 0; + + if (!_rightIsWildcard && ![[self rightExpressions] containsObject:[predicate rightExpression]]) return 0; + + return 1; + } + + return 0; +} + +/*! + @brief Returns the views for the receiver. + @return The views for the receiver. + @discussion Instances of CPPopUpButton are treated specially by CPPredicateEditor; their menu items are merged into a single popup button, and matching menu item titles are combined. In this way, a single tree is built from the separate templates. +*/ +- (CPArray)templateViews +{ + return _views; +} + +/*! + @brief Sets the value of the views according to the given predicate. + @param predicate The predicate value for the receiver. + @discussion This method is only called if -#matchForPredicate: returned a positive value for the receiver. + + You can override this to set the values of custom views. +*/ +- (void)setPredicate:(CPPredicate)predicate +{ + if (_templateType == 2) + [self _setCompoundPredicate:predicate]; + else + [self _setComparisonPredicate:predicate]; +} + +/*! + @brief Returns the subpredicates that should be made sub-rows of a given predicate. + @param predicate A predicate object. + @return The subpredicates that should be made sub-rows of @a predicate. For compound predicates (instances of CPCompoundPredicate), the array of subpredicates; for other types of predicate, returns @c nil. If a template represents a predicate in its entirety, or if the predicate has no subpredicates, returns @c nil. + @discussion You can override this method to create custom templates that handle complicated compound predicates. +*/ +- (CPArray)displayableSubpredicatesOfPredicate:(CPPredicate)predicate +{ + if ([predicate isKindOfClass:[CPCompoundPredicate class]]) + { + var subpredicates = [predicate subpredicates]; + if ([subpredicates count] == 0) + return nil; + + return subpredicates; + } + + return nil; +} + +/*! + @brief Returns the predicate represented by the receiver’s views' values and the given sub-predicates. + @param subpredicates An array of predicates. + @return The predicate represented by the values of the template's views and the given @a subpredicates. You can override this method to return the predicate represented by your custom views. + @discussion This method is only called if -#matchForPredicate: returned a positive value for the receiver. + + You can override this method to return the predicate represented by a custom view. +*/ +- (CPPredicate)predicateWithSubpredicates:(CPArray)subpredicates +{ + if (_templateType == 2) + { + var type = [[_views[0] selectedItem] representedObject]; + return [[CPCompoundPredicate alloc] initWithType:type subpredicates:subpredicates]; + } + + if (_templateType == 1) + { + var lhs = [self _leftExpression], + rhs = [self _rightExpression], + operator = [[_views[1] selectedItem] representedObject]; + + return [CPComparisonPredicate predicateWithLeftExpression:lhs + rightExpression:rhs + modifier:[self modifier] + type:operator + options:[self options]]; + } + + return nil; +} + +/*! + @name Information About a Row Template +*/ + +/*! + @brief Returns the left hand expressions for the receiver. + @return The left hand expressions for the receiver. +*/ +- (CPArray)leftExpressions +{ + if (_templateType ==1 && !_leftIsWildcard) + { + var view = [_views objectAtIndex:0]; + return [[view itemArray] valueForKey:@"representedObject"]; + } + + return nil; +} + +/*! + @brief Returns the right hand expressions for the receiver. + @return The right hand expressions for the receiver. +*/ +- (CPArray)rightExpressions +{ + if (_templateType == 1 && !_rightIsWildcard) + { + var view = [_views objectAtIndex:2]; + return [[view itemArray] valueForKey:@"representedObject"]; + } + + return nil; +} + +/*! + @brief Returns the compound predicate types for the receiver. + @return An array of CPNumber objects specifying compound predicate types. See @c CompoundPredicateTypes for possible values. +*/ +- (CPArray)compoundTypes +{ + if (_templateType == 2) + { + var view = [_views objectAtIndex:0]; + return [[view itemArray] valueForKey:@"representedObject"]; + } + + return nil; +} + +/*! + @brief Returns the comparison predicate modifier for the receiver. + @return The comparison predicate modifier for the receiver. +*/ +- (CPComparisonPredicateModifier)modifier +{ + if (_templateType == 1) + return _predicateModifier; + + return nil; +} + +/*! + @brief Returns Returns the array of operators for the receiver. + @return The array of operators for the receiver. +*/ +- (CPArray)operators +{ + if (_templateType == 1) + { + var view = [_views objectAtIndex:1]; + return [[view itemArray] valueForKey:@"representedObject"]; + } + + return nil; +} + +/*! + @brief Returns the comparison predicate options for the receiver. + @return The comparison predicate options for the receiver. See @c CPComparisonPredicateOptions for possible values. Returns @c 0 if this does not apply (for example, for a compound template initialized with -#initWithCompoundTypes:). +*/ +- (int)options +{ + if (_templateType == 1) + return _predicateOptions; + + return nil; +} + +/*! + @brief Returns the attribute type of the receiver’s right expression. + @return The attribute type of the receiver’s right expression. +*/ +- (CPAttributeType)rightExpressionAttributeType +{ + return _rightAttributeType; +} + +/*! + @brief Returns the attribute type of the receiver’s left expression. + @return The attribute type of the receiver’s left expression. +*/ +- (CPAttributeType)leftExpressionAttributeType +{ + return _leftAttributeType; +} + +/*! @cond */ ++ (id)_bestMatchForPredicate:(CPPredicate)predicate inTemplates:(CPArray)templates quality:(double)quality +{ + var count = [templates count], + match_value = 0, + templateIndex = CPNotFound, + i; + + for (i = 0; i < count; i++) + { + var template = [templates objectAtIndex:i], + amatch = [template matchForPredicate:predicate]; + + if (amatch > match_value) + { + templateIndex = i; + match_value = amatch; + } + } + + if (templateIndex == CPNotFound) + { + [CPException raise:CPRangeException reason:@"Unable to find template matching predicate: " + [predicate predicateFormat]]; + return nil; + } + + return [templates objectAtIndex:templateIndex]; +} + +- (void)_setCompoundPredicate:(CPCompoundPredicate)predicate +{ + var left = [_views objectAtIndex:0], + type = [predicate compoundPredicateType], + index = [left indexOfItemWithRepresentedObject:type]; + + [left selectItemAtIndex:index]; +} + +- (void)_setComparisonPredicate:(CPComparisonPredicate)predicate +{ + var left = [_views objectAtIndex:0], + middle = [_views objectAtIndex:1], + right = [_views objectAtIndex:2], + leftExpression = [predicate leftExpression], + rightExpression = [predicate rightExpression], + operator = [predicate predicateOperatorType]; + + if (_leftIsWildcard) + [left setObjectValue:[leftExpression constantValue]]; + else + { + var index = [left indexOfItemWithRepresentedObject:leftExpression]; + [left selectItemAtIndex:index]; + } + + var op_index = [middle indexOfItemWithRepresentedObject:operator]; + [middle selectItemAtIndex:op_index]; + + if (_rightIsWildcard) + [right setObjectValue:[rightExpression constantValue]]; + else + { + var index = [right indexOfItemWithRepresentedObject:rightExpression]; + [right selectItemAtIndex:index]; + } +} + +- (CPExpression)_leftExpression +{ + return [self _expressionFromView:_views[0] forAttributeType:_leftAttributeType]; +} + +- (CPExpression)_rightExpression +{ + return [self _expressionFromView:_views[2] forAttributeType:_rightAttributeType]; +} + +- (CPExpression)_expressionFromView:(CPView)aView forAttributeType:(CPAttributeType)attributeType +{ + if (attributeType == 0) + return [[aView selectedItem] representedObject]; + + var value; + if (attributeType >= CPInteger16AttributeType && attributeType <= CPFloatAttributeType) + value = [aView intValue]; + else if (attributeType == CPBooleanAttributeType) + value = [aView state]; + else + value = [aView stringValue]; + + return [CPExpression expressionForConstantValue:value]; +} + +- (int)_rowType +{ + return (_templateType - 1); +} + +- (id)copy +{ + return [CPKeyedUnarchiver unarchiveObjectWithData:[CPKeyedArchiver archivedDataWithRootObject:self]]; +} + ++ (id)_operatorsForAttributeType:(CPAttributeType)attributeType +{ + var operators_array = [CPMutableArray array]; + + switch (attributeType) + { + case CPInteger16AttributeType : [operators_array addObjects:4,5,0,2,1,3]; + break; + case CPInteger32AttributeType : [operators_array addObjects:4,5,0,2,1,3]; + break; + case CPInteger64AttributeType : [operators_array addObjects:4,5,0,2,1,3]; + break; + case CPDecimalAttributeType : [operators_array addObjects:4,5,0,2,1,3]; + break; + case CPDoubleAttributeType : [operators_array addObjects:4,5,0,2,1,3]; + break; + case CPFloatAttributeType : [operators_array addObjects:4,5,0,2,1,3]; + break; + case CPStringAttributeType : [operators_array addObjects:99,4,5,8,9]; + break; + case CPBooleanAttributeType : [operators_array addObjects:4,5]; + break; + case CPDateAttributeType : [operators_array addObjects:4,5,0,2,1,3]; + break; + default : CPLogConsole("Cannot create operators for an CPAttributeType " + attributeType); + break; + } + + return operators_array; +} + +- (int)_templateType +{ + return _templateType; +} + +- (id)_displayValueForPredicateOperator:(int)operator +{ + var value; + + switch (operator) + { + case CPLessThanPredicateOperatorType : value = @"is less than"; + break; + case CPLessThanOrEqualToPredicateOperatorType : value = @"is less than or equal to"; + break; + case CPGreaterThanPredicateOperatorType : value = @"is greater than"; + break; + case CPGreaterThanOrEqualToPredicateOperatorType : value = @"is greater than or equal to"; + break; + case CPEqualToPredicateOperatorType : value = @"is"; + break; + case CPNotEqualToPredicateOperatorType : value = @"is not"; + break; + case CPMatchesPredicateOperatorType : value = @"matches"; + break; + case CPLikePredicateOperatorType : value = @"is like"; + break; + case CPBeginsWithPredicateOperatorType : value = @"begins with"; + break; + case CPEndsWithPredicateOperatorType : value = @"ends with"; + break; + case CPInPredicateOperatorType : value = @"in"; + break; + case CPContainsPredicateOperatorType : value = @"contains"; + break; + case CPBetweenPredicateOperatorType : value = @"between"; + break; + default : CPLogConsole(@"unknown predicate operator %d" + operator); + } + + return value; +} + +- (id)_displayValueForCompoundPredicateType:(unsigned int)predicateType +{ + var value; + switch (predicateType) + { + case CPNotPredicateType: value = @"None"; + break; + case CPAndPredicateType: value = @"All"; + break; + case CPOrPredicateType: value = @"Any"; + break; + default : value = [CPString stringWithFormat:@"unknown compound predicate type %d",predicateType]; + } + + return value; +} + +- (id)_displayValueForConstantValue:(id)value +{ + return [value description]; // number, date, string, ... localize +} + +- (id)_displayValueForKeyPath:(CPString)keyPath +{ + return keyPath; // localize +} + +- (CPPopUpButton)_viewFromExpressions:(CPArray)expressions +{ + var popup = [[CPPopUpButton alloc] initWithFrame:CPMakeRect(0, 0, 100, 18)], + count = [expressions count]; + + for (var i = 0; i < count; i++) + { + var exp = expressions[i], + type = [exp expressionType], + title; + + switch (type) + { + case CPKeyPathExpressionType: title = [self _displayValueForKeyPath:[exp keyPath]]; + break; + case CPConstantValueExpressionType: title = [self _displayValueForConstantValue:[exp constantValue]]; + break; + default: [CPException raise:CPInvalidArgumentException reason:@"Invalid Expression type " + type]; + break; + } + + var item = [[CPMenuItem alloc] initWithTitle:title action:nil keyEquivalent:@""]; + [item setRepresentedObject:exp]; + [popup addItem:item]; + } + + [popup sizeToFit]; + + return popup; +} + +- (CPPopUpButton)_viewFromOperatorTypes:(CPArray)operators +{ + var popup = [[CPPopUpButton alloc] initWithFrame:CGRectMake(0, 0, 100, 18)], + count = [operators count]; + + for (var i = 0; i < count; i++) + { + var op = operators[i], + title = [self _displayValueForPredicateOperator:op], + item = [[CPMenuItem alloc] initWithTitle:title action:nil keyEquivalent:@""]; + + [item setRepresentedObject:op]; + [popup addItem:item]; + } + + [popup sizeToFit]; + + return popup; +} + +- (CPView)_viewFromCompoundTypes:(CPArray)compoundTypes +{ + var popup = [[CPPopUpButton alloc] initWithFrame:CGRectMake(0, 0, 100, 18)], + count = [compoundTypes count]; + + for (var i = 0; i < count; i++) + { + var type = compoundTypes[i], + title = [self _displayValueForCompoundPredicateType:type], + item = [[CPMenuItem alloc] initWithTitle:title action:nil keyEquivalent:@""]; + + [item setRepresentedObject:type]; + [popup addItem:item]; + } + + [popup sizeToFit]; + + return popup; +} + +- (CPView)_viewFromAttributeType:(CPAttributeType)attributeType +{ + var view; + + if (attributeType >= CPInteger16AttributeType && attributeType <= CPFloatAttributeType) + { + view = [self _textFieldWithFrame:CGRectMake(0, 0, 50, 26)]; + } + else if (attributeType == CPStringAttributeType) + { + view = [self _textFieldWithFrame:CGRectMake(0, 0, 150, 26)]; + } + else if (attributeType == CPBooleanAttributeType) + { + view = [[CPCheckBox alloc] initWithFrame:CGRectMake(0, 0, 50, 26)]; + } + else if (attributeType == CPDateAttributeType) + view = [[CPDatePicker alloc] initWithFrame:CGRectMake(0, 0, 150, 26)]; + else + return nil; + + [view setTag:attributeType]; + + return view; +} + +- (CPTextField)_textFieldWithFrame:(CGRect)frame +{ + var textField = [[CPTextField alloc] initWithFrame:frame]; + [textField setBezeled:YES]; + [textField setBezelStyle:CPTextFieldSquareBezel]; + [textField setBordered:YES]; + [textField setEditable:YES]; + [textField setFont:[CPFont systemFontOfSize:10]]; + + return textField; +} + +- (void)_setOptions:(unsigned int)options +{ + _predicateOptions = options; +} + +- (void)_setModifier:(unsigned int)modifier +{ + _predicateModifier = modifier; +} + +- (CPString)description +{ + if (_templateType == 2) + return [CPString stringWithFormat:@"<%@ %p %@>",[self className],self,[[self compoundTypes] componentsJoinedByString:@", "]]; + else if (_templateType == 1 && _rightIsWildcard) + return [CPString stringWithFormat:@"<%@ %p [%@] [%@] %d>",[self className],self,[[self leftExpressions] componentsJoinedByString:@", "],[[self operators] componentsJoinedByString:@", "],[self rightExpressionAttributeType]]; + else + return [CPString stringWithFormat:@"<%@ %p [%@] [%@] [%@]>",[self className],self,[[self leftExpressions] componentsJoinedByString:@", "],[[self operators] componentsJoinedByString:@", "],[[self rightExpressions] componentsJoinedByString:@", "]]; +} + +/* +- (void)_setLeftExpressionObject:(id)object +{ +} +- (void)_setRightExpressionObject:(id)object +{ +} +- (BOOL)_predicateIsNoneAreTrue:(id)predicate +{ +} +- (id)_viewFromExpressionObject:(id)object +{ +} +*/ +@end + +var CPPredicateTemplateTypeKey = @"CPPredicateTemplateType", + CPPredicateTemplateOptionsKey = @"CPPredicateTemplateOptions", + CPPredicateTemplateModifierKey = @"CPPredicateTemplateModifier", + CPPredicateTemplateLeftAttributeTypeKey = @"CPPredicateTemplateLeftAttributeType", + CPPredicateTemplateRightAttributeTypeKey = @"CPPredicateTemplateRightAttributeType", + CPPredicateTemplateLeftIsWildcardKey = @"CPPredicateTemplateLeftIsWildcard", + CPPredicateTemplateRightIsWildcardKey = @"CPPredicateTemplateRightIsWildcard", + CPPredicateTemplateViewsKey = @"CPPredicateTemplateViews"; + +@implementation CPPredicateEditorRowTemplate (CPCoding) + +- (id)initWithCoder:(CPCoder)coder +{ + self = [super init]; + if (self != nil) + { + _templateType = [coder decodeIntForKey:CPPredicateTemplateTypeKey]; + _predicateOptions = [coder decodeIntForKey:CPPredicateTemplateOptionsKey]; + _predicateModifier = [coder decodeIntForKey:CPPredicateTemplateModifierKey]; + _leftAttributeType = [coder decodeIntForKey:CPPredicateTemplateLeftAttributeTypeKey]; + _rightAttributeType = [coder decodeIntForKey:CPPredicateTemplateRightAttributeTypeKey]; + _leftIsWildcard = [coder decodeBoolForKey:CPPredicateTemplateLeftIsWildcardKey]; + _rightIsWildcard = [coder decodeBoolForKey:CPPredicateTemplateRightIsWildcardKey]; + _views = [coder decodeObjectForKey:CPPredicateTemplateViewsKey]; + + // In Xcode 4, when the menu item title == template's expression keypath, representedObject is empty. + // So we need to regenerate expressions from titles. + if (_templateType == 1 && _leftIsWildcard == NO) + { + var itemArray = [_views[0] itemArray], + count = [itemArray count]; + + for (var i = 0; i < count; i++) + { + var item = itemArray[i]; + if ([item representedObject] == nil) + { + var exp = [CPExpression expressionForKeyPath:[item title]]; + [item setRepresentedObject:exp]; + } + } + } + } + + return self; +} + +- (void)encodeWithCoder:(CPCoder)coder +{ + [coder encodeInt:_templateType forKey:CPPredicateTemplateTypeKey]; + [coder encodeInt:_predicateOptions forKey:CPPredicateTemplateOptionsKey]; + [coder encodeInt:_predicateModifier forKey:CPPredicateTemplateModifierKey]; + [coder encodeInt:_leftAttributeType forKey:CPPredicateTemplateLeftAttributeTypeKey]; + [coder encodeInt:_rightAttributeType forKey:CPPredicateTemplateRightAttributeTypeKey]; + [coder encodeBool:_leftIsWildcard forKey:CPPredicateTemplateLeftIsWildcardKey]; + [coder encodeBool:_rightIsWildcard forKey:CPPredicateTemplateRightIsWildcardKey]; + [coder encodeObject:_views forKey:CPPredicateTemplateViewsKey]; +} + +@end +/*! @endcond */ \ No newline at end of file diff --git a/AppKit/CPRuleEditor/CPRuleEditor.j b/AppKit/CPRuleEditor/CPRuleEditor.j new file mode 100644 index 000000000..824413a4c --- /dev/null +++ b/AppKit/CPRuleEditor/CPRuleEditor.j @@ -0,0 +1,2596 @@ +/* + * CPRuleEditor.j + * AppKit + * + * Created by cacaodev. + * Copyright 2011, cacaodev. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +@import +@import +@import +@import +@import +@import +@import + +@import "_CPRuleEditorViewSliceRow.j" +@import "_CPRuleEditorLocalizer.j" + +CPRuleEditorPredicateLeftExpression = "CPRuleEditorPredicateLeftExpression"; +CPRuleEditorPredicateRightExpression = "CPRuleEditorPredicateRightExpression"; +CPRuleEditorPredicateComparisonModifier = "CPRuleEditorPredicateComparisonModifier"; +CPRuleEditorPredicateOptions = "CPRuleEditorPredicateOptions"; +CPRuleEditorPredicateOperatorType = "CPRuleEditorPredicateOperatorType"; +CPRuleEditorPredicateCustomSelector = "CPRuleEditorPredicateCustomSelector"; +CPRuleEditorPredicateCompoundType = "CPRuleEditorPredicateCompoundType"; + +CPRuleEditorRowsDidChangeNotification = "CPRuleEditorRowsDidChangeNotification"; +CPRuleEditorRulesDidChangeNotification = "CPRuleEditorRulesDidChangeNotification"; + +CPRuleEditorNestingModeSingle = 0; // Only a single row is allowed. Plus/minus buttons will not be shown +CPRuleEditorNestingModeList = 1; // Allows a single list, with no nesting and no compound rows +CPRuleEditorNestingModeCompound = 2; // Unlimited nesting and compound rows; this is the default +CPRuleEditorNestingModeSimple = 3; // One compound row at the top with subrows beneath it, and no further nesting allowed + +CPRuleEditorRowTypeSimple = 0; +CPRuleEditorRowTypeCompound = 1; + +var CPRuleEditorItemPBoardType = @"CPRuleEditorItemPBoardType"; + +var itemsContext = "items", + valuesContext = "values", + subrowsContext = "subrows_array", + boundArrayContext = "bound_array"; + +/*! + @ingroup appkit + @class CPRuleEditor + + @brief A view for creating and configuring criteria. + + A CPRuleEditor object is a view that allows the user to visually create and configure a list of options which are expressed by the rule editor as a predicate (see Predicate documentation). The view has a delegate which offers a tree of choices to the view. The choices are presented by the view to the user as a row of popup buttons, static text fields, and custom views. Each row in the list represents a particular path down the tree of choices. + + CPRuleEditor exposes one binding, rows. You can bind rows to an ordered collection (such as an instance of CPMutableArray). Each object in the collection should have the following properties: + @n @n + @c @@"rowType" + @n An integer representing the type of the row (CPRuleEditorRowType). + @n@n @c @@"subrows" + @n An ordered to-many relation (such as an instance of CPMutableArray) containing the directly nested subrows for the given row. + @n@n @c @@"displayValues" + @n An ordered to-many relation containing the display values for the row. + @n@n @c @@"criteria" + @n An ordered to-many relation containing the criteria for the row. +*/ + +@implementation CPRuleEditor : CPControl +{ + BOOL _suppressKeyDownHandling; + BOOL _allowsEmptyCompoundRows; + BOOL _disallowEmpty; + BOOL _delegateWantsValidation; + BOOL _editable; + + Class _rowClass; + + CPIndexSet _draggingRows; + CPInteger _subviewIndexOfDropLine; + CPView _dropLineView; + + CPMutableArray _rowCache; + CPMutableArray _slices; + + CPPredicate _predicate; + + CPString _itemsKeyPath; + CPString _subrowsArrayKeyPath; + CPString _typeKeyPath; + CPString _valuesKeyPath; + CPString _boundArrayKeyPath @accessors(property=boundArrayKeyPath); + + CPView _slicesHolder; + CPViewAnimation _currentAnimation; + + CPInteger _lastRow; + CPInteger _nestingMode; + + float _alignmentGridWidth; + float _sliceHeight; + + id _ruleDataSource; + id _ruleDelegate; + id _boundArrayOwner; + + CPString _stringsFilename; + + BOOL _isKeyDown; + BOOL _nestingModeDidChange; + + id _standardLocalizer @accessors(property=standardLocalizer); + id _itemsAndValuesToAddForRowType; +} + +/*! @cond */ + ++ (CPString)defaultThemeClass +{ + return @"rule-editor"; +} + ++ (id)themeAttributes +{ + return [CPDictionary dictionaryWithObjects:[[CPNull null], [CPNull null], [CPNull null], [CPNull null], [CPNull null], [CPNull null], [CPNull null], [CPNull null]] + forKeys:[@"alternating-row-colors", @"selected-color", @"slice-top-border-color", @"slice-bottom-border-color", @"slice-last-bottom-border-color", @"font", @"add-image", @"remove-image"]]; +} + +- (id)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self != nil) + { + _slices = [[CPMutableArray alloc] init]; + + _sliceHeight = 26.; + _nestingMode = CPRuleEditorNestingModeSimple; // 10.5 default is CPRuleEditorNestingModeCompound + _editable = YES; + _allowsEmptyCompoundRows = NO; + _disallowEmpty = NO; + + [self setCriteriaKeyPath:@"criteria"]; + [self setSubrowsKeyPath:@"subrows"]; + [self setRowTypeKeyPath:@"rowType"]; + [self setDisplayValuesKeyPath:@"displayValues"]; + [self setBoundArrayKeyPath:@"boundArray"]; + + _slicesHolder = [[_CPRuleEditorViewSliceHolder alloc] initWithFrame:[self bounds]]; + [self addSubview:_slicesHolder]; + + _boundArrayOwner = [[_CPRuleEditorViewUnboundRowHolder alloc] init]; + + [self _initRuleEditorShared]; + } + + return self; +} + +- (void)_initRuleEditorShared +{ + _rowCache = [[CPMutableArray alloc] init]; + _rowClass = [RowObject class]; + _isKeyDown = NO; + _subviewIndexOfDropLine = CPNotFound; + _lastRow = 0; + _delegateWantsValidation = YES; + _suppressKeyDownHandling = NO; + _nestingModeDidChange = NO; + _itemsAndValuesToAddForRowType = {}; + var animation = [[CPViewAnimation alloc] initWithDuration:0.5 animationCurve:CPAnimationEaseInOut]; + [self setAnimation:animation]; + + [_slicesHolder setAutoresizingMask:CPViewWidthSizable | CPViewHeightSizable]; + + _dropLineView = [self _createSliceDropSeparator]; + [_slicesHolder addSubview:_dropLineView]; + + [self registerForDraggedTypes:[CPArray arrayWithObjects:CPRuleEditorItemPBoardType,nil]]; + [_boundArrayOwner addObserver:self forKeyPath:_boundArrayKeyPath options:CPKeyValueObservingOptionOld|CPKeyValueObservingOptionNew context:boundArrayContext]; +} + +/*! @endcond */ + +/*! + @name Configuring a Rule Editor +*/ + +/*! + @brief Returns the receiver’s delegate. + @return The receiver’s delegate. + @see setDelegate: +*/ +- (id)delegate +{ + return _ruleDelegate; +} + +/*! + @brief Sets the receiver’s delegate. + @param aDelegate The delegate for the receiver. + @discussion CPRuleEditor requires a delegate that implements the required delegate methods to function. + @see delegate +*/ +- (void)setDelegate:(id)aDelegate +{ + if (_ruleDelegate === aDelegate) + return; + + var nc = [CPNotificationCenter defaultCenter]; + if (_ruleDelegate) + [nc removeObserver:_ruleDelegate name:nil object:self]; + + _ruleDelegate = aDelegate; + + if ([_ruleDelegate respondsToSelector:@selector(ruleEditorRowsDidChange:)]) + [nc addObserver:_ruleDelegate selector:@selector(ruleEditorRowsDidChange:) name:CPRuleEditorRowsDidChangeNotification object:nil]; +} +/*! + @brief Returns a Boolean value that indicates whether the receiver is editable. + @return @c YES if the receiver is editable, otherwise @c NO. + @discussion The default is @c YES. + @see setEditable: +*/ +- (BOOL)isEditable +{ + return _editable; +} + +/*! + @brief Sets whether the receiver is editable. + @param editable @c YES if the receiver is editable, otherwise @c NO. + @see isEditable: +*/ +- (void)setEditable:(BOOL)editable +{ + if (editable == _editable) + return; + + _editable = editable; + + if (!_editable) + [self _deselectAll]; + + [_slices makeObjectsPerformSelector:@selector(setEditable:) withObject:_editable]; +} + +/*! + @brief Returns the nesting mode for the receiver. + @return The nesting mode for the receiver. + @see setNestingMode: +*/ +- (CPRuleEditorNestingMode)nestingMode +{ + return _nestingMode; +} + +/*! + @brief Sets the nesting mode for the receiver. + @param mode The nesting mode for the receiver. + @discussion You typically set the nesting mode at view creation time and do not subsequently modify it. The default is @c CPRuleEditorNestingModeSimple. + @see nestingMode + @note Currently CPRuleEditorNestingModeCompound is experimental. +*/ +- (void)setNestingMode:(CPRuleEditorNestingMode)mode +{ + if (mode != _nestingMode) + { + _nestingMode = mode; + if ([self numberOfRows] > 0) + _nestingModeDidChange = YES; + } +} + +/*! + @brief Returns a Boolean value that indicates whether all the rows can be removed. + @return @c YES if all the rows can be removed, otherwise @c NO. + @see setCanRemoveAllRows: +*/ +- (BOOL)canRemoveAllRows +{ + return !_disallowEmpty; +} + +/*! + @brief Sets whether all the rows can be removed. + @param canRemove @c YES if all the rows can be removed, otherwise @c NO. + @see canRemoveAllRows +*/ +- (void)setCanRemoveAllRows:(BOOL)canRemove +{ + _disallowEmpty = !canRemove; + [self _updateButtonVisibilities]; +} + +/*! + @brief Returns a Boolean value that indicates whether compounds rows can be childless. + @return @c YES if compounds rows can be childless, otherwise @c NO. + @see setAllowsEmptyCompoundRows: +*/ +- (BOOL)allowsEmptyCompoundRows +{ + return _allowsEmptyCompoundRows; +} + +/*! + @brief Sets whether compounds rows can be childless. + @param allows @c YES if compounds rows can be childless, otherwise @c NO. + @see allowsEmptyCompoundRows +*/ +- (void)setAllowsEmptyCompoundRows:(BOOL)allows +{ + _allowsEmptyCompoundRows = allows; + [self _updateButtonVisibilities]; +} + +/*! + @brief Returns the row height for the receiver. + @return The row height for the receiver. + @see setRowHeight: +*/ +- (CPInteger)rowHeight +{ + return _sliceHeight; +} + +/*! + @brief Sets the row height for the receiver. + @param height The row height for the receiver. + @see rowHeight +*/ +- (void)setRowHeight:(float)height +{ + if (height == _sliceHeight) + return; + + _sliceHeight = MAX([self _minimumFrameHeight], height); + [self _reconfigureSubviewsAnimate:NO]; +} + +/*! + @name Working with Formatting +*/ + +/*! + @brief Returns the formatting dictionary for the receiver. + @return The formatting dictionary for the receiver. + @see setFormattingDictionary: + @see setFormattingStringsFilename: +*/ +- (CPDictionary)formattingDictionary +{ + return [_standardLocalizer dictionary]; +} + +/*! + @brief Sets the formatting dictionary for the receiver. + @param dictionary The formatting dictionary for the receiver. + @discussion If you set the formatting dictionary with this method, it sets the current formatting strings file name to @c nil. + @see formattingDictionary + @see formattingStringsFilename +*/ +- (void)setFormattingDictionary:(CPDictionary)dictionary +{ + [_standardLocalizer setDictionary:dictionary]; + _stringsFilename = nil; +} + +/*! + @brief Returns the name of the strings file for the receiver. + @return The name of the strings file for the receiver. + @see setFormattingStringsFilename: +*/ +- (CPString)formattingStringsFilename +{ + return _stringsFilename; +} + +/*! + @brief Sets the name of the strings file used for formatting. + @param stringsFilename The name of the strings file for the receiver. + @discussion CPRuleEditor looks for a strings file with the given name in the main bundle and (if appropriate) the bundle containing the nib file from which it was loaded. If it finds a strings file resource with the given name, CPRuleEditor loads it and sets it as the formatting dictionary for the receiver. You can obtain the resulting dictionary using formattingDictionary. + If you set the formatting dictionary with -#setFormattingDictionary:, it sets the current formatting strings file name nil. + @see formattingStringsFilename +*/ +- (void)setFormattingStringsFilename:(CPString)stringsFilename +{ + // Can we set _stringsFilename to nil in cocoa ? + if (_standardLocalizer == nil) + _standardLocalizer = [_CPRuleEditorLocalizer new]; + + if (_stringsFilename != stringsFilename) + { + _stringsFilename = stringsFilename; + + if (stringsFilename !== nil) + { + if (![stringsFilename hasSuffix:@".strings"]) + stringsFilename = stringsFilename + @".strings"; + var path = [[CPBundle mainBundle] pathForResource:stringsFilename]; + if (path !=nil) + [_standardLocalizer loadContentOfURL:[CPURL URLWithString:path]]; + } + } +} + +/*! + @name Providing Data +*/ + +/*! + @brief Instructs the receiver to refetch criteria from its delegate. + @discussion You can use this method to indicate that the available criteria may have changed and should be refetched from the delegate and the popups recalculated. +*/ +- (void)reloadCriteria +{ + var current_rows = [_boundArrayOwner valueForKey:_boundArrayKeyPath]; + [self _stopObservingRowObjectsRecursively:current_rows]; + [_boundArrayOwner setValue:[CPArray arrayWithArray:current_rows] forKey:_boundArrayKeyPath]; +} + +/*! + @brief Modifies the row at a given index to contain the given items and values. + @param criteria The array of criteria for the row at @a rowIndex. Pass an empty array to force the receiver to query its delegate. This value must not be nil. + @param values The array of values for the row at @a rowIndex. Pass an empty array to force the receiver to query its delegate. This value must not be @c nil. + @param rowIndex The index of a row in the receiver. + + @discussion It is your responsibility to ensure that each item in the array is a child of the previous item, and that the first item is a root item for the row type. If the last item has child items, then the items array will be extended by querying the delegate for child items until a childless item is reached. +*/ +- (void)setCriteria:(CPArray)criteria andDisplayValues:(CPArray)values forRowAtIndex:(int)rowIndex +{ +// TODO: reload from the delegate if criteria is an empty array. + if (criteria == nil || values == nil) + [CPException raise:CPInvalidArgumentException reason:_cmd + @". criteria and values parameters must not be nil."]; + + if (rowIndex < 0 || rowIndex >= [self numberOfRows]) + [CPException raise:CPRangeException reason:_cmd + @". rowIndex is out of bounds."]; + + var rowObject = [[self _rowCacheForIndex:rowIndex] rowObject]; + + [rowObject setValue:criteria forKey:_itemsKeyPath]; + [rowObject setValue:values forKey:_valuesKeyPath]; + + [self reloadCriteria]; +} + +/*! + @brief Returns the currently chosen items for a given row. + @param row The index of a row in the receiver. + @return The currently chosen items for row @a row. +*/ +- (id)criteriaForRow:(int)row +{ + var rowcache = [self _rowCacheForIndex:row]; + if (rowcache) + return [[rowcache rowObject] valueForKey:_itemsKeyPath]; + + return nil; +} + +/*! + @name Working with the Selection +*/ + +/*! + @brief Returns the chosen values for a given row. + @param row The index of a row in the receiver. + @return The chosen values (strings, views, or menu items) for row row. + @discussion The values returned are the same as those returned from the delegate method -#ruleEditor:displayValueForCriterion:inRow: +*/ +- (CPMutableArray)displayValuesForRow:(int)row +{ + var rowcache = [self _rowCacheForIndex:row]; + if (rowcache) + return [[rowcache rowObject] valueForKey:_valuesKeyPath]; + + return nil; +} + +/*! + @brief Returns the number of rows in the receiver. + @return The number of rows in the receiver. +*/ +- (int)numberOfRows +{ + return [_slices count]; +} + +/*! + @brief Returns the index of the parent of a given row. + @param rowIndex The index of a row in the receiver. + @return The index of the parent of the row at @a rowIndex. If the row at @a rowIndex is a root row, returns @c -1. +*/ +- (int)parentRowForRow:(int)rowIndex +{ + if (rowIndex < 0 || rowIndex >= [self numberOfRows]) + [CPException raise:CPRangeException reason:_cmd+@" row " + rowIndex + " is out of range"]; + + var targetObject = [[self _rowCacheForIndex:rowIndex] rowObject]; + + for (var current_index = 0; current_index < rowIndex; current_index++) + { + if ([self rowTypeForRow:current_index] == CPRuleEditorRowTypeCompound) + { + var candidate = [[self _rowCacheForIndex:current_index] rowObject], + subObjects = [[self _subrowObjectsOfObject:candidate] _representedObject]; + + if ([subObjects indexOfObjectIdenticalTo:targetObject] != CPNotFound) + return current_index; + } + } + + return -1; +} + +/* +TODO: implement + Returns the index of the row containing a given value. + + displayValue The display value (string, view, or menu item) of an item in the receiver. This value must not be nil. + + The index of the row containing displayValue, or CPNotFound. + + This method searches each row via objects equality for the given display value, which may be present as an alternative in a popup menu for that row. + +- (CPInteger)rowForDisplayValue:(id)displayValue +*/ + +/*! + @brief Returns the type of a given row. + @param rowIndex The index of a row in the receiver. + @return The type of the row at @a rowIndex. + @warning Raises a @c CPRangeException if rowIndex is less than @c 0 or greater than or equal to the number of rows. +*/ +- (CPRuleEditorRowType)rowTypeForRow:(int)rowIndex +{ + if (rowIndex < 0 || rowIndex > [self numberOfRows]) + [CPException raise:CPRangeException reason:_cmd+@"row " + rowIndex + " is out of range"]; + + var rowcache = [self _rowCacheForIndex:rowIndex]; + if (rowcache) + { + var rowobject = [rowcache rowObject]; + return [rowobject valueForKey:_typeKeyPath]; + } + + return CPNotFound; +} + +/*! + @brief Returns the immediate subrows of a given row. + @param rowIndex The index of a row in the receiver, or @c -1 to get the top-level rows. + @return The immediate subrows of the row at @a rowIndex. + @discussion Rows are numbered starting at @c 0. +*/ +- (CPIndexSet)subrowIndexesForRow:(int)rowIndex +{ + var object; + if (rowIndex == -1) + object = _boundArrayOwner; + else + object = [[self _rowCacheForIndex:rowIndex] rowObject]; + + var subobjects = [self _subrowObjectsOfObject:object], + objectsCount = [subobjects count], + indexes = [CPMutableIndexSet indexSet], + count = [self numberOfRows]; + + for (var i = rowIndex + 1; i < count; i++) + { + var candidate = [[self _rowCacheForIndex:i] rowObject], + indexInSubrows = [[subobjects _representedObject] indexOfObjectIdenticalTo:candidate]; + + if (indexInSubrows != CPNotFound) + { + [indexes addIndex:i]; + objectsCount --; + // [buffer removeObjectAtIndex:indexInSubrows]; + if ([self rowTypeForRow:i] == CPRuleEditorRowTypeCompound) + i += [[self subrowIndexesForRow:i] count]; + } + + if (objectsCount == 0) + break; + } + + return indexes; +} + +/*! + @brief Returns the indexes of the receiver’s selected rows. + @return The indexes of the receiver’s selected rows. +*/ +- (CPIndexSet)selectedRowIndexes +{ + return [self _selectedSliceIndices]; +} + +/*! + @brief Sets in the receiver the indexes of rows that are selected. + @param indexes The indexes of rows in the receiver to select. + @param extend If @c NO, the selected rows are specified by indexes. If @c YES, the rows indicated by indexes are added to the collection of already selected rows, providing multiple selection. +*/ +- (void)selectRowIndexes:(CPIndexSet)indexes byExtendingSelection:(BOOL)extend +{ + var count = [_slices count], + lastSelected = [indexes lastIndex]; + + if (lastSelected >= [self numberOfRows]) + [CPException raise:CPRangeException reason:@"row indexes " + indexes + " are out of range"]; + + if (!extend) + [self _deselectAll]; + + while (count--) + { + var slice = _slices[count], + rowIndex = [slice rowIndex], + contains = [indexes containsIndex:rowIndex]; + shouldSelect = (contains && !(extend && [slice _isSelected])); + + if (contains) + [slice _setSelected:shouldSelect]; + [slice _setLastSelected:(rowIndex == lastSelected)]; + [slice setNeedsDisplay:YES]; + } +} + +/*! + @name Manipulating Rows +*/ + +/*! + @brief Adds a row to the receiver. + @param sender Typically the object that sent the message. + @see insertRowAtIndex:withType:asSubrowOfRow:animate: +*/ +- (void)addRow:(id)sender +{ + var parentRowIndex = -1, + rowtype, + numberOfRows = [self numberOfRows], + hasRows = (numberOfRows > 0), + nestingMode = [self _applicableNestingMode]; + + switch (nestingMode) + { + case CPRuleEditorNestingModeSimple: + rowtype = hasRows ? CPRuleEditorRowTypeSimple : CPRuleEditorRowTypeCompound; + if (hasRows) + parentRowIndex = 0; + break; + case CPRuleEditorNestingModeSingle: + if (hasRows) + return; + case CPRuleEditorNestingModeList: + rowtype = CPRuleEditorRowTypeSimple; + break; + case CPRuleEditorNestingModeCompound: + rowtype = CPRuleEditorRowTypeCompound; + if (hasRows) + parentRowIndex = 0; + break; + default: + [CPException raise:CPInvalidArgumentException reason:@"Not supported CPRuleEditorNestingMode " + nestingMode]; + // Compound mode: parentRowIndex=(lastRowType == CPRuleEditorRowTypeCompound)?lastRow :[self parentRowForRow:lastRow]; break; + } + + [self insertRowAtIndex:numberOfRows withType:rowtype asSubrowOfRow:parentRowIndex animate:YES]; +} + +/*! + @brief Adds a new row of a given type at a given location. + @param rowIndex The index at which the new row should be inserted. @a rowIndex must be greater than @a parentRow, and much specify a row that does not fall amongst the children of some other parent. + @param rowType The type of the new row. + @param parentRow The index of the row of which the new row is a child. Pass -1 to indicate that the new row should be a root row. + @param shouldAnimate @c YES if creation of the new row should be animated, otherwise @c NO. + @note Currently, @a shouldAnimate has no effect, rows are always animated when calling this method. + @see addRow: +*/ +- (void)insertRowAtIndex:(int)rowIndex withType:(unsigned int)rowType asSubrowOfRow:(int)parentRow animate:(BOOL)shouldAnimate +{ +/* + TODO: raise exceptions if parentRow is greater than or equal to rowIndex, or if rowIndex would fall amongst the children of some other parent, or if the nesting mode forbids this configuration. +*/ + var newObject = [self _insertNewRowAtIndex:rowIndex ofType:rowType withParentRow:parentRow]; + + if (rowType == CPRuleEditorRowTypeCompound && !_allowsEmptyCompoundRows) + { + var subrow = [self _insertNewRowAtIndex:(rowIndex + 1) ofType:CPRuleEditorRowTypeSimple withParentRow:rowIndex]; + } +} + +/*! + @brief Removes the row at a given index. + @param rowIndex The index of a row in the receiver. + @warning Raises a @c CPRangeException if @a rowIndex is less than @c 0 or greater than or equal to the number of rows. + @see removeRowsAtIndexes:includeSubrows: +*/ +- (void)removeRowAtIndex:(int)rowIndex +{ + // TO DO : Any subrows of the deleted row are adopted by the parent of the deleted row, or are made root rows. + + if (rowIndex < 0 || rowIndex >= [self numberOfRows]) + [CPException raise:CPRangeException reason:@"row " + rowIndex + " is out of range"]; + + [self removeRowsAtIndexes:[CPIndexSet indexSetWithIndex:rowIndex] includeSubrows:NO]; +} + +/*! + @brief Removes the rows at a given index. + @param rowIndexes Indexes of one or more rows in the receiver. + @param includeSubrows If @c YES, then sub-rows of deleted rows are also deleted; if @c NO, then each sub-row is adopted by its first non-deleted ancestor, or becomes a root row. + @warning Raises a @c CPRangeException if any index in @a rowIndexes is less than 0 or greater than or equal to the number of rows. + @see removeRowAtIndex: +*/ +- (void)removeRowsAtIndexes:(CPIndexSet)rowIndexes includeSubrows:(BOOL)includeSubrows +{ + if ([rowIndexes count] == 0) + return; + + if ([rowIndexes lastIndex] >= [self numberOfRows]) + [CPException raise:CPRangeException reason:@"rows indexes " + rowIndexes + " are out of range"]; + + var current_index = [rowIndexes firstIndex], + parentRowIndex = [self parentRowForRow:current_index], + childsIndexes = [CPMutableIndexSet indexSet], + subrows; + + if (parentRowIndex == -1) + subrows = [self _rootRowsArray]; + else + { + var parentRowObject = [[self _rowCacheForIndex:parentRowIndex] rowObject]; + subrows = [self _subrowObjectsOfObject:parentRowObject]; + } + + while (current_index != CPNotFound) + { + var rowObject = [[self _rowCacheForIndex:current_index] rowObject], + relativeChildIndex = [[subrows _representedObject] indexOfObjectIdenticalTo:rowObject]; + + if (relativeChildIndex != CPNotFound) + [childsIndexes addIndex:relativeChildIndex]; + + if (includeSubrows && [self rowTypeForRow:current_index] == CPRuleEditorRowTypeCompound) + { + var more_childs = [self subrowIndexesForRow:current_index]; + [self removeRowsAtIndexes:more_childs includeSubrows:includeSubrows]; + } + + current_index = [rowIndexes indexGreaterThanIndex:current_index]; + } + + [subrows removeObjectsAtIndexes:childsIndexes]; +} + +/*! + @name Working with Predicates +*/ + +/*! + @brief Returns the predicate for the receiver. + @return If the delegate implements -#ruleEditor:predicatePartsForCriterion:withDisplayValue:inRow:, the predicate for the receiver. If not, or if the delegate does not return enough parts to construct a full predicate, returns @c nil. + @see predicateForRow: +*/ +- (CPPredicate)predicate +{ + return _predicate; +} + +/*! + @brief Instructs the receiver to regenerate its predicate by invoking the corresponding delegate method. + @discussion You typically invoke this method because something has changed (for example, a view's value). +*/ +- (void)reloadPredicate +{ + [self _updatePredicate]; +} + +/*! + @brief Returns the predicate for a given row. + @param aRow The index of a row in the receiver. + @return The predicate for the row at @a aRow. + @discussion You should rarely have a need to call this directly, but you can override this method in a subclass to perform specialized predicate handling for certain criteria or display values. +*/ +- (CPPredicate)predicateForRow:(CPInteger)aRow +{ + var predicateParts = [CPDictionary dictionary], + items = [self criteriaForRow:aRow], + count = [items count], + predicate, + i; + + for (i = 0; i < count; i++) + { + var item = [items objectAtIndex:i], + //var displayValue = [self _queryValueForItem:item inRow:aRow]; A voir. On peut aussi prendre la valeur affichée dans le row cache. + displayValue = [[self displayValuesForRow:aRow] objectAtIndex:i], + predpart = [_ruleDelegate ruleEditor:self predicatePartsForCriterion:item withDisplayValue:displayValue inRow:aRow]; + + if (predpart) + [predicateParts addEntriesFromDictionary:predpart]; + } + + if ([self rowTypeForRow:aRow] == CPRuleEditorRowTypeCompound) + { + var compoundPredicate, + subpredicates = [CPMutableArray array], + subrowsIndexes = [self subrowIndexesForRow:aRow]; + + if ([subrowsIndexes count] == 0) + return nil; + + var current_index = [subrowsIndexes firstIndex]; + while (current_index != CPNotFound) + { + var subpredicate = [self predicateForRow:current_index]; + if (subpredicate != nil) + [subpredicates addObject:subpredicate]; + + current_index = [subrowsIndexes indexGreaterThanIndex:current_index]; + } + + var compoundType = [predicateParts objectForKey:CPRuleEditorPredicateCompoundType]; + + if ([subpredicates count] == 0) + return nil; + else + { + try + { + compoundPredicate = [[CPCompoundPredicate alloc ] initWithType:compoundType subpredicates:subpredicates]; + } + catch(error) + { + CPLogConsole(@"Compound predicate error: [%@]\npredicateType:%i",[error description],compoundType); + compoundPredicate = nil; + } + finally + { + return compoundPredicate; + } + + } + } + + var lhs = [predicateParts objectForKey:CPRuleEditorPredicateLeftExpression], + rhs = [predicateParts objectForKey:CPRuleEditorPredicateRightExpression], + operator = [predicateParts objectForKey:CPRuleEditorPredicateOperatorType], + options = [predicateParts objectForKey:CPRuleEditorPredicateOptions], + modifier = [predicateParts objectForKey:CPRuleEditorPredicateComparisonModifier], + selector = CPSelectorFromString([predicateParts objectForKey:CPRuleEditorPredicateCustomSelector]); + + if (lhs == nil){ CPLogConsole(@"missing left expression in predicate parts dictionary"); return NULL;} + if (rhs == nil){ CPLogConsole(@"missing right expression in predicate parts dictionary"); return NULL;} + if (selector == nil && operator == nil){ CPLogConsole(@"missing operator and selector in predicate parts dictionary"); return NULL;} + + if (modifier == nil) CPLogConsole(@"missing modifier in predicate parts dictionary. Setting default: CPDirectPredicateModifier"); + if (options == nil) CPLogConsole(@"missing options in predicate parts dictionary. Setting default: CPCaseInsensitivePredicateOption"); + + try + { + if (selector != nil) + predicate = [CPComparisonPredicate + predicateWithLeftExpression:lhs + rightExpression:rhs + customSelector:selector + ]; + else + predicate = [CPComparisonPredicate + predicateWithLeftExpression:lhs + rightExpression:rhs + modifier:(modifier || CPDirectPredicateModifier) + type:operator + options:(options || CPCaseInsensitivePredicateOption) + ]; + } + catch(error) + { + CPLogConsole(@"Row predicate error: ["+[error description]+"] for row "+aRow); + predicate = nil; + } + finally + { + return predicate; + } +} + +/*! + @name Supporting Bindings +*/ + +/*! + @brief Returns the class used to create a new row in the “rows” binding. + @return The class used to create a new row in the "rows" binding. + @see setRowClass: +*/ +- (Class)rowClass +{ + return _rowClass; +} + +/*! + @brief Sets the class to use to create a new row in the "rows” binding. + @param rowClass The class to use to create a new row in the "rows” binding. + @see rowClass +*/ +- (void)setRowClass:(Class)rowClass +{ + if (rowClass == [CPMutableDictionary class]) + rowClass = [RowObject class]; + + _rowClass = rowClass; +} + +/*! + @brief Returns the key path for the row type. + @return The key path for the row type. + @discussion The default value is @c @"rowType". + The key path is used to get the row type in the “rows” binding. The corresponding property should be a number that specifies an @c CPRuleEditorRowType value. + @see setRowTypeKeyPath: +*/ +- (CPString)rowTypeKeyPath +{ + return _typeKeyPath; +} + +/*! + @brief Sets the key path for the row type. + @param keyPath The key path for the row type. + @see rowTypeKeyPath +*/ +- (void)setRowTypeKeyPath:(CPString)keyPath +{ + if (_typeKeyPath !== keyPath) + _typeKeyPath = keyPath; +} + +/*! + @brief Returns the key path for the subrows. + @return The key path for the subrows. + @discussion The default value is @"subrows". + The key path is used to get the nested rows in the “rows” binding. The corresponding property should be an ordered to-many relationship containing additional bound row objects. + @see setSubrowsKeyPath: +*/ +- (CPString)subrowsKeyPath +{ + return _subrowsArrayKeyPath; +} + +/*! + @brief Sets the key path for the subrows. + @param keyPath The key path for the subrows. + @see subrowsKeyPath +*/ +- (void)setSubrowsKeyPath:(CPString)keyPath +{ + if (_subrowsArrayKeyPath !== keyPath) + _subrowsArrayKeyPath = keyPath; +} + +/*! + @brief Returns the criteria key path. + @return The criteria key path. + @discussion The default value is @"criteria". + The key path is used to get the criteria for a row in the "rows" binding. The criteria objects are what the delegate returns from -#ruleEditor:child:forCriterion:withRowType: . The corresponding property should be an ordered to-many relationship. + @see setCriteriaKeyPath: +*/ +- (CPString)criteriaKeyPath +{ + return _itemsKeyPath; +} + +/*! + @brief Sets the key path for the criteria. + @param keyPath The key path for the criteria. + @see criteriaKeyPath +*/ +- (void)setCriteriaKeyPath:(CPString)keyPath +{ + if (_itemsKeyPath !== keyPath) + _itemsKeyPath = keyPath; +} + +/*! + @brief Returns the display values key path. + @return The display values key path. + @discussion The default is @"displayValues". + The key path is used to get the display values for a row in the "rows" binding. The display values are what the delegate returns from -#ruleEditor:displayValueForCriterion:inRow: The corresponding property should be an ordered to-many relationship. + @see setDisplayValuesKeyPath: +*/ +- (CPString)displayValuesKeyPath +{ + return _valuesKeyPath; +} + +/*! + @brief Sets the key path for the display values. + @param keyPath The key path for the the display values. + @see displayValuesKeyPath +*/ +- (void)setDisplayValuesKeyPath:(CPString)keyPath +{ + if (_valuesKeyPath !== keyPath) + _valuesKeyPath = keyPath; +} + +/*! + @name Configuring Rows Animation +*/ + +/*! + @brief Returns the current animation for the receiver. + @return The current animation for the receiver. + @see setAnimation: +*/ +- (id)animation +{ + return _currentAnimation; +} + +/*! + @brief Sets the current animation for the receiver. + @param animation A CPViewAnimation object used to animate rows. + @discussion The default is a CPViewAnimation with a @c 0.5s duration and a @c CPAnimationEaseInOut curve. + @see animation +*/ +- (void)setAnimation:(CPViewAnimation)animation +{ + _currentAnimation = animation; + [_currentAnimation setDelegate:self]; +} + +// TODO: delegate methods are implemented by the delegate. How do you document them in doxygen without implementing them here ? @fn not working ? +/*! + @name Delegate Methods +*/ + +/*! + @param editor The rule editor that sent the message. + @param index The index of the requested child criterion. This value must be in the range from 0 up to (but not including) the number of children, as reported by the delegate in ruleEditor:numberOfChildrenForCriterion:withRowType:. + @param criterion The parent of the requested child, or nil if the rule editor is requesting a root criterion. + @param rowType The type of the row. + @return An object representing the requested child (or root) criterion. This object is used by the delegate to represent that position in the tree, and is passed as a parameter in subsequent calls to the delegate. + @discussion This method is required. + + - (id)ruleEditor:(CPRuleEditor)editor child:(CPInteger)index forCriterion:(id)criterion withRowType:(CPRuleEditorRowType)rowType +*/ + +/*! + @param editor The rule editor that sent the message. + @param criterion The criterion for which the value is required. + @param row The row number of criterion. + @return The value for criterion. + @discussion The value should be an instance of CPString, CPView, or CPMenuItem. If the value is a CPView or CPMenuItem, you must ensure it is unique for every invocation of this method; that is, do not return a particular instance of CPView or CPMenuItem more than once. + + - (id)ruleEditor:(CPRuleEditor)editor displayValueForCriterion:(id)criterion inRow:(CPInteger)row +*/ + +/*! + @param editor The rule editor that sent the message. + @param criterion The criterion for which the number of children is required. + @param rowType The type of row of criterion. + @return The number of child items of criterion. If criterion is nil, return the number of root criteria for the row type rowType. + + - (CPInteger)ruleEditor:(CPRuleEditor)editor numberOfChildrenForCriterion:(id)criterion withRowType:(CPRuleEditorRowType)rowType +*/ + +/*! + @param editor The rule editor that sent the message. + @param criterion The criterion for which the predicate parts are required. + @param value The display value. + @param row The row number of criterion. + @return A dictionary representing the parts of the predicate determined by the given criterion and value. The keys of the dictionary should be the string constants specified in Predicate Part Keys with corresponding appropriate values. + + - (CPDictionary)ruleEditor:(CPRuleEditor)editor predicatePartsForCriterion:(id)criterion withDisplayValue:(id)value inRow:(CPInteger)row +*/ + +/*! @cond */ +- (BOOL)acceptsFirstResponder +{ + return YES; +} + +- (void)keyDown:(CPEvent)event +{ + if (!_suppressKeyDownHandling && [self _applicableNestingMode] == CPRuleEditorNestingModeCompound && !_isKeyDown && ([event modifierFlags] & CPAlternateKeyMask)) + { + [_slices makeObjectsPerformSelector:@selector(_configurePlusButtonByRowType:) withObject:CPRuleEditorRowTypeCompound]; + } + + _isKeyDown = YES; +} + +- (void)keyUp:(CPEvent)event +{ + if (!_suppressKeyDownHandling) + { + [_slices makeObjectsPerformSelector:@selector(_configurePlusButtonByRowType:) withObject:CPRuleEditorRowTypeSimple]; + } + + _isKeyDown = NO; +} + +- (_CPRuleEditorViewSliceDropSeparator)_createSliceDropSeparator +{ + var view = [[_CPRuleEditorViewSliceDropSeparator alloc] initWithFrame:CGRectMake(0,-10, [self frame].size.width, 2)]; + [view setAutoresizingMask:CPViewWidthSizable]; +#if PLATFORM(DOM) + view._DOMElement.style.webkitTransition = "opacity 300ms ease-in"; +#endif + return view; +} + +- (BOOL)_suppressKeyDownHandling +{ + return _suppressKeyDownHandling; +} + +- (BOOL)_wantsRowAnimations +{ + return (_currentAnimation != nil); +} + +- (void)_updateButtonVisibilities +{ + [_slices makeObjectsPerformSelector:@selector(_updateButtonVisibilities)]; +} + +- (float)_alignmentGridWidth +{ + return _alignmentGridWidth; +} + +- (float)_minimumFrameHeight +{ + return 26.; +} + +- (CPRuleEditorNestingMode)_applicableNestingMode +{ + if (!_nestingModeDidChange) + return _nestingMode; + + var a = (_nestingMode == CPRuleEditorNestingModeCompound || _nestingMode == CPRuleEditorNestingModeSimple); + var b = ([self rowTypeForRow:0] == CPRuleEditorRowTypeCompound); + + if (a == b) + return _nestingMode; + + return a ? CPRuleEditorNestingModeList : CPRuleEditorNestingModeSimple; +} + +- (BOOL)_shouldHideAddButtonForSlice:(id)slice +{ + return (!_editable || [self _applicableNestingMode] == CPRuleEditorNestingModeSingle); +} + +- (BOOL)_shouldHideSubtractButtonForSlice:(id)slice +{ + if (!_editable) + return YES; + + if (!_disallowEmpty) + return NO; + + var shouldHide, + rowIndex = [slice rowIndex], + parentIndex = [self parentRowForRow:rowIndex], + subrowsIndexes = [self subrowIndexesForRow:parentIndex], + nestingMode = [self _applicableNestingMode]; + + switch (nestingMode) + { + case CPRuleEditorNestingModeCompound: + case CPRuleEditorNestingModeSimple: shouldHide = ([subrowsIndexes count] == 1 && !_allowsEmptyCompoundRows) || parentIndex == -1; + break; + case CPRuleEditorNestingModeList: shouldHide = ([self numberOfRows] == 1); + break; + case CPRuleEditorNestingModeSingle: shouldHide = YES; + break; + default: shouldHide = NO; + } + + return shouldHide; +} + +#pragma mark Rows management + +- (id)_rowCacheForIndex:(int)index +{ + return [_rowCache objectAtIndex:index]; +} + +- (id)_searchCacheForRowObject:(id)rowObject +{ + var count = [_rowCache count], + i; + + for (i = 0; i < count; i++) + { + var cache = _rowCache[i]; + if ([cache rowObject] === rowObject) + return cache; + } + + return nil; +} + +- (int)_rowIndexForRowObject:(id)rowobject +{ + if (rowobject == _boundArrayOwner) + return -1; + + return [[self _searchCacheForRowObject:rowobject] rowIndex]; // Pas bon car le rowIndex du row cache n'est pas synchro avec la position dans _rowCache. +} + +- (CPMutableArray)_subrowObjectsOfObject:(id)object +{ + if (object === _boundArrayOwner) + return [self _rootRowsArray]; + + return [object mutableArrayValueForKey:_subrowsArrayKeyPath]; +} + +- (CPIndexSet)_childlessParentsIfSlicesWereDeletedAtIndexes:(id)indexes +{ + var childlessParents = [CPIndexSet indexSet], + current_index = [indexes firstIndex]; + + while (current_index != CPNotFound) + { + var parentIndex = [self parentRowForRow:current_index]; + + var subrowsIndexes = [self subrowIndexesForRow:parentIndex]; + if ([subrowsIndexes count]==1) + { + if (parentIndex != -1) + return [CPIndexSet indexSetWithIndex:0]; + + var childlessGranPa = [self _childlessParentsIfSlicesWereDeletedAtIndexes:[CPIndexSet indexSetWithIndex:parentIndex]]; + [childlessParents addIndexes:childlessGranPa]; + } + + current_index = [indexes indexGreaterThanIndex:current_index]; + } + + return childlessParents; + // (id)-[RuleEditor _includeSubslicesForSlicesAtIndexes:] +} + +- (CPIndexSet)_includeSubslicesForSlicesAtIndexes:(CPIndexSet)indexes +{ + var subindexes = [indexes copy], + current_index = [indexes firstIndex]; + + while (current_index != CPNotFound) + { + var sub = [self subrowIndexesForRow:current_index]; + [subindexes addIndexes:[self _includeSubslicesForSlicesAtIndexes:sub]]; + current_index = [indexes indexGreaterThanIndex:current_index]; + } + + return subindexes; +} + +- (void)_deleteSlice:(id)slice +{ + var rowindexes = [CPIndexSet indexSetWithIndex:[slice rowIndex]]; + + if (!_allowsEmptyCompoundRows) + { + var childlessIndexes = [self _childlessParentsIfSlicesWereDeletedAtIndexes:rowindexes]; + if ([childlessIndexes count] > 0) + rowindexes = childlessIndexes; + } + + [self removeRowsAtIndexes:rowindexes includeSubrows:YES]; + [self _postRowCountChangedNotificationOfType:CPRuleEditorRowsDidChangeNotification indexes:rowindexes]; // indexes should include childs +} + +- (CPArray)_rootRowsArray +{ + return [_boundArrayOwner mutableArrayValueForKey:_boundArrayKeyPath]; +} + +- (BOOL)_nextUnusedItems:({CPArray})items andValues:({CPArray})values forRow:(int)rowIndex forRowType:(unsigned int)type +{ + var parentItem = [items lastObject], // if empty items array, this is NULL aka the root item; + childrenCount = [self _queryNumberOfChildrenOfItem:parentItem withRowType:type], + foundIndex = CPNotFound; + + if (childrenCount == 0) + return NO; + + var current_criterions = [CPMutableArray array], + count = [self numberOfRows], + row; + + for (row = 0; row < count; row++) // num of rows should be num of siblings of parentItem + { + var aCriteria = [self criteriaForRow:row], + itemIndex = [items count]; + + if ([self rowTypeForRow:row] == type && itemIndex < [aCriteria count]) + { + var crit = [aCriteria objectAtIndex:itemIndex]; + [current_criterions addObject:crit]; + } + } + + while (foundIndex == CPNotFound) + { + var buffer = [CPMutableArray arrayWithArray:current_criterions], + i; + for (i = 0; i < childrenCount; i++) + { + var child = [self _queryChild:i ofItem:parentItem withRowType:type]; + if ([current_criterions indexOfObject:child] == CPNotFound) + { + foundIndex = i; + break; + } + } + + if (foundIndex == CPNotFound) + { + for (var k = 0; k < childrenCount; k++) + { + var anobject = [self _queryChild:k ofItem:parentItem withRowType:type], + index = [buffer indexOfObject:anobject]; + if (index != CPNotFound) + [buffer removeObjectAtIndex:index]; + } + + current_criterions = buffer; + } + } + + var foundItem = [self _queryChild:foundIndex ofItem:parentItem withRowType:type], + foundValue = [self _queryValueForItem:foundItem inRow:rowIndex]; + + [items addObject:foundItem]; + [values addObject:foundValue]; + + return YES; +} + +- (CPMutableArray)_getItemsAndValuesToAddForRow:(int)rowIndex ofType:(CPRuleEditorRowType)type +{ + //var cachedItemsAndValues = _itemsAndValuesToAddForRowType[type]; + //if (cachedItemsAndValues) + // return cachedItemsAndValues; + + var itemsAndValues = [CPMutableArray array], + items = [CPMutableArray array], + values = [CPMutableArray array], + unusedItems = YES; + + while (unusedItems) + unusedItems = [self _nextUnusedItems:items andValues:values forRow:rowIndex forRowType:type]; + + var count = [items count]; + + for (var i = 0; i < count; i++) + { + var item = [items objectAtIndex:i], + value = [values objectAtIndex:i], + itemAndValue = [CPDictionary dictionaryWithObjects:[item,value] forKeys:["item","value"]]; + + [itemsAndValues addObject:itemAndValue]; + } + + return itemsAndValues; +} + +- (void)_addOptionFromSlice:(id)slice ofRowType:(unsigned int)type +{ + // for CPRuleEditorNestingModeSimple only + + var rowIndexEvent = [slice rowIndex], + rowTypeEvent = [self rowTypeForRow:rowIndexEvent]; + + var parentRowIndex = (rowTypeEvent == CPRuleEditorRowTypeCompound) ? rowIndexEvent:[self parentRowForRow:rowIndexEvent]; + + [self insertRowAtIndex:rowIndexEvent + 1 withType:type asSubrowOfRow:parentRowIndex animate:YES]; + + // [self _reconfigureSubviewsAnimate:YES]; + // [self _updatePredicate]; +} + +- (id)_insertNewRowAtIndex:(int)insertIndex ofType:(CPRuleEditorRowType)rowtype withParentRow:(int)parentRowIndex +{ + var row = [[[self rowClass] alloc] init]; + + var itemsandvalues = [self _getItemsAndValuesToAddForRow:insertIndex ofType:rowtype], + newitems = [itemsandvalues valueForKey:@"item"], + newvalues = [itemsandvalues valueForKey:@"value"]; + + [row setValue:newitems forKey:_itemsKeyPath]; + [row setValue:newvalues forKey:_valuesKeyPath]; + [row setValue:rowtype forKey:_typeKeyPath]; + [row setValue:[CPMutableArray array] forKey:_subrowsArrayKeyPath]; + + var subrowsObjects; + if (parentRowIndex == -1 || [self _applicableNestingMode] == CPRuleEditorNestingModeList) + subrowsObjects = [self _rootRowsArray]; + else + { + var parentRowObject = [[self _rowCacheForIndex:parentRowIndex] rowObject]; + subrowsObjects = [self _subrowObjectsOfObject:parentRowObject]; + } + + var relInsertIndex = insertIndex - parentRowIndex - 1; + [subrowsObjects insertObject:row atIndex:relInsertIndex]; + + return row; +} + +#pragma mark Key value observing + +- (void)_startObservingRowObjectsRecursively:(CPArray)rowObjects +{ + [_boundArrayOwner addObserver:self forKeyPath:_boundArrayKeyPath options:CPKeyValueObservingOptionOld|CPKeyValueObservingOptionNew context:boundArrayContext]; + + var count = [rowObjects count]; + + for (var i = 0; i < count; i++) + { + var rowObject = [rowObjects objectAtIndex:i]; + + [rowObject addObserver:self forKeyPath:_itemsKeyPath options:CPKeyValueObservingOptionOld|CPKeyValueObservingOptionNew context:itemsContext]; + [rowObject addObserver:self forKeyPath:_valuesKeyPath options:CPKeyValueObservingOptionOld|CPKeyValueObservingOptionNew context:valuesContext]; + [rowObject addObserver:self forKeyPath:_subrowsArrayKeyPath options:CPKeyValueObservingOptionOld|CPKeyValueObservingOptionNew context:subrowsContext]; + + var subrows = [self _subrowObjectsOfObject:rowObject]; + if ([subrows count] > 0) + [self _startObservingRowObjectsRecursively:subrows]; + } + // ORIG IMPL : calls +keyPathsForValuesAffectingValueForKey: for all keys +} + +- (void)_stopObservingRowObjectsRecursively:(CPArray)rowObjects +{ + [_boundArrayOwner removeObserver:self forKeyPath:_boundArrayKeyPath]; + + var count = [rowObjects count]; + + for (var i = 0; i < count; i++) + { + var rowObject = [rowObjects objectAtIndex:i]; + [rowObject removeObserver:self forKeyPath:_itemsKeyPath]; + [rowObject removeObserver:self forKeyPath:_valuesKeyPath]; + [rowObject removeObserver:self forKeyPath:_subrowsArrayKeyPath]; + + var subrows = [rowObject valueForKey:_subrowsArrayKeyPath]; + if ([subrows count] > 0) + [self _stopObservingRowObjectsRecursively:subrows]; + } +} + +- (void)observeValueForKeyPath:(CPString)keypath ofObject:(id)object change:(CPDictionary)change context:(void)context +{ + var changeKind = [change objectForKey:CPKeyValueChangeKindKey], + changeNewValue = [change objectForKey:CPKeyValueChangeNewKey], + changeOldValue = [change objectForKey:CPKeyValueChangeOldKey], + newRows, + oldRows; + + if (context == boundArrayContext || context == subrowsContext) + { + if (changeKind == CPKeyValueChangeSetting) + { + newRows = changeNewValue; + oldRows = changeOldValue; + + } + else if (changeKind == CPKeyValueChangeInsertion) + { + newRows = [self _subrowObjectsOfObject:object]; + oldRows = [CPArray arrayWithArray:newRows]; + [oldRows removeObjectsInArray:changeNewValue]; + } + else if (changeKind == CPKeyValueChangeRemoval) + { + newRows = [self _subrowObjectsOfObject:object]; + oldRows = [CPArray arrayWithArray:newRows]; + var delIndexes = [change objectForKey:CPKeyValueChangeIndexesKey]; + [oldRows insertObjects:delObjects atIndexes:changeOldValue]; // Pas sur que ce soit bon + } + + [self _changedRowArray:newRows withOldRowArray:oldRows forParent:object]; + + [self _reconfigureSubviewsAnimate:[self _wantsRowAnimations]]; + [self _postRowCountChangedNotificationOfType:CPRuleEditorRowsDidChangeNotification indexes:[change objectForKey:CPKeyValueChangeIndexesKey]]; + + } + else if (context == itemsContext) + { + } + else if (context == valuesContext) + { + } +} + +- (void)_changedItem:(id)fromItem toItem:(id)toItem inRow:(int)aRow atCriteriaIndex:(int)fromItemIndex +{ + var criteria = [self criteriaForRow:aRow], + displayValues = [self displayValuesForRow:aRow], + rowType = [self rowTypeForRow:aRow], + anItem = toItem; + //fromItemIndex = [criteria indexOfObjectIdenticalTo:fromItem]; + + var items = [criteria subarrayWithRange:CPMakeRange(0, fromItemIndex)], + values = [displayValues subarrayWithRange:CPMakeRange(0, fromItemIndex)]; + + _lastRow = aRow; + + while (YES) + { + [items addObject:anItem]; + var value = [self _queryValueForItem:anItem inRow:aRow]; + [values addObject:value]; + + if (![self _queryNumberOfChildrenOfItem:anItem withRowType:rowType]) + break; + + anItem = [self _queryChild:0 ofItem:anItem withRowType:rowType]; + } + + var object = [[self _rowCacheForIndex:aRow] rowObject]; + [object setValue:items forKey:_itemsKeyPath]; + [object setValue:values forKey:_valuesKeyPath]; + + var slice = [_slices objectAtIndex:aRow]; + [slice _reconfigureSubviews]; + [self _sendRuleAction]; + [self _postRuleOptionChangedNotification]; +} + +- (void)_changedRowArray:(CPArray)newRows withOldRowArray:(CPArray)oldRows forParent:(id)parentRowObject +{ + var newRowCount = [newRows count], + oldRowCount = [oldRows count], + deltaCount = newRowCount - oldRowCount, + minusCount = MIN(newRowCount, oldRowCount), + maxCount = MAX(newRowCount, oldRowCount), + + insertCacheIndexes = [CPIndexSet indexSet], + newCaches = [CPArray array], + + parentCacheIndentation, + parentCacheIndex = [self _rowIndexForRowObject:parentRowObject], + + newRowCacheIndex = 0, + changeStartIndex = 0; + + [self _stopObservingRowObjectsRecursively:oldRows]; + [self _startObservingRowObjectsRecursively:newRows]; + + //var gindexes = [self _globalIndexesForSubrowIndexes:[CPIndexSet indexSetWithIndexesInRange:CPMakeRange(0,oldRowCount)] ofParentObject:parentRowObject]; + + if (parentCacheIndex == -1) + parentCacheIndentation = -1; + else + parentCacheIndentation = [[self _rowCacheForIndex:parentCacheIndex] indentation]; + + for (; newRowCacheIndex < newRowCount; newRowCacheIndex++) + { + var newCacheGlobalIndex = (parentCacheIndex + 1) + newRowCacheIndex, + obj = [newRows objectAtIndex:newRowCacheIndex], + newRowType = [obj valueForKey:_typeKeyPath]; + + var cache = [[_CPRuleEditorCache alloc] init]; + [cache setRowObject:obj]; + [cache setRowIndex:newCacheGlobalIndex]; + [cache setIndentation:parentCacheIndentation + 1]; + + [insertCacheIndexes addIndex:newCacheGlobalIndex]; + [newCaches addObject:cache]; + } + + //var lastCacheIndex = [self _rowIndexForRowObject:[oldRows lastObject]]; + [_rowCache removeObjectsInRange:CPMakeRange(parentCacheIndex + 1, [oldRows count])]; + [_rowCache insertObjects:newCaches atIndexes:insertCacheIndexes]; + + for (; changeStartIndex < minusCount; changeStartIndex++) + { + var oldrow = [oldRows objectAtIndex:changeStartIndex], + newrow = [newRows objectAtIndex:changeStartIndex]; + + if (newrow != oldrow) + break; + } + + var replaceCount = (deltaCount == 0) ? maxCount : maxCount - minusCount; + var startIndex = parentCacheIndex + changeStartIndex + 1; + + if (deltaCount <= 0) + { + var removeIndexes = [CPIndexSet indexSetWithIndexesInRange:CPMakeRange(startIndex, replaceCount)]; + var removeSlices = [_slices objectsAtIndexes:removeIndexes]; + [removeSlices makeObjectsPerformSelector:@selector(removeFromSuperview)]; + [_slices removeObjectsAtIndexes:removeIndexes]; + } + + if (deltaCount >= 0) + { + var newIndentation = parentCacheIndentation + 1, + newIndex = startIndex; + + for (; newIndex < startIndex + replaceCount; newIndex++) + { + var newslice = [self _newSlice], + rowType = [self rowTypeForRow:newIndex]; + + [newslice setRowIndex:newIndex]; + [newslice setIndentation:newIndentation]; + [newslice _setRowType:rowType]; + [newslice _configurePlusButtonByRowType:CPRuleEditorRowTypeSimple]; + + [_slices insertObject:newslice atIndex:newIndex]; + } + } + + var emptyArray = [CPArray array], + count = [oldRows count], + n; + for (n = 0; n < count; n++) + { + var oldRow = [oldRows objectAtIndex:n], + subOldRows = [self _subrowObjectsOfObject:oldRow]; + + if ([subOldRows count] > 0) + [self _changedRowArray:emptyArray withOldRowArray:subOldRows forParent:oldRow]; + } + + count = [newRows count]; + for (n = 0; n < count; n++) + { + var newRow = [newRows objectAtIndex:n], + subnewRows = [self _subrowObjectsOfObject:newRow]; + + if ([subnewRows count] > 0) + [self _changedRowArray:subnewRows withOldRowArray:emptyArray forParent:newRow]; + } +} + +- (void)bind:(CPString)binding toObject:(id)observableController withKeyPath:(CPString)keyPath options:(CPDictionary)options +{ + if (keyPath == nil || [observableController valueForKey:keyPath] == nil) + { + [CPException raise:CPInvalidArgumentException reason:"Keypath or bound object cannot be nil"]; + return; + } + + if ([binding isEqualToString:@"rows"]) + { + if ([observableController respondsToSelector:@selector(objectClass)]) + _rowClass = [observableController objectClass]; + + [self _setBoundDataSource:observableController withKeyPath:keyPath options:options]; + } + else if ([binding isEqualToString:CPValueBinding]) + [super bind:binding toObject:observableController withKeyPath:keyPath options:options]; + else + [CPException raise:CPInvalidArgumentException reason:"Keypath or bound object cannot be nil"]; +} + +- (void)unbind:(id)object +{ + _rowClass = [RowObject class]; + [super unbind:object]; +} + +- (void)_setBoundDataSource:(id)datasource withKeyPath:(CPString)keyPath options:(CPDictionary)options +{ + if (_boundArrayOwner != nil) + [_boundArrayOwner removeObserver:self forKeyPath:_boundArrayKeyPath]; + + _boundArrayKeyPath = keyPath; + _boundArrayOwner = datasource; + + var boundRows = [_boundArrayOwner valueForKey:_boundArrayKeyPath]; + + [_boundArrayOwner addObserver:self forKeyPath:_boundArrayKeyPath options:CPKeyValueObservingOptionOld|CPKeyValueObservingOptionNew context:boundArrayContext]; + + if ([boundRows isKindOfClass:[CPArray class]] && [boundRows count] > 0) + [_boundArrayOwner setValue:boundRows forKey:_boundArrayKeyPath]; +} + +- (void)_setPredicate:(CPPredicate)predicate +{ + if (_predicate !== predicate) + _predicate = predicate; +} + +- (void)_updatePredicate +{ + if (_delegateWantsValidation) + { + var selector = @selector(ruleEditor:predicatePartsForCriterion:withDisplayValue:inRow:); + if (![_ruleDelegate respondsToSelector:selector]) + return; + + _delegateWantsValidation = NO; + } + + var subpredicates = [CPMutableArray array], + subindexes = [self subrowIndexesForRow:-1], + current_index = [subindexes firstIndex]; + + while (current_index != CPNotFound) + { + var subpredicate = [self predicateForRow:current_index]; + + if (subpredicate != nil) + [subpredicates addObject:subpredicate]; + + current_index = [subindexes indexGreaterThanIndex:current_index]; + } + + var new_predicate = [[CPCompoundPredicate alloc] initWithType:CPOrPredicateType subpredicates:subpredicates]; + + [self _setPredicate:new_predicate]; +} + +- (_CPRuleEditorViewSliceRow)_newSlice +{ + var sliceRect = CGRectMake(0, 0, CGRectGetWidth([self frame]), 0), + slice = [self _createNewSliceWithFrame:sliceRect ruleEditorView:self]; + + return slice; +} + +- (_CPRuleEditorViewSliceRow)_createNewSliceWithFrame:(CGRect)frame ruleEditorView:(CPRuleEditor)editor +{ + return [[_CPRuleEditorViewSliceRow alloc] initWithFrame:frame ruleEditorView:editor]; +} + +- (void)_reconfigureSubviewsAnimate:(BOOL)animate +{ + [self _updateSliceRows]; + + var viewAnimations = [CPMutableArray array], + added_slices = [CPMutableArray array], + count = [_slices count]; + + for (var i = 0; i < count; i++) + { + var aslice = [_slices objectAtIndex:i], + targetRect = [aslice _animationTargetRect], + startRect = [aslice frame], + startIndex = [aslice rowIndex] - 1; + + if ([aslice superview] == nil) + { + startRect = CGRectMake(0, startIndex * _sliceHeight, CGRectGetWidth(startRect), _sliceHeight); + [aslice _reconfigureSubviews]; + [added_slices addObject:aslice]; + } + + if (animate) + { + var animation = [CPDictionary dictionary]; + [animation setObject:aslice forKey:CPViewAnimationTargetKey]; + [animation setObject:startRect forKey:CPViewAnimationStartFrameKey]; + [animation setObject:targetRect forKey:CPViewAnimationEndFrameKey]; + + [viewAnimations insertObject:animation atIndex:0]; + } + else + [aslice setFrame:targetRect]; + } + + var addcount = [added_slices count]; + for (var i = 0; i < addcount; i++) + [_slicesHolder addSubview:added_slices[i] positioned:CPWindowBelow relativeTo:nil]; + + if (animate) + { + [_currentAnimation setViewAnimations:viewAnimations]; + [_currentAnimation startAnimation]; + } + + _lastRow = [self numberOfRows] - 1; + + if (_lastRow == -1) + _nestingModeDidChange = NO; + + [self setNeedsDisplay:YES]; + [_slices makeObjectsPerformSelector:@selector(_updateButtonVisibilities)]; +} + +- (void)animationDidEnd:(CPViewAnimation)animation +{ +// var nextSimple = [self _getItemsAndValuesToAddForRow:0 ofType:CPRuleEditorRowTypeSimple], +// nextCompound = [self _getItemsAndValuesToAddForRow:0 ofType:CPRuleEditorRowTypeCompound]; + +// _itemsAndValuesToAddForRowType = {CPRuleEditorRowTypeSimple:nextSimple, CPRuleEditorRowTypeCompound:nextCompound}; +} + +- (void)_updateSliceRows +{ + var width = [self frame].size.width, + count = [_slices count]; + + for (var i = 0; i < count; i++) + { + var slice = [_slices objectAtIndex:i], + targetRect = CGRectMake(0, i * _sliceHeight, width, _sliceHeight); + + [slice setRowIndex:i]; + [slice _setAnimationTargetRect:targetRect]; + } +} + +- (CPArray)_backgroundColors +{ + return [self valueForThemeAttribute:@"alternating-row-colors"]; +} + +- (CPColor)_selectedRowColor +{ + return [self valueForThemeAttribute:@"selected-color"]; +} + +- (CPColor)_sliceTopBorderColor +{ + return [self valueForThemeAttribute:@"slice-top-border-color"]; +} + +- (CPColor)_sliceBottomBorderColor +{ + return [self valueForThemeAttribute:@"slice-bottom-border-color"]; +} + +- (CPColor)_sliceLastBottomBorderColor +{ + return [self valueForThemeAttribute:@"slice-last-bottom-border-color"]; +} + +- (CPFont)font +{ + return [self valueForThemeAttribute:@"font"]; +} + +- (CPImage)_addImage +{ + return [self valueForThemeAttribute:@"add-image"]; +} + +- (CPImage)_removeImage +{ + return [self valueForThemeAttribute:@"remove-image"]; +} + +- (CPString)_toolTipForAddCompoundRowButton +{ + return @"Add Compound row"; +} + +- (CPString)_toolTipForAddSimpleRowButton +{ + return @"Add row"; +} + +- (CPString)_toolTipForDeleteRowButton +{ + return @"Delete row"; +} + +- (void)_updateSliceIndentations +{ + [self _updateSliceIndentationAtIndex:0 toIndentation:0 withIndexSet:[self subrowIndexesForRow:0]]; +} + +- (void)_updateSliceIndentationAtIndex:(int)index toIndentation:(int)indentation withIndexSet:(id)indexes +{ + var current_index = [indexes firstIndex]; + + while (current_index !=CPNotFound) + { + var subindexes = [self subrowIndexesForRow:index]; + [self _updateSliceIndentationAtIndex:current_index toIndentation:indentation + 1 withIndexSet:subindexes]; + current_index = [indexes indexGreaterThanIndex:current_index]; + } + + [[_slices objectAtIndex:index] setIndentation:indentation]; +} + +- (CPArray)_selectedSlices +{ + var _selectedSlices = [CPMutableArray array], + count = [_slices count], + i; + + for (i = 0; i < count; i++) + { + var slice = _slices[i]; + if ([slice _isSelected]) + [_selectedSlices addObject:slice]; + } + + return _selectedSlices; +} + +- (int)_lastSelectedSliceIndex +{ + var lastIndex = -1, + count = [_slices count], + i; + + for (i = 0; i < count; i++) + { + var slice = _slices[i]; + if ([slice _isLastSelected]) + return [slice rowIndex]; + } + + return CPNotFound; +} + +- (void)_mouseUpOnSlice:(id)slice withEvent:(CPEvent)event +{ + if ([slice _rowType] != CPRuleEditorRowTypeSimple) + return; + + var modifierFlags = [event modifierFlags], + extend = (modifierFlags & CPCommandKeyMask) || (modifierFlags & CPShiftKeyMask), + rowIndexes = [CPIndexSet indexSetWithIndex:[slice rowIndex]]; + + [self selectRowIndexes:rowIndexes byExtendingSelection:extend]; +} + +- (void)_mouseDownOnSlice:(id)slice withEvent:(CPEvent)event +{ +} + +- (void)_rightMouseDownOnSlice:(_CPRuleEditorViewSlice)slice withEvent:(CPEvent)event +{ +} + +- (void)_performClickOnSlice:(id)slice withEvent:(CPEvent)event +{ +} + +- (void)_setSuppressKeyDownHandling:(BOOL)flag +{ + _suppressKeyDownHandling = flag; +} + +- (void)selectAll:(id)sender +{ + var count = [_slices count]; + + while (count--) + { + var slice = _slices[count]; + [slice _setSelected:YES]; + [slice setNeedsDisplay:YES]; + } +} + +- (void)_deselectAll +{ + var count = [_slices count]; + + while (count--) + { + var slice = _slices[count]; + [slice _setSelected:NO]; + [slice _setLastSelected:NO]; + [slice setNeedsDisplay:YES]; + } +} + +- (int)_queryNumberOfChildrenOfItem:(id)item withRowType:(CPRuleEditorRowType)type +{ + return [_ruleDelegate ruleEditor:self numberOfChildrenForCriterion:item withRowType:type]; +} + +- (id)_queryChild:(int)childIndex ofItem:(id)item withRowType:(CPRuleEditorRowType)type +{ + return [_ruleDelegate ruleEditor:self child:childIndex forCriterion:item withRowType:type]; +} + +- (id)_queryValueForItem:(id)item inRow:(int)row +{ + return [_ruleDelegate ruleEditor:self displayValueForCriterion:item inRow:row]; +} + +- (int)_lastRow +{ + return _lastRow; +} + +- (int)_countOfRowsStartingAtObject:(id)object +{ + var index = [self _rowIndexForRowObject:object]; + return ([self numberOfRows] - index); +} + +- (void)_setAlignmentGridWidth:(float)width +{ + _alignmentGridWidth = width; +} + +- (BOOL)_validateItem:(id)item value:(id)value inRow:(int)row +{ + return [self _queryCanSelectItem:item displayValue:value inRow:row]; +} + +- (BOOL)_queryCanSelectItem:(id)item displayValue:(id)value inRow:(int)row +{ + return YES; +} + +- (void)_windowChangedKeyState +{ + [self setNeedsDisplay:YES]; +} + +- (void)setNeedsDisplay:(BOOL)flag +{ + [_slices makeObjectsPerformSelector:@selector(setNeedsDisplay:) withObject:flag]; + [super setNeedsDisplay:flag]; +} + +- (void)setFrameSize:(CPSize)size +{ + [self setNeedsDisplay:YES]; + + if (CGRectGetWidth([self frame]) != size.width) + [_slices makeObjectsPerformSelector:@selector(setNeedsLayout)]; + + [super setFrameSize:size]; +} + +- (CPIndexSet)_selectedSliceIndices +{ + var selectedIndices = [CPMutableIndexSet indexSet], + count = [_slices count], + i; + + for (i = 0; i < count; i++) + { + var slice = _slices[i]; + if ([slice _isSelected]) + [selectedIndices addIndex:[slice rowIndex]]; + } + + return selectedIndices; +} + +- (void)mouseDragged:(CPEvent)event +{ + if (!_editable) + return; + + var point = [self convertPoint:[event locationInWindow] fromView:nil], + view = [_slices objectAtIndex:FLOOR(point.y / _sliceHeight)]; + + if ([self _dragShouldBeginFromMouseDown:view]) + [self _performDragForSlice:view withEvent:event]; +} + +- (BOOL)_dragShouldBeginFromMouseDown:(CPView)view +{ + return (([self nestingMode] == CPRuleEditorNestingModeList || [view rowIndex] != 0) && _editable && [view isKindOfClass:[_CPRuleEditorViewSliceRow class]] && _draggingRows == nil); +} + +- (BOOL)_performDragForSlice:(id)slice withEvent:(CPEvent)event +{ + var dragPoint, + mainRowIndex = [slice rowIndex], + draggingRows = [CPIndexSet indexSetWithIndex:mainRowIndex], + selected_indices = [self _selectedSliceIndices], + pasteboard = [CPPasteboard pasteboardWithName: CPDragPboard]; + + [pasteboard declareTypes:[CPArray arrayWithObjects: CPRuleEditorItemPBoardType, nil] owner: self]; + + if ([selected_indices containsIndex:mainRowIndex]) + [draggingRows addIndexes:selected_indices]; + _draggingRows = [self _includeSubslicesForSlicesAtIndexes:draggingRows]; + + var firstIndex = [_draggingRows firstIndex], + firstSlice = [_slices objectAtIndex:firstIndex], + dragview = [[CPView alloc] initWithFrame:[firstSlice frame]]; + +#if PLATFORM(DOM) + var html = firstSlice._DOMElement.innerHTML; + dragview._DOMElement.innerHTML = [html copy]; +#endif + [dragview setBackgroundColor:[firstSlice backgroundColor]]; + [dragview setAlphaValue:0.7]; + + dragPoint = CPMakePoint(0, firstIndex * _sliceHeight); + + [self dragView:dragview + at:dragPoint + offset:CGSizeMake(0, _sliceHeight) + event:event + pasteboard:pasteboard + source:self + slideBack:YES]; + + return YES; +} + +- (CPDragOperation)draggingEntered:(id < CPDraggingInfo >)sender +{ + if ([sender draggingSource] == self) + { + [self _clearDropLine]; + return CPDragOperationMove; + } + + return CPDragOperationNone; +} + +- (void)draggingExited:(id)sender +{ + [self _clearDropLine]; + [self setNeedsDisplay:YES]; +} + +- (void)_clearDropLine +{ + [_dropLineView setAlphaValue:0]; + + if (_subviewIndexOfDropLine != CPNotFound && _subviewIndexOfDropLine < _lastRow) + { + var previousBelowSlice = [_slices objectAtIndex:_subviewIndexOfDropLine]; + [previousBelowSlice setFrameOrigin:CGPointMake(0, [previousBelowSlice rowIndex] * _sliceHeight)]; + } + + _subviewIndexOfDropLine = CPNotFound; +} + +- (CPDragOperation)draggingUpdated:(id )sender +{ + var point = [self convertPoint:[sender draggingLocation] fromView:nil], + y = point.y + _sliceHeight /2, + indexOfDropLine = FLOOR(y / _sliceHeight), + numberOfRows = [self numberOfRows]; + + if (indexOfDropLine < 0 || indexOfDropLine > numberOfRows || (indexOfDropLine >= [_draggingRows firstIndex] && indexOfDropLine <= [_draggingRows lastIndex] + 1)) + { + if (_subviewIndexOfDropLine != CPNotFound && indexOfDropLine != _subviewIndexOfDropLine) + [self _clearDropLine]; + return CPDragOperationNone; + } + + if (_subviewIndexOfDropLine != indexOfDropLine) + { + if (_subviewIndexOfDropLine != CPNotFound && _subviewIndexOfDropLine < numberOfRows) + { + var previousBelowSlice = [_slices objectAtIndex:_subviewIndexOfDropLine]; + [previousBelowSlice setFrameOrigin:CPMakePoint(0, [previousBelowSlice rowIndex] * _sliceHeight)]; + } + + if (indexOfDropLine <= _lastRow && indexOfDropLine < numberOfRows) + { + var belowSlice = [_slices objectAtIndex:indexOfDropLine]; + [belowSlice setFrameOrigin:CGPointMake(0, [belowSlice rowIndex] * _sliceHeight + 2)]; + } + + [_dropLineView setAlphaValue:1]; + [_dropLineView setFrameOrigin:CGPointMake(CGRectGetMinX([_dropLineView frame]), indexOfDropLine * _sliceHeight)]; + + _subviewIndexOfDropLine = indexOfDropLine; + } + + return CPDragOperationMove; +} + +- (BOOL)prepareForDragOperation:(id < CPDraggingInfo >)sender +{ + return (_subviewIndexOfDropLine != CPNotFound); +} + +- (BOOL)performDragOperation:(id < CPDraggingInfo >)info +{ + var aboveInsertIndexCount = 0, + object, + removeIndex; + + var rowObjects = [_rowCache valueForKey:@"rowObject"], + index = [_draggingRows lastIndex]; + + var parentRowIndex = [self parentRowForRow:index]; // first index of draggingrows + var parentRowObject = (parentRowIndex == -1) ? _boundArrayOwner : [[self _rowCacheForIndex:parentRowIndex] rowObject]; + var insertIndex = _subviewIndexOfDropLine; + + while (index != CPNotFound) + { + if (index >= insertIndex) + { + removeIndex = index + aboveInsertIndexCount; + aboveInsertIndexCount += 1; + } + else + { + removeIndex = index; + insertIndex -= 1; + } + + object = [rowObjects objectAtIndex:removeIndex]; + [self removeRowAtIndex:removeIndex]; + [[self _subrowObjectsOfObject:parentRowObject] insertObject:object atIndex:insertIndex - parentRowIndex - 1]; + + index = [_draggingRows indexLessThanIndex:index]; + } + + [self _clearDropLine]; + _draggingRows = nil; + return YES; +} + +- (CPIndexSet)_draggingTypes +{ + return [CPIndexSet indexSetWithIndex:CPDragOperationMove]; +} + +- (void)draggedView:(CPView)dragView endedAt:(CPPoint)aPoint operation:(CPDragOperation)operation +{ + _draggingRows = nil; +} + +- (BOOL)wantsPeriodicDraggingUpdates +{ + return NO; +} + +- (void)pasteboard:(CPPasteboard)pasteboard provideDataForType:(int)type +{ +} + +- (void)_setWindow:(id)window +{ + [super _setWindow:window]; +} + +- (void)_windowUpdate:(id)sender +{ + [super _windowUpdate:sender]; +} + +- (void)_postRuleOptionChangedNotification +{ + [self reloadPredicate]; + [self _sendRuleAction]; + [[CPNotificationCenter defaultCenter] postNotificationName:CPRuleEditorRulesDidChangeNotification object:self]; +} + +- (void)_postRowCountChangedNotificationOfType:(CPString)notificationName indexes:indexes +{ + [self reloadPredicate]; + [self _sendRuleAction]; + [[CPNotificationCenter defaultCenter] postNotificationName:notificationName object:self userInfo:[CPDictionary dictionaryWithObject:indexes forKey:"indexes"]]; +} + +- (CPIndexSet)_globalIndexesForSubrowIndexes:(CPIndexSet)indexes ofParentObject:(id)parentRowObject +{ + var _subrows = [self _subrowObjectsOfObject:parentRowObject], + parentRowIndex = [self _rowIndexForRowObject:parentRowObject], + + globalIndexes = [CPMutableIndexSet indexSet], + current_index = [indexes firstIndex], + numberOfChildrenOfPreviousBrother = 0; + + while (current_index != CPNotFound) + { + var globalChildIndex = current_index + parentRowIndex + 1 + numberOfChildrenOfPreviousBrother; + [globalIndexes addIndex:globalChildIndex]; + + if ([self rowTypeForRow:globalChildIndex] == CPRuleEditorRowTypeCompound) + { + var rowObject = [[self _rowCacheForIndex:current_index] rowObject], + subrows = [self _subrowObjectsOfObject:rowObject]; + + var subIndexes = [self _globalIndexesForSubrowIndexes:[CPIndexSet indexSetWithIndexesInRange:CPMakeRange(0,[subrows count])] ofParentObject:rowObject]; + numberOfChildrenOfPreviousBrother = [subIndexes count]; + } + + current_index = [indexes indexGreaterThanIndex:current_index]; + } + + return globalIndexes; +} + +- (void)_sendRuleAction +{ + var action = [self action], + target = [self target]; + + if (action && target) + [self sendAction:[self action] to:[self target]]; +} + +- (BOOL)_sendsActionOnIncompleteTextChange +{ + return YES; +} + +- (void)_getAllAvailableItems:(id)items values:(id)values asChildrenOfItem:(id)parentItem inRow:(int)aRow +{ + var type, + indexofCriterion, + numOfChildren; + + var availItems = [CPMutableArray array], + availValues = [CPMutableArray array]; + + var criterion = nil, + value = nil; + + _lastRow = aRow; + type = [self rowTypeForRow:aRow]; + numOfChildren = [self _queryNumberOfChildrenOfItem:parentItem withRowType:type]; + + var criteria = [self criteriaForRow:aRow]; + indexofCriterion = [criteria indexOfObject:criterion]; + + if (parentItem != nil + && indexofCriterion != CPNotFound + && indexofCriterion < [criteria count] - 1) + { + var next = indexofCriterion + 1; + + criterion = [criteria objectAtIndex:next]; + var values = [self displayValuesForRow:aRow]; + value = [values objectAtIndex:next]; + } + + for (var i = 0; i < numOfChildren; ++i) + { + var aChild = [self _queryChild:i ofItem:parentItem withRowType:type]; + var availChild = aChild, + availValue = value; + + if ( criterion != aChild ) + availValue = [self _queryValueForItem:aChild inRow:aRow]; + + if ( !availValue ) + availValue = [self _queryValueForItem:availChild inRow:aRow]; + + [availItems addObject:availChild]; + [availValues addObject:availValue]; + } + + [items addObjectsFromArray:availItems]; + [values addObjectsFromArray:availValues]; +} + +@end + +var CPRuleEditorAlignmentGridWidthKey = @"CPRuleEditorAlignmentGridWidth", + CPRuleEditorSliceHeightKey = @"CPRuleEditorSliceHeight", + CPRuleEditorStringsFilenameKey = @"CPRuleEditorStringsFilename", + CPRuleEditorEditableKey = @"CPRuleEditorEditable", + CPRuleEditorAllowsEmptyCompoundRowsKey = @"CPRuleEditorAllowsEmptyCompoundRows", + CPRuleEditorDisallowEmptyKey = @"CPRuleEditorDisallowEmpty", + CPRuleEditorNestingModeKey = @"CPRuleEditorNestingMode", + CPRuleEditorRowTypeKeyPathKey = @"CPRuleEditorRowTypeKeyPath", + CPRuleEditorItemsKeyPathKey = @"CPRuleEditorItemsKeyPath", + CPRuleEditorValuesKeyPathKey = @"CPRuleEditorValuesKeyPath", + CPRuleEditorSubrowsArrayKeyPathKey = @"CPRuleEditorSubrowsArrayKeyPath", + CPRuleEditorBoundArrayKeyPathKey = @"CPRuleEditorBoundArrayKeyPath", + CPRuleEditorRowClassKey = @"CPRuleEditorRowClass", + CPRuleEditorSlicesHolderKey = @"CPRuleEditorSlicesHolder", + CPRuleEditorSlicesKey = @"CPRuleEditorSlices", + CPRuleEditorDelegateKey = @"CPRuleEditorDelegate", + CPRuleEditorBoundArrayOwnerKey = @"CPRuleEditorBoundArrayOwner"; + +@implementation CPRuleEditor (CPCoding) + +- (id)initWithCoder:(CPCoder)coder +{ + self = [super initWithCoder:coder]; + if (self != nil) + { + [self setFormattingStringsFilename:[coder decodeObjectForKey:CPRuleEditorStringsFilenameKey]]; + _alignmentGridWidth = [coder decodeFloatForKey:CPRuleEditorAlignmentGridWidthKey]; + _sliceHeight = [coder decodeDoubleForKey:CPRuleEditorSliceHeightKey]; + _editable = [coder decodeBoolForKey:CPRuleEditorEditableKey]; + _allowsEmptyCompoundRows = [coder decodeBoolForKey:CPRuleEditorAllowsEmptyCompoundRowsKey]; + _disallowEmpty = [coder decodeBoolForKey:CPRuleEditorDisallowEmptyKey]; + _nestingMode = [coder decodeIntForKey:CPRuleEditorNestingModeKey]; + _typeKeyPath = [coder decodeObjectForKey:CPRuleEditorRowTypeKeyPathKey]; + _itemsKeyPath = [coder decodeObjectForKey:CPRuleEditorItemsKeyPathKey]; + _valuesKeyPath = [coder decodeObjectForKey:CPRuleEditorValuesKeyPathKey]; + _subrowsArrayKeyPath = [coder decodeObjectForKey:CPRuleEditorSubrowsArrayKeyPathKey]; + _boundArrayKeyPath = [coder decodeObjectForKey:CPRuleEditorBoundArrayKeyPathKey]; + + _slicesHolder = [[self subviews] objectAtIndex:0]; + _boundArrayOwner = [coder decodeObjectForKey:CPRuleEditorBoundArrayOwnerKey]; + _slices = [coder decodeObjectForKey:CPRuleEditorSlicesKey]; + _ruleDelegate = [coder decodeObjectForKey:CPRuleEditorDelegateKey]; + + [self _initRuleEditorShared]; + } + + return self; +} + +- (void)encodeWithCoder:(id)coder +{ + [super encodeWithCoder:coder]; + + [coder encodeBool:_editable forKey:CPRuleEditorEditableKey]; + [coder encodeBool:_allowsEmptyCompoundRows forKey:CPRuleEditorAllowsEmptyCompoundRowsKey]; + [coder encodeBool:_disallowEmpty forKey:CPRuleEditorDisallowEmptyKey]; + + [coder encodeFloat:_alignmentGridWidth forKey:CPRuleEditorAlignmentGridWidthKey]; + [coder encodeDouble:_sliceHeight forKey:CPRuleEditorSliceHeightKey]; + [coder encodeInt:_nestingMode forKey:CPRuleEditorNestingModeKey]; + + [coder encodeObject:_stringsFilename forKey:CPRuleEditorStringsFilenameKey]; + [coder encodeObject:_typeKeyPath forKey:CPRuleEditorRowTypeKeyPathKey]; + [coder encodeObject:_itemsKeyPath forKey:CPRuleEditorItemsKeyPathKey]; + [coder encodeObject:_valuesKeyPath forKey:CPRuleEditorValuesKeyPathKey]; + [coder encodeObject:_boundArrayKeyPath forKey:CPRuleEditorBoundArrayKeyPathKey]; + [coder encodeObject:_subrowsArrayKeyPath forKey:CPRuleEditorSubrowsArrayKeyPathKey]; + + [coder encodeConditionalObject:_slicesHolder forKey:CPRuleEditorSlicesHolderKey]; + [coder encodeObject:_slices forKey:CPRuleEditorSlicesKey]; + [coder encodeObject:_boundArrayOwner forKey:CPRuleEditorBoundArrayOwnerKey]; +} + +@end + +var CriteriaKey = @"criteria", + SubrowsKey = @"subrows", + DisplayValuesKey = @"displayValues", + RowTypeKey = @"rowType"; + +@implementation RowObject : CPObject +{ + CPArray subrows @accessors; + CPArray criteria @accessors; + CPArray displayValues @accessors; + CPInteger rowType @accessors; +} + +- (id)copy +{ + var copy = [[RowObject alloc] init]; + [copy setSubrows:[[CPArray alloc] initWithArray:subrows copyItems:YES]]; + [copy setCriteria:[[CPArray alloc] initWithArray:criteria copyItems:YES]]; + [copy setDisplayValues:[[CPArray alloc] initWithArray:displayValues copyItems:YES]]; + [copy setRowType:rowType]; + + return copy; +} + +- (CPString)description +{ + return "\nsubrows = " + [subrows description] + "\ncriteria = " + [criteria description] + "\ndisplayValues = " + [displayValues description]; +} + +- (id)initWithCoder:(id)coder +{ + self = [super init]; + if (self != nil) + { + subrows = [coder decodeObjectForKey:SubrowsKey]; + criteria = [coder decodeObjectForKey:CriteriaKey]; + displayValues = [coder decodeObjectForKey:DisplayValuesKey]; + rowType = [coder decodeIntForKey:RowTypeKey]; + } + + return self; +} + +- (void)encodeWithCoder:(id)coder +{ + [coder encodeObject:subrows forKey:SubrowsKey]; + [coder encodeObject:criteria forKey:CriteriaKey]; + [coder encodeObject:displayValues forKey:DisplayValuesKey]; + [coder encodeInt:rowType forKey:RowTypeKey]; +} + +@end + +@implementation _CPRuleEditorCache : CPObject +{ + CPDictionary rowObject @accessors; + CPInteger rowIndex @accessors; + CPInteger indentation @accessors; +} + +- (CPString)description +{ + return [CPString stringWithFormat:@"<%d object:%d rowIndex:%d indentation:%d>",[self hash], [rowObject hash], rowIndex, indentation]; +} + +@end + +var CPBoundArrayKey = @"CPBoundArray"; + +@implementation _CPRuleEditorViewUnboundRowHolder : CPObject +{ + CPArray boundArray; +} + +- (id)init +{ + if (self = [super init]) + boundArray = [[CPArray alloc] init]; + + return self; +} + +- (id)initWithCoder:(id)coder +{ + if (self = [super init]) + boundArray = [coder decodeObjectForKey:CPBoundArrayKey]; + + return self; +} + +- (void)encodeWithCoder:(id)coder +{ + [coder encodeObject:boundArray forKey:CPBoundArrayKey]; +} + +@end + +@implementation _CPRuleEditorViewSliceHolder : CPView +{ +} + +- (void)addSubview:(CPView)subview +{ + [self setNeedsDisplay:YES]; + [super addSubview:subview]; +} + +@end + +var dropSeparatorColor = [CPColor colorWithHexString:@"4886ca"]; + +@implementation _CPRuleEditorViewSliceDropSeparator : CPView +{ +} + +- (void)drawRect:(CPRect)rect +{ + var context = [[CPGraphicsContext currentContext] graphicsPort]; + CGContextSetFillColor(context, dropSeparatorColor); + CGContextFillRect(context, [self bounds]); +} + +@end + +@implementation CPObject (CPRuleEditorSliceRow) + +- (int)valueType +{ + var result = 0; + + var isString = [self isKindOfClass:[CPString class]]; + if ( !isString ) + { + var isView = [self isKindOfClass:[CPView class]]; + result = 1; + if ( !isView ) + { + var ismenuItem = [self isKindOfClass:[CPMenuItem class]]; + result = 2; + if ( !ismenuItem ) + { + [CPException raise:CPGenericException reason:@"Unknown Type For " + self]; + result = -1; + } + } + } + + return result; +} + +@end +/*! @endcond */ \ No newline at end of file diff --git a/AppKit/CPRuleEditor/_CPPredicateEditorRowNode.j b/AppKit/CPRuleEditor/_CPPredicateEditorRowNode.j new file mode 100644 index 000000000..439b8d037 --- /dev/null +++ b/AppKit/CPRuleEditor/_CPPredicateEditorRowNode.j @@ -0,0 +1,132 @@ +/* + * Created by cacaodev@gmail.com. + * Copyright (c) 2011 Pear, Inc. All rights reserved. + */ + +@class _CPPredicateEditorTree; +@implementation _CPPredicateEditorRowNode : CPObject +{ + _CPPredicateEditorTree tree @accessors; + CPMutableArray templateViews @accessors; + CPMutableArray copiedTemplateContainer @accessors; + CPArray children @accessors(copy); +} + ++ (id)rowNodeFromTree:(id)aTree +{ + var mapTable = {}; + return [_CPPredicateEditorRowNode _rowNodeFromTree:aTree withTemplateTable:mapTable]; +} + ++ (id)_rowNodeFromTree:(id)aTree withTemplateTable:(id)templateTable +{ + var node, + views, + copiedContainer; + + node = [[_CPPredicateEditorRowNode alloc] init]; + node.tree = aTree; + + var template = [aTree template], + uuid = [template UID]; + + var cachedNode = templateTable[uuid]; + + if (cachedNode == nil) + { + views = [CPMutableArray array]; + copiedContainer = [CPMutableArray array]; + templateTable[uuid] = node; + } + else + { + views = [cachedNode templateViews]; + copiedContainer = [cachedNode copiedTemplateContainer]; + } + + node.templateViews = views; + node.copiedTemplateContainer = copiedContainer; + + var nodeChildren = [CPMutableArray array], + treeChildren = [aTree children], + count = [treeChildren count]; + + for (var i = 0; i < count; i++) + { + var treeChild = treeChildren[i], + child = [_CPPredicateEditorRowNode _rowNodeFromTree:treeChild withTemplateTable:templateTable]; + + [nodeChildren addObject:child]; + } + + [node setChildren:nodeChildren]; + + return node; +} + +- (BOOL)applyTemplate:(id)template withViews:(id)views forOriginalTemplate:(id)originalTemplate +{ + var t = [tree template]; + if (t !== template) + { + [templateViews setArray:views]; + [copiedTemplateContainer removeAllObjects]; + [copiedTemplateContainer addObject:template]; + } + + var count = [children count]; + for (var i; i < count; i++) + [children[i] applyTemplate:template withViews:views forOriginalTemplate:originalTemplate]; +} + +- (BOOL)isEqual:(id)node +{ + if (![node isKindOfClass:[_CPPredicateEditorRowNode class]]) + return NO; + + return (tree === [node tree]); +} + +- (void)copyTemplateIfNecessary +{ + if ([copiedTemplateContainer count] == 0) + { + CPLogConsole("COPYING TEMPLATE"); + var copy = [[tree template] copy]; + [copiedTemplateContainer addObject:copy]; + [templateViews addObjectsFromArray:[copy templateViews]]; + } +} + +- (CPView)templateView +{ + [self copyTemplateIfNecessary]; + return [templateViews objectAtIndex:[tree indexIntoTemplate]]; +} + +- (id)templateForRow +{ + [self copyTemplateIfNecessary]; + return [copiedTemplateContainer lastObject]; +} + +- (CPString)title +{ + return [tree title]; +} + +- (id)displayValue +{ + var title = [self title]; + if (title != nil) + return title; + + return [self templateView]; +} + +- (CPString)description +{ + return [CPString stringWithFormat:@"<%@ %@ %@ tree:%@ tviews:%@", [self className],[self UID], [self title], [tree UID], [templateViews description]]; +} + +@end \ No newline at end of file diff --git a/AppKit/CPRuleEditor/_CPPredicateEditorTree.j b/AppKit/CPRuleEditor/_CPPredicateEditorTree.j new file mode 100644 index 000000000..004c8d5c7 --- /dev/null +++ b/AppKit/CPRuleEditor/_CPPredicateEditorTree.j @@ -0,0 +1,33 @@ +/* + * Created by cacaodev@gmail.com. + * Copyright (c) 2011 Pear, Inc. All rights reserved. + */ + +@implementation _CPPredicateEditorTree : CPObject +{ + CPPredicateEditorRowTemplate template @accessors; + CPString title @accessors(copy); + CPArray children @accessors(copy); + CPInteger indexIntoTemplate @accessors; + CPInteger menuItemIndex @accessors; +} + +- (id)copy +{ + var tree = [[_CPPredicateEditorTree alloc] init]; + [tree setTemplate:template]; + [tree setTitle:title]; + [tree setMenuItemIndex:menuItemIndex]; + [tree setIndexIntoTemplate:indexIntoTemplate]; + [tree setChildren:children]; + + return tree; +} + +- (CPString)description +{ + return [CPString stringWithFormat:@"<%@: %p (%@) [%d-%d] T:%p at:%d> [\r%@\r]", [self className], self, title, indexIntoTemplate, menuItemIndex, template, [template rightExpressionAttributeType], children]; +} + +@end + diff --git a/AppKit/CPRuleEditor/_CPRuleEditorLocalizer.j b/AppKit/CPRuleEditor/_CPRuleEditorLocalizer.j new file mode 100644 index 000000000..638532901 --- /dev/null +++ b/AppKit/CPRuleEditor/_CPRuleEditorLocalizer.j @@ -0,0 +1,75 @@ +/* + * Created by cacaodev@gmail.com. + * Copyright (c) 2011 Pear, Inc. All rights reserved. + */ + +@import +@import +@import + +var regex = new RegExp("\"(.+)\"\\s*=\\s*\"(.+)\"\\s*;\\s*(//.+)?"); + +@implementation _CPRuleEditorLocalizer : CPObject +{ + CPDictionary _dictionary @accessors(property=dictionary); + CPURLConnection connection; + CPURLRequest resquest; +} + +- (void)loadContentOfURL:(CPURL)aURL +{ + request = [CPURLRequest requestWithURL:aURL]; + connection = [CPURLConnection connectionWithRequest:request delegate:self]; +} + +- (void)reloadIfNeeded +{ + if (connection != nil) // Connection waiting + { + connection = nil; + var data = [CPURLConnection sendSynchronousRequest:request returningResponse:NULL]; + [self loadContent:[data rawString]]; + } +} + +- (void)connection:(CPURLConnection)aConnection didReceiveData:(CPString)rawString +{ + if (connection != nil && rawString != nil) + [self loadContent:rawString]; + + connection = nil; +} + +- (void)loadContent:(CPString)aContent +{ + var dict = [CPDictionary dictionary], + lines = [aContent componentsSeparatedByString:"\n"], + count = [lines count]; + + for (var i = 0 ; i < count ; i++) + { + var line = [lines objectAtIndex:i]; + if (line.length > 1) + { + var match = regex.exec(line); + if (match.length >= 3) + [dict setObject:match[2] forKey:match[1]]; + } + } + + _dictionary = [CPDictionary dictionaryWithDictionary:dict]; +} + +- (CPString)localizedStringForString:(CPString)aString +{ + [self reloadIfNeeded]; + + if (_dictionary != nil && aString != nil) + { + var localized = [_dictionary objectForKey:aString]; + if (localized != nil) + return localized; + } + + return aString; +} \ No newline at end of file diff --git a/AppKit/CPRuleEditor/_CPRuleEditorPopUpButton.j b/AppKit/CPRuleEditor/_CPRuleEditorPopUpButton.j new file mode 100644 index 000000000..7393e5a36 --- /dev/null +++ b/AppKit/CPRuleEditor/_CPRuleEditorPopUpButton.j @@ -0,0 +1,157 @@ +/* + * Created by cacaodev@gmail.com. + * Copyright (c) 2011 Pear, Inc. All rights reserved. + */ + +var GRADIENT_NORMAL, + GRADIENT_HIGHLIGHTED, + IE_FILTER = "progid:DXImageTransform.Microsoft.gradient(startColorstr='#fcfcfc', endColorstr='#dfdfdf')"; + +@implementation _CPRuleEditorPopUpButton : CPPopUpButton +{ + CPInteger radius; +} + ++ (void)initialize +{ + if (CPBrowserIsEngine(CPWebKitBrowserEngine)) + { + GRADIENT_NORMAL = "-webkit-gradient(linear, left top, left bottom, from(rgb(252, 252, 252)), to(rgb(223, 223, 223)))", + GRADIENT_HIGHLIGHTED = "-webkit-gradient(linear, left top, left bottom, from(rgb(223, 223, 223)), to(rgb(252, 252, 252)))"; + } + else if (CPBrowserIsEngine(CPGeckoBrowserEngine)) + { + GRADIENT_NORMAL = "-moz-linear-gradient(top, rgb(252, 252, 252), rgb(223, 223, 223))", + GRADIENT_HIGHLIGHTED = "-moz-linear-gradient(top, rgb(223, 223, 223), rgb(252, 252, 252))"; + } +} + +- (id)initWithFrame:(CGRect)aFrame +{ + if (self = [super initWithFrame:aFrame]) + { + var style = _DOMElement.style; + style.backgroundImage = GRADIENT_NORMAL; + style.border = "1px solid rgb(189, 189, 189)"; + style.filter = IE_FILTER; + + [self setTextColor:[CPColor colorWithWhite:101/255 alpha:1]]; + [self setBordered:NO]; + } + + return self; +} + +- (id)hitTest:(CPPoint)point +{ + var slice = [self superview]; + if (!CPRectContainsPoint([self frame], point) || ![self sliceIsEditable]) + return nil; + + return self; +} + +- (void)setHighlighted:(BOOL)shouldHighlight +{ + _DOMElement.style.backgroundImage = (shouldHighlight) ? GRADIENT_HIGHLIGHTED : GRADIENT_NORMAL; +} + +- (BOOL)sliceIsEditable +{ + return [[self superview] isEditable]; +} + +- (BOOL)trackMouse:(CPEvent)theEvent +{ + if (![self sliceIsEditable]) + return NO; + + return [super trackMouse:theEvent]; +} + +- (CGRect)contentRectForBounds:(CGRect)bounds +{ + var contentRect = [super contentRectForBounds:bounds]; + contentRect.origin.x += radius; + contentRect.size.width -= 2 * radius; + + return contentRect; +} + +- (void)layoutSubviews +{ + radius = FLOOR(CGRectGetHeight([self bounds])/2); + + var style = _DOMElement.style, + radiusCSS = radius + "px"; + + //style.webkitBorderRadius = radiusCSS; + //style.mozBorderRadius = radiusCSS; + style.borderRadius = radiusCSS; + + [super layoutSubviews]; +} + +- (void)drawRect:(CGRect)aRect +{ + var bounds = [self bounds], + context = [[CPGraphicsContext currentContext] graphicsPort]; + + var arrow_width = FLOOR(CGRectGetHeight(bounds)/3.5); + + CGContextTranslateCTM(context, CGRectGetWidth(bounds) - radius - arrow_width, CGRectGetHeight(bounds) / 2); + + var arrowsPath = [CPBezierPath bezierPath]; + [arrowsPath moveToPoint:CGPointMake(0, 1)]; + [arrowsPath lineToPoint:CGPointMake(arrow_width, 1)]; + [arrowsPath lineToPoint:CGPointMake(arrow_width/2, arrow_width + 1)]; + [arrowsPath closePath]; + + CGContextSetFillColor(context, [CPColor colorWithWhite:101/255 alpha:1]); + [arrowsPath fill]; + + CGContextScaleCTM(context, 1 , -1); + [arrowsPath fill]; +} + +@end + +@implementation _CPRuleEditorButton : CPButton +{ + CPInteger radius; +} + +- (id)initWithFrame:(CGRect)aFrame +{ + self = [super initWithFrame:aFrame]; + if (self) + { + [self setFont:[CPFont boldFontWithName:@"Apple Symbol" size:12.0]]; + [self setTextColor:[CPColor colorWithWhite:150/255 alpha:1]]; + [self setAlignment:CPCenterTextAlignment]; + [self setAutoresizingMask:CPViewMinXMargin]; + [self setImagePosition:CPImageOnly]; + [self setBordered:NO]; + var style = _DOMElement.style; + style.border = "1px solid rgb(189, 189, 189)"; + style.filter = IE_FILTER; + } + + return self; +} + +- (void)layoutSubviews +{ + radius = FLOOR(CGRectGetHeight([self bounds])/2); + + var style = _DOMElement.style, + radiusCSS = radius + "px"; + + style.borderRadius = radiusCSS; + style.backgroundImage = ([self isHighlighted]) ? GRADIENT_HIGHLIGHTED : GRADIENT_NORMAL; + + [super layoutSubviews]; +} + +@end + diff --git a/AppKit/CPRuleEditor/_CPRuleEditorViewSlice.j b/AppKit/CPRuleEditor/_CPRuleEditorViewSlice.j new file mode 100644 index 000000000..f0128dbcd --- /dev/null +++ b/AppKit/CPRuleEditor/_CPRuleEditorViewSlice.j @@ -0,0 +1,109 @@ +/* + * Created by cacaodev@gmail.com. + * Copyright (c) 2011 Pear, Inc. All rights reserved. + */ + +@implementation _CPRuleEditorViewSlice : CPView +{ + CPRuleEditor _ruleEditor; + int _indentation @accessors(property=indentation); + int _rowIndex @accessors(property=rowIndex); + CPRect _animationTargetRect @accessors(property=_animationTargetRect); + BOOL _selected @accessors(getter=_isSelected, setter=_setSelected:); + BOOL _lastSelected @accessors(getter=_isLastSelected, setter=_setLastSelected:); + CPColor _backgroundColor @accessors(property=backgroundColor); +} + +- (void)removeFromSuperview +{ + [super removeFromSuperview]; +} + +- (id)initWithFrame:(CGRect)frame ruleEditorView:(id)editor +{ + if (self = [super initWithFrame:frame]) + { + _ruleEditor = editor; + _selected = NO; + _lastSelected = NO; + } + + return self; +} + +- (void)_setSelected:(BOOL)select +{ + if (select == _selected) + return; + + var selector = select ? @"setThemeState:" : @"unsetThemeState:"; + [[self subviews] makeObjectsPerformSelector:CPSelectorFromString(selector) withObject:CPThemeStateSelectedDataView]; + _selected = select; +} + +- (void)drawRect:(CPRect)rect +{ + var context = [[CPGraphicsContext currentContext] graphicsPort], + bounds = [self bounds], + maxX = CGRectGetWidth(bounds) - 2, + maxY = CGRectGetHeight(bounds); + +// Draw background + if ([self _isSelected]) + _backgroundColor = [_ruleEditor _selectedRowColor]; + else + { + var colors = [_ruleEditor _backgroundColors], + count = [colors count]; + _backgroundColor = [colors objectAtIndex:(_rowIndex % count)]; + } + + CGContextSetFillColor(context, _backgroundColor); + CGContextFillRect(context, rect); + +// Draw Top Border + CGContextBeginPath(context); + CGContextMoveToPoint(context, 1, 0); + CGContextAddLineToPoint(context, maxX, 0); + CGContextClosePath(context); + CGContextSetStrokeColor(context, [_ruleEditor _sliceTopBorderColor]); + CGContextStrokePath(context); + +// Draw Bottom Border + CGContextBeginPath(context); + CGContextMoveToPoint(context, 1, maxY - 0.5); + CGContextAddLineToPoint(context, maxX, maxY - 0.5); + CGContextClosePath(context); + var bottomColor = (_rowIndex == [_ruleEditor _lastRow]) ? [_ruleEditor _sliceLastBottomBorderColor] : [_ruleEditor _sliceBottomBorderColor]; + CGContextSetStrokeColor(context, bottomColor); + CGContextStrokePath(context); +} + +- (void)mouseDown:(CPEvent)theEvent +{ + if (editable) + [_ruleEditor _mouseDownOnSlice:self withEvent:theEvent]; +} + +- (void)mouseUp:(CPEvent)theEvent +{ + if (editable) + [_ruleEditor _mouseUpOnSlice:self withEvent:theEvent]; +} + +/* +- (void)rightMouseDown:(CPEvent)theEvent +{ + [_ruleEditor _rightMouseDownOnSlice:self withEvent:theEvent]; +} +*/ + +// ========= +// ! DEBUG +// ========= +- (CPString)description +{ + return [CPString stringWithFormat:@"<%@ %p index:%d indentation:%d>",[self className],self,[self rowIndex],[self indentation]]; +} + +@end \ No newline at end of file diff --git a/AppKit/CPRuleEditor/_CPRuleEditorViewSliceRow.j b/AppKit/CPRuleEditor/_CPRuleEditorViewSliceRow.j new file mode 100644 index 000000000..235bf3828 --- /dev/null +++ b/AppKit/CPRuleEditor/_CPRuleEditorViewSliceRow.j @@ -0,0 +1,512 @@ +/* + * Created by cacaodev@gmail.com. + * Copyright (c) 2011 Pear, Inc. All rights reserved. + */ + +@import "_CPRuleEditorViewSlice.j" +@import "_CPRuleEditorPopUpButton.j" +@import "CPRuleEditor.j" + +var CONTROL_HEIGHT = 16., + BUTTON_HEIGHT = 16.; + +@implementation _CPRuleEditorViewSliceRow : _CPRuleEditorViewSlice +{ + CPMutableArray _ruleOptionViews; + CPMutableArray _ruleOptionFrames; + CPMutableArray _correspondingRuleItems; + CPMutableArray _ruleOptionInitialViewFrames; + CPButton _addButton; + CPButton _subtractButton; + BOOL editable; + CPRuleEditorRowType _rowType @accessors; + CPRuleEditorRowType _plusButtonRowType; +} + +- (id)initWithFrame:(CGRect)frame ruleEditorView:(id)editor +{ + if (self = [super initWithFrame:frame ruleEditorView:editor]) + [self _initShared]; + + return self; +} + +- (void)_initShared +{ + _correspondingRuleItems = [[CPMutableArray alloc] init]; + _ruleOptionFrames = [[CPMutableArray alloc] init]; + _ruleOptionInitialViewFrames = [[CPMutableArray alloc] init]; + _ruleOptionViews = [[CPMutableArray alloc] init]; + editable = [_ruleEditor isEditable]; + + _addButton = [self _createAddRowButton]; + _subtractButton = [self _createDeleteRowButton]; + //[_addButton setToolTip:[_ruleEditor _toolTipForAddSimpleRowButton]]; + //[_subtractButton setToolTip:[_ruleEditor _toolTipForDeleteRowButton]]; + [_addButton setHidden:!editable]; + [_subtractButton setHidden:!editable]; + [self addSubview:_addButton]; + [self addSubview:_subtractButton]; + + [self setAutoresizingMask:CPViewWidthSizable]; + + var center = [CPNotificationCenter defaultCenter]; + [center addObserver:self selector:@selector(_textDidChange:) name:CPControlTextDidChangeNotification object:nil]; +} + +- (CPButton)_createAddRowButton +{ + var button = [[_CPRuleEditorButton alloc] initWithFrame:CGRectMakeZero()]; + [button setImage:[_ruleEditor _addImage]]; + + [button setAction:@selector(_addOption:)]; + [button setTarget:self]; + [button setAutoresizingMask:CPViewMinXMargin]; + + return button; +} + +- (CPButton)_createDeleteRowButton +{ + var button = [[_CPRuleEditorButton alloc] initWithFrame:CGRectMakeZero()]; + [button setImage:[_ruleEditor _removeImage]]; + + [button setAction:@selector(_deleteOption:)]; + [button setTarget:self]; + [button setAutoresizingMask:CPViewMinXMargin]; + + return button; +} + +- (CPMenuItem)_createMenuItemWithTitle:(CPString )title +{ + title = [[_ruleEditor standardLocalizer] localizedStringForString:title]; + var mItem = [[CPMenuItem alloc] initWithTitle:title action:nil keyEquivalent:@""]; + return mItem; +} + +- (CPPopUpButton)_createPopUpButtonWithItems:(CPArray)itemsArray selectedItemIndex:(int)index +{ + var title = [[itemsArray objectAtIndex:index] title]; + var font = [_ruleEditor font], + width = [title sizeWithFont:font].width + 20, + rect = CGRectMake(0, 0, (width - width % 40) + 80, CONTROL_HEIGHT); + + var popup = [[_CPRuleEditorPopUpButton alloc] initWithFrame:rect]; + [popup setValue:font forThemeAttribute:@"font"]; + + var count = [itemsArray count]; + for (var i = 0; i < count; i++) + [popup addItem:[itemsArray objectAtIndex:i]]; + + [popup selectItemAtIndex:index]; + + return popup; +} + +- (CPMenuItem)_createMenuSeparatorItem +{ + return [CPMenuItem separatorItem]; +} + +- (_CPRuleEditorTextField)_createStaticTextFieldWithStringValue:(CPString )text +{ + text = [[_ruleEditor standardLocalizer] localizedStringForString:text]; + + var textField = [[_CPRuleEditorTextField alloc] initWithFrame:CPMakeRect(0, 0, 200, CONTROL_HEIGHT)]; + var font = [_ruleEditor font]; + font = [CPFont fontWithName:font._name size:font._size + 2]; + [textField setValue:font forThemeAttribute:@"font"]; + [textField setStringValue:text]; + [textField sizeToFit]; + + return textField; +} + +- (void)_addOption:(id)sender +{ + if (_rowIndex == [_ruleEditor numberOfRows] - 1) + [self setNeedsDisplay:YES]; + + var type = _plusButtonRowType; + if ([_ruleEditor nestingMode] == CPRuleEditorNestingModeCompound && ([[CPApp currentEvent] modifierFlags] & CPAlternateKeyMask)) + type = CPRuleEditorRowTypeCompound; + + [_ruleEditor _addOptionFromSlice:self ofRowType:type]; +} + +- (void)_deleteOption:(id)sender +{ + [_ruleEditor _deleteSlice:self]; +} + +- (void)_ruleOptionPopupChangedAction:(CPMenuItem )sender +{ + var layoutdict = [sender representedObject], + newItem = [layoutdict objectForKey:@"item"], + indexInCriteria = [layoutdict objectForKey:@"indexInCriteria"], + oldItem = [_correspondingRuleItems objectAtIndex:indexInCriteria]; + + if (![newItem isEqual:oldItem]) + { + [_correspondingRuleItems replaceObjectAtIndex:indexInCriteria withObject:newItem]; + [_ruleEditor _changedItem:oldItem toItem:newItem inRow:_rowIndex atCriteriaIndex:indexInCriteria]; + } +} + +- (BOOL)validateMenuItem:(CPMenuItem )menuItem +{ + return [_ruleEditor _validateItem:menuItem value:[[menuItem representedObject] valueForKey:@"item"] inRow:_rowIndex]; +} + +- (void)_emptyRulePartSubviews +{ + var count = [_ruleOptionViews count]; + + while (count--) + [_ruleOptionViews[count] removeFromSuperview]; + + [_ruleOptionViews removeAllObjects]; + [_ruleOptionFrames removeAllObjects]; + [_ruleOptionInitialViewFrames removeAllObjects]; +} + +- (void)_reconfigureSubviews +{ + var ruleItems, + criteria, + repObject, + menuItem, + ruleView, + criterion, + parent, + numberOfCriteria, + numberOfChildren, + firstResponderIndex; + + var ruleItems = [CPMutableArray array]; + + [self _emptyRulePartSubviews]; + + criteria = [_ruleEditor criteriaForRow:_rowIndex]; + numberOfCriteria = [criteria count]; + + firstResponderIndex = numberOfCriteria - 1; + var responder = [[self window] firstResponder]; + if (responder) + firstResponderIndex = [_ruleOptionViews indexOfObjectIdenticalTo:responder]; + + for (var i = 0; i < numberOfCriteria; i++) + { + ruleView = nil; + parent = nil; + criterion = [criteria objectAtIndex:i]; + + if (i > 0) + parent = [criteria objectAtIndex:i - 1]; + + var childItems = [], + childValues = []; + + [_ruleEditor _getAllAvailableItems:childItems values:childValues asChildrenOfItem:parent inRow:_rowIndex]; + + numberOfChildren = [childItems count]; + if (numberOfChildren > 1) + { + var menuItems = [CPMutableArray arrayWithCapacity:numberOfChildren]; + + var selectedIndex = [childItems indexOfObject:criterion]; + if (selectedIndex == CPNotFound) + break; + + for (var j = 0; j < numberOfChildren; ++j) + { + var childItem = [childItems objectAtIndex:j]; + var childValue = [childValues objectAtIndex:j]; + + if ([childValue isKindOfClass:[CPMenuItem class]]) + { + [[childValue menu] removeItem:childValue]; + menuItem = childValue; + } + else + { + if ([childValue isEqualToString:@""]) + menuItem = [self _createMenuSeparatorItem]; + else + { + menuItem = [self _createMenuItemWithTitle:childValue]; + [menuItem setTarget:self]; + [menuItem setAction:@selector(_ruleOptionPopupChangedAction:)]; + } + } + + repObject = [CPDictionary dictionaryWithObjectsAndKeys:childItem, @"item", childValue, @"value", i, @"indexInCriteria"]; + [menuItem setRepresentedObject:repObject]; + [menuItems addObject:menuItem]; + } + + ruleView = [self _createPopUpButtonWithItems:menuItems selectedItemIndex:selectedIndex]; + } + else + { + var value = [childValues objectAtIndex:0]; + var type = [value valueType]; + + if (type === 0) + ruleView = [self _createStaticTextFieldWithStringValue:value]; + else + { + if (type !== 1) + { + [CPException raise:CPInternalInconsistencyException reason:@"Display value must be a string or a menu item"]; + continue; + } + + ruleView = value; + [ruleView setTarget:self]; + [ruleView setAction:@selector(_sendRuleAction:)]; + if ([ruleView respondsToSelector:@selector(setDelegate:)]) + [ruleView setDelegate:self]; + } + } + + if (ruleView != nil) + { + [_ruleOptionViews addObject:ruleView]; + var frame = [ruleView frame]; + [_ruleOptionInitialViewFrames addObject:frame]; + [_ruleOptionFrames addObject:frame]; + + if (!criterion) + criterion = [CPNull null]; + + [ruleItems addObject:criterion]; + } + } + + [_correspondingRuleItems setArray:ruleItems]; + + if (!editable) + [self _updateEnabledStateForSubviews]; + + [self _relayoutSubviewsWidthChanged:YES]; + + if (firstResponderIndex != CPNotFound) + { + var aView = [_ruleOptionViews objectAtIndex:firstResponderIndex]; + [[self window] makeFirstResponder:aView]; // This is not working. bug in CPPopUpButton firstResponder ? + } + + //[self setNeedsDisplay:YES]; +} + +- (void)_updateEnabledStateForSubviews +{ + [_ruleOptionViews makeObjectsPerformSelector:@selector(setEnabled:) withObject:NO]; +} + +- (void)layoutSubviews +{ + // CPLogConsole(_cmd); + [self _relayoutSubviewsWidthChanged:YES]; +} + +- (void)_relayoutSubviewsWidthChanged:(BOOL)widthChanged +{ + var optionViewOriginX, + leftHorizontalPadding, + leftButtonMinX, + rowHeight = [_ruleEditor rowHeight], + count = [_ruleOptionViews count], + sliceFrame = [self frame]; + + var buttonFrame = CGRectMake(CGRectGetWidth(sliceFrame) - BUTTON_HEIGHT - [self _rowButtonsRightHorizontalPadding], ([_ruleEditor rowHeight] - BUTTON_HEIGHT)/2 - 2, BUTTON_HEIGHT, BUTTON_HEIGHT); + [_addButton setFrame:buttonFrame]; + + buttonFrame.origin.x -= BUTTON_HEIGHT + [self _rowButtonsInterviewHorizontalPadding]; + [_subtractButton setFrame:buttonFrame]; + + if (widthChanged) + { + optionViewOriginX = [self _leftmostViewFixedHorizontalPadding] + [self _indentationHorizontalPadding] * _indentation; + leftHorizontalPadding = [self _rowButtonsLeftHorizontalPadding]; + leftButtonMinX = CGRectGetMinX(buttonFrame); + } + + for (var i = 0; i < count; i++) + { + var ruleOptionView = _ruleOptionViews[i], + optionFrame = _ruleOptionFrames[i]; + + optionFrame.origin.y = (rowHeight - CGRectGetHeight(optionFrame))/2 - 2; + if (widthChanged) + { + optionFrame.origin.x = optionViewOriginX; + if (i == count - 1 && ![self _isRulePopup:ruleOptionView]) + { + var initialFrame = _ruleOptionInitialViewFrames[i]; + optionFrame.size.width = MIN(CGRectGetWidth(initialFrame), leftButtonMinX - leftHorizontalPadding - optionViewOriginX); + } + } + + [ruleOptionView setFrame:optionFrame]; + [self addSubview:ruleOptionView]; + + if (widthChanged) + optionViewOriginX += CGRectGetWidth(optionFrame) + [self _interviewHorizontalPadding]; + } +} + +- (void)_updateButtonVisibilities +{ + [_addButton setHidden:[_ruleEditor _shouldHideAddButtonForSlice:self]]; + [_subtractButton setHidden:[_ruleEditor _shouldHideSubtractButtonForSlice:self]]; +} + +- (void)_configurePlusButtonByRowType:(CPRuleEditorRowType)type +{ + [self _setRowTypeToAddFromPlusButton:type]; +} + +- (BOOL)isEditable +{ + return editable; +} + +- (void)setEditable:(BOOL)value +{ + editable = value; +// [self _updateEnabledStateForSubviews]; + [self _updateButtonVisibilities]; +} + +- (float)_alignmentGridWidth +{ + return [_ruleEditor _alignmentGridWidth]; +} + +- (float)_indentationHorizontalPadding +{ + return 30.; +} + +- (float)_interviewHorizontalPadding +{ + return 6.; +} + +- (float)_leftmostViewFixedHorizontalPadding +{ + return 7.; +} + +- (float)_minimumVerticalPopupPadding +{ + return 2.; +} + +- (float)_rowButtonsInterviewHorizontalPadding +{ + return 6.; +} + +- (float)_rowButtonsLeftHorizontalPadding +{ + return 10.; +} + +- (float)_rowButtonsRightHorizontalPadding +{ + return 10.; +} + +- (void)_setRowTypeToAddFromPlusButton:(int)type +{ + _plusButtonRowType = type; +} + +- (void)setNeedsDisplay:(BOOL)flag +{ + [super setNeedsDisplay:flag]; +} + +- (BOOL)_nestingModeShouldHideAddButton +{ + return [_ruleEditor _applicableNestingMode] == CPRuleEditorNestingModeSingle; +} + +- (BOOL)_nestingModeShouldHideSubtractButton +{ + return [_ruleEditor _applicableNestingMode] == CPRuleEditorNestingModeSingle; +} + +- (BOOL)containsDisplayValue:(id)value +{ + return [[_ruleEditor displayValuesForRow:_rowIndex] containsObject:value]; + // Ou alors avec _correspondingRuleItems +} + +- (void)viewDidMoveToWindow +{ + [self layoutSubviews]; +} + +- (void)drawRect:(CPRect)rect +{ + [super drawRect:rect]; +} + +- (BOOL)_isRulePopup:(CPView)view +{ + if ([view isKindOfClass:[_CPRuleEditorPopUpButton class]]) + return YES; + return NO; +} + +- (BOOL)_isRuleStaticTextField:(CPView)view +{ + if ([view isKindOfClass:[_CPRuleEditorTextField class]]) + return YES; + return NO; +} + +- (void)_sendRuleAction:(id)sender +{ + [_ruleEditor _sendRuleAction]; +} + +- (void)_textDidChange:(CPNotification)aNotif +{ + if ([[aNotif object] superview] == self && [_ruleEditor _sendsActionOnIncompleteTextChange]) + [_ruleEditor _sendRuleAction]; +} + +@end + +@implementation _CPRuleEditorTextField : CPTextField +{ +} + +- (id)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self != nil) + { + [self setBordered:NO]; + [self setEditable:NO]; + [self setDrawsBackground:NO]; + } + + return self; +} + +- (id)hitTest:(CPPoint)point +{ + if (!CPRectContainsPoint([self frame], point)) + return nil; + + return [self superview]; +} + +@end diff --git a/AppKit/CPTableColumn.j b/AppKit/CPTableColumn.j index 51f80b9de..10dfaef07 100644 --- a/AppKit/CPTableColumn.j +++ b/AppKit/CPTableColumn.j @@ -428,7 +428,7 @@ CPTableColumnUserResizingMask = 1 << 1; var x = [self tableView]._cachedDataViews[dataViewUID]; if (x && x.length) - return x.pop(); + return x.pop(); // if we haven't cached an archive of the data view, do it now if (!_dataViewData[dataViewUID]) @@ -738,9 +738,9 @@ var CPTableColumnIdentifierKey = @"CPTableColumnIdentifierKey", { [aCoder encodeObject:_identifier forKey:CPTableColumnIdentifierKey]; - [aCoder encodeObject:_width forKey:CPTableColumnWidthKey]; - [aCoder encodeObject:_minWidth forKey:CPTableColumnMinWidthKey]; - [aCoder encodeObject:_maxWidth forKey:CPTableColumnMaxWidthKey]; + [aCoder encodeFloat:_width forKey:CPTableColumnWidthKey]; + [aCoder encodeFloat:_minWidth forKey:CPTableColumnMinWidthKey]; + [aCoder encodeFloat:_maxWidth forKey:CPTableColumnMaxWidthKey]; [aCoder encodeObject:_headerView forKey:CPTableColumnHeaderViewKey]; [aCoder encodeObject:_dataView forKey:CPTableColumnDataViewKey]; diff --git a/AppKit/CPTableHeaderView.j b/AppKit/CPTableHeaderView.j index 91473371a..3155ae5c7 100644 --- a/AppKit/CPTableHeaderView.j +++ b/AppKit/CPTableHeaderView.j @@ -212,7 +212,7 @@ var _CPTableColumnHeaderViewStringValueKey = @"_CPTableColumnHeaderViewStringVal - (CGRect)headerRectOfColumn:(int)aColumnIndex { - var headerRect = [self bounds], + var headerRect = CGRectMakeCopy([self bounds]), columnRect = [_tableView rectOfColumn:aColumnIndex]; headerRect.origin.x = _CGRectGetMinX(columnRect); @@ -592,16 +592,13 @@ var _CPTableColumnHeaderViewStringValueKey = @"_CPTableColumnHeaderViewStringVal for (var i = 0; i < count; i++) { var column = [tableColumns objectAtIndex:i], - headerView = [column headerView]; - - var frame = [self headerRectOfColumn:i]; + headerView = [column headerView], + frame = [self headerRectOfColumn:i]; + // Make space for the gridline on the right. + frame.origin.x -= 0.5; + frame.size.width -= 1.0; frame.size.height -= 0.5; - if (i > 0) - { - frame.origin.x += 0.5; - frame.size.width -= 1; - } // Note: we're not adding in intercell spacing here. This setting only affects the regular // table cell data views, not the header. Verified in Cocoa on March 29th, 2011. @@ -645,8 +642,8 @@ var _CPTableColumnHeaderViewStringValueKey = @"_CPTableColumnHeaderViewStringVal columnMaxX = _CGRectGetMaxX(columnToStroke); - CGContextMoveToPoint(context, ROUND(columnMaxX) + 0.5, ROUND(_CGRectGetMinY(columnToStroke))); - CGContextAddLineToPoint(context, ROUND(columnMaxX) + 0.5, ROUND(_CGRectGetMaxY(columnToStroke))); + CGContextMoveToPoint(context, FLOOR(columnMaxX) - 0.5, ROUND(_CGRectGetMinY(columnToStroke))); + CGContextAddLineToPoint(context, FLOOR(columnMaxX) - 0.5, ROUND(_CGRectGetMaxY(columnToStroke))); } CGContextClosePath(context); CGContextStrokePath(context); diff --git a/AppKit/CPTableView.j b/AppKit/CPTableView.j index 104b292db..fb3f33c8c 100644 --- a/AppKit/CPTableView.j +++ b/AppKit/CPTableView.j @@ -323,6 +323,7 @@ CPTableViewFirstColumnOnlyAutoresizingStyle = 5; { _tableViewFlags = 0; _lastSelectedRow = -1; + _clickedRow = -1; _selectedColumnIndexes = [CPIndexSet indexSet]; _selectedRowIndexes = [CPIndexSet indexSet]; @@ -662,13 +663,6 @@ NOT YET IMPLEMENTED [self reloadData]; } -/*! - @ignore -*/ -- (void)setThemeState:(int)aState -{ -} - /*! Returns the intercell spacing in a CGSize object. */ @@ -1544,7 +1538,6 @@ NOT YET IMPLEMENTED _numberOfHiddenColumns += 1; _tableColumnRanges[index] = CPMakeRange(x, 0.0); } - else { var width = [_tableColumns[index] width] + _intercellSpacing.width; @@ -1843,7 +1836,7 @@ NOT YET IMPLEMENTED leftInset = FLOOR(_intercellSpacing.width / 2.0), topInset = FLOOR(_intercellSpacing.height / 2.0); - return _CGRectMake(tableColumnRange.location + leftInset, _CGRectGetMinY(rectOfRow) + topInset, tableColumnRange.length - _intercellSpacing.width, _CGRectGetHeight(rectOfRow) - _intercellSpacing.height); + return _CGRectMake(tableColumnRange.location + leftInset, _CGRectGetMinY(rectOfRow) + topInset, tableColumnRange.length - _intercellSpacing.width, _CGRectGetHeight(rectOfRow) - _intercellSpacing.height); } /*! @@ -3643,7 +3636,7 @@ Your delegate can implement this method to avoid subclassing the tableview to ad for (; columnArrayIndex < columnArrayCount; ++columnArrayIndex) { var columnRect = [self rectOfColumn:columnsArray[columnArrayIndex]], - columnX = _CGRectGetMaxX(columnRect) + 0.5; + columnX = _CGRectGetMaxX(columnRect) - 0.5; CGContextMoveToPoint(context, columnX, minY); CGContextAddLineToPoint(context, columnX, maxY); diff --git a/AppKit/CPUserDefaultsController.j b/AppKit/CPUserDefaultsController.j new file mode 100644 index 000000000..1b2e81f10 --- /dev/null +++ b/AppKit/CPUserDefaultsController.j @@ -0,0 +1,267 @@ +/* + * CPUserDefaultsController.j + * AppKit + * + * Portions based on NSUserDefaultsController.m (2009-06-04) in Cocotron (http://www.cocotron.org/) + * Copyright (c) 2006-2007 Christopher J. W. Lloyd + * + * Created by Alexander Ljungberg. + * Copyright 2011, WireLoad Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +@import +@import + +var SharedUserDefaultsController = nil; + +@implementation CPUserDefaultsController : CPController +{ + CPUserDefaults _defaults @accessors(readonly, property=defaults); + CPDictionary _initialValues @accessors(property=initialValues); + BOOL _appliesImmediately @accessors(property=appliesImmediately); +} + ++ (id)sharedUserDefaultsController +{ + if (!SharedUserDefaultsController) + SharedUserDefaultsController = [[CPUserDefaultsController alloc] initWithDefaults:nil initialValues:nil]; + + return SharedUserDefaultsController; +} + +- (id)initWithDefaults:(CPUserDefaults)someDefaults initialValues:(CPDictionary)initialValues +{ + if (self = [super init]) + { + if (!someDefaults) + someDefaults = [CPUserDefaults standardUserDefaults]; + + _defaults = someDefaults; + _initialValues = [initialValues copy]; + _appliesImmediately = YES; + _valueProxy = [[_CPUserDefaultsControllerProxy alloc] initWithController:self]; + } + + return self; +} + +- (id)values +{ + return _valueProxy; +} + +- (BOOL)hasUnappliedChanges +{ + return [_valueProxy hasUnappliedChanges]; +} + +- (void)save:(id)sender +{ + [_valueProxy save]; +} + +- (void)revert:(id)sender +{ + [_valueProxy revert]; +} + +- (void)revertToInitialValues:(id)sender +{ + [_valueProxy revertToInitialValues]; +} + +@end + + +var CPUserDefaultsControllerSharedKey = "CPUserDefaultsControllerSharedKey"; + +@implementation CPUserDefaultsController (CPCoding) + +- (id)initWithCoder:(CPCoder)aCoder +{ + if ([aCoder decodeBoolForKey:CPUserDefaultsControllerSharedKey]) + return [CPUserDefaultsController sharedUserDefaultsController]; + + self = [super initWithCoder:aCoder]; + + if (self) + { + [CPException raise:CPUnsupportedMethodException reason:@"decoding of non-shared CPUserDefaultsController not implemented"]; + } + + return self; +} + +- (void)encodeWithCoder:(CPCoder)aCoder +{ + [super encodeWithCoder:aCoder]; + + if (self === SharedUserDefaultsController) + { + [aCoder encodeBool:YES forKey:CPUserDefaultsControllerSharedKey]; + return; + } + + [CPException raise:CPUnsupportedMethodException reason:@"encoding of non-shared CPUserDefaultsController not implemented"]; +} + +@end + + +@implementation _CPUserDefaultsControllerProxy : CPObject +{ + CPUserDefaultsController _controller; + // TODO Could be optimised with a JS dict. + CPMutableDictionary _cachedValues; +} + +- (id)initWithController:(CPUserDefaultsController)aController +{ + if (self = [super init]) + { + _controller = aController; + _cachedValues = [CPMutableDictionary dictionary]; + + [[CPNotificationCenter defaultCenter] addObserver:self selector:@selector(userDefaultsDidChange:) name:CPUserDefaultsDidChangeNotification object:[_controller defaults]]; + } + + return self; +} + +- (void)dealloc +{ + // FIXME No dealloc in Cappuccino. + [[CPNotificationCenter defaultCenter] removeObserver:self]; + [super dealloc]; +} + +- (id)valueForKey:(CPString)aKey +{ + var value = [_cachedValues objectForKey:aKey]; + if (value === nil) + { + value = [[_controller defaults] objectForKey:aKey]; + if (value === nil) + value = [[_controller initialValues] objectForKey:aKey]; + + if (value !== nil) + [_cachedValues setObject:value forKey:aKey]; + } + return value; +} + +- (void)setValue:(id)aValue forKey:(CPString)aKey +{ + [self willChangeValueForKey:aKey]; + [_cachedValues setObject:aValue forKey:aKey]; + if ([_controller appliesImmediately]) + [[_controller defaults] setObject:aValue forKey:aKey]; + [self didChangeValueForKey:aKey]; +} + + +- (void)revert +{ + var keys = [_cachedValues allKeys], + keysCount = [keys count]; + + while(keysCount--) + { + var key = keys[keysCount]; + [self willChangeValueForKey:key]; + [_cachedValues removeObjectForKey:key]; + [self didChangeValueForKey:key]; + } +} + +- (void)save +{ + var keys = [_cachedValues allKeys], + keysCount = [keys count]; + + while(keysCount--) + { + var key = keys[keysCount]; + [[_controller defaults] setObject:[_cachedValues objectForKey:key] forKey:key]; + } +} + +- (void)revertToInitialValues +{ + var initial = [_controller initialValues], + keys = [_cachedValues allKeys], + keysCount = [keys count]; + + while(keysCount--) + { + var key = keys[keysCount]; + [self willChangeValueForKey:key]; + + var initialValue = [initial objectForKey:key]; + if (initialValue !== nil) + [_cachedValues setObject:initialValue forKey:key]; + else + [_cachedValues removeObjectForKey:key]; + + [self didChangeValueForKey:key]; + + } +} + +- (void)userDefaultsDidChange:(CPNotification)aNotification +{ + var defaults = [_controller defaults], + keys = [_cachedValues allKeys], + keysCount = [keys count]; + + while(keysCount--) + { + var key = keys[keysCount], + value = [_cachedValues objectForKey:key], + newValue = [defaults objectForKey:key]; + + if (![value isEqual:newValue]) + { + [self willChangeValueForKey:key]; + [_cachedValues setObject:newValue forKey:key]; + [self didChangeValueForKey:key]; + } + } +} + +- (BOOL)hasUnappliedChanges +{ + var defaults = [_controller defaults], + keys = [_cachedValues allKeys], + keysCount = [keys count]; + + while(keysCount--) + { + var key = keys[keysCount], + value = [_cachedValues objectForKey:key], + newValue = [defaults objectForKey:key]; + + if (![value isEqual:newValue]) + return YES; + } + + return NO; +} + +@end + diff --git a/AppKit/CPView.j b/AppKit/CPView.j index b620acf0f..8b35a90bf 100644 --- a/AppKit/CPView.j +++ b/AppKit/CPView.j @@ -2695,7 +2695,7 @@ var CPViewAutoresizingMaskKey = @"CPViewAutoresizingMask", [self setupViewFlags]; - _theme = [CPTheme defaultTheme]; + _theme = [CPTheme themeForView:self]; _themeClass = [aCoder decodeObjectForKey:CPViewThemeClassKey]; _themeState = CPThemeState([aCoder decodeIntForKey:CPViewThemeStateKey]); _themeAttributes = {}; diff --git a/AppKit/Cib/CPCibRuntimeAttributesConnector.j b/AppKit/Cib/CPCibRuntimeAttributesConnector.j new file mode 100644 index 000000000..b6a71d64c --- /dev/null +++ b/AppKit/Cib/CPCibRuntimeAttributesConnector.j @@ -0,0 +1,64 @@ +/* + * CPCibRuntimeAttributesConnector.j + * AppKit + * + * Created by Aparajita Fishman. + * Copyright 2011, 280 North, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +@import "CPCibConnector.j" + +var CPCibRuntimeAttributesConnectorObjectKey = @"CPCibRuntimeAttributesConnectorObjectKey", + CPCibRuntimeAttributesConnectorKeyPathsKey = @"CPCibRuntimeAttributesConnectorKeyPathsKey", + CPCibRuntimeAttributesConnectorValuesKey = @"CPCibRuntimeAttributesConnectorValuesKey"; + +@implementation CPCibRuntimeAttributesConnector : CPCibConnector +{ + id _keyPaths; + id _values; +} + +- (id)initWithCoder:(CPCoder)aCoder +{ + if (self = [super initWithCoder:aCoder]) + { + _source = [aCoder decodeObjectForKey:CPCibRuntimeAttributesConnectorObjectKey]; + _keyPaths = [aCoder decodeObjectForKey:CPCibRuntimeAttributesConnectorKeyPathsKey]; + _values = [aCoder decodeObjectForKey:CPCibRuntimeAttributesConnectorValuesKey]; + } + + return self; +} + +- (void)encodeWithCoder:(CPCoder)aCoder +{ + [super encodeWithCoder:aCoder]; + + [aCoder encodeObject:_source forKey:CPCibRuntimeAttributesConnectorObjectKey]; + [aCoder encodeObject:_keyPaths forKey:CPCibRuntimeAttributesConnectorKeyPathsKey]; + [aCoder encodeObject:_values forKey:CPCibRuntimeAttributesConnectorValuesKey]; +} + +- (void)establishConnection +{ + var count = [_keyPaths count]; + + while (count--) + [_source setValue:_values[count] forKeyPath:_keyPaths[count]]; +} + +@end diff --git a/AppKit/Cib/_CPCibClassSwapper.j b/AppKit/Cib/_CPCibClassSwapper.j index 8e1c133df..0d432a313 100644 --- a/AppKit/Cib/_CPCibClassSwapper.j +++ b/AppKit/Cib/_CPCibClassSwapper.j @@ -61,14 +61,14 @@ var _CPCibClassSwapperClassNameKey = @"_CPCibClassSwapperClassNameKey", if (!object) { - CPLog.error("Unable to find class " + theClassName + " in cib file."); + CPLog.error("Unable to find class " + theClassName + " referenced in cib file."); object = [self allocObjectWithCoder:aCoder className:[aCoder decodeObjectForKey:_CPCibClassSwapperOriginalClassNameKey]]; } } if (!object) - [CPException raise:CPInvalidArgumentException reason:@"Unable to find class " + theClassName + " in cib file."]; + [CPException raise:CPInvalidArgumentException reason:@"Unable to find class " + theClassName + " referenced in cib file."]; return object; } diff --git a/AppKit/Cib/_CPCibCustomResource.j b/AppKit/Cib/_CPCibCustomResource.j index 995cbef67..9d23958ea 100644 --- a/AppKit/Cib/_CPCibCustomResource.j +++ b/AppKit/Cib/_CPCibCustomResource.j @@ -43,6 +43,11 @@ var _CPCibCustomResourceClassNameKey = @"_CPCibCustomResourceClassNameKey", return [[self alloc] initWithClassName:@"CPImage" resourceName:aResourceName properties:[CPDictionary dictionaryWithObject:aSize forKey:@"size"]]; } ++ (id)imageResourceWithName:(CPString)aResourceName size:(CGSize)aSize bundleClass:(CPString)aBundleClass +{ + return [[self alloc] initWithClassName:@"CPImage" resourceName:aResourceName properties:[CPDictionary dictionaryWithObjects:[aSize, aBundleClass] forKeys:[@"size", @"bundleClass"]]]; +} + - (id)initWithClassName:(CPString)aClassName resourceName:(CPString)aResourceName properties:(CPDictionary)properties { self = [super init]; @@ -83,7 +88,25 @@ var _CPCibCustomResourceClassNameKey = @"_CPCibCustomResourceClassNameKey", if ([aCoder respondsToSelector:@selector(bundle)] && (![aCoder respondsToSelector:@selector(awakenCustomResources)] || [aCoder awakenCustomResources])) if (_className === @"CPImage") - return [[CPImage alloc] initWithContentsOfFile:[[aCoder bundle] pathForResource:_resourceName] size:_properties.valueForKey(@"size")]; + { + if (_resourceName == "CPAddTemplate") + return [[CPImage alloc] initWithContentsOfFile:[[CPBundle bundleForClass:[CPButtonBar class]] pathForResource:@"plus_button.png"] size:CGSizeMake(11, 12)]; + else if (_resourceName == "CPRemoveTemplate") + return [[CPImage alloc] initWithContentsOfFile:[[CPBundle bundleForClass:[CPButtonBar class]] pathForResource:@"minus_button.png"] size:CGSizeMake(11, 4)]; + + var bundleClass = _properties.valueForKey(@"bundleClass"), + bundle = nil; + + if (bundleClass) + { + bundleClass = CPClassFromString(bundleClass); + + if (bundleClass) + bundle = [CPBundle bundleForClass:bundleClass]; + } + + return [[CPImage alloc] initWithContentsOfFile:[(bundle || [aCoder bundle]) pathForResource:_resourceName] size:_properties.valueForKey(@"size")]; + } return self; } diff --git a/AppKit/Cib/_CPCibObjectData.j b/AppKit/Cib/_CPCibObjectData.j index 22e511592..72288e919 100644 --- a/AppKit/Cib/_CPCibObjectData.j +++ b/AppKit/Cib/_CPCibObjectData.j @@ -29,6 +29,7 @@ @import "CPCibControlConnector.j" @import "CPCibOutletConnector.j" @import "CPCibBindingConnector.j" +@import "CPCibRuntimeAttributesConnector.j" @implementation _CPCibObjectData : CPObject @@ -257,11 +258,29 @@ var _CPCibObjectDataNamesKeysKey = @"_CPCibObjectDataNamesKeysKey _replacementObjects[[_fileOwner UID]] = anOwner; var index = 0, - count = _connections.length; + count = _connections.length, + runtimeAttributeConnectors = [], + connection = nil; for (; index < count; ++index) { - var connection = _connections[index]; + connection = _connections[index]; + + if ([connection isKindOfClass:[CPCibRuntimeAttributesConnector class]]) + // Defer runtime attribute connections until after all other connections are made + runtimeAttributeConnectors.push(connection); + else + { + [connection replaceObjects:_replacementObjects]; + [connection establishConnection]; + } + } + + count = runtimeAttributeConnectors.length; + + for (index = 0; index < count; ++index) + { + connection = runtimeAttributeConnectors[index]; [connection replaceObjects:_replacementObjects]; [connection establishConnection]; diff --git a/AppKit/Platform/Platform.h b/AppKit/Platform/Platform.h index ef099399d..da33f068a 100644 --- a/AppKit/Platform/Platform.h +++ b/AppKit/Platform/Platform.h @@ -1,5 +1,5 @@ /* - * Platform.j + * Platform.h * AppKit * * Created by Francisco Tolmasky. diff --git a/AppKit/Resources/CPLevelIndicator/level-indicator-bezel-center.png b/AppKit/Resources/CPLevelIndicator/level-indicator-bezel-center.png new file mode 100644 index 000000000..e35825eca Binary files /dev/null and b/AppKit/Resources/CPLevelIndicator/level-indicator-bezel-center.png differ diff --git a/AppKit/Resources/CPLevelIndicator/level-indicator-bezel-left.png b/AppKit/Resources/CPLevelIndicator/level-indicator-bezel-left.png new file mode 100644 index 000000000..c6b6a79db Binary files /dev/null and b/AppKit/Resources/CPLevelIndicator/level-indicator-bezel-left.png differ diff --git a/AppKit/Resources/CPLevelIndicator/level-indicator-bezel-right.png b/AppKit/Resources/CPLevelIndicator/level-indicator-bezel-right.png new file mode 100644 index 000000000..6d764de47 Binary files /dev/null and b/AppKit/Resources/CPLevelIndicator/level-indicator-bezel-right.png differ diff --git a/AppKit/Resources/CPLevelIndicator/level-indicator-segment-critical-center.png b/AppKit/Resources/CPLevelIndicator/level-indicator-segment-critical-center.png new file mode 100644 index 000000000..73c27b640 Binary files /dev/null and b/AppKit/Resources/CPLevelIndicator/level-indicator-segment-critical-center.png differ diff --git a/AppKit/Resources/CPLevelIndicator/level-indicator-segment-critical-left.png b/AppKit/Resources/CPLevelIndicator/level-indicator-segment-critical-left.png new file mode 100644 index 000000000..f7c0e99a3 Binary files /dev/null and b/AppKit/Resources/CPLevelIndicator/level-indicator-segment-critical-left.png differ diff --git a/AppKit/Resources/CPLevelIndicator/level-indicator-segment-critical-right.png b/AppKit/Resources/CPLevelIndicator/level-indicator-segment-critical-right.png new file mode 100644 index 000000000..66861d454 Binary files /dev/null and b/AppKit/Resources/CPLevelIndicator/level-indicator-segment-critical-right.png differ diff --git a/AppKit/Resources/CPLevelIndicator/level-indicator-segment-empty-center.png b/AppKit/Resources/CPLevelIndicator/level-indicator-segment-empty-center.png new file mode 100644 index 000000000..52af5430d Binary files /dev/null and b/AppKit/Resources/CPLevelIndicator/level-indicator-segment-empty-center.png differ diff --git a/AppKit/Resources/CPLevelIndicator/level-indicator-segment-empty-left.png b/AppKit/Resources/CPLevelIndicator/level-indicator-segment-empty-left.png new file mode 100644 index 000000000..1610a148e Binary files /dev/null and b/AppKit/Resources/CPLevelIndicator/level-indicator-segment-empty-left.png differ diff --git a/AppKit/Resources/CPLevelIndicator/level-indicator-segment-empty-right.png b/AppKit/Resources/CPLevelIndicator/level-indicator-segment-empty-right.png new file mode 100644 index 000000000..6da29ed04 Binary files /dev/null and b/AppKit/Resources/CPLevelIndicator/level-indicator-segment-empty-right.png differ diff --git a/AppKit/Resources/CPLevelIndicator/level-indicator-segment-normal-center.png b/AppKit/Resources/CPLevelIndicator/level-indicator-segment-normal-center.png new file mode 100644 index 000000000..8f8ee5b89 Binary files /dev/null and b/AppKit/Resources/CPLevelIndicator/level-indicator-segment-normal-center.png differ diff --git a/AppKit/Resources/CPLevelIndicator/level-indicator-segment-normal-left.png b/AppKit/Resources/CPLevelIndicator/level-indicator-segment-normal-left.png new file mode 100644 index 000000000..ff0c4d545 Binary files /dev/null and b/AppKit/Resources/CPLevelIndicator/level-indicator-segment-normal-left.png differ diff --git a/AppKit/Resources/CPLevelIndicator/level-indicator-segment-normal-right.png b/AppKit/Resources/CPLevelIndicator/level-indicator-segment-normal-right.png new file mode 100644 index 000000000..18c5f258d Binary files /dev/null and b/AppKit/Resources/CPLevelIndicator/level-indicator-segment-normal-right.png differ diff --git a/AppKit/Resources/CPLevelIndicator/level-indicator-segment-warning-center.png b/AppKit/Resources/CPLevelIndicator/level-indicator-segment-warning-center.png new file mode 100644 index 000000000..2458232a8 Binary files /dev/null and b/AppKit/Resources/CPLevelIndicator/level-indicator-segment-warning-center.png differ diff --git a/AppKit/Resources/CPLevelIndicator/level-indicator-segment-warning-left.png b/AppKit/Resources/CPLevelIndicator/level-indicator-segment-warning-left.png new file mode 100644 index 000000000..28749052a Binary files /dev/null and b/AppKit/Resources/CPLevelIndicator/level-indicator-segment-warning-left.png differ diff --git a/AppKit/Resources/CPLevelIndicator/level-indicator-segment-warning-right.png b/AppKit/Resources/CPLevelIndicator/level-indicator-segment-warning-right.png new file mode 100644 index 000000000..3ac02048b Binary files /dev/null and b/AppKit/Resources/CPLevelIndicator/level-indicator-segment-warning-right.png differ diff --git a/AppKit/Themes/Aristo/Resources/rule-editor-add.png b/AppKit/Themes/Aristo/Resources/rule-editor-add.png new file mode 100644 index 000000000..5506b84f4 Binary files /dev/null and b/AppKit/Themes/Aristo/Resources/rule-editor-add.png differ diff --git a/AppKit/Themes/Aristo/Resources/rule-editor-remove.png b/AppKit/Themes/Aristo/Resources/rule-editor-remove.png new file mode 100644 index 000000000..0b5000123 Binary files /dev/null and b/AppKit/Themes/Aristo/Resources/rule-editor-remove.png differ diff --git a/AppKit/Themes/Aristo/ThemeDescriptors.j b/AppKit/Themes/Aristo/ThemeDescriptors.j index 01f92b720..d24fced93 100755 --- a/AppKit/Themes/Aristo/ThemeDescriptors.j +++ b/AppKit/Themes/Aristo/ThemeDescriptors.j @@ -326,7 +326,7 @@ var themedButtonValues = nil, + (CPArray)themeShowcaseExcludes { - return ["alert", "cornerview", "columnHeader", "tableView", "tableHeaderRow", "tableDataView"]; + return ["alert", "cornerview", "columnHeader", "tableView", "tableHeaderRow", "tableDataView", @"ruleeditor"]; } + (CPButton)makeButton @@ -1633,6 +1633,37 @@ var themedButtonValues = nil, return stepper; } ++ (CPRuleEditor)themedRuleEditor +{ + var ruleEditor = [[CPRuleEditor alloc] initWithFrame:CGRectMake(0, 0, 400, 300)]; + + var backgroundColors = [[CPColor whiteColor], [CPColor colorWithRed:235/255 green:239/255 blue:252/255 alpha:1]], + selectedActiveRowColor = [CPColor colorWithHexString:@"5f83b9"], + selectedInactiveRowColor = [CPColor colorWithWhite:0.83 alpha:1], + sliceTopBorderColor = [CPColor colorWithWhite:0.9 alpha:1], + sliceBottomBorderColor = [CPColor colorWithWhite:0.729412 alpha:1], + sliceLastBottomBorderColor = [CPColor colorWithWhite:0.6 alpha:1], + addImage = PatternImage(@"rule-editor-add.png", 8.0, 8.0), + removeImage = PatternImage(@"rule-editor-remove.png", 8.0, 8.0); + + var ruleEditorThemedValues = + [ + [@"alternating-row-colors", backgroundColors], + [@"selected-color", selectedActiveRowColor, CPThemeStateNormal], + [@"selected-color", selectedInactiveRowColor, CPThemeStateDisabled], + [@"slice-top-border-color", sliceTopBorderColor], + [@"slice-bottom-border-color", sliceBottomBorderColor], + [@"slice-last-bottom-border-color", sliceLastBottomBorderColor], + [@"font", [CPFont systemFontOfSize:10.0]], + [@"add-image", addImage], + [@"remove-image", removeImage] + ]; + + [self registerThemeValues:ruleEditorThemedValues forView:ruleEditor]; + + return ruleEditor; +} + @end @implementation AristoHUDThemeDescriptor : BKThemeDescriptor diff --git a/Foundation/CPArray+KVO.j b/Foundation/CPArray+KVO.j index afe962229..50a93479e 100644 --- a/Foundation/CPArray+KVO.j +++ b/Foundation/CPArray+KVO.j @@ -127,7 +127,7 @@ _removeManySEL = sel_getName(@"remove" + capitalizedKey + "AtIndexes:"); if ([_proxyObject respondsToSelector:_removeManySEL]) - _remove = [_proxyObject methodForSelector:_removeManySEL]; + _removeMany = [_proxyObject methodForSelector:_removeManySEL]; _replaceManySEL = sel_getName(@"replace" + capitalizedKey + "AtIndexes:with" + capitalizedKey + ":"); if ([_proxyObject respondsToSelector:_replaceManySEL]) diff --git a/Foundation/CPArray/CPMutableArray.j b/Foundation/CPArray/CPMutableArray.j index e9588dd51..94eecdb00 100644 --- a/Foundation/CPArray/CPMutableArray.j +++ b/Foundation/CPArray/CPMutableArray.j @@ -397,6 +397,17 @@ @end +@implementation CPArray (CPMutableCopying) + +- (id)mutableCopy +{ + var r = [CPMutableArray new]; + [r addObjectsFromArray:self]; + return r; +} + +@end + var selectorCompare = function selectorCompare(object1, object2, selector) { return [object1 performSelector:selector withObject:object2]; diff --git a/Foundation/CPKeyedArchiver.j b/Foundation/CPKeyedArchiver.j index 13fbe732d..624a42e2a 100644 --- a/Foundation/CPKeyedArchiver.j +++ b/Foundation/CPKeyedArchiver.j @@ -201,11 +201,10 @@ var _CPKeyedArchiverStringClass = Nil, for (; i < _objects.length; ++i) { - var object = _objects[i], - theClass = [object classForKeyedArchiver]; + var object = _objects[i]; // Do whatever with the class, yo. - // We call willEncodeObject previously. + // We called willEncodeObject previously. _plistObject = _plistObjects[[_UIDs objectForKey:[object UID]]]; [object encodeWithCoder:self]; diff --git a/Foundation/CPObject.j b/Foundation/CPObject.j index 6b3158a15..0a9e4f02c 100644 --- a/Foundation/CPObject.j +++ b/Foundation/CPObject.j @@ -329,6 +329,11 @@ CPLog(@"Got some class: %@", inst); return objj_msgSend(self, aSelector, anObject, anotherObject); } +- (id)forwardingTargetForSelector:(SEL)aSelector +{ + return nil; +} + // Forwarding Messages /*! Subclasses can override this method to forward message to @@ -341,36 +346,6 @@ CPLog(@"Got some class: %@", inst); [self doesNotRecognizeSelector:[anInvocation selector]]; } -/*! - Used for forwarding of messages to other objects. - @ignore -*/ -// FIXME: This should be moved to the runtime? -- (void)forward:(SEL)aSelector :(marg_list)args -{ - var signature = [self methodSignatureForSelector:aSelector]; - - if (signature) - { - var invocation = [CPInvocation invocationWithMethodSignature:signature]; - - [invocation setTarget:self]; - [invocation setSelector:aSelector]; - - var index = 2, - count = args.length; - - for (; index < count; ++index) - [invocation setArgument:args[index] atIndex:index]; - - [self forwardInvocation:invocation]; - - return [invocation returnValue]; - } - - [self doesNotRecognizeSelector:aSelector]; -} - // Error Handling /*! Called by the Objective-J runtime when an object can't respond to @@ -381,7 +356,7 @@ CPLog(@"Got some class: %@", inst); { [CPException raise:CPInvalidArgumentException reason: (class_isMetaClass(isa) ? "+" : "-") + " [" + [self className] + " " + aSelector + "] unrecognized selector sent to " + - (class_isMetaClass(isa) ? "class" : "instance") + " 0x" + [CPString stringWithHash:[self UID]]]; + (class_isMetaClass(isa) ? "class " + class_getName(isa) : "instance 0x" + [CPString stringWithHash:[self UID]])]; } // Archiving @@ -542,13 +517,3 @@ CPLog(@"Got some class: %@", inst); } @end - -// override toString on Objective-J objects so we get the actual description of the object -// when coerced to a string, instead of "[Object object]" -objj_class.prototype.toString = objj_object.prototype.toString = function() -{ - if (this.isa && class_getInstanceMethod(this.isa, "description") != NULL) - return [this description]; - else - return String(this) + " (-description not implemented)"; -} diff --git a/Foundation/CPPredicate/CPComparisonPredicate.j b/Foundation/CPPredicate/CPComparisonPredicate.j index b5707c891..c668c9282 100644 --- a/Foundation/CPPredicate/CPComparisonPredicate.j +++ b/Foundation/CPPredicate/CPComparisonPredicate.j @@ -438,14 +438,18 @@ var CPComparisonPredicateModifier, reg = new RegExp(rhs.escapeForRegExp(),commut); return reg.test(lhs); - case CPBeginsWithPredicateOperatorType: var range = CPMakeRange(0,[rhs length]); - if (_options & CPCaseInsensitivePredicateOption) string_compare_options |= CPCaseInsensitiveSearch; - if (_options & CPDiacriticInsensitivePredicateOption) string_compare_options |= CPDiacriticInsensitiveSearch; + case CPBeginsWithPredicateOperatorType: var range = CPMakeRange(0, MIN([lhs length], [rhs length])); + if (_options & CPCaseInsensitivePredicateOption) + string_compare_options |= CPCaseInsensitiveSearch; + if (_options & CPDiacriticInsensitivePredicateOption) + string_compare_options |= CPDiacriticInsensitiveSearch; return ([lhs compare:rhs options:string_compare_options range:range] == CPOrderedSame); - case CPEndsWithPredicateOperatorType: var range = CPMakeRange([lhs length] - [rhs length],[rhs length]); - if (_options & CPCaseInsensitivePredicateOption) string_compare_options |= CPCaseInsensitiveSearch; - if (_options & CPDiacriticInsensitivePredicateOption) string_compare_options |= CPDiacriticInsensitiveSearch; + case CPEndsWithPredicateOperatorType: var range = CPMakeRange(MAX([lhs length] - [rhs length], 0), MIN([lhs length], [rhs length])); + if (_options & CPCaseInsensitivePredicateOption) + string_compare_options |= CPCaseInsensitiveSearch; + if (_options & CPDiacriticInsensitivePredicateOption) + string_compare_options |= CPDiacriticInsensitiveSearch; return ([lhs compare:rhs options:string_compare_options range:range] == CPOrderedSame); case CPCustomSelectorPredicateOperatorType: return [lhs performSelector:_customSelector withObject:rhs]; diff --git a/Foundation/Jakefile b/Foundation/Jakefile index 3f339a409..90a5bdba9 100644 --- a/Foundation/Jakefile +++ b/Foundation/Jakefile @@ -42,7 +42,7 @@ foundationTask = framework ("Foundation", function(foundationTask) foundationTask.setInfoPlistPath("Info.plist"); foundationTask.setEnvironments(require("objective-j/jake/environment").ObjJ); - var INCLUDES = "--include \"../AppKit/Platform/Platform.h\""; + var INCLUDES = "--include \"../AppKit/Platform/Platform.h\" --include \"Ref.h\""; if ($CONFIGURATION === "Release") foundationTask.setCompilerFlags("-O " + INCLUDES); diff --git a/Foundation/Ref.h b/Foundation/Ref.h new file mode 100644 index 000000000..4f4038fe6 --- /dev/null +++ b/Foundation/Ref.h @@ -0,0 +1,30 @@ +/* + * Ref.h + * Foundation + * + * Created by Alexander Ljungberg. + * Copyright 2011, WireLoad Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* +Temporary macros to substitute for @ref and @deref functionality in a future version of Objective-J. Since these are C macros rather than a part of Preprocessor.js they can only be used within Cappuccino itself. +*/ + +// @ref +#define AT_REF(x) function(__input) { if (arguments.length) return x = __input; return x; } +// @deref (kind of) +#define AT_DEREF(x, ...) x(##__VA_ARGS__) diff --git a/Objective-J/CFPropertyList.js b/Objective-J/CFPropertyList.js index 4666b899f..da935afba 100644 --- a/Objective-J/CFPropertyList.js +++ b/Objective-J/CFPropertyList.js @@ -120,7 +120,12 @@ function serializePropertyList(/*CFPropertyList*/ aPropertyList, /*Object*/ seri else if (type === "number") { - if (FLOOR(aPropertyList) === aPropertyList) + // A number like 3.4028234663852885e+54 should not be written as an integer, even that it is + // an integer - it'd be awfully long if written by expanding it. Worse, if written as an + // integer with scientific notation the parseInt() used to read it back will parse it as + // just 3, thereby wasting many hours of sanity when you're trying to nib2cib a table and + // columns are mysteriously showing up 3 pixels wide. + if (FLOOR(aPropertyList) === aPropertyList && ("" + aPropertyList).indexOf('e') == -1) type = "integer"; else type = "real"; @@ -240,14 +245,14 @@ CFPropertyListSerializers[CFPropertyList.Format280North_v1_0] = "integer": function(/*Integer*/ anInteger) { var string = "" + anInteger; - + return INTEGER_MARKER + ';' + string.length + ';' + string; }, "real": function(/*Float*/ aFloat) { var string = "" + aFloat; - + return FLOAT_MARKER + ';' + string.length + ';' + string; }, @@ -259,7 +264,7 @@ CFPropertyListSerializers[CFPropertyList.Format280North_v1_0] = for (; index < count; ++index) string += serializePropertyList(anArray[index], serializers); - + return string + END_MARKER + ';'; }, @@ -340,57 +345,57 @@ var textContent = function(nodes) var _plist_traverseNextNode = function(anXMLNode, stayWithin, stack) { var node = anXMLNode; - + PLIST_FIRST_CHILD(node); - + // If this element has a child, traverse to it. if (node) return node; - + // If not, first check if it is a container class (as opposed to a designated leaf). // If it is, then we have to pop this container off the stack, since it is empty. if (NODE_NAME(anXMLNode) === PLIST_ARRAY || NODE_NAME(anXMLNode) === PLIST_DICTIONARY) stack.pop(); - + // If not, next check whether it has a sibling. else { if (node === stayWithin) return NULL; - + node = anXMLNode; - + PLIST_NEXT_SIBLING(node); - + if (node) - return node; + return node; } - + // If it doesn't, start working our way back up the node tree. node = anXMLNode; - + // While we have a node and it doesn't have a sibling (and we're within our stayWithin), // keep moving up. while (node) { var next = node; - + PLIST_NEXT_SIBLING(next); - + // If we have a next sibling, just go to it. if (next) return next; - + var node = PARENT_NODE(node); - - // If we are being asked to move up, and our parent is the stay within, then just + + // If we are being asked to move up, and our parent is the stay within, then just if (stayWithin && node === stayWithin) return NULL; - + // Pop the stack if we have officially "moved up" stack.pop(); } - + return NULL; } @@ -428,13 +433,13 @@ var ARRAY_MARKER = "A", function propertyListFrom280NorthString(/*String*/ aString) { var stream = new MarkedStream(aString), - + marker = NULL, - + key = "", object = NULL, plistObject = NULL, - + containers = [], currentContainer = NULL; @@ -445,12 +450,12 @@ function propertyListFrom280NorthString(/*String*/ aString) containers.pop(); continue; } - + var count = containers.length; - + if (count) currentContainer = containers[count - 1]; - + if (marker === KEY_MARKER) { key = stream.getString(); @@ -465,26 +470,27 @@ function propertyListFrom280NorthString(/*String*/ aString) case DICTIONARY_MARKER: object = new CFMutableDictionary(); containers.push(object); break; - + case FLOAT_MARKER: object = parseFloat(stream.getString()); break; + case INTEGER_MARKER: object = parseInt(stream.getString(), 10); break; - + case STRING_MARKER: object = stream.getString(); break; - + case TRUE_MARKER: object = YES; break; case FALSE_MARKER: object = NO; break; - + default: throw new Error("*** " + marker + " marker not recognized in Plist."); } if (!plistObject) plistObject = object; - + else if (currentContainer) // If the container is an array... if (currentContainer.slice) @@ -492,7 +498,7 @@ function propertyListFrom280NorthString(/*String*/ aString) else currentContainer.setValueForKey(key, object); } - + return plistObject; } @@ -539,7 +545,7 @@ CFPropertyList.propertyListFromXML = function(/*String | XMLNode*/ aStringOrXMLN // Skip over DOCTYPE and so forth. while (IS_OF_TYPE(XMLNode, XML_DOCUMENT) || IS_OF_TYPE(XMLNode, XML_XML)) PLIST_FIRST_CHILD(XMLNode); - + // Skip over the DOCTYPE... see a pattern? if (IS_DOCUMENTTYPE(XMLNode)) PLIST_NEXT_SIBLING(XMLNode); @@ -551,19 +557,19 @@ CFPropertyList.propertyListFromXML = function(/*String | XMLNode*/ aStringOrXMLN var key = "", object = NULL, plistObject = NULL, - + plistNode = XMLNode, - + containers = [], currentContainer = NULL; - + while (XMLNode = _plist_traverseNextNode(XMLNode, plistNode, containers)) { var count = containers.length; - + if (count) currentContainer = containers[count - 1]; - + if (NODE_NAME(XMLNode) === PLIST_KEY) { key = TEXT_CONTENT(XMLNode); @@ -590,22 +596,22 @@ CFPropertyList.propertyListFromXML = function(/*String | XMLNode*/ aStringOrXMLN object = decodeHTMLComponent(FIRST_CHILD(XMLNode) ? TEXT_CONTENT(XMLNode) : ""); break; - + case PLIST_BOOLEAN_TRUE: object = YES; break; case PLIST_BOOLEAN_FALSE: object = NO; break; - + case PLIST_DATA: object = new CFMutableData(); object.bytes = FIRST_CHILD(XMLNode) ? CFData.decodeBase64ToArray(TEXT_CONTENT(XMLNode), YES) : []; break; - + default: throw new Error("*** " + NODE_NAME(XMLNode) + " tag not recognized in Plist."); } if (!plistObject) plistObject = object; - + else if (currentContainer) // If the container is an array... if (currentContainer.slice) @@ -613,7 +619,7 @@ CFPropertyList.propertyListFromXML = function(/*String | XMLNode*/ aStringOrXMLN else currentContainer.setValueForKey(key, object); } - + return plistObject; } diff --git a/Objective-J/CommonJS/lib/objective-j/jake/bundletask.js b/Objective-J/CommonJS/lib/objective-j/jake/bundletask.js index e9cca5ee5..76f7abb92 100644 --- a/Objective-J/CommonJS/lib/objective-j/jake/bundletask.js +++ b/Objective-J/CommonJS/lib/objective-j/jake/bundletask.js @@ -51,6 +51,7 @@ function BundleTask(aName, anApplication) this._compilerFlags = null; this._flattensSources = false; this._includesNibsAndXibs = false; + this._preventsNib2Cib = false; this._productName = this.name(); @@ -204,6 +205,16 @@ BundleTask.prototype.includesNibsAndXibs = function() return this._includesNibsAndXibs; } +BundleTask.prototype.setPreventsNib2Cib = function(shouldPreventNib2Cib) +{ + this._preventsNib2Cib = shouldPreventNib2Cib; +} + +BundleTask.prototype.preventsNib2Cib = function() +{ + return this._preventsNib2Cib; +} + BundleTask.prototype.setProductName = function(aProductName) { this._productName = aProductName; @@ -486,9 +497,9 @@ BundleTask.prototype.defineResourceTask = function(aResourcePath, aDestinationPa var extension = FILE.extension(aResourcePath), extensionless = aResourcePath.substr(0, aResourcePath.length - extension.length); // NOT: - // (extname === ".cib" && (FILE.exists(extensionless + '.xib') || FILE.exists(extensionless + '.nib')) || + // (extname === ".cib" && (FILE.exists(extensionless + '.xib') || FILE.exists(extensionless + '.nib') && !this._preventsNib2Cib) || // (extname === ".xib" || extname === ".nib") && !this.shouldIncludeNibsAndXibs()) - if ((extension !== ".cib" || !FILE.exists(extensionless + ".xib") && !FILE.exists(extensionless + ".nib")) && + if ((extension !== ".cib" || !FILE.exists(extensionless + ".xib") && !FILE.exists(extensionless + ".nib") || this._preventsNib2Cib) && ((extension !== ".xib" && extension !== ".nib") || this.includesNibsAndXibs())) { filedir (aDestinationPath, [aResourcePath], function() @@ -505,7 +516,7 @@ BundleTask.prototype.defineResourceTask = function(aResourcePath, aDestinationPa this.enhance([aDestinationPath]); } - if (extension === ".xib" || extension === ".nib") + if ((extension === ".xib" || extension === ".nib") && !this._preventsNib2Cib) { var cibDestinationPath = FILE.join(FILE.dirname(aDestinationPath), FILE.basename(aDestinationPath, extension)) + ".cib"; diff --git a/Objective-J/Runtime.js b/Objective-J/Runtime.js index 0d1145d0f..413649cad 100644 --- a/Objective-J/Runtime.js +++ b/Objective-J/Runtime.js @@ -71,7 +71,7 @@ GLOBAL(objj_class) = function(displayName) this.method_dtable = this.method_store.prototype; #if DEBUG - // naming the allocator allows the WebKit heap snapshot tool to display object class names correctly + // Naming the allocator allows the WebKit heap snapshot tool to display object class names correctly // HACK: displayName property is not respected so we must eval a function to name it eval("this.allocator = function " + (displayName || "OBJJ_OBJECT").replace(/\W/g, "_") + "() { }"); #else @@ -342,10 +342,61 @@ var _class_initialize = function(/*Class*/ aClass) } } -var _objj_forward = new objj_method("forward", function(self, _cmd) +var _objj_forward = function(self, _cmd) { - return objj_msgSend(self, "forward::", _cmd, arguments); -}); + var isa = self.isa, + implementation = isa.method_dtable[SEL_forwardingTargetForSelector_]; + + if (implementation) + { + var target = implementation.method_imp.call(this, self, SEL_forwardingTargetForSelector_, _cmd); + + if (target && target !== self) + { + arguments[0] = target; + + return objj_msgSend.apply(this, arguments); + } + } + + implementation = isa.method_dtable[SEL_methodSignatureForSelector_]; + + if (implementation) + { + var forwardInvocationImplementation = isa.method_dtable[SEL_forwardInvocation_]; + + if (forwardInvocationImplementation) + { + var signature = implementation.method_imp.call(this, self, SEL_methodSignatureForSelector_, _cmd); + + if (signature) + { + var invocationClass = objj_lookUpClass("CPInvocation"); + + if (invocationClass) + { + var invocation = objj_msgSend(invocationClass, SEL_invocationWithMethodSignature_, signature), + index = 0, + count = arguments.length; + + for (; index < count; ++index) + objj_msgSend(invocation, SEL_setArgument_atIndex_, arguments[index], index); + + forwardInvocationImplementation.method_imp.call(this, self, SEL_forwardInvocation_, invocation); + + return objj_msgSend(invocation, SEL_returnValue); + } + } + } + } + + implementation = isa.method_dtable[SEL_doesNotRecognizeSelector_]; + + if (implementation) + return implementation.method_imp.call(this, self, SEL_doesNotRecognizeSelector_, _cmd); + + throw class_getName(isa) + " does not implement doesNotRecognizeSelector:. Did you forget a superclass for " + class_getName(isa) + "?"; +}; // I think this forward:: may need to be a common method, instead of defined in CPObject. #define CLASS_GET_METHOD_IMPLEMENTATION(aMethodImplementation, aClass, aSelector)\ @@ -354,10 +405,7 @@ var _objj_forward = new objj_method("forward", function(self, _cmd) \ var method = aClass.method_dtable[aSelector];\ \ - if (!method)\ - method = _objj_forward;\ - \ - aMethodImplementation = method.method_imp; + aMethodImplementation = method ? method.method_imp : _objj_forward; GLOBAL(class_getMethodImplementation) = function(/*Class*/ aClass, /*SEL*/ aSelector) { @@ -657,3 +705,27 @@ GLOBAL(sel_registerName) = function(/*String*/ aName) } DISPLAY_NAME(sel_registerName); + +objj_class.prototype.toString = objj_object.prototype.toString = function() +{ + var isa = this.isa; + + if (class_getInstanceMethod(isa, SEL_description)) + return objj_msgSend(this, SEL_description); + + if (class_isMetaClass(isa)) + return this.name; + + return "[" + isa.name + " Object](-description not implemented)"; +} + +var SEL_description = sel_getUid("description"), + SEL_forwardingTargetForSelector_ = sel_getUid("forwardingTargetForSelector:"), + SEL_methodSignatureForSelector_ = sel_getUid("methodSignatureForSelector:"), + SEL_forwardInvocation_ = sel_getUid("forwardInvocation:"), + SEL_doesNotRecognizeSelector_ = sel_getUid("doesNotRecognizeSelector:"), + SEL_invocationWithMethodSignature_ = sel_getUid("invocationWithMethodSignature:"), + SEL_setTarget_ = sel_getUid("setTarget:"), + SEL_setSelector_ = sel_getUid("setSelector:"), + SEL_setArgument_atIndex_ = sel_getUid("setArgument:atIndex:"), + SEL_returnValue = sel_getUid("returnValue"); diff --git a/Tests/AppKit/CGContextTest.j b/Tests/AppKit/CGContextTest.j index 0ed6242e6..8b4499825 100644 --- a/Tests/AppKit/CGContextTest.j +++ b/Tests/AppKit/CGContextTest.j @@ -8,12 +8,18 @@ /* Ensure that we have no canvas nor vml support. */ - [self assert:YES equals:!CPFeatureIsCompatible(CPHTMLCanvasFeature)]; + if (system.engine !== "jsc") + { + [self assert:YES equals:!CPFeatureIsCompatible(CPHTMLCanvasFeature)]; + } [self assert:YES equals:!CPFeatureIsCompatible(CPVMLFeature)]; } - (void)testGStateCreate { + if (CPFeatureIsCompatible(CPHTMLCanvasFeature)) + return; + var gstate = CGGStateCreate(), testdata = { alpha: 1.0, strokeStyle: "#000", @@ -41,6 +47,9 @@ - (void)testGStateCreateCopy { + if (CPFeatureIsCompatible(CPHTMLCanvasFeature)) + return; + var gstate = CGGStateCreate(), gstatecopy = CGGStateCreateCopy(gstate), testdata = { alpha: 1.0, diff --git a/Tests/AppKit/CPArrayControllerPerformance.j b/Tests/AppKit/CPArrayControllerPerformance.j index 083f9b343..98137b1ee 100644 --- a/Tests/AppKit/CPArrayControllerPerformance.j +++ b/Tests/AppKit/CPArrayControllerPerformance.j @@ -2,16 +2,17 @@ @import @import +var ELEMENTS = 200, + REPEATS = 25; + @implementation CPArrayControllerPerformance : OJTestCase -- (void)testRearrangeObjects +- (CPArrayController)setupWithElements:(int)aCount { - var ELEMENTS = 200, - REPEATS = 25, - ac = [CPArrayController new], + var ac = [CPArrayController new], array = []; - for (var i = 0; i < ELEMENTS; i++) + for (var i = 0; i < aCount; i++) { var s = [Sortable new]; [s setA:i]; @@ -19,15 +20,17 @@ array.push(s); } - var descriptors = [ - [CPSortDescriptor sortDescriptorWithKey:"a" ascending:NO], - ]; - [ac setContent:array]; - [ac setFilterPredicate:[CPPredicate predicateWithFormat:@"(b != %@)", 0]]; + return ac; +} + +- (void)testRearrangeObjects +{ + var ac = [self setupWithElements:ELEMENTS]; + // Filter alone var start = (new Date).getTime(); for (var i = 0; i < REPEATS; i++) @@ -41,7 +44,7 @@ for (var j = 0, count = [sorted count]; j < count; j++) { if (sorted[j].b == 0) - [self fail:"b == 0 should be filtered out (position: "+j+")"]; + [self fail:"b == 0 should be filtered out (position: " + j + ")"]; last = sorted[j]; } } @@ -49,7 +52,9 @@ CPLog.warn("testRearrangeObjects, filter: "+(end-start)+"ms"); - [ac setSortDescriptors:descriptors]; + [ac setSortDescriptors:[ + [CPSortDescriptor sortDescriptorWithKey:"a" ascending:NO], + ]]; // Filter and sort. start = (new Date).getTime(); @@ -64,9 +69,9 @@ for (var j = 0, count = [sorted count]; j < count; j++) { if (sorted[j].b == 0) - [self fail:"b == 0 should be filtered out (position: "+j+")"]; + [self fail:"b == 0 should be filtered out (position: " + j + ")"]; if (sorted[j].a >= last) - [self fail:"array values should be descending (position: "+j+")"]; + [self fail:"array values should be descending (position: " + j + ")"]; last = sorted[j]; } } @@ -75,6 +80,64 @@ CPLog.warn("testRearrangeObjects, filter and sort: "+(end-start)+"ms"); } +- (void)testAddObject_ +{ + var ac = [self setupWithElements:ELEMENTS], + predicate = [ac filterPredicate], + content = [[ac content] copy]; + + // Add object while clearing the predicate. + [ac setClearsFilterPredicateOnInsertion:YES]; + + [ac setSortDescriptors:[ + [CPSortDescriptor sortDescriptorWithKey:"a" ascending:NO], + ]]; + + var start = (new Date).getTime(); + for (var i = 0; i < REPEATS / 2; i++) + { + [ac setFilterPredicate:predicate]; + [ac addObject:[Sortable sortableWithA:i B:i * 2]]; + + var sorted = [ac arrangedObjects], + last = ELEMENTS; + + // Verify that all is well. + for (var j = 0, count = [sorted count]; j < count; j++) + { + if (sorted[j].a >= last) + [self fail:"array values should be descending (position: " + j + ")"]; + last = sorted[j]; + } + } + var end = (new Date).getTime(); + CPLog.warn("testAddObject_, sorted, clear filter on insert: " + (end - start) + "ms"); + + [ac setClearsFilterPredicateOnInsertion:NO]; + [ac setFilterPredicate:predicate]; + + var start = (new Date).getTime(); + for (var i = 0; i < REPEATS; i++) + { + [ac addObject:[Sortable sortableWithA:i B:i % 3]]; + + var sorted = [ac arrangedObjects], + last = ELEMENTS; + + // Verify that all is well. + for (var j = 0, count = [sorted count]; j < count; j++) + { + if (sorted[j].b == 0) + [self fail:"b == 0 should be filtered out (position: " + j + ")"]; + if (sorted[j].a >= last) + [self fail:"array values should be descending (position: " + j + ")"]; + last = sorted[j]; + } + } + var end = (new Date).getTime(); + CPLog.warn("testAddObject_, sorted, filtered: " + (end - start) + "ms"); +} + @end @implementation Sortable : CPObject @@ -83,4 +146,12 @@ int b @accessors; } ++ (id)sortableWithA:(int)anA B:(int)aB +{ + var r = [Sortable new]; + r.a = anA; + r.b = aB; + return r; +} + @end \ No newline at end of file diff --git a/Tests/AppKit/CPArrayControllerTest.j b/Tests/AppKit/CPArrayControllerTest.j index 5d5a85157..992852b9f 100644 --- a/Tests/AppKit/CPArrayControllerTest.j +++ b/Tests/AppKit/CPArrayControllerTest.j @@ -412,6 +412,32 @@ [self assert:newSelection equals:[arrayController selectionIndexes] message:@"selection was not set properly"]; } +- (void)testObservationDuringAddObject_ +{ + var arrayController = [self arrayController]; + + [arrayController addObserver:self forKeyPath:@"arrangedObjects" options:CPKeyValueObservingOptionOld | CPKeyValueObservingOptionNew context:nil]; + + // Add something to clear. + [arrayController setFilterPredicate:[CPPredicate predicateWithFormat:@"(name != %@)", "Francisco"]]; + observations = []; + var aPerson = [Employee employeeWithName:@"Alexander" department:[Department departmentWithName:@"Cosmic Path Finding"]]; + + [arrayController setClearsFilterPredicateOnInsertion:NO]; + [self assert:0 equals:[observations count] message:@"no observations before addObject test"]; + [arrayController addObject:aPerson]; + [self assert:1 equals:[observations count] message:@"exactly 1 notification for addObject (clearsFilterPredicate NO)"]; + + observations = []; + + // Even that this is on, adding an object should only result in one notification. + [arrayController setClearsFilterPredicateOnInsertion:YES]; + + [self assert:0 equals:[observations count] message:@"no observations before addObject test"]; + [arrayController addObject:aPerson]; + [self assert:1 equals:[observations count] message:@"exactly 1 notification for addObject (clearsFilterPredicate YES)"]; +} + - (void)testCompoundKeyPaths { var departmentNameField = [[CPTextField alloc] init]; diff --git a/Tests/AppKit/CPMenuValidatedUserInterfaceItemTest.j b/Tests/AppKit/CPMenuValidatedUserInterfaceItemTest.j index 4322239fa..e60c456db 100644 --- a/Tests/AppKit/CPMenuValidatedUserInterfaceItemTest.j +++ b/Tests/AppKit/CPMenuValidatedUserInterfaceItemTest.j @@ -43,7 +43,7 @@ var CPMenuValidatedUserInterfaceItemTestValidatedItems = []; var parentItem = [[self menu] itemWithTitle:@"parent"]; [self assertTrue:[parentItem isEnabled] message:@"Parent items should never be disabled"]; - [self assertFalse:[[[self menuTarget] validatedItems] containsObject:parent] message:@"Parent items should never be validated"]; + [self assertFalse:[[[self menuTarget] validatedItems] containsObject:parentItem] message:@"Parent items should never be validated"]; } @end diff --git a/Tests/Foundation/CPMutableArrayTest.j b/Tests/Foundation/CPMutableArrayTest.j index 44fcba9f6..8cb356633 100644 --- a/Tests/Foundation/CPMutableArrayTest.j +++ b/Tests/Foundation/CPMutableArrayTest.j @@ -2,7 +2,6 @@ @import @import "CPArrayTest.j" - @implementation CPMutableArrayTest : CPArrayTest + (Class)arrayClass @@ -448,6 +447,19 @@ [self assert:[5, 4, 4, 3, 2, 2, 1, 1, 1, 1] equals:target]; } +- (void)testMutableCopy +{ + var normalArray = [CPArray array]; + + [self assertThrows:function () { [array addObject:[CPNull null]] }]; + + var mutableArray = [normalArray mutableCopy]; + + [mutableArray addObject:[CPNull null]]; + + [self assert:1 equals:[mutableArray count] message:"mutable copy should have content"]; +} + @end @implementation CPPrettyObject : CPObject diff --git a/Tests/Foundation/CPPredicateTest.j b/Tests/Foundation/CPPredicateTest.j index 3090e506b..602d3a6d3 100644 --- a/Tests/Foundation/CPPredicateTest.j +++ b/Tests/Foundation/CPPredicateTest.j @@ -189,6 +189,28 @@ [self assertTrue:[pred evaluateWithObject:dict] message:"'"+ [pred description] + "' should be true"]; } +- (void)testBeginsWithEndsWithPredicate +{ + // This always worked + var data = ["To", "Tom", "Tomb", "Tomboy"], + pred = [CPPredicate predicateWithFormat:@"SELF beginsWith 'To'"], + result = [data filteredArrayUsingPredicate:pred]; + + [self assertTrue:result.length === 4 message:"'" + [pred description] + "' should return [\"To\", \"Tom\", \"Tomb\", \"Tomboy\"]"]; + + // Make sure beginsWith comparison string longer than source strings works + pred = [CPPredicate predicateWithFormat:@"SELF beginsWith 'Tomb'"]; + result = [data filteredArrayUsingPredicate:pred]; + + [self assertTrue:[result isEqual:["Tomb", "Tomboy"]] message:"'" + [pred description] + "' should return [\"Tomb\", \"Tomboy\"]"]; + + // Make sure endsWith comparison string longer than source strings works + pred = [CPPredicate predicateWithFormat:@"SELF endsWith 'boy'"]; + result = [data filteredArrayUsingPredicate:pred]; + + [self assertTrue:[result isEqual:["Tomboy"]] message:"'" + [pred description] + "' should return [\"Tomboy\"]"]; +} + - (void)testNilComparisons { // Custom Selector Predicate diff --git a/Tests/Manual/CPLevelIndicator/AppController.j b/Tests/Manual/CPLevelIndicator/AppController.j new file mode 100644 index 000000000..624f05478 --- /dev/null +++ b/Tests/Manual/CPLevelIndicator/AppController.j @@ -0,0 +1,30 @@ +/* + * AppController.j + * CPLevelIndicator + * + * Created by Alexander Ljungberg on May 28, 2011. + * Copyright 2011, WireLoad All rights reserved. + */ + +@import + + +@implementation AppController : CPObject +{ + CPWindow theWindow; //this "outlet" is connected automatically by the Cib +} + +- (void)applicationDidFinishLaunching:(CPNotification)aNotification +{ + // This is called when the application is done loading. +} + +- (void)awakeFromCib +{ + // This is called when the cib is done loading. + // You can implement this method on any object instantiated from a Cib. + // It's a useful hook for setting up current UI values, and other things. + +} + +@end diff --git a/Tests/Manual/CPLevelIndicator/Info.plist b/Tests/Manual/CPLevelIndicator/Info.plist new file mode 100644 index 000000000..877388578 --- /dev/null +++ b/Tests/Manual/CPLevelIndicator/Info.plist @@ -0,0 +1,10 @@ + + + + + Main cib file base name + MainMenu.cib + CPBundleName + CPLevelIndicator + + diff --git a/Tests/Manual/CPLevelIndicator/Jakefile b/Tests/Manual/CPLevelIndicator/Jakefile new file mode 100644 index 000000000..bd57b7a0d --- /dev/null +++ b/Tests/Manual/CPLevelIndicator/Jakefile @@ -0,0 +1,94 @@ +/* + * Jakefile + * CPLevelIndicator + * + * Created by Alexander Ljungberg on May 28, 2011. + * Copyright 2011, WireLoad All rights reserved. + */ + +var ENV = require("system").env, + FILE = require("file"), + JAKE = require("jake"), + task = JAKE.task, + FileList = JAKE.FileList, + app = require("cappuccino/jake").app, + configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug", + OS = require("os"); + +app ("CPLevelIndicator", function(task) +{ + task.setBuildIntermediatesPath(FILE.join("Build", "CPLevelIndicator.build", configuration)); + task.setBuildPath(FILE.join("Build", configuration)); + + task.setProductName("CPLevelIndicator"); + task.setIdentifier("com.yourcompany.CPLevelIndicator"); + task.setVersion("1.0"); + task.setAuthor("WireLoad"); + task.setEmail("feedback @nospam@ yourcompany.com"); + task.setSummary("CPLevelIndicator"); + task.setSources((new FileList("**/*.j")).exclude(FILE.join("Build", "**"))); + task.setResources(new FileList("Resources/**")); + task.setIndexFilePath("index.html"); + task.setInfoPlistPath("Info.plist"); + task.setNib2CibFlags("-R Resources/"); + + if (configuration === "Debug") + task.setCompilerFlags("-DDEBUG -g"); + else + task.setCompilerFlags("-O"); +}); + +task ("default", ["CPLevelIndicator"], function() +{ + printResults(configuration); +}); + +task ("build", ["default"]); + +task ("debug", function() +{ + ENV["CONFIGURATION"] = "Debug"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("release", function() +{ + ENV["CONFIGURATION"] = "Release"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("run", ["debug"], function() +{ + OS.system(["open", FILE.join("Build", "Debug", "CPLevelIndicator", "index.html")]); +}); + +task ("run-release", ["release"], function() +{ + OS.system(["open", FILE.join("Build", "Release", "CPLevelIndicator", "index.html")]); +}); + +task ("deploy", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Deployment", "CPLevelIndicator")); + OS.system(["press", "-f", FILE.join("Build", "Release", "CPLevelIndicator"), FILE.join("Build", "Deployment", "CPLevelIndicator")]); + printResults("Deployment") +}); + +task ("desktop", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Desktop", "CPLevelIndicator")); + require("cappuccino/nativehost").buildNativeHost(FILE.join("Build", "Release", "CPLevelIndicator"), FILE.join("Build", "Desktop", "CPLevelIndicator", "CPLevelIndicator.app")); + printResults("Desktop") +}); + +task ("run-desktop", ["desktop"], function() +{ + OS.system([FILE.join("Build", "Desktop", "CPLevelIndicator", "CPLevelIndicator.app", "Contents", "MacOS", "NativeHost"), "-i"]); +}); + +function printResults(configuration) +{ + print("----------------------------"); + print(configuration+" app built at path: "+FILE.join("Build", configuration, "CPLevelIndicator")); + print("----------------------------"); +} diff --git a/Tests/Manual/CPLevelIndicator/Resources/MainMenu.cib b/Tests/Manual/CPLevelIndicator/Resources/MainMenu.cib new file mode 100644 index 000000000..ad53860a6 --- /dev/null +++ b/Tests/Manual/CPLevelIndicator/Resources/MainMenu.cib @@ -0,0 +1 @@ +280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;4E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;7E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;9E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;2;10E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;2;11E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;2;12E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;2;13E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;2;14E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;16E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;18E;E;D;K;10;$classnameS;7;CPArrayK;8;$classesA;S;7;CPArrayS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;3;126E;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;137E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;3;142E;D;K;6;CP$UIDd;3;143E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;3;148E;D;K;6;CP$UIDd;3;149E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;150E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;153E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;155E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;156E;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;3;158E;D;K;6;CP$UIDd;3;159E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;161E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;3;163E;D;K;6;CP$UIDd;3;164E;D;K;6;CP$UIDd;3;165E;D;K;6;CP$UIDd;3;166E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;168E;D;K;6;CP$UIDd;3;169E;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;3;171E;D;K;6;CP$UIDd;3;172E;D;K;6;CP$UIDd;3;173E;D;K;6;CP$UIDd;3;174E;D;K;6;CP$UIDd;3;175E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;177E;D;K;6;CP$UIDd;3;178E;D;K;6;CP$UIDd;3;179E;D;K;6;CP$UIDd;3;180E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;3;183E;D;K;6;CP$UIDd;3;184E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;186E;D;K;6;CP$UIDd;3;187E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;189E;D;K;6;CP$UIDd;3;190E;D;K;6;CP$UIDd;3;191E;D;K;6;CP$UIDd;3;192E;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;3;194E;D;K;6;CP$UIDd;3;195E;D;K;6;CP$UIDd;3;196E;D;K;6;CP$UIDd;3;197E;D;K;6;CP$UIDd;3;198E;D;K;6;CP$UIDd;3;199E;D;K;6;CP$UIDd;3;200E;D;K;6;CP$UIDd;3;201E;D;K;6;CP$UIDd;3;202E;D;K;6;CP$UIDd;3;203E;D;K;6;CP$UIDd;3;204E;D;K;6;CP$UIDd;3;205E;D;K;6;CP$UIDd;3;206E;D;K;6;CP$UIDd;3;207E;D;K;6;CP$UIDd;3;208E;D;K;6;CP$UIDd;3;209E;D;K;6;CP$UIDd;3;210E;D;K;6;CP$UIDd;3;211E;D;K;6;CP$UIDd;3;212E;D;K;6;CP$UIDd;3;213E;D;K;6;CP$UIDd;3;214E;D;K;6;CP$UIDd;3;215E;D;K;6;CP$UIDd;3;216E;D;K;6;CP$UIDd;3;217E;D;K;6;CP$UIDd;3;218E;D;K;6;CP$UIDd;3;219E;D;K;6;CP$UIDd;3;220E;D;K;6;CP$UIDd;3;221E;D;K;6;CP$UIDd;3;222E;D;K;6;CP$UIDd;3;223E;D;K;6;CP$UIDd;3;224E;D;K;6;CP$UIDd;3;225E;D;K;6;CP$UIDd;3;226E;D;K;6;CP$UIDd;3;227E;D;K;6;CP$UIDd;3;228E;D;K;6;CP$UIDd;3;229E;D;K;6;CP$UIDd;3;230E;D;K;6;CP$UIDd;3;231E;D;K;6;CP$UIDd;3;232E;D;K;6;CP$UIDd;3;233E;D;K;6;CP$UIDd;3;234E;D;K;6;CP$UIDd;3;235E;D;K;6;CP$UIDd;3;236E;D;K;6;CP$UIDd;3;237E;D;K;6;CP$UIDd;3;238E;D;K;6;CP$UIDd;3;239E;D;K;6;CP$UIDd;3;240E;D;K;6;CP$UIDd;3;241E;D;K;6;CP$UIDd;3;242E;D;K;6;CP$UIDd;3;243E;D;K;6;CP$UIDd;3;244E;D;K;6;CP$UIDd;3;245E;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;247E;D;K;6;CP$UIDd;3;248E;D;K;6;CP$UIDd;3;249E;D;K;6;CP$UIDd;3;250E;D;K;6;CP$UIDd;3;251E;D;K;6;CP$UIDd;3;252E;D;K;6;CP$UIDd;3;253E;D;K;6;CP$UIDd;3;254E;D;K;6;CP$UIDd;3;255E;D;K;6;CP$UIDd;3;256E;D;K;6;CP$UIDd;3;257E;D;K;6;CP$UIDd;3;258E;D;K;6;CP$UIDd;3;259E;D;K;6;CP$UIDd;3;260E;D;K;6;CP$UIDd;3;261E;D;K;6;CP$UIDd;3;262E;D;K;6;CP$UIDd;3;263E;D;K;6;CP$UIDd;3;264E;D;K;6;CP$UIDd;3;265E;D;K;6;CP$UIDd;3;266E;D;K;6;CP$UIDd;3;267E;D;K;6;CP$UIDd;3;268E;D;K;6;CP$UIDd;3;269E;D;K;6;CP$UIDd;3;270E;D;K;6;CP$UIDd;3;271E;D;K;6;CP$UIDd;3;272E;D;K;6;CP$UIDd;3;273E;D;K;6;CP$UIDd;3;274E;D;K;6;CP$UIDd;3;275E;D;K;6;CP$UIDd;3;276E;D;K;6;CP$UIDd;3;277E;D;K;6;CP$UIDd;3;278E;D;K;6;CP$UIDd;3;279E;D;K;6;CP$UIDd;3;280E;D;K;6;CP$UIDd;3;281E;D;K;6;CP$UIDd;3;282E;D;K;6;CP$UIDd;3;283E;D;K;6;CP$UIDd;3;284E;D;K;6;CP$UIDd;3;285E;D;K;6;CP$UIDd;3;286E;D;K;6;CP$UIDd;3;287E;D;K;6;CP$UIDd;3;288E;D;K;6;CP$UIDd;3;289E;D;K;6;CP$UIDd;3;290E;D;K;6;CP$UIDd;3;291E;D;K;6;CP$UIDd;3;292E;D;K;6;CP$UIDd;3;293E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;295E;D;K;6;CP$UIDd;3;296E;D;K;6;CP$UIDd;3;298E;D;K;6;CP$UIDd;3;299E;D;K;6;CP$UIDd;3;300E;D;K;6;CP$UIDd;3;301E;D;K;6;CP$UIDd;3;302E;D;K;6;CP$UIDd;3;303E;D;K;6;CP$UIDd;3;304E;D;K;6;CP$UIDd;3;305E;D;K;6;CP$UIDd;3;306E;D;K;6;CP$UIDd;3;307E;D;K;6;CP$UIDd;3;308E;D;K;6;CP$UIDd;3;309E;D;K;6;CP$UIDd;3;310E;D;K;6;CP$UIDd;3;311E;D;K;6;CP$UIDd;3;312E;D;K;6;CP$UIDd;3;313E;D;K;6;CP$UIDd;3;314E;D;K;6;CP$UIDd;3;315E;D;K;6;CP$UIDd;3;316E;D;K;6;CP$UIDd;3;317E;D;K;6;CP$UIDd;3;318E;D;K;6;CP$UIDd;3;319E;D;K;6;CP$UIDd;3;320E;D;K;6;CP$UIDd;3;321E;D;K;6;CP$UIDd;3;322E;D;K;6;CP$UIDd;3;323E;D;K;6;CP$UIDd;3;324E;D;K;6;CP$UIDd;3;325E;D;K;6;CP$UIDd;3;326E;D;K;6;CP$UIDd;3;327E;D;K;6;CP$UIDd;3;328E;D;K;6;CP$UIDd;3;329E;D;K;6;CP$UIDd;3;330E;D;K;6;CP$UIDd;3;331E;D;K;6;CP$UIDd;3;332E;D;K;6;CP$UIDd;3;333E;D;K;6;CP$UIDd;3;334E;D;K;6;CP$UIDd;3;335E;D;K;6;CP$UIDd;3;336E;D;K;6;CP$UIDd;3;337E;D;K;6;CP$UIDd;3;338E;D;K;6;CP$UIDd;3;339E;D;K;6;CP$UIDd;3;340E;D;K;6;CP$UIDd;3;341E;D;K;6;CP$UIDd;3;342E;D;K;6;CP$UIDd;3;343E;D;K;6;CP$UIDd;3;344E;D;K;6;CP$UIDd;3;345E;D;K;6;CP$UIDd;3;346E;D;K;6;CP$UIDd;3;347E;D;K;6;CP$UIDd;3;348E;D;K;6;CP$UIDd;3;349E;D;K;6;CP$UIDd;3;350E;D;K;6;CP$UIDd;3;351E;D;K;6;CP$UIDd;3;352E;D;K;6;CP$UIDd;3;353E;D;K;6;CP$UIDd;3;354E;D;K;6;CP$UIDd;3;355E;D;K;6;CP$UIDd;3;356E;D;K;6;CP$UIDd;3;357E;D;K;6;CP$UIDd;3;358E;D;K;6;CP$UIDd;3;359E;D;K;6;CP$UIDd;3;360E;D;K;6;CP$UIDd;3;361E;D;K;6;CP$UIDd;3;362E;D;K;6;CP$UIDd;3;363E;D;K;6;CP$UIDd;3;364E;E;E;S;16;IBCocoaFrameworkD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;3;126E;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;137E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;3;142E;D;K;6;CP$UIDd;3;143E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;3;148E;D;K;6;CP$UIDd;3;149E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;150E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;153E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;2;20E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;2;98E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;18;_CPCibCustomObjectK;8;$classesA;S;18;_CPCibCustomObjectS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;365E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;3;366E;E;D;K;10;$classnameS;10;CPMenuItemK;8;$classesA;S;10;CPMenuItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;367E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;368E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;98E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;369E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;371E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;133E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;372E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;141E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;373E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;374E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;98E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;375E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;10;$classnameS;16;CPLevelIndicatorK;8;$classesA;S;16;CPLevelIndicatorS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;89E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;376E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;377E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;378E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;89E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;379E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;380E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;376E;K;11;$aalignmentD;K;6;CP$UIDd;3;376E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;381E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;382E;K;24;CPLevelIndicatorStyleKeyD;K;6;CP$UIDd;3;368E;K;27;CPLevelIndicatorMinValueKeyD;K;6;CP$UIDd;3;376E;K;27;CPLevelIndicatorMaxValueKeyD;K;6;CP$UIDd;3;383E;K;31;CPLevelIndicatorWarningValueKeyD;K;6;CP$UIDd;3;384E;K;32;CPLevelIndicatorCriticalValueKeyD;K;6;CP$UIDd;3;385E;K;35;CPLevelIndicatorTickMarkPositionKeyD;K;6;CP$UIDd;3;376E;K;36;CPLevelIndicatorNumberOfTickMarksKeyD;K;6;CP$UIDd;3;376E;K;41;CPLevelIndicatorNumberOfMajorTickMarksKeyD;K;6;CP$UIDd;1;0E;K;29;CPLevelIndicatorIsEditableKeyD;K;6;CP$UIDd;3;386E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;387E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;113E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;388E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;132E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;389E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;390E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;391E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;392E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;393E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;394E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;89E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;395E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;133E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;396E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;397E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;398E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;92E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;399E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;397E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;400E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;132E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;401E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;402E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;386E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;403E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;404E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;92E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;405E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;374E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;136E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;375E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;406E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;72E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;407E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;408E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;409E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;58E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;133E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;410E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;409E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;114E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;82E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;411E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;147E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;412E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;133E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;413E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;10;$classnameS;6;CPMenuK;8;$classesA;S;6;CPMenuS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;40E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;414E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;415E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;416E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;409E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;77E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;132E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;417E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;409E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;98E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;132E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;418E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;419E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;132E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;420E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;421E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;116E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;422E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;397E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;423E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;77E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;424E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;113E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;389E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;425E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;426E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;393E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;98E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;427E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;428E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;409E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;95E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;72E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;386E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;403E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;404E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;132E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;386E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;403E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;404E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;147E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;89E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;376E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;429E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;378E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;89E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;379E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;380E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;376E;K;11;$aalignmentD;K;6;CP$UIDd;3;376E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;368E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;382E;K;24;CPLevelIndicatorStyleKeyD;K;6;CP$UIDd;3;368E;K;27;CPLevelIndicatorMinValueKeyD;K;6;CP$UIDd;3;376E;K;27;CPLevelIndicatorMaxValueKeyD;K;6;CP$UIDd;3;368E;K;31;CPLevelIndicatorWarningValueKeyD;K;6;CP$UIDd;3;368E;K;32;CPLevelIndicatorCriticalValueKeyD;K;6;CP$UIDd;3;368E;K;35;CPLevelIndicatorTickMarkPositionKeyD;K;6;CP$UIDd;3;376E;K;36;CPLevelIndicatorNumberOfTickMarksKeyD;K;6;CP$UIDd;3;376E;K;41;CPLevelIndicatorNumberOfMajorTickMarksKeyD;K;6;CP$UIDd;1;0E;K;29;CPLevelIndicatorIsEditableKeyD;K;6;CP$UIDd;3;404E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;430E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;368E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;92E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;431E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;432E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;93E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;433E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;133E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;434E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;435E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;113E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;399E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;425E;E;D;K;6;$classD;K;6;CP$UIDd;2;40E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;408E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;436E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;437E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;438E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;409E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;141E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;92E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;439E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;132E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;440E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;81E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;441E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;141E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;442E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;409E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;136E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;132E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;443E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;444E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;136E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;445E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;402E;E;D;K;10;$classnameS;11;CPTextFieldK;8;$classesA;S;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;89E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;376E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;446E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;447E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;89E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;448E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;449E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;450E;K;6;$afontD;K;6;CP$UIDd;3;452E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;368E;K;11;$aalignmentD;K;6;CP$UIDd;3;382E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;386E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;403E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;453E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;386E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;386E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;386E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;455E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;368E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;382E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;456E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;409E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;133E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;82E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;457E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;72E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;458E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;386E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;403E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;404E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;133E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;89E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;376E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;459E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;447E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;89E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;448E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;449E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;450E;K;6;$afontD;K;6;CP$UIDd;3;460E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;368E;K;11;$aalignmentD;K;6;CP$UIDd;3;382E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;386E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;403E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;453E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;386E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;386E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;386E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;455E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;368E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;382E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;461E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;72E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;462E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;40E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;463E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;464E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;465E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;368E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;136E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;369E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;463E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;409E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;72E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;82E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;466E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;409E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;81E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;92E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;467E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;132E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;468E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;40E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;416E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;469E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;470E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;444E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;92E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;471E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;472E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;132E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;399E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;473E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;132E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;474E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;40E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;466E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;475E;E;D;K;6;$classD;K;6;CP$UIDd;2;40E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;476E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;477E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;478E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;386E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;403E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;404E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;92E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;386E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;403E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;404E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;92E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;89E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;376E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;479E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;378E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;89E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;379E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;380E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;376E;K;11;$aalignmentD;K;6;CP$UIDd;3;376E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;368E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;382E;K;24;CPLevelIndicatorStyleKeyD;K;6;CP$UIDd;3;368E;K;27;CPLevelIndicatorMinValueKeyD;K;6;CP$UIDd;3;480E;K;27;CPLevelIndicatorMaxValueKeyD;K;6;CP$UIDd;3;368E;K;31;CPLevelIndicatorWarningValueKeyD;K;6;CP$UIDd;3;368E;K;32;CPLevelIndicatorCriticalValueKeyD;K;6;CP$UIDd;3;368E;K;35;CPLevelIndicatorTickMarkPositionKeyD;K;6;CP$UIDd;3;376E;K;36;CPLevelIndicatorNumberOfTickMarksKeyD;K;6;CP$UIDd;3;376E;K;41;CPLevelIndicatorNumberOfMajorTickMarksKeyD;K;6;CP$UIDd;1;0E;K;29;CPLevelIndicatorIsEditableKeyD;K;6;CP$UIDd;3;386E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;481E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;409E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;147E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;82E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;482E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;409E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;132E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;82E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;10;$classnameS;6;CPViewK;8;$classesA;S;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;88E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;376E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;483E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;484E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;485E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;380E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;386E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;403E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;404E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;133E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;486E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;72E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;487E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;40E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;488E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;489E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;490E;E;D;K;6;$classD;K;6;CP$UIDd;2;40E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;491E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;492E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;493E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;77E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;40E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;428E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;494E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;495E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;496E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;92E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;422E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;89E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;376E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;497E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;447E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;89E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;448E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;449E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;450E;K;6;$afontD;K;6;CP$UIDd;3;498E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;368E;K;11;$aalignmentD;K;6;CP$UIDd;3;382E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;386E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;403E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;453E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;386E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;386E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;386E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;455E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;368E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;382E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;40E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;417E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;499E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;500E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;95E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;501E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;41E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;432E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;81E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;502E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;147E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;503E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;116E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;365E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;504E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;81E;E;D;K;6;$classD;K;6;CP$UIDd;2;40E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;505E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;506E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;507E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;98E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;508E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;509E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;92E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;510E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;511E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;133E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;396E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;512E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;409E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;113E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;106E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;513E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;382E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;92E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;514E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;515E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;147E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;516E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;40E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;512E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;517E;E;D;K;6;$classD;K;6;CP$UIDd;2;40E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;410E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;518E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;519E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;92E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;389E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;397E;E;D;K;6;$classD;K;6;CP$UIDd;2;40E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;520E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;521E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;522E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;133E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;523E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;41E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;524E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;525E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;41E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;386E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;403E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;404E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;72E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;526E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;93E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;527E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;72E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;528E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;402E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;529E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;41E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;530E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;531E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;114E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;532E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;520E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;409E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;116E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;82E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;533E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;113E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;505E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;409E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;106E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;82E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;386E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;403E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;404E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;72E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;414E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;409E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;41E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;132E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;534E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;141E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;491E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;409E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;93E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;92E;E;D;K;6;$classD;K;6;CP$UIDd;2;40E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;482E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;535E;E;D;K;6;$classD;K;6;CP$UIDd;2;40E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;456E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;536E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;537E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;538E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;72E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;386E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;403E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;404E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;133E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;40E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;442E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;539E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;540E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;72E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;541E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;402E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;386E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;403E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;404E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;92E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;504E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;141E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;542E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;92E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;543E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;40E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;438E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;544E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;504E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;93E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;545E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;113E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;546E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;547E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;113E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;548E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;549E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;374E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;92E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;550E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;551E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;81E;E;D;K;6;$classD;K;6;CP$UIDd;2;40E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;481E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;552E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;553E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;386E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;403E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;404E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;132E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;554E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;141E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;555E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;444E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;98E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;445E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;402E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;488E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;409E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;92E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;106E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;556E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;72E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;557E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;558E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;113E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;559E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;386E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;403E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;404E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;133E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;370E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;386E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;403E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;404E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;113E;E;S;3;136S;1;1S;1;2S;1;3S;1;4S;1;5S;1;6S;1;7S;1;8S;1;9S;2;10S;2;11S;2;12S;2;13S;2;14S;2;15S;2;16S;2;17S;2;18S;2;19S;2;20S;2;21S;2;26S;2;23S;2;24S;2;25S;2;22S;2;27S;2;28S;2;29S;2;30S;2;31S;2;32S;2;33S;2;34S;2;35S;2;36S;2;37S;2;38S;2;39S;2;40S;2;41S;2;42S;2;43S;2;44S;2;45S;2;46S;2;47S;2;48S;2;50S;2;49S;2;51S;2;52S;2;53S;2;54S;2;55S;2;56S;2;57S;2;58S;2;59S;2;60S;2;61S;2;62S;2;63S;12;File's OwnerS;2;65S;2;67S;2;66S;2;64S;2;79S;2;68S;2;70S;2;71S;2;72S;2;73S;2;74S;2;75S;2;80S;2;77S;2;78S;2;69S;2;76S;2;81S;2;82S;2;84S;2;83S;2;85S;2;86S;2;87S;2;88S;2;89S;2;90S;2;91S;2;92S;2;93S;2;94S;2;95S;2;96S;2;97S;2;98S;2;99S;3;100S;3;101S;3;102S;3;103S;3;104S;3;105S;3;106S;3;107S;3;108S;3;109S;3;110S;3;111S;3;112S;3;113S;3;114S;3;115S;3;116S;3;117S;3;118S;3;119S;3;120S;3;121S;3;122S;3;123S;3;124S;3;125S;3;126S;3;127S;3;128S;3;129S;3;130S;3;131S;3;132S;3;133S;3;134S;3;135S;1;0D;K;10;$classnameS;20;CPCibOutletConnectorK;8;$classesA;S;20;CPCibOutletConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;294E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;16E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;44E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;560E;E;D;K;6;$classD;K;6;CP$UIDd;3;294E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;44E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;29E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;561E;E;D;K;10;$classnameS;21;CPCibControlConnectorK;8;$classesA;S;21;CPCibControlConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;38E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;562E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;112E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;563E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;117E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;16E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;564E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;152E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;565E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;91E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;566E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;35E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;567E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;122E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;568E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;68E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;569E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;137E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;570E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;71E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;571E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;124E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;572E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;134E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;573E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;99E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;574E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;109E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;575E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;39E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;104E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;576E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;30E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;577E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;21E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;578E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;47E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;579E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;94E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;580E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;27E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;581E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;76E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;582E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;45E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;583E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;118E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;584E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;60E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;585E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;79E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;586E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;123E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;587E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;80E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;588E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;23E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;589E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;107E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;590E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;32E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;591E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;119E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;592E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;102E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;593E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;46E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;594E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;103E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;595E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;100E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;596E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;34E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;597E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;73E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;598E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;64E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;599E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;143E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;600E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;153E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;601E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;26E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;602E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;144E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;603E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;126E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;604E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;48E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;605E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;57E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;606E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;140E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;607E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;108E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;608E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;115E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;609E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;31E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;610E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;139E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;611E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;130E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;612E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;149E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;613E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;62E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;614E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;22E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;615E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;142E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;616E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;55E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;617E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;121E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;618E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;105E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;619E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;101E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;620E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;146E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;621E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;61E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;622E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;53E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;97E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;623E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;25E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;70E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;623E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;85E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;66E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;623E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;97E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;53E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;623E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;70E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;25E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;623E;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;66E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;85E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;623E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;29E;E;E;S;9;Find Nextd;1;2S;1;gd;7;1048576S;8;Show AllS;5;LowerS;5;Find…d;1;1S;1;fd;1;0S;21;{{20, 85}, {304, 18}}S;19;{{0, 0}, {304, 18}}d;2;34S;6;normald;2;13d;1;4d;2;50d;2;20d;2;10T;S;7;JustifyS;4;CopyS;1;cS;32;{10000000000000, 10000000000000}S;8;CPWindowS;24;{{213, 163}, {448, 125}}d;1;7S;16;Level IndicatorsS;11;Hide OthersS;1;hd;7;1572864S;11;Paste StyleS;1;vS;4;RedoS;1;Zd;7;1179648S;0;F;S;16;Smart Copy/PasteS;4;SaveS;1;sS;8;ServicesS;14;submenuAction:S;4;HelpS;18;Bring All to FrontS;19;Quit NewApplicationS;1;qS;20;Spelling and GrammarD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;100E;E;E;S;6;SpeechS;4;FindS;13;AppControllerS;3;CutS;1;xS;12;Show ToolbarS;1;tS;13;Stop SpeakingS;10;Copy Rulerd;7;1310720S;22;Use Selection for FindS;1;eS;11;Open RecentS;21;{{20, 22}, {304, 18}}S;4;BoldS;1;bS;8;Use NoneS;12;Preferences…S;1;,S;11;Paste RulerS;15;_CPServicesMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;8;BaselineS;6;DeleteS;6;LoosenS;5;RaiseS;13;SubstitutionsS;11;Smart Linksd;1;3S;1;GS;22;{{326, 47}, {104, 29}}S;19;{{0, 0}, {104, 29}}d;2;33S;9;textfieldS;19;bezeled+placeholderD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;451E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;624E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;625E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;404E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;404E;E;d;4;3072D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;454E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;626E;E;S;14;NewApplicationS;6;Print…S;1;pS;22;{{326, 79}, {104, 29}}D;K;6;$classD;K;6;CP$UIDd;3;451E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;624E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;625E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;404E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;404E;E;S;3;NewS;1;nS;4;FileD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;3;137E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;2;68E;E;E;S;12;Smart QuotesS;4;KernS;10;Select AllS;1;aD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;47E;E;E;S;6;BiggerS;1;+S;5;PasteS;4;UndoS;1;zD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;2;61E;E;E;S;9;AMainMenuS;11;_CPMainMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;37E;E;E;S;21;{{20, 54}, {304, 18}}d;2;-2S;6;WindowS;4;EditS;21;{{7, 11}, {448, 125}}S;20;{{0, 0}, {448, 125}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;66E;E;E;S;5;CloseS;1;wS;4;FontS;11;_CPFontMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;2;31E;E;E;S;8;LigatureD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;142E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;3;121E;E;E;S;14;Start SpeakingS;22;_CPRecentDocumentsMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;99E;E;E;S;10;Show FontsS;22;{{326, 16}, {104, 29}}D;K;6;$classD;K;6;CP$UIDd;3;451E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;624E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;625E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;404E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;404E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;3;150E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;3;107E;E;E;S;10;Clear MenuS;27;Check Grammar With SpellingS;4;ZoomS;18;Customize Toolbar…S;11;Use DefaultS;6;FormatD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;110E;E;E;S;17;Jump to SelectionS;1;jS;11;Show ColorsS;1;CS;19;Hide NewApplicationS;4;TextS;7;SmallerS;1;-S;8;MinimizeS;1;mD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;143E;D;K;6;CP$UIDd;3;153E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;126E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;57E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;124E;E;E;S;10;Copy StyleS;4;ViewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;3;103E;E;E;S;20;About NewApplicationS;14;Check SpellingS;1;;S;27;Check Spelling While TypingS;7;Use AllS;13;Page Setup...S;1;PS;14;Show Spelling…S;1;:S;19;NewApplication HelpS;1;?S;10;Show RulerS;11;SuperscriptD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;3;148E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;42E;E;E;S;18;_CPApplicationMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;2;39E;E;E;S;15;Revert to SavedD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;64E;E;E;S;8;Save As…S;1;SS;9;UnderlineS;1;uD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;149E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;22E;E;E;S;10;Align LeftS;1;{S;11;Align RightS;1;}S;6;ItalicS;1;iS;7;TightenS;14;_CPWindowsMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;38E;E;E;S;9;SubscriptS;13;Find PreviousS;5;Open…S;1;oS;6;CenterS;1;|S;8;delegateS;9;theWindowS;15;arrangeInFront:S;19;performMiniaturize:S;29;orderFrontStandardAboutPanel:S;13;openDocument:S;13;performClose:S;13;saveDocument:S;14;runPageLayout:S;6;print:S;15;saveDocumentAs:S;12;newDocument:S;9;showHelp:S;22;revertDocumentToSaved:S;21;clearRecentDocuments:S;5;hide:S;10;terminate:S;22;hideOtherApplications:S;22;unhideAllApplications:S;13;stopSpeaking:S;14;startSpeaking:S;5;copy:S;10;selectAll:S;4;cut:S;14;checkSpelling:S;7;delete:S;6;paste:S;15;showGuessPanel:S;5;undo:S;23;performFindPanelAction:S;29;centerSelectionInVisibleArea:S;5;redo:S;30;toggleContinuousSpellChecking:S;12;performZoom:S;19;toggleToolbarShown:S;31;runToolbarCustomizationPalette:S;22;toggleGrammarChecking:S;24;toggleSmartInsertDelete:S;33;toggleAutomaticQuoteSubstitution:S;29;toggleAutomaticLinkDetection:S;10;alignLeft:S;12;alignCenter:S;15;alignJustified:S;11;alignRight:S;12;toggleRuler:S;10;copyRuler:S;11;pasteRuler:S;10;underline:S;21;orderFrontColorPanel:S;9;copyFont:S;10;pasteFont:S;9;unscript:S;12;superscript:S;10;subscript:S;14;raiseBaseline:S;14;lowerBaseline:S;21;useStandardLigatures:S;17;turnOffLigatures:S;16;useAllLigatures:S;19;useStandardKerning:S;15;turnOffKerning:S;15;tightenKerning:S;14;loosenKerning:S;17;takeIntValueFrom:S;17;Arial, sans-serifd;2;12D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;374E;D;K;6;CP$UIDd;3;374E;D;K;6;CP$UIDd;3;374E;D;K;6;CP$UIDd;3;374E;E;E;E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/CPLevelIndicator/Resources/MainMenu.xib b/Tests/Manual/CPLevelIndicator/Resources/MainMenu.xib new file mode 100644 index 000000000..e3a18a0a5 --- /dev/null +++ b/Tests/Manual/CPLevelIndicator/Resources/MainMenu.xib @@ -0,0 +1,3426 @@ + + + + 1050 + 10J3210 + 1306 + 1038.35 + 461.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 1306 + + + YES + NSView + NSMenu + NSWindowTemplate + NSMenuItem + NSTextField + NSTextFieldCell + NSLevelIndicatorCell + NSLevelIndicator + NSCustomObject + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + YES + + YES + + + + + YES + + NSApplication + + + FirstResponder + + + NSApplication + + + AMainMenu + + YES + + + NewApplication + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + NewApplication + + YES + + + About NewApplication + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Preferences… + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Services + + 1048576 + 2147483647 + + + submenuAction: + + Services + + YES + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide NewApplication + h + 1048576 + 2147483647 + + + + + + Hide Others + h + 1572864 + 2147483647 + + + + + + Show All + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit NewApplication + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + File + + 1048576 + 2147483647 + + + submenuAction: + + File + + YES + + + New + n + 1048576 + 2147483647 + + + + + + Open… + o + 1048576 + 2147483647 + + + + + + Open Recent + + 1048576 + 2147483647 + + + submenuAction: + + Open Recent + + YES + + + Clear Menu + + 1048576 + 2147483647 + + + + + _NSRecentDocumentsMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Close + w + 1048576 + 2147483647 + + + + + + Save + s + 1048576 + 2147483647 + + + + + + Save As… + S + 1179648 + 2147483647 + + + + + + Revert to Saved + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Page Setup... + P + 1179648 + 2147483647 + + + + + + + Print… + p + 1048576 + 2147483647 + + + + + + + + + Edit + + 1048576 + 2147483647 + + + submenuAction: + + Edit + + YES + + + Undo + z + 1048576 + 2147483647 + + + + + + Redo + Z + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Cut + x + 1048576 + 2147483647 + + + + + + Copy + c + 1048576 + 2147483647 + + + + + + Paste + v + 1048576 + 2147483647 + + + + + + Delete + + 1048576 + 2147483647 + + + + + + Select All + a + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Find + + 1048576 + 2147483647 + + + submenuAction: + + Find + + YES + + + Find… + f + 1048576 + 2147483647 + + + 1 + + + + Find Next + g + 1048576 + 2147483647 + + + 2 + + + + Find Previous + G + 1179648 + 2147483647 + + + 3 + + + + Use Selection for Find + e + 1048576 + 2147483647 + + + 7 + + + + Jump to Selection + j + 1048576 + 2147483647 + + + + + + + + + Spelling and Grammar + + 1048576 + 2147483647 + + + submenuAction: + + Spelling and Grammar + + YES + + + Show Spelling… + : + 1048576 + 2147483647 + + + + + + Check Spelling + ; + 1048576 + 2147483647 + + + + + + Check Spelling While Typing + + 1048576 + 2147483647 + + + + + + Check Grammar With Spelling + + 1048576 + 2147483647 + + + + + + + + + Substitutions + + 1048576 + 2147483647 + + + submenuAction: + + Substitutions + + YES + + + Smart Copy/Paste + f + 1048576 + 2147483647 + + + 1 + + + + Smart Quotes + g + 1048576 + 2147483647 + + + 2 + + + + Smart Links + G + 1179648 + 2147483647 + + + 3 + + + + + + + Speech + + 1048576 + 2147483647 + + + submenuAction: + + Speech + + YES + + + Start Speaking + + 1048576 + 2147483647 + + + + + + Stop Speaking + + 1048576 + 2147483647 + + + + + + + + + + + + Format + + 2147483647 + + + submenuAction: + + Format + + YES + + + Font + + 2147483647 + + + submenuAction: + + Font + + YES + + + Show Fonts + t + 1048576 + 2147483647 + + + + + + Bold + b + 1048576 + 2147483647 + + + 2 + + + + Italic + i + 1048576 + 2147483647 + + + 1 + + + + Underline + u + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Bigger + + + 1048576 + 2147483647 + + + 3 + + + + Smaller + - + 1048576 + 2147483647 + + + 4 + + + + YES + YES + + + 2147483647 + + + + + + Kern + + 2147483647 + + + submenuAction: + + Kern + + YES + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Tighten + + 2147483647 + + + + + + Loosen + + 2147483647 + + + + + + + + + Ligature + + 2147483647 + + + submenuAction: + + Ligature + + YES + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Use All + + 2147483647 + + + + + + + + + Baseline + + 2147483647 + + + submenuAction: + + Baseline + + YES + + + Use Default + + 2147483647 + + + + + + Superscript + + 2147483647 + + + + + + Subscript + + 2147483647 + + + + + + Raise + + 2147483647 + + + + + + Lower + + 2147483647 + + + + + + + + + YES + YES + + + 2147483647 + + + + + + Show Colors + C + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Copy Style + c + 1572864 + 2147483647 + + + + + + Paste Style + v + 1572864 + 2147483647 + + + + + _NSFontMenu + + + + + Text + + 2147483647 + + + submenuAction: + + Text + + YES + + + Align Left + { + 1048576 + 2147483647 + + + + + + Center + | + 1048576 + 2147483647 + + + + + + Justify + + 2147483647 + + + + + + Align Right + } + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Show Ruler + + 2147483647 + + + + + + Copy Ruler + c + 1310720 + 2147483647 + + + + + + Paste Ruler + v + 1310720 + 2147483647 + + + + + + + + + + + + View + + 1048576 + 2147483647 + + + submenuAction: + + View + + YES + + + Show Toolbar + t + 1572864 + 2147483647 + + + + + + Customize Toolbar… + + 1048576 + 2147483647 + + + + + + + + + Window + + 1048576 + 2147483647 + + + submenuAction: + + Window + + YES + + + Minimize + m + 1048576 + 2147483647 + + + + + + Zoom + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Bring All to Front + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Help + + 1048576 + 2147483647 + + + submenuAction: + + Help + + YES + + + NewApplication Help + ? + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + 7 + 2 + {{213, 890}, {448, 125}} + 1948778496 + Level Indicators + NSWindow + + + + 256 + + YES + + + 266 + {{20, 85}, {304, 18}} + + + + YES + + 130560 + 0 + + 2 + 2 + 2 + 2 + 2 + + + + + 266 + {{20, 22}, {304, 18}} + + + + YES + + 270663168 + 0 + + 13 + 50 + 20 + 10 + 2 + + + + + 266 + {{20, 53}, {304, 18}} + + + + YES + + 270663168 + 0 + + 2 + -2 + 2 + 2 + 2 + 2 + + + + + 265 + {{332, 83}, {96, 22}} + + + + YES + + -1804468671 + 272630784 + + + LucidaGrande + 13 + 1044 + + + YES + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + textColor + + 3 + MAA + + + + + + + 265 + {{332, 20}, {96, 22}} + + + + YES + + -1804468671 + 272630784 + + + + YES + + + + + + + 265 + {{332, 52}, {96, 22}} + + + + YES + + -1804468671 + 272630784 + + + + YES + + + + + + {{7, 11}, {448, 125}} + + + + + {{0, 0}, {1920, 1178}} + {1e+13, 1e+13} + + + AppController + + + + + YES + + + performMiniaturize: + + + + 37 + + + + arrangeInFront: + + + + 39 + + + + print: + + + + 86 + + + + runPageLayout: + + + + 87 + + + + clearRecentDocuments: + + + + 127 + + + + orderFrontStandardAboutPanel: + + + + 142 + + + + performClose: + + + + 193 + + + + toggleContinuousSpellChecking: + + + + 222 + + + + undo: + + + + 223 + + + + copy: + + + + 224 + + + + checkSpelling: + + + + 225 + + + + paste: + + + + 226 + + + + stopSpeaking: + + + + 227 + + + + cut: + + + + 228 + + + + showGuessPanel: + + + + 230 + + + + redo: + + + + 231 + + + + selectAll: + + + + 232 + + + + startSpeaking: + + + + 233 + + + + delete: + + + + 235 + + + + performZoom: + + + + 240 + + + + performFindPanelAction: + + + + 241 + + + + centerSelectionInVisibleArea: + + + + 245 + + + + toggleGrammarChecking: + + + + 347 + + + + toggleSmartInsertDelete: + + + + 355 + + + + toggleAutomaticQuoteSubstitution: + + + + 356 + + + + toggleAutomaticLinkDetection: + + + + 357 + + + + showHelp: + + + + 360 + + + + saveDocument: + + + + 362 + + + + saveDocumentAs: + + + + 363 + + + + revertDocumentToSaved: + + + + 364 + + + + runToolbarCustomizationPalette: + + + + 365 + + + + toggleToolbarShown: + + + + 366 + + + + hide: + + + + 367 + + + + hideOtherApplications: + + + + 368 + + + + unhideAllApplications: + + + + 370 + + + + newDocument: + + + + 373 + + + + openDocument: + + + + 374 + + + + raiseBaseline: + + + + 426 + + + + lowerBaseline: + + + + 427 + + + + copyFont: + + + + 428 + + + + subscript: + + + + 429 + + + + superscript: + + + + 430 + + + + tightenKerning: + + + + 431 + + + + underline: + + + + 432 + + + + orderFrontColorPanel: + + + + 433 + + + + useAllLigatures: + + + + 434 + + + + loosenKerning: + + + + 435 + + + + pasteFont: + + + + 436 + + + + unscript: + + + + 437 + + + + useStandardKerning: + + + + 438 + + + + useStandardLigatures: + + + + 439 + + + + turnOffLigatures: + + + + 440 + + + + turnOffKerning: + + + + 441 + + + + alignLeft: + + + + 442 + + + + alignJustified: + + + + 443 + + + + copyRuler: + + + + 444 + + + + alignCenter: + + + + 445 + + + + toggleRuler: + + + + 446 + + + + alignRight: + + + + 447 + + + + pasteRuler: + + + + 448 + + + + terminate: + + + + 449 + + + + delegate + + + + 451 + + + + theWindow + + + + 459 + + + + takeIntValueFrom: + + + + 478 + + + + takeIntValueFrom: + + + + 479 + + + + takeIntValueFrom: + + + + 480 + + + + takeIntValueFrom: + + + + 481 + + + + takeIntValueFrom: + + + + 482 + + + + takeIntValueFrom: + + + + 483 + + + + + YES + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + YES + + + + + + + + + + MainMenu + + + 19 + + + YES + + + + + + 56 + + + YES + + + + + + 103 + + + YES + + + + 1 + + + 217 + + + YES + + + + + + 83 + + + YES + + + + + + 81 + + + YES + + + + + + + + + + + + + + + + 75 + + + 3 + + + 80 + + + 8 + + + 78 + + + 6 + + + 72 + + + + + 82 + + + 9 + + + 124 + + + YES + + + + + + 77 + + + 5 + + + 73 + + + 1 + + + 79 + + + 7 + + + 112 + + + 10 + + + 74 + + + 2 + + + 125 + + + YES + + + + + + 126 + + + + + 205 + + + YES + + + + + + + + + + + + + + + + + + 202 + + + + + 198 + + + + + 207 + + + + + 214 + + + + + 199 + + + + + 203 + + + + + 197 + + + + + 206 + + + + + 215 + + + + + 218 + + + YES + + + + + + 216 + + + YES + + + + + + 200 + + + YES + + + + + + + + + 219 + + + + + 201 + + + + + 204 + + + + + 220 + + + YES + + + + + + + + + + 213 + + + + + 210 + + + + + 221 + + + + + 208 + + + + + 209 + + + + + 106 + + + YES + + + + 2 + + + 111 + + + + + 57 + + + YES + + + + + + + + + + + + + + + + 58 + + + + + 134 + + + + + 150 + + + + + 136 + + + 1111 + + + 144 + + + + + 129 + + + 121 + + + 143 + + + + + 236 + + + + + 131 + + + YES + + + + + + 149 + + + + + 145 + + + + + 130 + + + + + 24 + + + YES + + + + + + + + + 92 + + + + + 5 + + + + + 239 + + + + + 23 + + + + + 295 + + + YES + + + + + + 296 + + + YES + + + + + + + 297 + + + + + 298 + + + + + 211 + + + YES + + + + + + 212 + + + YES + + + + + + + 195 + + + + + 196 + + + + + 346 + + + + + 348 + + + YES + + + + + + 349 + + + YES + + + + + + + + 350 + + + + + 351 + + + + + 354 + + + + + 371 + + + YES + + + + + + 372 + + + YES + + + + + + + + + + + 375 + + + YES + + + + + + 376 + + + YES + + + + + + + 377 + + + YES + + + + + + 378 + + + YES + + + + + + 379 + + + YES + + + + + + + + + + + + + 380 + + + + + 381 + + + + + 382 + + + + + 383 + + + + + 384 + + + + + 385 + + + + + 386 + + + + + 387 + + + + + 388 + + + YES + + + + + + + + + + + + + + + + + + + + + 389 + + + + + 390 + + + + + 391 + + + + + 392 + + + + + 393 + + + + + 394 + + + + + 395 + + + + + 396 + + + + + 397 + + + YES + + + + + + 398 + + + YES + + + + + + 399 + + + YES + + + + + + 400 + + + + + 401 + + + + + 402 + + + + + 403 + + + + + 404 + + + + + 405 + + + YES + + + + + + + + + + 406 + + + + + 407 + + + + + 408 + + + + + 409 + + + + + 410 + + + + + 411 + + + YES + + + + + + + + 412 + + + + + 413 + + + + + 414 + + + + + 415 + + + YES + + + + + + + + + 416 + + + + + 417 + + + + + 418 + + + + + 419 + + + + + 450 + + + + + 466 + + + YES + + + + + + 467 + + + YES + + + + + + 468 + + + YES + + + + + + 469 + + + YES + + + + + + 470 + + + YES + + + + + + 471 + + + YES + + + + + + 472 + + + + + 473 + + + + + 474 + + + + + 475 + + + + + 476 + + + + + 477 + + + + + + + YES + + YES + -1.IBPluginDependency + -2.IBPluginDependency + -3.IBPluginDependency + 103.IBPluginDependency + 103.ImportedFromIB2 + 106.IBPluginDependency + 106.ImportedFromIB2 + 106.editorWindowContentRectSynchronizationRect + 111.IBPluginDependency + 111.ImportedFromIB2 + 112.IBPluginDependency + 112.ImportedFromIB2 + 124.IBPluginDependency + 124.ImportedFromIB2 + 125.IBPluginDependency + 125.ImportedFromIB2 + 125.editorWindowContentRectSynchronizationRect + 126.IBPluginDependency + 126.ImportedFromIB2 + 129.IBPluginDependency + 129.ImportedFromIB2 + 130.IBPluginDependency + 130.ImportedFromIB2 + 130.editorWindowContentRectSynchronizationRect + 131.IBPluginDependency + 131.ImportedFromIB2 + 134.IBPluginDependency + 134.ImportedFromIB2 + 136.IBPluginDependency + 136.ImportedFromIB2 + 143.IBPluginDependency + 143.ImportedFromIB2 + 144.IBPluginDependency + 144.ImportedFromIB2 + 145.IBPluginDependency + 145.ImportedFromIB2 + 149.IBPluginDependency + 149.ImportedFromIB2 + 150.IBPluginDependency + 150.ImportedFromIB2 + 19.IBPluginDependency + 19.ImportedFromIB2 + 195.IBPluginDependency + 195.ImportedFromIB2 + 196.IBPluginDependency + 196.ImportedFromIB2 + 197.IBPluginDependency + 197.ImportedFromIB2 + 198.IBPluginDependency + 198.ImportedFromIB2 + 199.IBPluginDependency + 199.ImportedFromIB2 + 200.IBPluginDependency + 200.ImportedFromIB2 + 200.editorWindowContentRectSynchronizationRect + 201.IBPluginDependency + 201.ImportedFromIB2 + 202.IBPluginDependency + 202.ImportedFromIB2 + 203.IBPluginDependency + 203.ImportedFromIB2 + 204.IBPluginDependency + 204.ImportedFromIB2 + 205.IBPluginDependency + 205.ImportedFromIB2 + 205.editorWindowContentRectSynchronizationRect + 206.IBPluginDependency + 206.ImportedFromIB2 + 207.IBPluginDependency + 207.ImportedFromIB2 + 208.IBPluginDependency + 208.ImportedFromIB2 + 209.IBPluginDependency + 209.ImportedFromIB2 + 210.IBPluginDependency + 210.ImportedFromIB2 + 211.IBPluginDependency + 211.ImportedFromIB2 + 212.IBPluginDependency + 212.ImportedFromIB2 + 212.editorWindowContentRectSynchronizationRect + 213.IBPluginDependency + 213.ImportedFromIB2 + 214.IBPluginDependency + 214.ImportedFromIB2 + 215.IBPluginDependency + 215.ImportedFromIB2 + 216.IBPluginDependency + 216.ImportedFromIB2 + 217.IBPluginDependency + 217.ImportedFromIB2 + 218.IBPluginDependency + 218.ImportedFromIB2 + 219.IBPluginDependency + 219.ImportedFromIB2 + 220.IBPluginDependency + 220.ImportedFromIB2 + 220.editorWindowContentRectSynchronizationRect + 221.IBPluginDependency + 221.ImportedFromIB2 + 23.IBPluginDependency + 23.ImportedFromIB2 + 236.IBPluginDependency + 236.ImportedFromIB2 + 239.IBPluginDependency + 239.ImportedFromIB2 + 24.IBPluginDependency + 24.ImportedFromIB2 + 24.editorWindowContentRectSynchronizationRect + 29.IBEditorWindowLastContentRect + 29.IBPluginDependency + 29.ImportedFromIB2 + 29.WindowOrigin + 29.editorWindowContentRectSynchronizationRect + 295.IBPluginDependency + 296.IBPluginDependency + 296.editorWindowContentRectSynchronizationRect + 297.IBPluginDependency + 298.IBPluginDependency + 346.IBPluginDependency + 346.ImportedFromIB2 + 348.IBPluginDependency + 348.ImportedFromIB2 + 349.IBPluginDependency + 349.ImportedFromIB2 + 349.editorWindowContentRectSynchronizationRect + 350.IBPluginDependency + 350.ImportedFromIB2 + 351.IBPluginDependency + 351.ImportedFromIB2 + 354.IBPluginDependency + 354.ImportedFromIB2 + 371.IBEditorWindowLastContentRect + 371.IBNSWindowAutoPositionCentersHorizontal + 371.IBNSWindowAutoPositionCentersVertical + 371.IBPluginDependency + 371.IBWindowTemplateEditedContentRect + 371.NSWindowTemplate.visibleAtLaunch + 371.editorWindowContentRectSynchronizationRect + 372.IBPluginDependency + 375.IBPluginDependency + 376.IBEditorWindowLastContentRect + 376.IBPluginDependency + 377.IBPluginDependency + 378.IBPluginDependency + 379.IBPluginDependency + 380.IBPluginDependency + 381.IBPluginDependency + 382.IBPluginDependency + 383.IBPluginDependency + 384.IBPluginDependency + 385.IBPluginDependency + 386.IBPluginDependency + 387.IBPluginDependency + 388.IBEditorWindowLastContentRect + 388.IBPluginDependency + 389.IBPluginDependency + 390.IBPluginDependency + 391.IBPluginDependency + 392.IBPluginDependency + 393.IBPluginDependency + 394.IBPluginDependency + 395.IBPluginDependency + 396.IBPluginDependency + 397.IBPluginDependency + 398.IBPluginDependency + 399.IBPluginDependency + 400.IBPluginDependency + 401.IBPluginDependency + 402.IBPluginDependency + 403.IBPluginDependency + 404.IBPluginDependency + 405.IBPluginDependency + 406.IBPluginDependency + 407.IBPluginDependency + 408.IBPluginDependency + 409.IBPluginDependency + 410.IBPluginDependency + 411.IBPluginDependency + 412.IBPluginDependency + 413.IBPluginDependency + 414.IBPluginDependency + 415.IBPluginDependency + 416.IBPluginDependency + 417.IBPluginDependency + 418.IBPluginDependency + 419.IBPluginDependency + 450.IBPluginDependency + 466.IBPluginDependency + 467.IBPluginDependency + 468.IBPluginDependency + 469.IBPluginDependency + 470.IBPluginDependency + 471.IBPluginDependency + 472.IBPluginDependency + 473.IBPluginDependency + 474.IBPluginDependency + 475.IBPluginDependency + 476.IBPluginDependency + 477.IBPluginDependency + 5.IBPluginDependency + 5.ImportedFromIB2 + 56.IBPluginDependency + 56.ImportedFromIB2 + 57.IBEditorWindowLastContentRect + 57.IBPluginDependency + 57.ImportedFromIB2 + 57.editorWindowContentRectSynchronizationRect + 58.IBPluginDependency + 58.ImportedFromIB2 + 72.IBPluginDependency + 72.ImportedFromIB2 + 73.IBPluginDependency + 73.ImportedFromIB2 + 74.IBPluginDependency + 74.ImportedFromIB2 + 75.IBPluginDependency + 75.ImportedFromIB2 + 77.IBPluginDependency + 77.ImportedFromIB2 + 78.IBPluginDependency + 78.ImportedFromIB2 + 79.IBPluginDependency + 79.ImportedFromIB2 + 80.IBPluginDependency + 80.ImportedFromIB2 + 81.IBPluginDependency + 81.ImportedFromIB2 + 81.editorWindowContentRectSynchronizationRect + 82.IBPluginDependency + 82.ImportedFromIB2 + 83.IBPluginDependency + 83.ImportedFromIB2 + 92.IBPluginDependency + 92.ImportedFromIB2 + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{596, 852}, {216, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{522, 812}, {146, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{436, 809}, {64, 6}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {275, 83}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{187, 434}, {243, 243}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {167, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {241, 103}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{525, 802}, {197, 73}} + {{143, 285}, {478, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + {74, 862} + {{6, 978}, {478, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{475, 832}, {234, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {215, 63}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{303, 221}, {480, 360}} + + + com.apple.InterfaceBuilder.CocoaPlugin + {{303, 221}, {480, 360}} + + {{33, 99}, {480, 360}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{437, 242}, {86, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{523, 2}, {178, 283}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{155, 102}, {245, 183}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{23, 794}, {245, 183}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{145, 474}, {199, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + YES + + + + + + YES + + + + + 483 + + + + YES + + AppController + NSObject + + IBProjectSource + ./Classes/AppController.h + + + + NSDocument + + YES + + YES + printDocument: + revertDocumentToSaved: + runPageLayout: + saveDocument: + saveDocumentAs: + saveDocumentTo: + + + YES + id + id + id + id + id + id + + + + YES + + YES + printDocument: + revertDocumentToSaved: + runPageLayout: + saveDocument: + saveDocumentAs: + saveDocumentTo: + + + YES + + printDocument: + id + + + revertDocumentToSaved: + id + + + runPageLayout: + id + + + saveDocument: + id + + + saveDocumentAs: + id + + + saveDocumentTo: + id + + + + + IBProjectSource + ./Classes/NSDocument.h + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + 3 + + YES + + YES + NSMenuCheckmark + NSMenuMixedState + + + YES + {9, 8} + {7, 2} + + + + diff --git a/Tests/Manual/CPLevelIndicator/Resources/spinner.gif b/Tests/Manual/CPLevelIndicator/Resources/spinner.gif new file mode 100644 index 000000000..06dbc2bc2 Binary files /dev/null and b/Tests/Manual/CPLevelIndicator/Resources/spinner.gif differ diff --git a/Tests/Manual/CPLevelIndicator/index-debug.html b/Tests/Manual/CPLevelIndicator/index-debug.html new file mode 100644 index 000000000..2a39dc38f --- /dev/null +++ b/Tests/Manual/CPLevelIndicator/index-debug.html @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + CPLevelIndicator + + + + + + + + + + + + + + +
+
+ + + +
+
+ + + diff --git a/Tests/Manual/CPLevelIndicator/index.html b/Tests/Manual/CPLevelIndicator/index.html new file mode 100644 index 000000000..5da5ba3cc --- /dev/null +++ b/Tests/Manual/CPLevelIndicator/index.html @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + CPLevelIndicator + + + + + + + + + + + + +
+
+ + + +
+
+ + + diff --git a/Tests/Manual/CPLevelIndicator/main.j b/Tests/Manual/CPLevelIndicator/main.j new file mode 100644 index 000000000..7a956f1f5 --- /dev/null +++ b/Tests/Manual/CPLevelIndicator/main.j @@ -0,0 +1,18 @@ +/* + * AppController.j + * CPLevelIndicator + * + * Created by Alexander Ljungberg on May 28, 2011. + * Copyright 2011, WireLoad All rights reserved. + */ + +@import +@import + +@import "AppController.j" + + +function main(args, namedArgs) +{ + CPApplicationMain(args, namedArgs); +} diff --git a/Tests/Manual/CPPredicateEditorCibTest/AppController.j b/Tests/Manual/CPPredicateEditorCibTest/AppController.j new file mode 100644 index 000000000..c6a078a23 --- /dev/null +++ b/Tests/Manual/CPPredicateEditorCibTest/AppController.j @@ -0,0 +1,193 @@ +/* + * AppController.j + * CPPredicateEditorCibTest + * + * Created by cacaodev on November 25, 2010. + * Copyright 2010, Your Company All rights reserved. + */ + +@import + +@implementation AppController : CPObject +{ + CPWindow window; + CPPredicateEditor predicateEditor; + CPTextField predicateField; + + CPTableView leftTable; + CPTableView rightTable; + CPPopUpButton rightExpressionsType; + CPButton addTemplate; + CPBox templateBox; + + CPMutableArray operators; + CPMutableArray leftKeyPaths; + CPMutableArray rightConstants; +} + +- (void)awakeFromCib +{ + operators = [CPMutableArray new]; + leftKeyPaths = [CPMutableArray new]; + rightConstants = [CPMutableArray new]; + + [templateBox setCornerRadius:10]; + [self updateAddTemplateButton]; + + [predicateEditor setAction:@selector(predicateEditorAction:)]; + [predicateEditor setTarget:self]; + + [window setBackgroundColor:[CPColor colorWithHexString:@"f3f4f5"]]; + [window setFullBridge:YES]; +} + +- (IBAction)displayPredicate:(id)sender +{ + var pred = [CPPredicate predicateWithFormat:[sender stringValue]]; + if (pred) + [predicateEditor setObjectValue:pred]; +} + +- (IBAction)predicateEditorAction:(id)sender +{ +// CPLogConsole(_cmd + [predicateEditor displayValuesForRow:1]); + [predicateField setStringValue:[[predicateEditor objectValue] predicateFormat]]; +} + +- (void)ruleEditorRowsDidChange:(CPNotification)notification +{ + +} + +// Templates maker +- (IBAction)updateOperators:(id)sender +{ + var op = [CPNumber numberWithInt:[sender tag]]; + if ([sender state] == CPOnState) + { + if (![operators containsObject:op]) + [operators addObject:op]; + + } + else if ([sender state] == CPOffState) + [operators removeObject:op]; + + [self updateAddTemplateButton]; +} + +- (IBAction)selectRightAttributeType:(id)sender +{ + [self updateAddTemplateButton]; +} + +- (IBAction)addLeftKeyPath:(id)sender +{ + [self addUniqueValue:@"keypath" toArray:leftKeyPaths]; + [leftTable reloadData]; + [self updateAddTemplateButton]; +} + +- (IBAction)addRightConstant:(id)sender +{ + if ([rightExpressionsType indexOfSelectedItem] != 2) + return; + + [self addUniqueValue:@"constant" toArray:rightConstants]; + [rightTable reloadData]; + [self updateAddTemplateButton]; +} + +- (IBAction)addTemplate:(id)sender +{ + var template; + + var leftExpressions = [CPMutableArray array], + count = [leftKeyPaths count]; + while (count--) + { + var exp = [CPExpression expressionForKeyPath:leftKeyPaths[count]]; + [leftExpressions insertObject:exp atIndex:0]; + } + + var type = [rightExpressionsType indexOfSelectedItem]; + if (type == 0) + template = [[CPPredicateEditorRowTemplate alloc] initWithLeftExpressions:leftExpressions rightExpressionAttributeType:CPStringAttributeType modifier:0 operators:operators options:0]; + else if (type == 1) + template = [[CPPredicateEditorRowTemplate alloc] initWithLeftExpressions:leftExpressions rightExpressionAttributeType:CPInteger16AttributeType modifier:0 operators:operators options:0]; + else if (type ==2) + { + var rightExpressions = [CPMutableArray array], + count = [rightConstants count]; + while (count--) + { + var exp = [CPExpression expressionForConstantValue:rightConstants[count]]; + [rightExpressions insertObject:exp atIndex:0]; + } + + template = [[CPPredicateEditorRowTemplate alloc] initWithLeftExpressions:leftExpressions rightExpressions:rightExpressions modifier:0 operators:operators options:0]; + } + + var templates = [[predicateEditor rowTemplates] arrayByAddingObject:template]; + [predicateEditor setRowTemplates:templates]; + [self cleanAll]; +} + +- (void)cleanAll +{ + var subviews = [[templateBox contentView] subviews], + count = [subviews count]; + while (count--) + { + var view = subviews[count]; + if ([view isKindOfClass:[CPCheckBox class]]) + [view setState:CPOffState]; + } + + [leftKeyPaths removeAllObjects]; + [operators removeAllObjects]; + [rightConstants removeAllObjects]; + + [leftTable reloadData]; + [rightTable reloadData]; + [self updateAddTemplateButton]; +} + +- (void)updateAddTemplateButton +{ + var enabled = ([leftKeyPaths count] > 0 && [operators count] > 0 && ([rightExpressionsType indexOfSelectedItem] != 2 || [rightConstants count] > 0)); + [addTemplate setEnabled:enabled]; +} + +- (void)addUniqueValue:(CPString)value toArray:(CPMutableArray)array +{ + var i = 0, + count = [array count]; + + while (count--) + if ([array[count] hasPrefix:value]) + i++; + + [array addObject:(i==0)?value:[CPString stringWithFormat:@"%@%d", value, i]]; +} + +- (CPArray)arrayForTable:(CPTableView)tableView +{ + return (tableView == leftTable) ? leftKeyPaths : rightConstants; +} + +- (id)tableView:(CPTableView)tableView objectValueForTableColumn:(CPTableColumn)tableColumn row:(CPInteger)row +{ + return [[self arrayForTable:tableView] objectAtIndex:row]; +} + +- (void)tableView:(CPTableView)tableView setObjectValue:(id)object forTableColumn:(CPTableColumn)tableColumn row:(CPInteger)row +{ + [[self arrayForTable:tableView] replaceObjectAtIndex:row withObject:object]; +} + +- (int)numberOfRowsInTableView:(CPTableView)tableView +{ + return [[self arrayForTable:tableView] count]; +} + +@end diff --git a/Tests/Manual/CPPredicateEditorCibTest/Info.plist b/Tests/Manual/CPPredicateEditorCibTest/Info.plist new file mode 100644 index 000000000..547a1302d --- /dev/null +++ b/Tests/Manual/CPPredicateEditorCibTest/Info.plist @@ -0,0 +1,12 @@ + + + + + Main cib file base name + MainMenu.cib + CPBundleName + CPPredicateEditorTest + CPPrincipalClass + CPApplication + + diff --git a/Tests/Manual/CPPredicateEditorCibTest/Jakefile b/Tests/Manual/CPPredicateEditorCibTest/Jakefile new file mode 100644 index 000000000..773e9ac9e --- /dev/null +++ b/Tests/Manual/CPPredicateEditorCibTest/Jakefile @@ -0,0 +1,93 @@ +/* + * Jakefile + * CPPredicateEditorTest + * + * Created by You on May 7, 2010. + * Copyright 2010, Your Company All rights reserved. + */ + +var ENV = require("system").env, + FILE = require("file"), + JAKE = require("jake"), + task = JAKE.task, + FileList = JAKE.FileList, + app = require("cappuccino/jake").app, + configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug", + OS = require("os"); + +app ("CPPredicateEditorTest", function(task) +{ + task.setBuildIntermediatesPath(FILE.join("Build", "CPPredicateEditorTest.build", configuration)); + task.setBuildPath(FILE.join("Build", configuration)); + + task.setProductName("CPPredicateEditorTest"); + task.setIdentifier("com.yourcompany.CPPredicateEditorTest"); + task.setVersion("1.0"); + task.setAuthor("Your Company"); + task.setEmail("feedback @nospam@ yourcompany.com"); + task.setSummary("CPPredicateEditorTest"); + task.setSources((new FileList("**/*.j")).exclude(FILE.join("Build", "**"))); + task.setResources(new FileList("Resources/**")); + task.setIndexFilePath("index.html"); + task.setInfoPlistPath("Info.plist"); + + if (configuration === "Debug") + task.setCompilerFlags("-DDEBUG -g"); + else + task.setCompilerFlags("-O"); +}); + +task ("default", ["CPPredicateEditorTest"], function() +{ + printResults(configuration); +}); + +task ("build", ["default"]); + +task ("debug", function() +{ + ENV["CONFIGURATION"] = "Debug"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("release", function() +{ + ENV["CONFIGURATION"] = "Release"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("run", ["debug"], function() +{ + OS.system(["open", FILE.join("Build", "Debug", "CPPredicateEditorTest", "index.html")]); +}); + +task ("run-release", ["release"], function() +{ + OS.system(["open", FILE.join("Build", "Release", "CPPredicateEditorTest", "index.html")]); +}); + +task ("deploy", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Deployment", "CPPredicateEditorTest")); + OS.system(["press", "-f", FILE.join("Build", "Release", "CPPredicateEditorTest"), FILE.join("Build", "Deployment", "CPPredicateEditorTest")]); + printResults("Deployment") +}); + +task ("desktop", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Desktop", "CPPredicateEditorTest")); + require("cappuccino/nativehost").buildNativeHost(FILE.join("Build", "Release", "CPPredicateEditorTest"), FILE.join("Build", "Desktop", "CPPredicateEditorTest", "CPPredicateEditorTest.app")); + printResults("Desktop") +}); + +task ("run-desktop", ["desktop"], function() +{ + OS.system([FILE.join("Build", "Desktop", "CPPredicateEditorTest", "CPPredicateEditorTest.app", "Contents", "MacOS", "NativeHost"), "-i"]); +}); + +function printResults(configuration) +{ + print("----------------------------"); + print(configuration+" app built at path: "+FILE.join("Build", configuration, "CPPredicateEditorTest")); + print("----------------------------"); +} diff --git a/Tests/Manual/CPPredicateEditorCibTest/Resources/MainMenu.cib b/Tests/Manual/CPPredicateEditorCibTest/Resources/MainMenu.cib new file mode 100644 index 000000000..b69a2fe54 --- /dev/null +++ b/Tests/Manual/CPPredicateEditorCibTest/Resources/MainMenu.cib @@ -0,0 +1 @@ +280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;4E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;7E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;9E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;2;10E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;2;11E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;2;12E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;2;13E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;2;14E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;16E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;18E;E;D;K;10;$classnameS;7;CPArrayK;8;$classesA;S;7;CPArrayS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;3;126E;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;137E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;3;142E;D;K;6;CP$UIDd;3;143E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;3;148E;D;K;6;CP$UIDd;3;149E;D;K;6;CP$UIDd;3;150E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;153E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;156E;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;3;158E;D;K;6;CP$UIDd;3;159E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;161E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;3;163E;D;K;6;CP$UIDd;3;164E;D;K;6;CP$UIDd;3;166E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;168E;D;K;6;CP$UIDd;3;169E;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;171E;D;K;6;CP$UIDd;3;172E;D;K;6;CP$UIDd;3;173E;D;K;6;CP$UIDd;3;174E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;175E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;177E;D;K;6;CP$UIDd;3;178E;D;K;6;CP$UIDd;3;179E;D;K;6;CP$UIDd;3;180E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;3;183E;D;K;6;CP$UIDd;3;184E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;186E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;189E;D;K;6;CP$UIDd;3;190E;D;K;6;CP$UIDd;3;191E;D;K;6;CP$UIDd;3;192E;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;194E;D;K;6;CP$UIDd;3;195E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;196E;D;K;6;CP$UIDd;3;197E;D;K;6;CP$UIDd;3;198E;D;K;6;CP$UIDd;3;199E;D;K;6;CP$UIDd;3;200E;D;K;6;CP$UIDd;3;202E;D;K;6;CP$UIDd;3;204E;D;K;6;CP$UIDd;3;205E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;206E;D;K;6;CP$UIDd;3;207E;D;K;6;CP$UIDd;3;208E;D;K;6;CP$UIDd;3;209E;D;K;6;CP$UIDd;3;210E;D;K;6;CP$UIDd;3;211E;D;K;6;CP$UIDd;3;212E;D;K;6;CP$UIDd;3;213E;D;K;6;CP$UIDd;3;214E;D;K;6;CP$UIDd;3;215E;D;K;6;CP$UIDd;3;216E;D;K;6;CP$UIDd;3;217E;D;K;6;CP$UIDd;3;218E;D;K;6;CP$UIDd;3;219E;D;K;6;CP$UIDd;3;220E;D;K;6;CP$UIDd;3;221E;D;K;6;CP$UIDd;3;222E;D;K;6;CP$UIDd;3;223E;D;K;6;CP$UIDd;3;224E;D;K;6;CP$UIDd;3;225E;D;K;6;CP$UIDd;3;226E;D;K;6;CP$UIDd;3;227E;D;K;6;CP$UIDd;3;228E;D;K;6;CP$UIDd;3;229E;D;K;6;CP$UIDd;3;230E;D;K;6;CP$UIDd;3;231E;D;K;6;CP$UIDd;3;232E;D;K;6;CP$UIDd;3;233E;D;K;6;CP$UIDd;3;234E;D;K;6;CP$UIDd;3;235E;D;K;6;CP$UIDd;3;236E;D;K;6;CP$UIDd;3;237E;D;K;6;CP$UIDd;3;238E;D;K;6;CP$UIDd;3;239E;D;K;6;CP$UIDd;3;240E;D;K;6;CP$UIDd;3;241E;D;K;6;CP$UIDd;3;242E;D;K;6;CP$UIDd;3;243E;D;K;6;CP$UIDd;3;244E;D;K;6;CP$UIDd;3;245E;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;247E;D;K;6;CP$UIDd;3;248E;D;K;6;CP$UIDd;3;249E;D;K;6;CP$UIDd;3;250E;D;K;6;CP$UIDd;3;251E;D;K;6;CP$UIDd;3;252E;D;K;6;CP$UIDd;3;253E;D;K;6;CP$UIDd;3;254E;D;K;6;CP$UIDd;3;255E;D;K;6;CP$UIDd;3;256E;D;K;6;CP$UIDd;3;257E;D;K;6;CP$UIDd;3;258E;D;K;6;CP$UIDd;3;259E;D;K;6;CP$UIDd;3;260E;D;K;6;CP$UIDd;3;261E;D;K;6;CP$UIDd;3;262E;D;K;6;CP$UIDd;3;263E;D;K;6;CP$UIDd;3;264E;D;K;6;CP$UIDd;3;265E;D;K;6;CP$UIDd;3;266E;D;K;6;CP$UIDd;3;267E;D;K;6;CP$UIDd;3;268E;D;K;6;CP$UIDd;3;269E;D;K;6;CP$UIDd;3;270E;D;K;6;CP$UIDd;3;271E;D;K;6;CP$UIDd;3;272E;D;K;6;CP$UIDd;3;273E;D;K;6;CP$UIDd;3;274E;D;K;6;CP$UIDd;3;275E;D;K;6;CP$UIDd;3;276E;D;K;6;CP$UIDd;3;277E;D;K;6;CP$UIDd;3;278E;D;K;6;CP$UIDd;3;279E;D;K;6;CP$UIDd;3;280E;D;K;6;CP$UIDd;3;281E;D;K;6;CP$UIDd;3;282E;D;K;6;CP$UIDd;3;283E;D;K;6;CP$UIDd;3;284E;D;K;6;CP$UIDd;3;285E;D;K;6;CP$UIDd;3;286E;D;K;6;CP$UIDd;3;287E;D;K;6;CP$UIDd;3;288E;D;K;6;CP$UIDd;3;289E;D;K;6;CP$UIDd;3;290E;D;K;6;CP$UIDd;3;291E;D;K;6;CP$UIDd;3;292E;D;K;6;CP$UIDd;3;293E;D;K;6;CP$UIDd;3;294E;D;K;6;CP$UIDd;3;295E;D;K;6;CP$UIDd;3;296E;D;K;6;CP$UIDd;3;297E;D;K;6;CP$UIDd;3;298E;D;K;6;CP$UIDd;3;299E;D;K;6;CP$UIDd;3;300E;D;K;6;CP$UIDd;3;301E;D;K;6;CP$UIDd;3;302E;D;K;6;CP$UIDd;3;303E;D;K;6;CP$UIDd;3;304E;D;K;6;CP$UIDd;3;305E;D;K;6;CP$UIDd;3;306E;D;K;6;CP$UIDd;3;307E;D;K;6;CP$UIDd;3;308E;D;K;6;CP$UIDd;3;309E;D;K;6;CP$UIDd;3;310E;D;K;6;CP$UIDd;3;311E;D;K;6;CP$UIDd;3;312E;D;K;6;CP$UIDd;3;313E;D;K;6;CP$UIDd;3;314E;D;K;6;CP$UIDd;3;315E;D;K;6;CP$UIDd;3;316E;D;K;6;CP$UIDd;3;317E;D;K;6;CP$UIDd;3;318E;D;K;6;CP$UIDd;3;319E;D;K;6;CP$UIDd;3;320E;D;K;6;CP$UIDd;3;321E;D;K;6;CP$UIDd;3;322E;D;K;6;CP$UIDd;3;323E;D;K;6;CP$UIDd;3;324E;D;K;6;CP$UIDd;3;325E;D;K;6;CP$UIDd;3;326E;D;K;6;CP$UIDd;3;327E;D;K;6;CP$UIDd;3;328E;D;K;6;CP$UIDd;3;329E;D;K;6;CP$UIDd;3;330E;D;K;6;CP$UIDd;3;331E;D;K;6;CP$UIDd;3;332E;D;K;6;CP$UIDd;3;333E;D;K;6;CP$UIDd;3;334E;D;K;6;CP$UIDd;3;335E;D;K;6;CP$UIDd;3;336E;D;K;6;CP$UIDd;3;337E;D;K;6;CP$UIDd;3;338E;D;K;6;CP$UIDd;3;339E;D;K;6;CP$UIDd;3;340E;D;K;6;CP$UIDd;3;341E;D;K;6;CP$UIDd;3;342E;D;K;6;CP$UIDd;3;343E;D;K;6;CP$UIDd;3;344E;D;K;6;CP$UIDd;3;345E;D;K;6;CP$UIDd;3;346E;D;K;6;CP$UIDd;3;347E;D;K;6;CP$UIDd;3;348E;D;K;6;CP$UIDd;3;349E;D;K;6;CP$UIDd;3;350E;D;K;6;CP$UIDd;3;351E;D;K;6;CP$UIDd;3;352E;D;K;6;CP$UIDd;3;353E;D;K;6;CP$UIDd;3;354E;D;K;6;CP$UIDd;3;355E;D;K;6;CP$UIDd;3;356E;D;K;6;CP$UIDd;3;357E;D;K;6;CP$UIDd;3;358E;D;K;6;CP$UIDd;3;359E;D;K;6;CP$UIDd;3;360E;D;K;6;CP$UIDd;3;361E;D;K;6;CP$UIDd;3;362E;D;K;6;CP$UIDd;3;363E;D;K;6;CP$UIDd;3;364E;D;K;6;CP$UIDd;3;365E;D;K;6;CP$UIDd;3;366E;D;K;6;CP$UIDd;3;367E;D;K;6;CP$UIDd;3;368E;D;K;6;CP$UIDd;3;369E;D;K;6;CP$UIDd;3;370E;D;K;6;CP$UIDd;3;371E;D;K;6;CP$UIDd;3;372E;D;K;6;CP$UIDd;3;373E;D;K;6;CP$UIDd;3;374E;D;K;6;CP$UIDd;3;375E;D;K;6;CP$UIDd;3;376E;D;K;6;CP$UIDd;3;377E;D;K;6;CP$UIDd;3;378E;D;K;6;CP$UIDd;3;379E;D;K;6;CP$UIDd;3;380E;D;K;6;CP$UIDd;3;381E;D;K;6;CP$UIDd;3;382E;D;K;6;CP$UIDd;3;383E;D;K;6;CP$UIDd;3;384E;D;K;6;CP$UIDd;3;385E;D;K;6;CP$UIDd;3;386E;D;K;6;CP$UIDd;3;387E;D;K;6;CP$UIDd;3;388E;D;K;6;CP$UIDd;3;389E;D;K;6;CP$UIDd;3;390E;D;K;6;CP$UIDd;3;391E;D;K;6;CP$UIDd;3;392E;D;K;6;CP$UIDd;3;393E;D;K;6;CP$UIDd;3;394E;D;K;6;CP$UIDd;3;395E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;397E;D;K;6;CP$UIDd;3;398E;D;K;6;CP$UIDd;3;399E;D;K;6;CP$UIDd;3;400E;D;K;6;CP$UIDd;3;401E;D;K;6;CP$UIDd;3;402E;D;K;6;CP$UIDd;3;403E;D;K;6;CP$UIDd;3;404E;D;K;6;CP$UIDd;3;405E;D;K;6;CP$UIDd;3;406E;D;K;6;CP$UIDd;3;407E;D;K;6;CP$UIDd;3;408E;D;K;6;CP$UIDd;3;409E;D;K;6;CP$UIDd;3;410E;D;K;6;CP$UIDd;3;412E;D;K;6;CP$UIDd;3;413E;D;K;6;CP$UIDd;3;414E;D;K;6;CP$UIDd;3;415E;D;K;6;CP$UIDd;3;416E;D;K;6;CP$UIDd;3;417E;D;K;6;CP$UIDd;3;418E;D;K;6;CP$UIDd;3;419E;D;K;6;CP$UIDd;3;420E;D;K;6;CP$UIDd;3;421E;D;K;6;CP$UIDd;3;422E;D;K;6;CP$UIDd;3;423E;D;K;6;CP$UIDd;3;424E;D;K;6;CP$UIDd;3;425E;D;K;6;CP$UIDd;3;426E;D;K;6;CP$UIDd;3;427E;D;K;6;CP$UIDd;3;428E;D;K;6;CP$UIDd;3;429E;D;K;6;CP$UIDd;3;430E;D;K;6;CP$UIDd;3;431E;D;K;6;CP$UIDd;3;432E;D;K;6;CP$UIDd;3;433E;D;K;6;CP$UIDd;3;434E;D;K;6;CP$UIDd;3;435E;D;K;6;CP$UIDd;3;436E;D;K;6;CP$UIDd;3;437E;D;K;6;CP$UIDd;3;438E;D;K;6;CP$UIDd;3;439E;D;K;6;CP$UIDd;3;440E;D;K;6;CP$UIDd;3;441E;D;K;6;CP$UIDd;3;442E;D;K;6;CP$UIDd;3;443E;D;K;6;CP$UIDd;3;444E;D;K;6;CP$UIDd;3;445E;D;K;6;CP$UIDd;3;446E;D;K;6;CP$UIDd;3;447E;D;K;6;CP$UIDd;3;448E;D;K;6;CP$UIDd;3;449E;D;K;6;CP$UIDd;3;450E;D;K;6;CP$UIDd;3;451E;D;K;6;CP$UIDd;3;452E;D;K;6;CP$UIDd;3;453E;D;K;6;CP$UIDd;3;454E;D;K;6;CP$UIDd;3;455E;D;K;6;CP$UIDd;3;456E;D;K;6;CP$UIDd;3;457E;D;K;6;CP$UIDd;3;458E;D;K;6;CP$UIDd;3;459E;D;K;6;CP$UIDd;3;460E;D;K;6;CP$UIDd;3;461E;D;K;6;CP$UIDd;3;462E;D;K;6;CP$UIDd;3;463E;D;K;6;CP$UIDd;3;464E;D;K;6;CP$UIDd;3;465E;D;K;6;CP$UIDd;3;466E;D;K;6;CP$UIDd;3;467E;D;K;6;CP$UIDd;3;468E;D;K;6;CP$UIDd;3;469E;D;K;6;CP$UIDd;3;470E;D;K;6;CP$UIDd;3;471E;D;K;6;CP$UIDd;3;472E;D;K;6;CP$UIDd;3;473E;D;K;6;CP$UIDd;3;474E;D;K;6;CP$UIDd;3;475E;D;K;6;CP$UIDd;3;476E;D;K;6;CP$UIDd;3;477E;D;K;6;CP$UIDd;3;478E;D;K;6;CP$UIDd;3;479E;D;K;6;CP$UIDd;3;480E;D;K;6;CP$UIDd;3;481E;D;K;6;CP$UIDd;3;482E;D;K;6;CP$UIDd;3;483E;D;K;6;CP$UIDd;3;484E;D;K;6;CP$UIDd;3;485E;D;K;6;CP$UIDd;3;486E;D;K;6;CP$UIDd;3;487E;E;E;S;16;IBCocoaFrameworkD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;3;126E;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;137E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;3;142E;D;K;6;CP$UIDd;3;143E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;3;148E;D;K;6;CP$UIDd;3;149E;D;K;6;CP$UIDd;3;150E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;153E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;156E;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;3;158E;D;K;6;CP$UIDd;3;159E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;161E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;3;163E;D;K;6;CP$UIDd;3;164E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;166E;D;K;6;CP$UIDd;3;168E;D;K;6;CP$UIDd;3;169E;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;171E;D;K;6;CP$UIDd;3;172E;D;K;6;CP$UIDd;3;173E;D;K;6;CP$UIDd;3;174E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;175E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;177E;D;K;6;CP$UIDd;3;178E;D;K;6;CP$UIDd;3;179E;D;K;6;CP$UIDd;3;180E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;3;183E;D;K;6;CP$UIDd;3;184E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;186E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;189E;D;K;6;CP$UIDd;3;190E;D;K;6;CP$UIDd;3;191E;D;K;6;CP$UIDd;3;192E;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;194E;D;K;6;CP$UIDd;3;195E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;196E;D;K;6;CP$UIDd;3;197E;D;K;6;CP$UIDd;3;198E;D;K;6;CP$UIDd;3;199E;D;K;6;CP$UIDd;3;200E;D;K;6;CP$UIDd;3;202E;D;K;6;CP$UIDd;3;204E;D;K;6;CP$UIDd;3;205E;D;K;6;CP$UIDd;2;52E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;3;199E;D;K;6;CP$UIDd;3;186E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;3;171E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;171E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;3;196E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;3;177E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;204E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;3;204E;D;K;6;CP$UIDd;3;204E;D;K;6;CP$UIDd;3;204E;D;K;6;CP$UIDd;3;204E;D;K;6;CP$UIDd;3;194E;D;K;6;CP$UIDd;3;195E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;166E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;3;202E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;3;156E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;3;194E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;3;204E;D;K;6;CP$UIDd;3;204E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;3;204E;D;K;6;CP$UIDd;3;204E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;3;178E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;3;196E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;3;199E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;204E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;137E;D;K;6;CP$UIDd;3;174E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;204E;D;K;6;CP$UIDd;3;205E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;3;150E;D;K;6;CP$UIDd;3;168E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;3;192E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;3;204E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;3;204E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;3;204E;D;K;6;CP$UIDd;3;202E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;18;_CPCibCustomObjectK;8;$classesA;S;18;_CPCibCustomObjectS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;488E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;3;489E;E;D;K;10;$classnameS;6;CPMenuK;8;$classesA;S;6;CPMenuS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;490E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;491E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;492E;E;D;K;10;$classnameS;28;CPPredicateEditorRowTemplateK;8;$classesA;S;28;CPPredicateEditorRowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;23;CPPredicateTemplateTypeD;K;6;CP$UIDd;3;493E;K;26;CPPredicateTemplateOptionsD;K;6;CP$UIDd;3;494E;K;27;CPPredicateTemplateModifierD;K;6;CP$UIDd;3;494E;K;36;CPPredicateTemplateLeftAttributeTypeD;K;6;CP$UIDd;3;494E;K;37;CPPredicateTemplateRightAttributeTypeD;K;6;CP$UIDd;3;494E;K;33;CPPredicateTemplateLeftIsWildcardD;K;6;CP$UIDd;3;495E;K;34;CPPredicateTemplateRightIsWildcardD;K;6;CP$UIDd;3;495E;K;24;CPPredicateTemplateViewsD;K;6;CP$UIDd;3;496E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;497E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;498E;E;D;K;10;$classnameS;10;CPMenuItemK;8;$classesA;S;10;CPMenuItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;499E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;500E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;501E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;199E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;503E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;504E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;23;CPPredicateTemplateTypeD;K;6;CP$UIDd;3;501E;K;26;CPPredicateTemplateOptionsD;K;6;CP$UIDd;3;494E;K;27;CPPredicateTemplateModifierD;K;6;CP$UIDd;3;494E;K;36;CPPredicateTemplateLeftAttributeTypeD;K;6;CP$UIDd;3;494E;K;37;CPPredicateTemplateRightAttributeTypeD;K;6;CP$UIDd;3;505E;K;33;CPPredicateTemplateLeftIsWildcardD;K;6;CP$UIDd;3;495E;K;34;CPPredicateTemplateRightIsWildcardD;K;6;CP$UIDd;3;506E;K;24;CPPredicateTemplateViewsD;K;6;CP$UIDd;3;507E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;508E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;81E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;509E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;510E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;500E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;501E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;171E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;K;30;CPMenuItemRepresentedObjectKeyD;K;6;CP$UIDd;3;511E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;512E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;61E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;513E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;145E;E;D;K;10;$classnameS;13;CPTableColumnK;8;$classesA;S;13;CPTableColumnS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;32E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;1;0E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;514E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;515E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;516E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;518E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;519E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;520E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;495E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;506E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;521E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;54E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;522E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;523E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;524E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;81E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;10;$classnameS;12;CPScrollViewK;8;$classesA;S;12;CPScrollViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;36E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;48E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;494E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;525E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;526E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;527E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;48E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;528E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;529E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;530E;K;23;CPScrollViewContentViewD;K;6;CP$UIDd;3;532E;K;29;CPScrollViewHeaderClipViewKeyD;K;6;CP$UIDd;1;0E;K;21;CPScrollViewVScrollerD;K;6;CP$UIDd;3;104E;K;21;CPScrollViewHScrollerD;K;6;CP$UIDd;2;72E;K;23;CPScrollViewVLineScrollD;K;6;CP$UIDd;3;533E;K;23;CPScrollViewVPageScrollD;K;6;CP$UIDd;3;533E;K;23;CPScrollViewHLineScrollD;K;6;CP$UIDd;3;533E;K;23;CPScrollViewHPageScrollD;K;6;CP$UIDd;3;533E;K;24;CPScrollViewHasVScrollerD;K;6;CP$UIDd;3;506E;K;24;CPScrollViewHasHScrollerD;K;6;CP$UIDd;3;495E;K;29;CPScrollViewAutohidesScrollerD;K;6;CP$UIDd;3;506E;K;25;CPScrollViewCornerViewKeyD;K;6;CP$UIDd;1;0E;K;31;CPScrollViewBottomCornerViewKeyD;K;6;CP$UIDd;3;534E;K;25;CPScrollViewBorderTypeKeyD;K;6;CP$UIDd;3;493E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;506E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;535E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;495E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;536E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;500E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;501E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;86E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;537E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;520E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;181E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;538E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;523E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;539E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;500E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;171E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;K;30;CPMenuItemRepresentedObjectKeyD;K;6;CP$UIDd;3;540E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;541E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;124E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;542E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;543E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;544E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;181E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;54E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;545E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;95E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;546E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;124E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;547E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;548E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;95E;E;D;K;10;$classnameS;6;CPViewK;8;$classesA;S;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;47E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;494E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;549E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;550E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;551E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;530E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;497E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;544E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;23E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;54E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;10;$classnameS;8;CPButtonK;8;$classesA;S;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;48E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;494E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;552E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;553E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;48E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;528E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;554E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;555E;K;16;$aimage-positionD;K;6;CP$UIDd;3;494E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;494E;K;11;$aalignmentD;K;6;CP$UIDd;3;493E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;501E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;511E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;556E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;495E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;494E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;494E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;557E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;558E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;559E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;544E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;89E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;196E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;560E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;561E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;562E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;54E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;563E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;564E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;544E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;68E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;176E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;565E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;563E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;566E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;506E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;535E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;495E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;567E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;54E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;568E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;569E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;144E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;570E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;571E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;572E;E;D;K;6;$classD;K;6;CP$UIDd;2;36E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;573E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;494E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;574E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;575E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;576E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;573E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;528E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;529E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;530E;K;23;CPScrollViewContentViewD;K;6;CP$UIDd;3;577E;K;29;CPScrollViewHeaderClipViewKeyD;K;6;CP$UIDd;1;0E;K;21;CPScrollViewVScrollerD;K;6;CP$UIDd;3;128E;K;21;CPScrollViewHScrollerD;K;6;CP$UIDd;3;102E;K;23;CPScrollViewVLineScrollD;K;6;CP$UIDd;3;533E;K;23;CPScrollViewVPageScrollD;K;6;CP$UIDd;3;533E;K;23;CPScrollViewHLineScrollD;K;6;CP$UIDd;3;533E;K;23;CPScrollViewHPageScrollD;K;6;CP$UIDd;3;533E;K;24;CPScrollViewHasVScrollerD;K;6;CP$UIDd;3;506E;K;24;CPScrollViewHasHScrollerD;K;6;CP$UIDd;3;506E;K;29;CPScrollViewAutohidesScrollerD;K;6;CP$UIDd;3;506E;K;25;CPScrollViewCornerViewKeyD;K;6;CP$UIDd;1;0E;K;31;CPScrollViewBottomCornerViewKeyD;K;6;CP$UIDd;3;578E;K;25;CPScrollViewBorderTypeKeyD;K;6;CP$UIDd;3;493E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;506E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;535E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;495E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;579E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;202E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;500E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;52E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;580E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;26E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;581E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;566E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;582E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;182E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;583E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;584E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;493E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;585E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;564E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;586E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;587E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;506E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;535E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;495E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;176E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;506E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;535E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;495E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;E;D;K;10;$classnameS;10;CPScrollerK;8;$classesA;S;10;CPScrollerS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;37E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;494E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;588E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;589E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;37E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;590E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;591E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;592E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;593E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;494E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;37E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;594E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;511E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;494E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;501E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;595E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;54E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;48E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;494E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;596E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;597E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;48E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;598E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;554E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;555E;K;16;$aimage-positionD;K;6;CP$UIDd;3;494E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;494E;K;11;$aalignmentD;K;6;CP$UIDd;3;493E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;501E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;511E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;599E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;495E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;494E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;494E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;600E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;601E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;602E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;493E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;23E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;603E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;604E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;23E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;605E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;606E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;607E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;566E;E;D;K;10;$classnameS;10;CPCheckBoxK;8;$classesA;S;10;CPCheckBoxS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;573E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;540E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;608E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;609E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;573E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;528E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;610E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;611E;K;16;$aimage-positionD;K;6;CP$UIDd;3;493E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;494E;K;11;$aalignmentD;K;6;CP$UIDd;3;494E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;494E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;511E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;612E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;495E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;493E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;494E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;613E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;614E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;573E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;615E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;616E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;617E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;573E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;528E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;610E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;611E;K;16;$aimage-positionD;K;6;CP$UIDd;3;493E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;494E;K;11;$aalignmentD;K;6;CP$UIDd;3;494E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;494E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;511E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;618E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;495E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;493E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;494E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;619E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;170E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;573E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;494E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;620E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;621E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;573E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;528E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;610E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;611E;K;16;$aimage-positionD;K;6;CP$UIDd;3;493E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;494E;K;11;$aalignmentD;K;6;CP$UIDd;3;494E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;494E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;511E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;622E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;495E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;493E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;494E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;573E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;511E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;623E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;621E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;573E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;528E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;610E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;611E;K;16;$aimage-positionD;K;6;CP$UIDd;3;493E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;494E;K;11;$aalignmentD;K;6;CP$UIDd;3;494E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;494E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;511E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;624E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;495E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;493E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;494E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;535E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;625E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;626E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;627E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;628E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;506E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;535E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;495E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;182E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;559E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;629E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;630E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;90E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;631E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;632E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;633E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;634E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;635E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;48E;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;185E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;494E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;636E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;637E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;185E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;590E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;591E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;592E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;638E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;494E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;3;185E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;639E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;511E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;494E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;640E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;641E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;61E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;642E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;61E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;643E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;644E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;645E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;145E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;646E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;544E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;145E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;626E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;544E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;87E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;140E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;506E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;535E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;495E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;54E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;10;$classnameS;11;CPTableViewK;8;$classesA;S;11;CPTableViewS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;100E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;577E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;494E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;647E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;647E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;577E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;648E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;530E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;511E;K;24;CPTableViewDataSourceKeyD;K;6;CP$UIDd;1;0E;K;22;CPTableViewDelegateKeyD;K;6;CP$UIDd;1;0E;K;23;CPTableViewRowHeightKeyD;K;6;CP$UIDd;3;649E;K;30;CPTableViewIntercellSpacingKeyD;K;6;CP$UIDd;3;650E;K;37;CPTableViewSelectionHighlightStyleKeyD;K;6;CP$UIDd;3;494E;K;37;CPTableViewColumnAutoresizingStyleKeyD;K;6;CP$UIDd;3;511E;K;31;CPTableViewMultipleSelectionKeyD;K;6;CP$UIDd;3;495E;K;28;CPTableViewEmptySelectionKeyD;K;6;CP$UIDd;3;506E;K;30;CPTableViewColumnReorderingKeyD;K;6;CP$UIDd;3;506E;K;28;CPTableViewColumnResizingKeyD;K;6;CP$UIDd;3;506E;K;29;CPTableViewColumnSelectionKeyD;K;6;CP$UIDd;3;506E;K;26;CPTableViewTableColumnsKeyD;K;6;CP$UIDd;3;651E;K;23;CPTableViewGridColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTableViewGridStyleMaskKeyD;K;6;CP$UIDd;1;0E;K;39;CPTableViewUsesAlternatingBackgroundKeyD;K;6;CP$UIDd;3;506E;K;34;CPTableViewAlternatingRowColorsKeyD;K;6;CP$UIDd;1;0E;K;24;CPTableViewCornerViewKeyD;K;6;CP$UIDd;3;653E;K;24;CPTableViewHeaderViewKeyD;K;6;CP$UIDd;1;0E;K;26;CPTableViewAutosaveNameKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;62E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;494E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;654E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;655E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;62E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;590E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;591E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;592E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;593E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;494E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;62E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;594E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;511E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;494E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;656E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;657E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;501E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;181E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;658E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;37E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;494E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;659E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;660E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;37E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;590E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;591E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;592E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;638E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;494E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;37E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;639E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;511E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;494E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;661E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;662E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;124E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;663E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;506E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;535E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;495E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;124E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;664E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;95E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;506E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;535E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;495E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;665E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;54E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;666E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;667E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;501E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;23E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;658E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;668E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;176E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;669E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;670E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;671E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;68E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;672E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;673E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;488E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;674E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;54E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;675E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;676E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;544E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;196E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;140E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;571E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;544E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;61E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;643E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;544E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;95E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;677E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;26E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;678E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;176E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;679E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;523E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;680E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;176E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;681E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;523E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;682E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;520E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;556E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;683E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;684E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;685E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;501E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;686E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;687E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;182E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;560E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;544E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;54E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;140E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;62E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;494E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;636E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;637E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;62E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;590E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;591E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;592E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;638E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;494E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;62E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;639E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;511E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;494E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;640E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;535E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;688E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;506E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;535E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;495E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;689E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;520E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;23E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;538E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;523E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;690E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;607E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;613E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;544E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;81E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;54E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;691E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;124E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;675E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;692E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;573E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;693E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;694E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;695E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;573E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;528E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;610E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;611E;K;16;$aimage-positionD;K;6;CP$UIDd;3;493E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;494E;K;11;$aalignmentD;K;6;CP$UIDd;3;494E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;494E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;511E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;696E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;495E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;493E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;494E;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;573E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;494E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;697E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;698E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;573E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;528E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;554E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;555E;K;16;$aimage-positionD;K;6;CP$UIDd;3;494E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;494E;K;11;$aalignmentD;K;6;CP$UIDd;3;493E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;501E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;511E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;556E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;495E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;494E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;494E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;699E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;544E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;170E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;54E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;573E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;590E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;700E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;609E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;573E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;528E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;610E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;611E;K;16;$aimage-positionD;K;6;CP$UIDd;3;493E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;494E;K;11;$aalignmentD;K;6;CP$UIDd;3;494E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;494E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;511E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;701E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;495E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;493E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;494E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;573E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;702E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;703E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;621E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;573E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;528E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;610E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;611E;K;16;$aimage-positionD;K;6;CP$UIDd;3;493E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;494E;K;11;$aalignmentD;K;6;CP$UIDd;3;494E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;494E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;511E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;704E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;495E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;493E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;494E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;705E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;706E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;707E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;708E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;81E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;709E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;710E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;182E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;513E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;61E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;711E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;712E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;646E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;713E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;642E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;145E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;714E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;54E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;715E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;716E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;176E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;717E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;506E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;535E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;495E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;718E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;544E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;176E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;140E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;719E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;202E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;500E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;501E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;52E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;506E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;535E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;495E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;720E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;81E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;721E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;493E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;181E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;603E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;722E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;683E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;544E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;124E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;196E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;723E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;124E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;510E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;500E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;501E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;129E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;K;30;CPMenuItemRepresentedObjectKeyD;K;6;CP$UIDd;3;511E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;724E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;95E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;725E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;726E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;727E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;500E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;199E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;506E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;535E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;495E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;54E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;728E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;176E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;729E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;642E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;95E;E;D;K;10;$classnameS;11;CPTextFieldK;8;$classesA;S;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;165E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;573E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;494E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;730E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;731E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;573E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;528E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;732E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;530E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;493E;K;11;$aalignmentD;K;6;CP$UIDd;3;511E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;733E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;734E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;495E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;495E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;495E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;493E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;511E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;735E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;124E;E;D;K;6;$classD;K;6;CP$UIDd;3;100E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;736E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;494E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;647E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;647E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;736E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;648E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;530E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;511E;K;24;CPTableViewDataSourceKeyD;K;6;CP$UIDd;1;0E;K;22;CPTableViewDelegateKeyD;K;6;CP$UIDd;1;0E;K;23;CPTableViewRowHeightKeyD;K;6;CP$UIDd;3;649E;K;30;CPTableViewIntercellSpacingKeyD;K;6;CP$UIDd;3;650E;K;37;CPTableViewSelectionHighlightStyleKeyD;K;6;CP$UIDd;3;494E;K;37;CPTableViewColumnAutoresizingStyleKeyD;K;6;CP$UIDd;3;511E;K;31;CPTableViewMultipleSelectionKeyD;K;6;CP$UIDd;3;495E;K;28;CPTableViewEmptySelectionKeyD;K;6;CP$UIDd;3;506E;K;30;CPTableViewColumnReorderingKeyD;K;6;CP$UIDd;3;506E;K;28;CPTableViewColumnResizingKeyD;K;6;CP$UIDd;3;506E;K;29;CPTableViewColumnSelectionKeyD;K;6;CP$UIDd;3;506E;K;26;CPTableViewTableColumnsKeyD;K;6;CP$UIDd;3;737E;K;23;CPTableViewGridColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTableViewGridStyleMaskKeyD;K;6;CP$UIDd;1;0E;K;39;CPTableViewUsesAlternatingBackgroundKeyD;K;6;CP$UIDd;3;506E;K;34;CPTableViewAlternatingRowColorsKeyD;K;6;CP$UIDd;1;0E;K;24;CPTableViewCornerViewKeyD;K;6;CP$UIDd;3;738E;K;24;CPTableViewHeaderViewKeyD;K;6;CP$UIDd;1;0E;K;26;CPTableViewAutosaveNameKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;739E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;176E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;740E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;699E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;741E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;535E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;742E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;743E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;675E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;566E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;744E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;176E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;745E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;573E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;494E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;746E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;698E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;573E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;528E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;554E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;555E;K;16;$aimage-positionD;K;6;CP$UIDd;3;494E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;494E;K;11;$aalignmentD;K;6;CP$UIDd;3;493E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;501E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;511E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;556E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;495E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;494E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;494E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;747E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;718E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;748E;E;D;K;6;$classD;K;6;CP$UIDd;2;32E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;1;0E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;514E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;515E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;516E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;749E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;750E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;520E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;495E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;506E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;711E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;544E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;144E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;140E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;751E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;511E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;752E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;506E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;535E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;495E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;176E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;543E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;753E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;635E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;754E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;755E;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;185E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;494E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;654E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;655E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;185E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;590E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;591E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;592E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;593E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;494E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;3;185E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;594E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;511E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;494E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;656E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;756E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;202E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;500E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;52E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;36E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;573E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;494E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;757E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;575E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;758E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;573E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;528E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;529E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;530E;K;23;CPScrollViewContentViewD;K;6;CP$UIDd;3;736E;K;29;CPScrollViewHeaderClipViewKeyD;K;6;CP$UIDd;1;0E;K;21;CPScrollViewVScrollerD;K;6;CP$UIDd;2;92E;K;21;CPScrollViewHScrollerD;K;6;CP$UIDd;3;183E;K;23;CPScrollViewVLineScrollD;K;6;CP$UIDd;3;533E;K;23;CPScrollViewVPageScrollD;K;6;CP$UIDd;3;533E;K;23;CPScrollViewHLineScrollD;K;6;CP$UIDd;3;533E;K;23;CPScrollViewHPageScrollD;K;6;CP$UIDd;3;533E;K;24;CPScrollViewHasVScrollerD;K;6;CP$UIDd;3;506E;K;24;CPScrollViewHasHScrollerD;K;6;CP$UIDd;3;506E;K;29;CPScrollViewAutohidesScrollerD;K;6;CP$UIDd;3;506E;K;25;CPScrollViewCornerViewKeyD;K;6;CP$UIDd;1;0E;K;31;CPScrollViewBottomCornerViewKeyD;K;6;CP$UIDd;3;759E;K;25;CPScrollViewBorderTypeKeyD;K;6;CP$UIDd;3;493E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;503E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;544E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;26E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;140E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;10;$classnameS;17;CPPredicateEditorK;8;$classesA;S;17;CPPredicateEditorS;12;CPRuleEditorS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;187E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;532E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;494E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;760E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;760E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;761E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;532E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;762E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;763E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;530E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;511E;K;20;CPRuleEditorEditableD;K;6;CP$UIDd;3;506E;K;35;CPRuleEditorAllowsEmptyCompoundRowsD;K;6;CP$UIDd;3;495E;K;25;CPRuleEditorDisallowEmptyD;K;6;CP$UIDd;3;506E;K;30;CPRuleEditorAlignmentGridWidthD;K;6;CP$UIDd;3;764E;K;23;CPRuleEditorSliceHeightD;K;6;CP$UIDd;3;765E;K;23;CPRuleEditorNestingModeD;K;6;CP$UIDd;3;520E;K;27;CPRuleEditorStringsFilenameD;K;6;CP$UIDd;3;535E;K;26;CPRuleEditorRowTypeKeyPathD;K;6;CP$UIDd;3;766E;K;24;CPRuleEditorItemsKeyPathD;K;6;CP$UIDd;3;767E;K;25;CPRuleEditorValuesKeyPathD;K;6;CP$UIDd;3;768E;K;29;CPRuleEditorBoundArrayKeyPathD;K;6;CP$UIDd;3;769E;K;31;CPRuleEditorSubrowsArrayKeyPathD;K;6;CP$UIDd;3;770E;K;24;CPRuleEditorSlicesHolderD;K;6;CP$UIDd;1;0E;K;18;CPRuleEditorSlicesD;K;6;CP$UIDd;3;771E;K;27;CPRuleEditorBoundArrayOwnerD;K;6;CP$UIDd;3;773E;K;20;CPPredicateTemplatesD;K;6;CP$UIDd;3;774E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;775E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;176E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;776E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;777E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;778E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;581E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;635E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;544E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;182E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;140E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;490E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;544E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;20E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;87E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;23;CPPredicateTemplateTypeD;K;6;CP$UIDd;3;501E;K;26;CPPredicateTemplateOptionsD;K;6;CP$UIDd;3;494E;K;27;CPPredicateTemplateModifierD;K;6;CP$UIDd;3;494E;K;36;CPPredicateTemplateLeftAttributeTypeD;K;6;CP$UIDd;3;494E;K;37;CPPredicateTemplateRightAttributeTypeD;K;6;CP$UIDd;3;505E;K;33;CPPredicateTemplateLeftIsWildcardD;K;6;CP$UIDd;3;495E;K;34;CPPredicateTemplateRightIsWildcardD;K;6;CP$UIDd;3;506E;K;24;CPPredicateTemplateViewsD;K;6;CP$UIDd;3;779E;E;D;K;6;$classD;K;6;CP$UIDd;3;165E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;48E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;494E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;780E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;781E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;48E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;762E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;732E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;782E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;493E;K;11;$aalignmentD;K;6;CP$UIDd;3;511E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;783E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;734E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;506E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;506E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;506E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;785E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;493E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;511E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;676E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;786E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;787E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;788E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;23E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;789E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;790E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;124E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;563E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;692E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;535E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;791E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;792E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;170E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;D;K;10;$classnameS;13;CPPopUpButtonK;8;$classesA;S;13;CPPopUpButtonS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;201E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;573E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;2;52E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;494E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;793E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;794E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;573E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;528E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;795E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;611E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;511E;K;11;$aalignmentD;K;6;CP$UIDd;3;494E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;494E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;511E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;1;0E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;493E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;5;CPBoxK;8;$classesA;S;5;CPBoxS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;203E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;48E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;494E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;796E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;797E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;798E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;48E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;598E;K;25;CPViewAutoresizesSubviewsD;K;6;CP$UIDd;3;494E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;530E;K;12;CPBoxTypeKeyD;K;6;CP$UIDd;3;511E;K;18;CPBoxBorderTypeKeyD;K;6;CP$UIDd;3;501E;K;19;CPBoxBorderColorKeyD;K;6;CP$UIDd;3;799E;K;17;CPBoxFillColorKeyD;K;6;CP$UIDd;3;800E;K;20;CPBoxCornerRadiusKeyD;K;6;CP$UIDd;3;494E;K;19;CPBoxBorderWidthKeyD;K;6;CP$UIDd;3;501E;K;21;CPBoxContentMarginKeyD;K;6;CP$UIDd;3;801E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;573E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;493E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;802E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;621E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;573E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;528E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;610E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;611E;K;16;$aimage-positionD;K;6;CP$UIDd;3;493E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;494E;K;11;$aalignmentD;K;6;CP$UIDd;3;494E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;494E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;511E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;803E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;495E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;493E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;494E;E;S;1;0S;1;1S;1;2S;1;3S;1;4S;1;5S;1;6S;1;7S;1;8S;1;9S;2;10S;2;11S;2;12S;2;13S;2;14S;2;15S;2;16S;2;17S;2;18S;2;19S;2;20S;2;21S;2;22S;2;23S;2;24S;2;25S;2;28S;2;27S;2;26S;2;29S;2;30S;2;31S;2;32S;2;33S;2;34S;2;35S;2;36S;2;37S;2;38S;2;39S;2;41S;2;40S;2;42S;2;43S;2;44S;2;45S;2;46S;2;47S;2;48S;2;49S;2;50S;2;52S;2;51S;2;53S;2;54S;2;55S;2;59S;2;57S;2;58S;2;56S;2;60S;2;61S;2;62S;2;63S;2;64S;2;65S;2;66S;2;67S;2;70S;2;69S;2;74S;2;68S;2;72S;2;73S;2;71S;2;75S;2;76S;2;77S;2;78S;2;79S;2;80S;2;81S;2;82S;2;83S;2;84S;2;85S;2;86S;2;87S;2;88S;2;89S;2;90S;2;91S;2;92S;2;93S;2;94S;2;95S;2;96S;2;97S;2;98S;2;99S;3;100S;3;101S;3;102S;3;103S;3;104S;3;105S;3;106S;12;File's OwnerS;3;107S;3;108S;3;109S;3;110S;3;111S;3;112S;3;113S;3;116S;3;115S;3;117S;3;114S;3;118S;3;119S;3;120S;3;121S;3;122S;3;123S;3;124S;3;125S;3;126S;3;127S;3;128S;3;129S;3;130S;3;131S;3;132S;3;133S;3;134S;3;135S;3;136S;3;137S;3;138S;3;139S;3;140S;3;141S;3;142S;3;143S;3;144S;3;145S;3;146S;3;148S;3;147S;3;149S;3;150S;3;151S;3;152S;3;153S;3;154S;3;155S;3;156S;3;157S;3;158S;3;159S;3;160S;3;161S;3;162S;3;163S;3;164S;3;165S;3;166S;3;167S;3;168S;3;169S;3;170S;3;171S;3;172S;3;173S;3;174S;3;175S;3;176S;3;177S;3;178S;3;179S;3;180S;3;181S;3;182S;3;183S;3;184S;3;185S;3;186S;3;187S;3;188D;K;10;$classnameS;20;CPCibOutletConnectorK;8;$classesA;S;20;CPCibOutletConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;396E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;115E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;112E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;804E;E;D;K;6;$classD;K;6;CP$UIDd;3;396E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;112E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;74E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;805E;E;D;K;6;$classD;K;6;CP$UIDd;3;396E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;112E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;101E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;806E;E;D;K;6;$classD;K;6;CP$UIDd;3;396E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;112E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;188E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;807E;E;D;K;6;$classD;K;6;CP$UIDd;3;396E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;112E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;195E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;808E;E;D;K;6;$classD;K;6;CP$UIDd;3;396E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;112E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;202E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;809E;E;D;K;6;$classD;K;6;CP$UIDd;3;396E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;112E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;168E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;810E;E;D;K;6;$classD;K;6;CP$UIDd;3;396E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;112E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;204E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;811E;E;D;K;6;$classD;K;6;CP$UIDd;3;396E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;112E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;91E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;812E;E;D;K;6;$classD;K;6;CP$UIDd;3;396E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;188E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;112E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;804E;E;D;K;6;$classD;K;6;CP$UIDd;3;396E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;101E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;112E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;813E;E;D;K;6;$classD;K;6;CP$UIDd;3;396E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;101E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;112E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;804E;E;D;K;6;$classD;K;6;CP$UIDd;3;396E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;168E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;112E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;813E;E;D;K;6;$classD;K;6;CP$UIDd;3;396E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;168E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;112E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;804E;E;D;K;10;$classnameS;21;CPCibControlConnectorK;8;$classesA;S;21;CPCibControlConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;142E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;814E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;66E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;815E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;155E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;16E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;816E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;169E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;817E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;111E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;818E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;163E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;819E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;122E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;820E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;173E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;821E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;121E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;822E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;148E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;823E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;60E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;824E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;189E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;825E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;113E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;826E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;132E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;827E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;114E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;115E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;828E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;78E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;829E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;175E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;830E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;83E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;831E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;200E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;832E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;116E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;833E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;109E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;834E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;59E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;835E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;28E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;836E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;73E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;837E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;55E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;838E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;141E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;839E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;147E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;840E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;110E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;841E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;842E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;34E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;843E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;35E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;844E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;126E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;845E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;65E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;846E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;120E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;847E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;153E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;848E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;103E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;849E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;154E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;850E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;40E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;851E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;42E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;852E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;105E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;853E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;157E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;854E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;45E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;855E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;167E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;856E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;134E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;857E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;198E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;858E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;190E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;859E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;160E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;860E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;172E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;861E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;57E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;862E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;164E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;863E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;44E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;864E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;107E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;865E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;159E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;866E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;46E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;867E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;146E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;868E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;31E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;869E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;96E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;870E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;94E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;871E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;143E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;872E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;30E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;873E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;93E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;874E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;51E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;188E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;875E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;195E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;112E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;876E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;188E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;112E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;877E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;174E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;112E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;878E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;205E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;112E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;879E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;138E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;112E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;879E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;82E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;112E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;879E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;139E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;112E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;879E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;85E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;112E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;879E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;80E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;112E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;879E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;135E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;112E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;879E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;202E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;112E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;880E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;136E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;112E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;881E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;84E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;112E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;879E;E;D;K;6;$classD;K;6;CP$UIDd;3;411E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;74E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;112E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;882E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;91E;E;E;S;8;ServicesS;15;_CPServicesMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;d;1;2d;1;0F;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;883E;D;K;6;CP$UIDd;3;884E;E;E;S;4;FindD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;3;197E;D;K;6;CP$UIDd;2;77E;E;E;S;6;stringS;17;_popUpItemAction:d;1;1d;7;1048576S;4;ViewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;3;120E;E;E;d;3;700T;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;885E;D;K;6;CP$UIDd;3;886E;D;K;6;CP$UIDd;3;887E;E;E;S;14;Check SpellingS;1;;S;2;isd;1;4S;7;TightenS;8;Use Noned;3;213d;2;40d;4;1000D;K;10;$classnameS;24;_CPTableColumnHeaderViewK;8;$classesA;S;24;_CPTableColumnHeaderViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;517E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;888E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;888E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;889E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;890E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;530E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;494E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;535E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;892E;E;D;K;6;$classD;K;6;CP$UIDd;3;165E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;888E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;888E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;732E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;893E;K;6;$afontD;K;6;CP$UIDd;3;895E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;511E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;493E;K;11;$aalignmentD;K;6;CP$UIDd;3;494E;K;15;$acontent-insetD;K;6;CP$UIDd;3;897E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;535E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;734E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;511E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;494E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;535E;E;d;1;3S;4;RedoS;1;Zd;7;1179648S;27;Check Spelling While TypingS;22;{{20, 74}, {611, 164}}S;20;{{0, 0}, {611, 164}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;532E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;3;534E;E;E;d;2;36S;10;scrollviewS;6;normalD;K;10;$classnameS;10;CPClipViewK;8;$classesA;S;10;CPClipViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;531E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;37E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;494E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;898E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;760E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;899E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;37E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;590E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;900E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;530E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;3;188E;E;d;2;10D;K;6;$classD;K;6;CP$UIDd;2;47E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;37E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;888E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;888E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;37E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;530E;E;S;0;S;6;one opS;11;Smart LinksS;1;GS;7;matchesd;1;6S;10;Align LeftS;1;{S;13;SubstitutionsS;14;submenuAction:S;11;SuperscriptS;11;Align RightS;1;}S;5;LowerS;21;{{7, 11}, {960, 534}}S;20;{{0, 0}, {960, 534}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;3;195E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;3;204E;D;K;6;CP$UIDd;2;74E;E;E;S;22;{{601, 242}, {30, 24}}S;18;{{0, 0}, {30, 24}}S;6;buttonS;17;selected+borderedS;1;+S;10;OtherViewsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;184E;D;K;6;CP$UIDd;2;64E;E;E;S;4;FontS;4;EditD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;3;137E;E;E;S;5;PasteS;1;vS;11;Open RecentS;11;Paste Styled;7;1572864S;3;CutS;1;xS;19;NewApplication HelpS;1;?S;4;KernD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;3;143E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;93E;E;E;D;K;6;$classD;K;6;CP$UIDd;2;47E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;204E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;494E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;947E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;948E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;949E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;204E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;946E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;530E;E;S;20;{{9, 30}, {218, 97}}S;19;{{0, 0}, {218, 97}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;577E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;578E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;531E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;62E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;494E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;901E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;647E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;902E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;62E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;590E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;903E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;530E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;3;101E;E;D;K;6;$classD;K;6;CP$UIDd;2;47E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;62E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;888E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;888E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;62E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;530E;E;S;15;Constant ValuesS;12;Show ToolbarS;1;tS;8;MinimizeS;1;mS;4;BoldS;1;bS;22;_CPRecentDocumentsMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;113E;E;E;S;24;{{-100, 249}, {360, 15}}S;19;{{0, 0}, {360, 15}}d;1;8d;11;-2147483648S;8;scrollerS;8;disabledS;29;_horizontalScrollerDidScroll:S;6;DeleteS;23;{{837, 486}, {103, 24}}S;19;{{0, 0}, {103, 24}}d;2;33S;12;Add TemplateS;12;Preferences…S;1;,S;9;Find NextS;1;gS;17;Jump to SelectionS;1;jS;11;Hide OthersS;1;hS;21;{{14, 227}, {96, 18}}S;18;{{0, 0}, {96, 18}}S;9;check-boxS;8;borderedS;7;MatchesS;20;Spelling and GrammarD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;3;153E;E;E;d;1;9S;22;{{144, 201}, {84, 18}}S;18;{{0, 0}, {84, 18}}S;9;Ends WithS;13;Stop SpeakingS;22;{{189, 175}, {33, 18}}S;18;{{0, 0}, {33, 18}}S;1;S;8;delegateS;11;addTemplateS;9;leftTableS;15;predicateEditorS;14;predicateFieldS;20;rightExpressionsTypeS;10;rightTableS;11;templateBoxS;6;windowS;10;dataSourceS;15;arrangeInFront:S;19;performMiniaturize:S;29;orderFrontStandardAboutPanel:S;13;openDocument:S;13;performClose:S;13;saveDocument:S;14;runPageLayout:S;6;print:S;15;saveDocumentAs:S;12;newDocument:S;9;showHelp:S;22;revertDocumentToSaved:S;21;clearRecentDocuments:S;5;hide:S;10;terminate:S;22;hideOtherApplications:S;22;unhideAllApplications:S;13;stopSpeaking:S;14;startSpeaking:S;5;copy:S;10;selectAll:S;4;cut:S;14;checkSpelling:S;7;delete:S;6;paste:S;15;showGuessPanel:S;5;undo:S;23;performFindPanelAction:S;29;centerSelectionInVisibleArea:S;5;redo:S;30;toggleContinuousSpellChecking:S;12;performZoom:S;19;toggleToolbarShown:S;31;runToolbarCustomizationPalette:S;22;toggleGrammarChecking:S;24;toggleSmartInsertDelete:S;33;toggleAutomaticQuoteSubstitution:S;29;toggleAutomaticLinkDetection:S;10;alignLeft:S;12;alignCenter:S;15;alignJustified:S;11;alignRight:S;12;toggleRuler:S;10;copyRuler:S;11;pasteRuler:S;10;underline:S;21;orderFrontColorPanel:S;9;copyFont:S;10;pasteFont:S;9;unscript:S;12;superscript:S;10;subscript:S;14;raiseBaseline:S;14;lowerBaseline:S;21;useStandardLigatures:S;17;turnOffLigatures:S;16;useAllLigatures:S;19;useStandardKerning:S;15;turnOffKerning:S;15;tightenKerning:S;14;loosenKerning:S;7;addRow:S;17;displayPredicate:S;22;predicateEditorAction:S;15;addLeftKeyPath:S;16;updateOperators:S;25;selectRightAttributeType:S;17;addRightConstant:S;12;addTemplate:D;K;6;$classD;K;6;CP$UIDd;3;201E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;3;920E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;921E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;922E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;795E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;611E;K;6;$afontD;K;6;CP$UIDd;3;923E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;511E;K;11;$aalignmentD;K;6;CP$UIDd;3;494E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;494E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;511E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;1;0E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;493E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;201E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;3;924E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;925E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;926E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;795E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;611E;K;6;$afontD;K;6;CP$UIDd;3;923E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;511E;K;11;$aalignmentD;K;6;CP$UIDd;3;494E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;494E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;511E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;1;0E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;493E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;201E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;3;199E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;927E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;928E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;795E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;611E;K;6;$afontD;K;6;CP$UIDd;3;923E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;511E;K;11;$aalignmentD;K;6;CP$UIDd;3;494E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;494E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;511E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;1;0E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;493E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;201E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;3;171E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;929E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;930E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;795E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;611E;K;6;$afontD;K;6;CP$UIDd;3;923E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;511E;K;11;$aalignmentD;K;6;CP$UIDd;3;494E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;494E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;511E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;1;0E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;493E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;165E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;494E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;931E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;932E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;732E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;933E;K;6;$afontD;K;6;CP$UIDd;3;923E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;493E;K;11;$aalignmentD;K;6;CP$UIDd;3;494E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;535E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;734E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;506E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;506E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;506E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;785E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;493E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;494E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;S;16;{{0, 0}, {0, 0}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;935E;E;E;S;12;columnHeaderD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;891E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;936E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;937E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;495E;E;S;11;placeholderD;K;10;$classnameS;17;_CPThemeAttributeK;8;$classesA;S;17;_CPThemeAttributeS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;894E;K;4;nameD;K;6;CP$UIDd;3;938E;K;6;valuesD;K;6;CP$UIDd;3;940E;E;D;K;10;$classnameS;21;_CPKeyedArchiverValueK;8;$classesA;S;21;_CPKeyedArchiverValueS;7;CPValueS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;896E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;941E;E;S;20;{{1, 1}, {609, 162}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;188E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;784E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;942E;E;S;19;{{1, 1}, {216, 95}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;101E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;784E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;943E;E;S;20;{{224, 0}, {16, 23}}S;18;{{0, 0}, {16, 23}}S;10;cornerviewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;944E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;894E;K;4;nameD;K;6;CP$UIDd;3;938E;K;6;valuesD;K;6;CP$UIDd;3;945E;E;D;K;6;$classD;K;6;CP$UIDd;3;896E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;941E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;168E;E;E;D;K;10;$classnameS;28;_CPRuleEditorViewSliceHolderK;8;$classesA;S;28;_CPRuleEditorViewSliceHolderS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;911E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;188E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;494E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;760E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;760E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;188E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;946E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;530E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;3;201E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;2;86E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;927E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;928E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;795E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;611E;K;6;$afontD;K;6;CP$UIDd;3;923E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;511E;K;11;$aalignmentD;K;6;CP$UIDd;3;494E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;494E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;511E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;1;0E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;493E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;201E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;3;129E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;929E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;930E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;795E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;611E;K;6;$afontD;K;6;CP$UIDd;3;923E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;511E;K;11;$aalignmentD;K;6;CP$UIDd;3;494E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;494E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;511E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;1;0E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;493E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;165E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;494E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;931E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;932E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;732E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;933E;K;6;$afontD;K;6;CP$UIDd;3;923E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;493E;K;11;$aalignmentD;K;6;CP$UIDd;3;494E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;535E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;734E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;506E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;506E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;506E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;785E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;493E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;494E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;501E;D;K;6;CP$UIDd;3;501E;D;K;6;CP$UIDd;3;501E;D;K;6;CP$UIDd;3;501E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;494E;D;K;6;CP$UIDd;3;494E;D;K;6;CP$UIDd;3;494E;D;K;6;CP$UIDd;3;950E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;951E;D;K;6;CP$UIDd;3;952E;D;K;6;CP$UIDd;3;953E;D;K;6;CP$UIDd;3;501E;E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;535E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;954E;E;S;18;{{7, 8}, {58, 24}}S;18;{{0, 0}, {58, 24}}D;K;6;$classD;K;6;CP$UIDd;3;891E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;955E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;956E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;495E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;535E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;957E;E;S;20;{{71, 8}, {167, 24}}S;19;{{0, 0}, {167, 24}}S;19;{{37, 8}, {79, 24}}S;18;{{0, 0}, {79, 24}}S;20;{{122, 8}, {99, 24}}S;18;{{0, 0}, {99, 24}}S;21;{{224, 1}, {167, 25}}S;19;{{0, 0}, {167, 25}}S;19;bezeled+placeholderD;K;10;$classnameS;19;_CPImageAndTextViewK;8;$classesA;S;19;_CPImageAndTextViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;934E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;518E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;888E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;888E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;518E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;946E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;530E;E;S;17;Arial, sans-serifd;2;12S;4;fontD;K;10;$classnameS;12;CPDictionaryK;8;$classesA;S;12;CPDictionaryS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;939E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;958E;K;6;normalD;K;6;CP$UIDd;3;892E;E;E;S;39;{"top":0,"right":5,"bottom":0,"left":5}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;959E;D;K;6;CP$UIDd;3;959E;D;K;6;CP$UIDd;3;959E;D;K;6;CP$UIDd;3;501E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;501E;D;K;6;CP$UIDd;3;501E;D;K;6;CP$UIDd;3;501E;D;K;6;CP$UIDd;3;501E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;934E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;749E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;888E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;888E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;749E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;946E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;530E;E;D;K;6;$classD;K;6;CP$UIDd;3;939E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;958E;K;6;normalD;K;6;CP$UIDd;3;892E;E;E;d;2;18S;20;{{1, 1}, {240, 438}}S;20;{{0, 0}, {240, 438}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;3;202E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;205E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;3;166E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;174E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;84E;E;E;f;4;0.42f;12;0.8911290323f;12;0.8901341359f;12;0.8899458051D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;960E;D;K;6;CP$UIDd;3;961E;E;E;S;5;Ariald;2;11D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;962E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;891E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;936E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;937E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;506E;E;f;12;0.9100000262D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;963E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;500E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;501E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;920E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;K;30;CPMenuItemRepresentedObjectKeyD;K;6;CP$UIDd;3;493E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;964E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;500E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;920E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;K;30;CPMenuItemRepresentedObjectKeyD;K;6;CP$UIDd;3;501E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;965E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;500E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;501E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;924E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;502E;E;S;3;AnyS;3;AllS;25;of the following are trueE;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/CPPredicateEditorCibTest/Resources/MainMenu.xib b/Tests/Manual/CPPredicateEditorCibTest/Resources/MainMenu.xib new file mode 100644 index 000000000..482348609 --- /dev/null +++ b/Tests/Manual/CPPredicateEditorCibTest/Resources/MainMenu.xib @@ -0,0 +1,5178 @@ + + + + 1050 + 10J869 + 1306 + 1038.35 + 461.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 1306 + + + NSPopUpButtonCell + NSScroller + NSPredicateEditor + NSMenuItem + NSMenu + NSTextFieldCell + NSScrollView + NSButtonCell + NSButton + NSBox + NSTableView + NSPopUpButton + NSPredicateEditorRowTemplate + NSCustomObject + NSView + NSWindowTemplate + NSTextField + NSTableColumn + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + NSApplication + + + FirstResponder + + + NSApplication + + + AMainMenu + + + + NewApplication + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + NewApplication + + + + About NewApplication + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Preferences… + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Services + + 1048576 + 2147483647 + + + submenuAction: + + Services + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide NewApplication + h + 1048576 + 2147483647 + + + + + + Hide Others + h + 1572864 + 2147483647 + + + + + + Show All + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit NewApplication + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + File + + 1048576 + 2147483647 + + + submenuAction: + + File + + + + New + n + 1048576 + 2147483647 + + + + + + Open… + o + 1048576 + 2147483647 + + + + + + Open Recent + + 1048576 + 2147483647 + + + submenuAction: + + Open Recent + + + + Clear Menu + + 1048576 + 2147483647 + + + + + _NSRecentDocumentsMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Close + w + 1048576 + 2147483647 + + + + + + Save + s + 1048576 + 2147483647 + + + + + + Save As… + S + 1179648 + 2147483647 + + + + + + Revert to Saved + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Page Setup... + P + 1179648 + 2147483647 + + + + + + + Print… + p + 1048576 + 2147483647 + + + + + + + + + Edit + + 1048576 + 2147483647 + + + submenuAction: + + Edit + + + + Undo + z + 1048576 + 2147483647 + + + + + + Redo + Z + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Cut + x + 1048576 + 2147483647 + + + + + + Copy + c + 1048576 + 2147483647 + + + + + + Paste + v + 1048576 + 2147483647 + + + + + + Delete + + 1048576 + 2147483647 + + + + + + Select All + a + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Find + + 1048576 + 2147483647 + + + submenuAction: + + Find + + + + Find… + f + 1048576 + 2147483647 + + + 1 + + + + Find Next + g + 1048576 + 2147483647 + + + 2 + + + + Find Previous + G + 1179648 + 2147483647 + + + 3 + + + + Use Selection for Find + e + 1048576 + 2147483647 + + + 7 + + + + Jump to Selection + j + 1048576 + 2147483647 + + + + + + + + + Spelling and Grammar + + 1048576 + 2147483647 + + + submenuAction: + + Spelling and Grammar + + + + Show Spelling… + : + 1048576 + 2147483647 + + + + + + Check Spelling + ; + 1048576 + 2147483647 + + + + + + Check Spelling While Typing + + 1048576 + 2147483647 + + + + + + Check Grammar With Spelling + + 1048576 + 2147483647 + + + + + + + + + Substitutions + + 1048576 + 2147483647 + + + submenuAction: + + Substitutions + + + + Smart Copy/Paste + f + 1048576 + 2147483647 + + + 1 + + + + Smart Quotes + g + 1048576 + 2147483647 + + + 2 + + + + Smart Links + G + 1179648 + 2147483647 + + + 3 + + + + + + + Speech + + 1048576 + 2147483647 + + + submenuAction: + + Speech + + + + Start Speaking + + 1048576 + 2147483647 + + + + + + Stop Speaking + + 1048576 + 2147483647 + + + + + + + + + + + + Format + + 2147483647 + + + submenuAction: + + Format + + + + Font + + 2147483647 + + + submenuAction: + + Font + + + + Show Fonts + t + 1048576 + 2147483647 + + + + + + Bold + b + 1048576 + 2147483647 + + + 2 + + + + Italic + i + 1048576 + 2147483647 + + + 1 + + + + Underline + u + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Bigger + + + 1048576 + 2147483647 + + + 3 + + + + Smaller + - + 1048576 + 2147483647 + + + 4 + + + + YES + YES + + + 2147483647 + + + + + + Kern + + 2147483647 + + + submenuAction: + + Kern + + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Tighten + + 2147483647 + + + + + + Loosen + + 2147483647 + + + + + + + + + Ligature + + 2147483647 + + + submenuAction: + + Ligature + + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Use All + + 2147483647 + + + + + + + + + Baseline + + 2147483647 + + + submenuAction: + + Baseline + + + + Use Default + + 2147483647 + + + + + + Superscript + + 2147483647 + + + + + + Subscript + + 2147483647 + + + + + + Raise + + 2147483647 + + + + + + Lower + + 2147483647 + + + + + + + + + YES + YES + + + 2147483647 + + + + + + Show Colors + C + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Copy Style + c + 1572864 + 2147483647 + + + + + + Paste Style + v + 1572864 + 2147483647 + + + + + _NSFontMenu + + + + + Text + + 2147483647 + + + submenuAction: + + Text + + + + Align Left + { + 1048576 + 2147483647 + + + + + + Center + | + 1048576 + 2147483647 + + + + + + Justify + + 2147483647 + + + + + + Align Right + } + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Show Ruler + + 2147483647 + + + + + + Copy Ruler + c + 1310720 + 2147483647 + + + + + + Paste Ruler + v + 1310720 + 2147483647 + + + + + + + + + + + + View + + 1048576 + 2147483647 + + + submenuAction: + + View + + + + Show Toolbar + t + 1572864 + 2147483647 + + + + + + Customize Toolbar… + + 1048576 + 2147483647 + + + + + + + + + Window + + 1048576 + 2147483647 + + + submenuAction: + + Window + + + + Minimize + m + 1048576 + 2147483647 + + + + + + Zoom + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Bring All to Front + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Help + + 1048576 + 2147483647 + + + submenuAction: + + Help + + + + NewApplication Help + ? + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + 15 + 2 + {{335, 417}, {960, 534}} + 1946157056 + Window + NSWindow + + + + 256 + + + + 268 + {{601, 264}, {30, 30}} + + + + YES + + -2080244224 + 134217728 + + + + LucidaGrande + 13 + 1044 + + + -2038021889 + 134 + + LucidaGrande + 13 + 16 + + + + 400 + 75 + + + + + 270 + {{20, 476}, {611, 22}} + + + + YES + + -1804468671 + 268436480 + string MATCHES "foo" + + + YES + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + textColor + + 3 + MAA + + + + + + + 268 + + + + 2304 + + + + 294 + + + + 274 + + + + 290 + + + + 257 + {{581, 4}, {18, 18}} + + + + -1 + YES + + 67239424 + 134348800 + + + + LucidaGrande-Bold + 12 + 16 + + + + add + + + + + _addOption: + + -2038284033 + 36 + + LucidaGrande + 12 + 4883 + + + 400 + 75 + + + + + -2147483391 + {{561, 4}, {18, 18}} + + + + -1 + YES + + 67239424 + 134348800 + - + + + + remove + + + + + _deleteOption: + + -2038284033 + 36 + + + 400 + 75 + + + + + 256 + {{7, 4}, {58, 19}} + + + + -1 + YES + + 67239488 + 4196352 + + LucidaGrande + 11 + 3100 + + + + -2038284033 + 36 + + LucidaGrande + 11 + 16 + + + 400 + 75 + + + Any + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + + YES + + + + + + + All + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + + + 3 + YES + YES + 2 + + + + + 256 + {{71, 4}, {167, 19}} + + + + -1 + YES + + 67239488 + 4196352 + + + -2038284033 + 36 + + + 400 + 75 + + + of the following are true + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + + + + + + 3 + YES + YES + 2 + + + + {609, 26} + + + + 0 + 0 + + + + + + + 2 + {{7, 4}, {58, 19}} + {{71, 4}, {167, 19}} + + + + + 2 + 0 + 0 + 0 + 0 + + + + + NO + NO + + + + + + + + 2 + {{7, 4}, {58, 19}} + {{71, 4}, {167, 19}} + + + 0 + 0 + YES + + + + 290 + + + + 257 + {{581, 4}, {18, 18}} + + + + -1 + YES + + 67239424 + 134348800 + + + + + + add + + + + + _addOption: + + -2038284033 + 36 + + + 400 + 75 + + + + + 257 + {{561, 4}, {18, 18}} + + + + -1 + YES + + 67239424 + 134348800 + - + + + + remove + + + + + _deleteOption: + + -2038284033 + 36 + + + 400 + 75 + + + + + 256 + {{37, 4}, {79, 19}} + + + + -1 + YES + + 67239488 + 4196352 + + + -2038284033 + 36 + + + 400 + 75 + + + string + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + + + + + string2 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + + 3 + YES + YES + 2 + + + + + 256 + {{122, 4}, {99, 19}} + + + + -1 + YES + + 67239488 + 4196352 + + + + -2038284033 + 36 + + + 400 + 75 + + + is + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + + YES + + + + + + + matches + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + + + 3 + YES + YES + 2 + + + + + 256 + {{227, 4}, {160, 18}} + + + + YES + + 343014976 + 4326400 + + + + YES + + + 6 + System + controlTextColor + + + + + + {{0, 26}, {609, 26}} + + + + 1 + 1 + + + + + + + + 3 + {{37, 4}, {79, 19}} + {{122, 4}, {99, 19}} + {{227, 4}, {160, 18}} + + + + + 1 + 0 + 0 + 0 + 700 + + + + + + NO + YES + + + + + + + + + + + + 3 + {{37, 4}, {79, 19}} + {{122, 4}, {99, 19}} + {{227, 4}, {160, 18}} + + + 0 + 0 + YES + + + + 290 + + + + 257 + {{581, 4}, {18, 18}} + + + + -1 + YES + + 67239424 + 134348800 + + + + + + add + + + + + _addOption: + + -2038284033 + 36 + + + 400 + 75 + + + + + 257 + {{561, 4}, {18, 18}} + + + + -1 + YES + + 67239424 + 134348800 + - + + + + remove + + + + + _deleteOption: + + -2038284033 + 36 + + + 400 + 75 + + + + + 256 + {{37, 4}, {79, 19}} + + + + -1 + YES + + 67239488 + 4196352 + + + -2038284033 + 36 + + + 400 + 75 + + + one op + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + + + + + 3 + YES + YES + 2 + + + + + 256 + {{122, 4}, {99, 19}} + + + + -1 + YES + + 67239488 + 4196352 + + + + -2038284033 + 36 + + + 400 + 75 + + + is + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + + YES + + + + + + + 3 + YES + YES + 2 + + + + + 256 + {{227, 4}, {160, 18}} + + + + YES + + 343014976 + 4326400 + + + + YES + + + + + + {{0, 52}, {609, 26}} + + + + 2 + 1 + + + + + + + + 3 + {{37, 4}, {79, 19}} + {{122, 4}, {99, 19}} + {{227, 4}, {160, 18}} + + + + + 1 + 0 + 0 + 0 + 700 + + + + + + NO + YES + + + + + + + + + + + + 3 + {{37, 4}, {79, 19}} + {{122, 4}, {99, 19}} + {{227, 4}, {160, 18}} + + + 0 + 0 + YES + + + {609, 162} + + + + + + + NSRuleEditorItemPBoardType + + {609, 162} + + + + YES + 75 + 26 + + YES + NO + YES + 3 + rowType + subrows + criteria + displayValues + boundArray + NSMutableDictionary + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{1, 1}, {609, 162}} + + + + + + 3 + MC45MTAwMDAwMjYyAA + + 4 + + + + -2147483392 + {{336, 1}, {15, 84}} + + + + + _doScroller: + 0.97701150178909302 + + + + -2147483392 + {{-100, -100}, {360, 15}} + + + + 1 + + _doScroller: + + + {{20, 296}, {611, 164}} + + + + 530 + + + + + + + 9 + + + + 274 + + + + 268 + {{9, 11}, {25, 25}} + + + + YES + + -2080244224 + 134217728 + + + + + -2038152961 + 134 + + + 400 + 75 + + + + + 268 + + + + 2304 + + + + 256 + {216, 95} + + + + YES + + + -2147483392 + {{224, 0}, {16, 17}} + + + + 213 + 40 + 1000 + + 75628096 + 2048 + + + + 3 + MC4zMzMzMzI5ODU2AA + + + 6 + System + headerTextColor + + + + + 337772096 + 2048 + Text Cell + + + + 6 + System + controlBackgroundColor + + 3 + MC42NjY2NjY2NjY3AA + + + + + 3 + YES + YES + + + + 3 + 2 + + + 6 + System + gridColor + + 3 + MC41AA + + + 17 + -692060160 + + + 4 + 15 + 0 + YES + 0 + + + {{1, 1}, {216, 95}} + + + + + + 4 + + + + -2147483392 + {{224, 17}, {15, 102}} + + + + + _doScroller: + 0.9925373134328358 + + + + -2147483392 + {{1, 119}, {223, 15}} + + + + 1 + + _doScroller: + 0.99539170506912444 + + + {{9, 311}, {218, 97}} + + + + 562 + + + + QSAAAEEgAABBmAAAQZgAAA + + + + 268 + {{144, 219}, {84, 18}} + + + + 9 + YES + + 67239424 + 0 + Ends With + + + 1211912703 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + + + + 268 + {{6, 145}, {223, 26}} + + + + YES + + -2076049856 + 2048 + + + 109199615 + 129 + + + 400 + 75 + + + Strings + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + OtherViews + + + + + Numbers + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Constant Values + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + + 1 + YES + YES + 2 + + + + + 268 + {{14, 219}, {96, 18}} + + + + 8 + YES + + 67239424 + 0 + Begins With + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{72, 245}, {33, 18}} + + + + 5 + YES + + 67239424 + 0 + + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{127, 245}, {33, 18}} + + + + 2 + YES + + 67239424 + 0 + > + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{144, 193}, {78, 18}} + + + + 99 + YES + + 67239424 + 0 + Contains + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{14, 245}, {33, 18}} + + + + 4 + YES + + 67239424 + 0 + = + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{7, 416}, {142, 17}} + + + + YES + + 68288064 + 272630784 + Key Paths: + + + + 6 + System + controlColor + + + + + + + + 268 + + + + 2304 + + + + 256 + {216, 95} + + + + YES + + + -2147483392 + {{224, 0}, {16, 17}} + + + + 213 + 40 + 1000 + + 75628096 + 2048 + + + + 3 + MC4zMzMzMzI5ODU2AA + + + + + 337772096 + 2048 + Text Cell + + + + + + 3 + YES + YES + + + + 3 + 2 + + + 17 + -692060160 + + + 4 + 15 + 0 + YES + 0 + + + {{1, 1}, {216, 95}} + + + + + + 4 + + + + -2147483392 + {{224, 17}, {15, 102}} + + + + + _doScroller: + 0.9925373134328358 + + + + -2147483392 + {{1, 119}, {223, 15}} + + + + 1 + + _doScroller: + 0.99539170506912444 + + + {{9, 39}, {218, 97}} + + + + 562 + + + + QSAAAEEgAABBmAAAQZgAAA + + + + 268 + {{10, 283}, {25, 25}} + + + + YES + + -2080244224 + 134217728 + + + + + -2038152961 + 134 + + + 400 + 75 + + + + + 268 + {{14, 193}, {96, 18}} + + + + 6 + YES + + 67239424 + 0 + Matches + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{189, 245}, {33, 18}} + + + + YES + + 67239424 + 0 + < + + + 1211912703 + 2 + + + + + 200 + 25 + + + + {{1, 1}, {240, 438}} + + + + + + {{701, 60}, {242, 440}} + + + + {0, 0} + + 67239424 + 0 + Box + + + + 3 + MCAwLjgwMDAwMDAxMTkAA + + + + 1 + 4 + 0 + NO + + 1 + MC44OTExMjkwMzIzIDAuODkwMTM0MTM1OSAwLjg4OTk0NTgwNTEAA + + + + + 265 + {{837, 20}, {103, 25}} + + + YES + + -1543373312 + 134217728 + Add Template + + + -2038152961 + 134 + + + 400 + 75 + + + + {{7, 11}, {960, 534}} + + + + + {{0, 0}, {1680, 1028}} + {1e+13, 1e+13} + + + AppController + + + + + + + performMiniaturize: + + + + 37 + + + + arrangeInFront: + + + + 39 + + + + print: + + + + 86 + + + + runPageLayout: + + + + 87 + + + + clearRecentDocuments: + + + + 127 + + + + orderFrontStandardAboutPanel: + + + + 142 + + + + performClose: + + + + 193 + + + + toggleContinuousSpellChecking: + + + + 222 + + + + undo: + + + + 223 + + + + copy: + + + + 224 + + + + checkSpelling: + + + + 225 + + + + paste: + + + + 226 + + + + stopSpeaking: + + + + 227 + + + + cut: + + + + 228 + + + + showGuessPanel: + + + + 230 + + + + redo: + + + + 231 + + + + selectAll: + + + + 232 + + + + startSpeaking: + + + + 233 + + + + delete: + + + + 235 + + + + performZoom: + + + + 240 + + + + performFindPanelAction: + + + + 241 + + + + centerSelectionInVisibleArea: + + + + 245 + + + + toggleGrammarChecking: + + + + 347 + + + + toggleSmartInsertDelete: + + + + 355 + + + + toggleAutomaticQuoteSubstitution: + + + + 356 + + + + toggleAutomaticLinkDetection: + + + + 357 + + + + showHelp: + + + + 360 + + + + saveDocument: + + + + 362 + + + + saveDocumentAs: + + + + 363 + + + + revertDocumentToSaved: + + + + 364 + + + + runToolbarCustomizationPalette: + + + + 365 + + + + toggleToolbarShown: + + + + 366 + + + + hide: + + + + 367 + + + + hideOtherApplications: + + + + 368 + + + + unhideAllApplications: + + + + 370 + + + + newDocument: + + + + 373 + + + + openDocument: + + + + 374 + + + + raiseBaseline: + + + + 426 + + + + lowerBaseline: + + + + 427 + + + + copyFont: + + + + 428 + + + + subscript: + + + + 429 + + + + superscript: + + + + 430 + + + + tightenKerning: + + + + 431 + + + + underline: + + + + 432 + + + + orderFrontColorPanel: + + + + 433 + + + + useAllLigatures: + + + + 434 + + + + loosenKerning: + + + + 435 + + + + pasteFont: + + + + 436 + + + + unscript: + + + + 437 + + + + useStandardKerning: + + + + 438 + + + + useStandardLigatures: + + + + 439 + + + + turnOffLigatures: + + + + 440 + + + + turnOffKerning: + + + + 441 + + + + alignLeft: + + + + 442 + + + + alignJustified: + + + + 443 + + + + copyRuler: + + + + 444 + + + + alignCenter: + + + + 445 + + + + toggleRuler: + + + + 446 + + + + alignRight: + + + + 447 + + + + pasteRuler: + + + + 448 + + + + terminate: + + + + 449 + + + + delegate + + + + 475 + + + + addRow: + + + + 1131 + + + + delegate + + + + 1133 + + + + displayPredicate: + + + + 1134 + + + + predicateEditor + + + + 1136 + + + + predicateField + + + + 1137 + + + + window + + + + 1138 + + + + predicateEditorAction: + + + + 1139 + + + + leftTable + + + + 1318 + + + + rightExpressionsType + + + + 1320 + + + + rightTable + + + + 1321 + + + + templateBox + + + + 1322 + + + + addLeftKeyPath: + + + + 1323 + + + + addRightConstant: + + + + 1324 + + + + selectRightAttributeType: + + + + 1327 + + + + updateOperators: + + + + 1329 + + + + updateOperators: + + + + 1330 + + + + updateOperators: + + + + 1331 + + + + updateOperators: + + + + 1332 + + + + updateOperators: + + + + 1333 + + + + updateOperators: + + + + 1334 + + + + updateOperators: + + + + 1335 + + + + updateOperators: + + + + 1336 + + + + dataSource + + + + 1337 + + + + delegate + + + + 1338 + + + + dataSource + + + + 1339 + + + + delegate + + + + 1340 + + + + addTemplate: + + + + 1344 + + + + addTemplate + + + + 1345 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + + + + + + + + + + MainMenu + + + 19 + + + + + + + + 56 + + + + + + + + 103 + + + + + + 1 + + + 217 + + + + + + + + 83 + + + + + + + + 81 + + + + + + + + + + + + + + + + + + 75 + + + 3 + + + 80 + + + 8 + + + 78 + + + 6 + + + 72 + + + + + 82 + + + 9 + + + 124 + + + + + + + + 77 + + + 5 + + + 73 + + + 1 + + + 79 + + + 7 + + + 112 + + + 10 + + + 74 + + + 2 + + + 125 + + + + + + + + 126 + + + + + 205 + + + + + + + + + + + + + + + + + + + + 202 + + + + + 198 + + + + + 207 + + + + + 214 + + + + + 199 + + + + + 203 + + + + + 197 + + + + + 206 + + + + + 215 + + + + + 218 + + + + + + + + 216 + + + + + + + + 200 + + + + + + + + + + + 219 + + + + + 201 + + + + + 204 + + + + + 220 + + + + + + + + + + + + 213 + + + + + 210 + + + + + 221 + + + + + 208 + + + + + 209 + + + + + 106 + + + + + + 2 + + + 111 + + + + + 57 + + + + + + + + + + + + + + + + + + 58 + + + + + 134 + + + + + 150 + + + + + 136 + + + 1111 + + + 144 + + + + + 129 + + + 121 + + + 143 + + + + + 236 + + + + + 131 + + + + + + + + 149 + + + + + 145 + + + + + 130 + + + + + 24 + + + + + + + + + + + 92 + + + + + 5 + + + + + 239 + + + + + 23 + + + + + 295 + + + + + + + + 296 + + + + + + + + + 297 + + + + + 298 + + + + + 211 + + + + + + + + 212 + + + + + + + + + 195 + + + + + 196 + + + + + 346 + + + + + 348 + + + + + + + + 349 + + + + + + + + + + 350 + + + + + 351 + + + + + 354 + + + + + 371 + + + + + + + + 372 + + + + + + + + + + + + 375 + + + + + + + + 376 + + + + + + + + + 377 + + + + + + + + 378 + + + + + + + + 379 + + + + + + + + + + + + + + + 380 + + + + + 381 + + + + + 382 + + + + + 383 + + + + + 384 + + + + + 385 + + + + + 386 + + + + + 387 + + + + + 388 + + + + + + + + + + + + + + + + + + + + + + + 389 + + + + + 390 + + + + + 391 + + + + + 392 + + + + + 393 + + + + + 394 + + + + + 395 + + + + + 396 + + + + + 397 + + + + + + + + 398 + + + + + + + + 399 + + + + + + + + 400 + + + + + 401 + + + + + 402 + + + + + 403 + + + + + 404 + + + + + 405 + + + + + + + + + + + + 406 + + + + + 407 + + + + + 408 + + + + + 409 + + + + + 410 + + + + + 411 + + + + + + + + + + 412 + + + + + 413 + + + + + 414 + + + + + 415 + + + + + + + + + + + 416 + + + + + 417 + + + + + 418 + + + + + 419 + + + + + 471 + + + + + + + + 472 + + + + + 474 + + + AppController + + + 476 + + + + + + + + 477 + + + + + 1051 + + + + + + + + + + 1052 + + + + + 1053 + + + + + 1054 + + + + + + + + + + 1055 + + + + + 1056 + + + + + + + + + 1057 + + + + + + + + + 1058 + + + + + + + + + 1309 + + + + + + + + + + + + + + + + + + + + + 1280 + + + + + + + + 1281 + + + + + 1239 + + + + + + + + + + 1243 + + + + + + + + 1242 + + + + + 1240 + + + + + 1244 + + + + + + + + 1247 + + + + + 1256 + + + + + + + + 1257 + + + + + 1274 + + + + + + + + 1275 + + + + + + + + 1276 + + + + + + + + + + 1279 + + + + + 1278 + + + + + 1277 + + + + + 1254 + + + + + + + + 1255 + + + + + 1260 + + + + + + + + 1261 + + + + + 1252 + + + + + + + + 1253 + + + + + 1266 + + + + + + + + 1267 + + + + + 1262 + + + + + + + + 1263 + + + + + 1248 + + + + + + + + 1249 + + + + + 1268 + + + + + + + + + + 1271 + + + + + 1270 + + + + + 1269 + + + + + + + + 1272 + + + + + + + + 1273 + + + + + 1250 + + + + + + + + 1251 + + + + + 1264 + + + + + + + + 1265 + + + + + 1310 + + + + + + + + 1311 + + + + + 1342 + + + + + + + + 1343 + + + + + 1346 + + + + + 1347 + + + + + 1348 + + + + + 1349 + + + + + 1350 + + + + + + + + + 1351 + + + + + + + + 1355 + + + + + + + + 1359 + + + + + 1366 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + {{596, 852}, {216, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + {{522, 812}, {146, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{436, 809}, {64, 6}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {275, 83}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{187, 434}, {243, 243}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {167, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {241, 103}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{525, 802}, {197, 73}} + {{207, 285}, {478, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + {74, 862} + {{6, 978}, {478, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{475, 832}, {234, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {215, 63}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{91, 135}, {960, 534}} + com.apple.InterfaceBuilder.CocoaPlugin + {{91, 135}, {960, 534}} + + {{33, 99}, {480, 360}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{437, 242}, {86, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{523, 2}, {178, 283}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{219, 102}, {245, 183}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{23, 794}, {245, 183}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{145, 474}, {199, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + 1366 + + + + + AppController + NSObject + + id + id + id + id + id + id + id + id + + + + addLeftKeyPath: + id + + + addRightConstant: + id + + + addTemplate: + id + + + displayPredicate: + id + + + newTemplate: + id + + + predicateEditorAction: + id + + + selectRightAttributeType: + id + + + updateOperators: + id + + + + NSButton + NSTableView + NSPredicateEditor + NSTextField + NSPopUpButton + NSTableView + NSBox + NSWindow + + + + addTemplate + NSButton + + + leftTable + NSTableView + + + predicateEditor + NSPredicateEditor + + + predicateField + NSTextField + + + rightExpressionsType + NSPopUpButton + + + rightTable + NSTableView + + + templateBox + NSBox + + + window + NSWindow + + + + IBProjectSource + ./Classes/AppController.h + + + + NSDocument + + id + id + id + id + id + id + + + + printDocument: + id + + + revertDocumentToSaved: + id + + + runPageLayout: + id + + + saveDocument: + id + + + saveDocumentAs: + id + + + saveDocumentTo: + id + + + + IBProjectSource + ./Classes/NSDocument.h + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + YES + 3 + + {9, 8} + {7, 2} + {15, 15} + + + diff --git a/Tests/Manual/CPPredicateEditorCibTest/Resources/format.strings b/Tests/Manual/CPPredicateEditorCibTest/Resources/format.strings new file mode 100644 index 000000000..3b2423ea6 --- /dev/null +++ b/Tests/Manual/CPPredicateEditorCibTest/Resources/format.strings @@ -0,0 +1 @@ +"string" = "loc string"; diff --git a/Tests/Manual/CPPredicateEditorCibTest/Resources/spinner.gif b/Tests/Manual/CPPredicateEditorCibTest/Resources/spinner.gif new file mode 100644 index 000000000..06dbc2bc2 Binary files /dev/null and b/Tests/Manual/CPPredicateEditorCibTest/Resources/spinner.gif differ diff --git a/Tests/Manual/CPPredicateEditorCibTest/index-debug.html b/Tests/Manual/CPPredicateEditorCibTest/index-debug.html new file mode 100644 index 000000000..a35f6f935 --- /dev/null +++ b/Tests/Manual/CPPredicateEditorCibTest/index-debug.html @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + CPPredicateEditorTest + + + + + + + + + + + + + + +
+
+ + + +
+
+ + + diff --git a/Tests/Manual/CPPredicateEditorCibTest/index.html b/Tests/Manual/CPPredicateEditorCibTest/index.html new file mode 100644 index 000000000..e1730c3c2 --- /dev/null +++ b/Tests/Manual/CPPredicateEditorCibTest/index.html @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + CPPredicateEditorTest + + + + + + + + + + + + +
+
+ + + +
+
+ + + + diff --git a/Tests/Manual/CPPredicateEditorCibTest/main.j b/Tests/Manual/CPPredicateEditorCibTest/main.j new file mode 100644 index 000000000..ffd7e88f7 --- /dev/null +++ b/Tests/Manual/CPPredicateEditorCibTest/main.j @@ -0,0 +1,18 @@ +/* + * main.j + * CPPredicateEditorTest + * + * Created by You on May 7, 2010. + * Copyright 2010, Your Company All rights reserved. + */ + +@import +@import + +@import "AppController.j" + + +function main(args, namedArgs) +{ + CPApplicationMain(args, namedArgs); +} diff --git a/Tests/Manual/CPRuleEditorCibTest/AppController.j b/Tests/Manual/CPRuleEditorCibTest/AppController.j new file mode 100644 index 000000000..f95891fac --- /dev/null +++ b/Tests/Manual/CPRuleEditorCibTest/AppController.j @@ -0,0 +1,111 @@ +/* + * AppController.j + * CPRuleEditorCibTest + * + * Created by cacaodev on September 3, 2010. + * Copyright 2010, Your Company All rights reserved. + */ + +@import "RuleDelegate.j" +@import "CPViewAnimationTransition.j" + +var THEME_ATTRIBUTES = [@"slice-top-border-color", @"slice-bottom-border-color",@"slice-last-bottom-border-color", @"selected-color"]; + +@implementation AppController : CPObject +{ + CPWindow theWindow; //this "outlet" is connected automatically by the Cib + CPRuleEditor ruleEditor @accessors; + CPTextField predicateField; + id animation; +} + +- (void)applicationDidFinishLaunching:(CPNotification)aNotification +{ + // This is called when the application is done loading. +} + +- (void)awakeFromCib +{ + var contentView = [theWindow contentView]; + [theWindow setFullBridge:YES]; + [contentView setBackgroundColor:[CPColor colorWithHexString:@"f3f4f5"]]; + + var animationClass = (CPBrowserIsEngine(CPWebKitBrowserEngine)) ? [CPViewAnimationTransition class] : [CPViewAnimation class]; + animation = [[animationClass alloc] initWithDuration:0.4 animationCurve:CPAnimationEaseInOut]; + //[ruleEditor setAnimation:animation]; + for (var i = 0; i < 4; i++) + { + var view = [[theWindow contentView] viewWithTag:(1001 + i)]; + [view setColor:[ruleEditor valueForThemeAttribute:THEME_ATTRIBUTES[i]]]; + } + + var colors = [ruleEditor valueForThemeAttribute:@"alternating-row-colors"]; + [[contentView viewWithTag:1005] setColor:colors[0]]; + [[contentView viewWithTag:1006] setColor:colors[1]]; +} + +- (void)ruleEditorAction:(id)sender +{ + [ruleEditor reloadPredicate]; + [predicateField setStringValue:[[ruleEditor predicate] predicateFormat]]; +} + +- (void)setAnimate:(id)sender +{ + var anim = ([sender state]) ? animation : nil; + [ruleEditor setAnimation:anim]; +} + +- (void)setEditable:(id)sender +{ + [ruleEditor setEditable:[sender state]]; +} + +- (void)setCanRemoveAllRows:(id)sender +{ + [ruleEditor setCanRemoveAllRows:[sender state]]; +} + +- (void)setAllowsEmptyCompoundRows:(id)sender +{ + [ruleEditor setAllowsEmptyCompoundRows:[sender state]]; +} + +- (void)setNestingMode:(id)sender +{ + [ruleEditor setNestingMode:[sender indexOfSelectedItem]]; +} + +- (void)setFormattingStringsFilename:(id)sender +{ + [ruleEditor setFormattingStringsFilename:[sender stringValue]]; +} + +- (void)setRowHeight:(id)sender +{ + [ruleEditor setRowHeight:[sender value]]; +} + +- (void)setAttributeValue:(id)sender +{ + var tag = [sender tag], + value, + attribute; + + if (tag == 1005 || tag == 1006) + { + var colorIndex = tag - 1005, + attribute = @"alternating-row-colors", + value = [ruleEditor valueForThemeAttribute:attribute]; + + value[colorIndex] = [sender color]; + } + else + { + value = [sender color]; + attribute = THEME_ATTRIBUTES[tag - 1001]; + } + + [ruleEditor setValue:value forThemeAttribute:attribute]; + [ruleEditor setNeedsDisplay:YES]; +} \ No newline at end of file diff --git a/Tests/Manual/CPRuleEditorCibTest/CPViewAnimationTransition.j b/Tests/Manual/CPRuleEditorCibTest/CPViewAnimationTransition.j new file mode 100644 index 000000000..ebd4cf00c --- /dev/null +++ b/Tests/Manual/CPRuleEditorCibTest/CPViewAnimationTransition.j @@ -0,0 +1,231 @@ +/* + * Created by cacaodev@gmail.com. + * Copyright (c) 2008 Pear, Inc. All rights reserved. + */ + +@import +@import + +CPViewAnimationStartFrameKey = "CPViewAnimationStartFrameKey"; +CPViewAnimationEndFrameKey = "CPViewAnimationEndFrameKey"; +CPViewAnimationTargetKey = "CPViewAnimationTargetKey"; +CPViewAnimationEffectKey = "CPViewAnimationEffectKey"; + +CPViewAnimationFadeInEffect = "CPViewAnimationFadeInEffect"; +CPViewAnimationFadeOutEffect = "CPViewAnimationFadeOutEffect"; + +@implementation CPViewAnimationTransition : CPAnimation +{ + CPArray _viewAnimations; + Function endListener; + BOOL _isAnimating; +} + +// INSTANCE METHODS +- (id)initWithViewAnimations:(CPArray)animations +{ + self = [super initWithDuration:0.5 animationCurve:CPAnimationEaseInOut]; + if (self) + { + [self setViewAnimations:animations]; + _isAnimating = NO; + } + + return self; +} + +- (id)initWithDuration:(CPInteger)duration animationCurve:(id)curve +{ + self = [super initWithDuration:duration animationCurve:curve]; + if (self) + { + _isAnimating = NO; + } + + return self; +} + +- (CPArray)viewAnimations +{ + return _viewAnimations; +} + +- (void)setViewAnimations:(CPArray)animations +{ + _viewAnimations = animations; + + var count = [_viewAnimations count]; + for (var i = 0; i < count; i++) + { + var animation = [_viewAnimations objectAtIndex:i], + target = [animation objectForKey:CPViewAnimationTargetKey]; + + [self _updateAnimationCurve:[self animationCurve] forView:target]; + [self _updateAnimationDuration:[self duration] forView:target]; + } + + endListener = function(event){[self _animationDidEnd:_viewAnimations]}; +} + +- (void)_updateTransitionPropertiesForView:(CPView)target +{ + target._DOMElement.style.webkitTransitionProperty = "left, top, width, height, opacity"; +} + +// SUBCLASSING +- (BOOL)isAnimating +{ + return _isAnimating; +} + +- (void)setAnimationCurve:(CPAnimationCurve)anAnimationCurve +{ + var i, + count = [_viewAnimations count]; + + for (i = 0; i < count; i++) + { + var animation = [_viewAnimations objectAtIndex:i], + target = [animation objectForKey:CPViewAnimationTargetKey]; + + [self _updateAnimationCurve:anAnimationCurve forView:target]; + } + + [super setAnimationCurve:anAnimationCurve]; +} + +- (void)setAnimationDuration:(int)duration +{ + var i, + count = [_viewAnimations count]; + + for (i = 0; i < count; i++) + { + var animation = [_viewAnimations objectAtIndex:i], + target = [animation objectForKey:CPViewAnimationTargetKey]; + + [self _updateAnimationDuration:duration forView:target]; + } + + [super setAnimationDuration:duration]; +} + +- (void)startAnimation +{ + if (![self _animationShouldStart]) + return; + + var count = [_viewAnimations count]; + if (count > 0) + { + _isAnimating = YES; + document.addEventListener("webkitTransitionEnd", endListener, false); + } + + for (var i = 0; i < count; i++) + { + var animation = [_viewAnimations objectAtIndex:i], + target = [animation objectForKey:CPViewAnimationTargetKey], + startFrame = [animation objectForKey:CPViewAnimationStartFrameKey], + endFrame = [animation objectForKey:CPViewAnimationEndFrameKey], + effect; + + [target setFrame:startFrame]; + + [self _updateTransitionPropertiesForView:target]; + + if (effect = [animation objectForKey:CPViewAnimationEffectKey]) + { + var opacity; + switch (effect) + { + case CPViewAnimationFadeInEffect: opacity = 1; + break; + case CPViewAnimationFadeOutEffect: opacity = 0; + break; + default : opacity = 1; + } + + [target setAlphaValue:opacity]; + } + + [target setFrame:endFrame]; + } +} + +// PRIVATE METHODS +- (void)_updateAnimationCurve:(CPAnimationCurve)anAnimationCurve forView:(CPView)view +{ + var webkitTimingFunction; + + switch (anAnimationCurve) + { + case CPAnimationEaseInOut: webkitTimingFunction = "ease-in-out"; + break; + + case CPAnimationEaseIn: webkitTimingFunction = "ease-in"; + break; + + case CPAnimationEaseOut: webkitTimingFunction = "ease-out"; + break; + + case CPAnimationLinear: webkitTimingFunction = "linear"; + break; + + default: [CPException raise:CPInvalidArgumentException + reason:"Invalid value provided for animation curve"]; + break; + } + + view._DOMElement.style.webkitTransitionTimingFunction = webkitTimingFunction; +} + +- (void)_updateAnimationDuration:(int)duration forView:(CPView)view +{ + view._DOMElement.style.webkitTransitionDuration = duration + "s"; +} + +- (BOOL)_animationShouldStart +{ + if (_delegate && [_delegate respondsToSelector:@selector(animationShouldStart:)]) + return [_delegate animationShouldStart:self]; + + return YES; +} + +- (void)_animationDidEnd:(CPArray)viewAnimations +{ + var count = [viewAnimations count]; + + if (this.counter == null) + this.counter = count; + + this.counter--; + + if (this.counter == 0) + { + document.removeEventListener("webkitTransitionEnd", endListener, false); + this.counter = null; + _isAnimating = NO; + + while(count--) + { + var target = [viewAnimations[count] objectForKey:CPViewAnimationTargetKey]; + target._DOMElement.style.removeProperty("-webkit-transition"); + } + + if (_delegate && [_delegate respondsToSelector:@selector(animationDidEnd:)]) + [_delegate animationDidEnd:self]; + } +} + +- (void)_stopAnimation:(int)value +{ +} + +- (void)setCurrentProgress:(float)progress +{ +} + +@end + diff --git a/Tests/Manual/CPRuleEditorCibTest/Info.plist b/Tests/Manual/CPRuleEditorCibTest/Info.plist new file mode 100644 index 000000000..8d37c79ba --- /dev/null +++ b/Tests/Manual/CPRuleEditorCibTest/Info.plist @@ -0,0 +1,12 @@ + + + + + Main cib file base name + MainMenu.cib + CPBundleName + CPRuleEditorCibTest + CPPrincipalClass + CPApplication + + diff --git a/Tests/Manual/CPRuleEditorCibTest/Jakefile b/Tests/Manual/CPRuleEditorCibTest/Jakefile new file mode 100644 index 000000000..c66879a92 --- /dev/null +++ b/Tests/Manual/CPRuleEditorCibTest/Jakefile @@ -0,0 +1,94 @@ +/* + * Jakefile + * CPRuleEditorCibTest + * + * Created by You on September 3, 2010. + * Copyright 2010, Your Company All rights reserved. + */ + +var ENV = require("system").env, + FILE = require("file"), + JAKE = require("jake"), + task = JAKE.task, + FileList = JAKE.FileList, + app = require("cappuccino/jake").app, + configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug", + OS = require("os"); + +app ("CPRuleEditorCibTest", function(task) +{ + task.setBuildIntermediatesPath(FILE.join("Build", "CPRuleEditorCibTest.build", configuration)); + task.setBuildPath(FILE.join("Build", configuration)); + + task.setProductName("CPRuleEditorCibTest"); + task.setIdentifier("com.yourcompany.CPRuleEditorCibTest"); + task.setVersion("1.0"); + task.setAuthor("Your Company"); + task.setEmail("feedback @nospam@ yourcompany.com"); + task.setSummary("CPRuleEditorCibTest"); + task.setSources((new FileList("**/*.j")).exclude(FILE.join("Build", "**"))); + task.setResources(new FileList("Resources/**")); + task.setIndexFilePath("index.html"); + task.setInfoPlistPath("Info.plist"); + task.setNib2CibFlags("-R Resources/"); + + if (configuration === "Debug") + task.setCompilerFlags("-DDEBUG -g"); + else + task.setCompilerFlags("-O"); +}); + +task ("default", ["CPRuleEditorCibTest"], function() +{ + printResults(configuration); +}); + +task ("build", ["default"]); + +task ("debug", function() +{ + ENV["CONFIGURATION"] = "Debug"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("release", function() +{ + ENV["CONFIGURATION"] = "Release"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("run", ["debug"], function() +{ + OS.system(["open", FILE.join("Build", "Debug", "CPRuleEditorCibTest", "index.html")]); +}); + +task ("run-release", ["release"], function() +{ + OS.system(["open", FILE.join("Build", "Release", "CPRuleEditorCibTest", "index.html")]); +}); + +task ("deploy", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Deployment", "CPRuleEditorCibTest")); + OS.system(["press", "-f", FILE.join("Build", "Release", "CPRuleEditorCibTest"), FILE.join("Build", "Deployment", "CPRuleEditorCibTest")]); + printResults("Deployment") +}); + +task ("desktop", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Desktop", "CPRuleEditorCibTest")); + require("cappuccino/nativehost").buildNativeHost(FILE.join("Build", "Release", "CPRuleEditorCibTest"), FILE.join("Build", "Desktop", "CPRuleEditorCibTest", "CPRuleEditorCibTest.app")); + printResults("Desktop") +}); + +task ("run-desktop", ["desktop"], function() +{ + OS.system([FILE.join("Build", "Desktop", "CPRuleEditorCibTest", "CPRuleEditorCibTest.app", "Contents", "MacOS", "NativeHost"), "-i"]); +}); + +function printResults(configuration) +{ + print("----------------------------"); + print(configuration+" app built at path: "+FILE.join("Build", configuration, "CPRuleEditorCibTest")); + print("----------------------------"); +} diff --git a/Tests/Manual/CPRuleEditorCibTest/Resources/MainMenu.cib b/Tests/Manual/CPRuleEditorCibTest/Resources/MainMenu.cib new file mode 100644 index 000000000..d2a61a4fb --- /dev/null +++ b/Tests/Manual/CPRuleEditorCibTest/Resources/MainMenu.cib @@ -0,0 +1 @@ +280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;4E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;7E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;9E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;2;10E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;2;11E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;2;12E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;2;13E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;2;14E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;16E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;18E;E;D;K;10;$classnameS;7;CPArrayK;8;$classesA;S;7;CPArrayS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;3;126E;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;137E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;3;142E;D;K;6;CP$UIDd;3;143E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;3;148E;D;K;6;CP$UIDd;3;149E;D;K;6;CP$UIDd;3;150E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;153E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;156E;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;3;158E;D;K;6;CP$UIDd;3;159E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;161E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;3;163E;D;K;6;CP$UIDd;3;165E;D;K;6;CP$UIDd;3;166E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;168E;D;K;6;CP$UIDd;3;169E;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;3;171E;D;K;6;CP$UIDd;3;172E;D;K;6;CP$UIDd;3;173E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;174E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;177E;D;K;6;CP$UIDd;3;178E;D;K;6;CP$UIDd;3;179E;D;K;6;CP$UIDd;3;180E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;3;183E;D;K;6;CP$UIDd;3;184E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;186E;D;K;6;CP$UIDd;3;187E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;189E;D;K;6;CP$UIDd;3;190E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;191E;D;K;6;CP$UIDd;3;192E;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;3;194E;D;K;6;CP$UIDd;3;195E;D;K;6;CP$UIDd;3;196E;D;K;6;CP$UIDd;3;197E;D;K;6;CP$UIDd;3;198E;D;K;6;CP$UIDd;3;199E;D;K;6;CP$UIDd;3;200E;D;K;6;CP$UIDd;3;201E;D;K;6;CP$UIDd;3;202E;D;K;6;CP$UIDd;3;203E;D;K;6;CP$UIDd;3;204E;D;K;6;CP$UIDd;3;205E;D;K;6;CP$UIDd;3;206E;D;K;6;CP$UIDd;3;207E;D;K;6;CP$UIDd;3;208E;D;K;6;CP$UIDd;3;209E;D;K;6;CP$UIDd;3;210E;D;K;6;CP$UIDd;3;211E;D;K;6;CP$UIDd;3;212E;D;K;6;CP$UIDd;3;213E;D;K;6;CP$UIDd;3;214E;D;K;6;CP$UIDd;3;215E;D;K;6;CP$UIDd;3;216E;D;K;6;CP$UIDd;3;217E;D;K;6;CP$UIDd;3;218E;D;K;6;CP$UIDd;3;219E;D;K;6;CP$UIDd;3;220E;D;K;6;CP$UIDd;3;221E;D;K;6;CP$UIDd;3;222E;D;K;6;CP$UIDd;3;223E;D;K;6;CP$UIDd;3;224E;D;K;6;CP$UIDd;3;225E;D;K;6;CP$UIDd;3;226E;D;K;6;CP$UIDd;3;227E;D;K;6;CP$UIDd;3;228E;D;K;6;CP$UIDd;3;229E;D;K;6;CP$UIDd;3;230E;D;K;6;CP$UIDd;3;231E;D;K;6;CP$UIDd;3;232E;D;K;6;CP$UIDd;3;233E;D;K;6;CP$UIDd;3;234E;D;K;6;CP$UIDd;3;235E;D;K;6;CP$UIDd;3;236E;D;K;6;CP$UIDd;3;237E;D;K;6;CP$UIDd;3;238E;D;K;6;CP$UIDd;3;239E;D;K;6;CP$UIDd;3;240E;D;K;6;CP$UIDd;3;241E;D;K;6;CP$UIDd;3;242E;D;K;6;CP$UIDd;3;243E;D;K;6;CP$UIDd;3;244E;D;K;6;CP$UIDd;3;245E;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;247E;D;K;6;CP$UIDd;3;248E;D;K;6;CP$UIDd;3;249E;D;K;6;CP$UIDd;3;250E;D;K;6;CP$UIDd;3;251E;D;K;6;CP$UIDd;3;252E;D;K;6;CP$UIDd;3;253E;D;K;6;CP$UIDd;3;254E;D;K;6;CP$UIDd;3;255E;D;K;6;CP$UIDd;3;256E;D;K;6;CP$UIDd;3;257E;D;K;6;CP$UIDd;3;258E;D;K;6;CP$UIDd;3;259E;D;K;6;CP$UIDd;3;260E;D;K;6;CP$UIDd;3;261E;D;K;6;CP$UIDd;3;262E;D;K;6;CP$UIDd;3;263E;D;K;6;CP$UIDd;3;264E;D;K;6;CP$UIDd;3;265E;D;K;6;CP$UIDd;3;266E;D;K;6;CP$UIDd;3;267E;D;K;6;CP$UIDd;3;268E;D;K;6;CP$UIDd;3;269E;D;K;6;CP$UIDd;3;270E;D;K;6;CP$UIDd;3;271E;D;K;6;CP$UIDd;3;272E;D;K;6;CP$UIDd;3;273E;D;K;6;CP$UIDd;3;274E;D;K;6;CP$UIDd;3;275E;D;K;6;CP$UIDd;3;276E;D;K;6;CP$UIDd;3;277E;D;K;6;CP$UIDd;3;278E;D;K;6;CP$UIDd;3;279E;D;K;6;CP$UIDd;3;280E;D;K;6;CP$UIDd;3;281E;D;K;6;CP$UIDd;3;282E;D;K;6;CP$UIDd;3;283E;D;K;6;CP$UIDd;3;284E;D;K;6;CP$UIDd;3;285E;D;K;6;CP$UIDd;3;286E;D;K;6;CP$UIDd;3;287E;D;K;6;CP$UIDd;3;288E;D;K;6;CP$UIDd;3;289E;D;K;6;CP$UIDd;3;290E;D;K;6;CP$UIDd;3;291E;D;K;6;CP$UIDd;3;292E;D;K;6;CP$UIDd;3;293E;D;K;6;CP$UIDd;3;294E;D;K;6;CP$UIDd;3;295E;D;K;6;CP$UIDd;3;296E;D;K;6;CP$UIDd;3;297E;D;K;6;CP$UIDd;3;298E;D;K;6;CP$UIDd;3;299E;D;K;6;CP$UIDd;3;300E;D;K;6;CP$UIDd;3;301E;D;K;6;CP$UIDd;3;302E;D;K;6;CP$UIDd;3;303E;D;K;6;CP$UIDd;3;304E;D;K;6;CP$UIDd;3;305E;D;K;6;CP$UIDd;3;306E;D;K;6;CP$UIDd;3;307E;D;K;6;CP$UIDd;3;308E;D;K;6;CP$UIDd;3;309E;D;K;6;CP$UIDd;3;310E;D;K;6;CP$UIDd;3;311E;D;K;6;CP$UIDd;3;312E;D;K;6;CP$UIDd;3;313E;D;K;6;CP$UIDd;3;314E;D;K;6;CP$UIDd;3;315E;D;K;6;CP$UIDd;3;316E;D;K;6;CP$UIDd;3;317E;D;K;6;CP$UIDd;3;318E;D;K;6;CP$UIDd;3;319E;D;K;6;CP$UIDd;3;320E;D;K;6;CP$UIDd;3;321E;D;K;6;CP$UIDd;3;322E;D;K;6;CP$UIDd;3;323E;D;K;6;CP$UIDd;3;324E;D;K;6;CP$UIDd;3;325E;D;K;6;CP$UIDd;3;326E;D;K;6;CP$UIDd;3;327E;D;K;6;CP$UIDd;3;328E;D;K;6;CP$UIDd;3;329E;D;K;6;CP$UIDd;3;330E;D;K;6;CP$UIDd;3;331E;D;K;6;CP$UIDd;3;332E;D;K;6;CP$UIDd;3;333E;D;K;6;CP$UIDd;3;334E;D;K;6;CP$UIDd;3;335E;D;K;6;CP$UIDd;3;336E;D;K;6;CP$UIDd;3;337E;D;K;6;CP$UIDd;3;338E;D;K;6;CP$UIDd;3;339E;D;K;6;CP$UIDd;3;340E;D;K;6;CP$UIDd;3;341E;D;K;6;CP$UIDd;3;342E;D;K;6;CP$UIDd;3;343E;D;K;6;CP$UIDd;3;344E;D;K;6;CP$UIDd;3;345E;D;K;6;CP$UIDd;3;346E;D;K;6;CP$UIDd;3;347E;D;K;6;CP$UIDd;3;348E;D;K;6;CP$UIDd;3;349E;D;K;6;CP$UIDd;3;350E;D;K;6;CP$UIDd;3;351E;D;K;6;CP$UIDd;3;352E;D;K;6;CP$UIDd;3;353E;D;K;6;CP$UIDd;3;354E;D;K;6;CP$UIDd;3;355E;D;K;6;CP$UIDd;3;356E;D;K;6;CP$UIDd;3;357E;D;K;6;CP$UIDd;3;358E;D;K;6;CP$UIDd;3;359E;D;K;6;CP$UIDd;3;360E;D;K;6;CP$UIDd;3;361E;D;K;6;CP$UIDd;3;362E;D;K;6;CP$UIDd;3;363E;D;K;6;CP$UIDd;3;364E;D;K;6;CP$UIDd;3;365E;D;K;6;CP$UIDd;3;366E;D;K;6;CP$UIDd;3;367E;D;K;6;CP$UIDd;3;368E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;370E;D;K;6;CP$UIDd;3;371E;D;K;6;CP$UIDd;3;372E;D;K;6;CP$UIDd;3;373E;D;K;6;CP$UIDd;3;374E;D;K;6;CP$UIDd;3;376E;D;K;6;CP$UIDd;3;377E;D;K;6;CP$UIDd;3;378E;D;K;6;CP$UIDd;3;379E;D;K;6;CP$UIDd;3;380E;D;K;6;CP$UIDd;3;381E;D;K;6;CP$UIDd;3;382E;D;K;6;CP$UIDd;3;383E;D;K;6;CP$UIDd;3;384E;D;K;6;CP$UIDd;3;385E;D;K;6;CP$UIDd;3;386E;D;K;6;CP$UIDd;3;387E;D;K;6;CP$UIDd;3;388E;D;K;6;CP$UIDd;3;389E;D;K;6;CP$UIDd;3;390E;D;K;6;CP$UIDd;3;391E;D;K;6;CP$UIDd;3;392E;D;K;6;CP$UIDd;3;393E;D;K;6;CP$UIDd;3;394E;D;K;6;CP$UIDd;3;395E;D;K;6;CP$UIDd;3;396E;D;K;6;CP$UIDd;3;397E;D;K;6;CP$UIDd;3;398E;D;K;6;CP$UIDd;3;399E;D;K;6;CP$UIDd;3;400E;D;K;6;CP$UIDd;3;401E;D;K;6;CP$UIDd;3;402E;D;K;6;CP$UIDd;3;403E;D;K;6;CP$UIDd;3;404E;D;K;6;CP$UIDd;3;405E;D;K;6;CP$UIDd;3;406E;D;K;6;CP$UIDd;3;407E;D;K;6;CP$UIDd;3;408E;D;K;6;CP$UIDd;3;409E;D;K;6;CP$UIDd;3;410E;D;K;6;CP$UIDd;3;411E;D;K;6;CP$UIDd;3;412E;D;K;6;CP$UIDd;3;413E;D;K;6;CP$UIDd;3;414E;D;K;6;CP$UIDd;3;415E;D;K;6;CP$UIDd;3;416E;D;K;6;CP$UIDd;3;417E;D;K;6;CP$UIDd;3;418E;D;K;6;CP$UIDd;3;419E;D;K;6;CP$UIDd;3;420E;D;K;6;CP$UIDd;3;421E;D;K;6;CP$UIDd;3;422E;D;K;6;CP$UIDd;3;423E;D;K;6;CP$UIDd;3;424E;D;K;6;CP$UIDd;3;425E;D;K;6;CP$UIDd;3;426E;D;K;6;CP$UIDd;3;427E;D;K;6;CP$UIDd;3;428E;D;K;6;CP$UIDd;3;429E;D;K;6;CP$UIDd;3;430E;D;K;6;CP$UIDd;3;431E;D;K;6;CP$UIDd;3;432E;D;K;6;CP$UIDd;3;433E;D;K;6;CP$UIDd;3;434E;D;K;6;CP$UIDd;3;435E;D;K;6;CP$UIDd;3;436E;D;K;6;CP$UIDd;3;437E;D;K;6;CP$UIDd;3;438E;D;K;6;CP$UIDd;3;439E;D;K;6;CP$UIDd;3;440E;D;K;6;CP$UIDd;3;441E;D;K;6;CP$UIDd;3;442E;D;K;6;CP$UIDd;3;443E;D;K;6;CP$UIDd;3;444E;D;K;6;CP$UIDd;3;445E;D;K;6;CP$UIDd;3;446E;D;K;6;CP$UIDd;3;447E;D;K;6;CP$UIDd;3;448E;D;K;6;CP$UIDd;3;449E;D;K;6;CP$UIDd;3;450E;D;K;6;CP$UIDd;3;451E;E;E;S;16;IBCocoaFrameworkD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;126E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;137E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;3;142E;D;K;6;CP$UIDd;3;143E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;3;148E;D;K;6;CP$UIDd;3;149E;D;K;6;CP$UIDd;3;150E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;153E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;156E;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;3;158E;D;K;6;CP$UIDd;3;159E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;161E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;3;163E;D;K;6;CP$UIDd;3;165E;D;K;6;CP$UIDd;3;166E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;168E;D;K;6;CP$UIDd;3;169E;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;3;171E;D;K;6;CP$UIDd;3;172E;D;K;6;CP$UIDd;3;173E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;174E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;177E;D;K;6;CP$UIDd;3;178E;D;K;6;CP$UIDd;3;179E;D;K;6;CP$UIDd;3;180E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;3;183E;D;K;6;CP$UIDd;3;184E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;186E;D;K;6;CP$UIDd;3;187E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;189E;D;K;6;CP$UIDd;3;190E;D;K;6;CP$UIDd;2;98E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;3;143E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;3;163E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;3;158E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;153E;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;3;165E;D;K;6;CP$UIDd;3;149E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;172E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;35E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;18;_CPCibCustomObjectK;8;$classesA;S;18;_CPCibCustomObjectS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;452E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;3;453E;E;D;K;10;$classnameS;10;CPMenuItemK;8;$classesA;S;10;CPMenuItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;454E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;160E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;10;$classnameS;11;CPColorWellK;8;$classesA;S;11;CPColorWellS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;115E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;456E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;457E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;458E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;115E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;459E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;460E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;461E;K;19;CPColorWellColorKeyD;K;6;CP$UIDd;3;463E;K;22;CPColorWellBorderedKeyD;K;6;CP$UIDd;3;464E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;465E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;61E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;464E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;466E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;467E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;124E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;468E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;469E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;470E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;471E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;472E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;3;115E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;473E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;474E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;162E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;475E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;10;$classnameS;6;CPMenuK;8;$classesA;S;6;CPMenuS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;476E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;477E;E;D;K;10;$classnameS;11;CPTextFieldK;8;$classesA;S;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;115E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;478E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;479E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;480E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;115E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;459E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;481E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;460E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;474E;K;11;$aalignmentD;K;6;CP$UIDd;3;482E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;483E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;484E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;467E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;467E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;467E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;474E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;482E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;485E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;486E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;151E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;135E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;487E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;151E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;488E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;10;$classnameS;13;CPPopUpButtonK;8;$classesA;S;13;CPPopUpButtonS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;115E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;2;98E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;478E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;489E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;490E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;115E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;459E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;491E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;492E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;461E;K;11;$aalignmentD;K;6;CP$UIDd;3;478E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;493E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;461E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;1;0E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;474E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;494E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;29E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;464E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;466E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;467E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;162E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;115E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;495E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;496E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;458E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;115E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;459E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;460E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;461E;K;19;CPColorWellColorKeyD;K;6;CP$UIDd;3;497E;K;22;CPColorWellBorderedKeyD;K;6;CP$UIDd;3;464E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;498E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;53E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;499E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;500E;E;D;K;10;$classnameS;12;CPRuleEditorK;8;$classesA;S;12;CPRuleEditorS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;40E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;501E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;478E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;502E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;502E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;503E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;501E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;504E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;505E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;460E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;461E;K;20;CPRuleEditorEditableD;K;6;CP$UIDd;3;464E;K;35;CPRuleEditorAllowsEmptyCompoundRowsD;K;6;CP$UIDd;3;467E;K;25;CPRuleEditorDisallowEmptyD;K;6;CP$UIDd;3;467E;K;30;CPRuleEditorAlignmentGridWidthD;K;6;CP$UIDd;3;506E;K;23;CPRuleEditorSliceHeightD;K;6;CP$UIDd;3;507E;K;23;CPRuleEditorNestingModeD;K;6;CP$UIDd;3;493E;K;27;CPRuleEditorStringsFilenameD;K;6;CP$UIDd;3;508E;K;26;CPRuleEditorRowTypeKeyPathD;K;6;CP$UIDd;3;509E;K;24;CPRuleEditorItemsKeyPathD;K;6;CP$UIDd;3;510E;K;25;CPRuleEditorValuesKeyPathD;K;6;CP$UIDd;3;511E;K;29;CPRuleEditorBoundArrayKeyPathD;K;6;CP$UIDd;3;512E;K;31;CPRuleEditorSubrowsArrayKeyPathD;K;6;CP$UIDd;3;513E;K;24;CPRuleEditorSlicesHolderD;K;6;CP$UIDd;1;0E;K;18;CPRuleEditorSlicesD;K;6;CP$UIDd;3;514E;K;27;CPRuleEditorBoundArrayOwnerD;K;6;CP$UIDd;3;516E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;517E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;124E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;518E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;88E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;519E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;520E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;521E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;522E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;136E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;523E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;67E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;472E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;524E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;525E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;526E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;493E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;44E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;527E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;528E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;476E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;486E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;29E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;162E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;529E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;530E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;531E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;464E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;466E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;467E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;124E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;115E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;532E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;533E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;458E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;115E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;459E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;460E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;461E;K;19;CPColorWellColorKeyD;K;6;CP$UIDd;3;534E;K;22;CPColorWellBorderedKeyD;K;6;CP$UIDd;3;464E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;535E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;536E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;537E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;124E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;538E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;452E;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;115E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;478E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;539E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;540E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;115E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;459E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;481E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;460E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;474E;K;11;$aalignmentD;K;6;CP$UIDd;3;482E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;541E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;484E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;467E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;467E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;467E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;474E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;482E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;542E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;47E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;543E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;544E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;545E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;88E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;546E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;528E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;115E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;547E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;548E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;458E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;115E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;459E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;460E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;461E;K;19;CPColorWellColorKeyD;K;6;CP$UIDd;3;549E;K;22;CPColorWellBorderedKeyD;K;6;CP$UIDd;3;464E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;550E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;551E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;552E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;50E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;115E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;478E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;553E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;554E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;115E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;459E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;481E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;460E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;474E;K;11;$aalignmentD;K;6;CP$UIDd;3;482E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;555E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;484E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;467E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;467E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;467E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;474E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;482E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;115E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;478E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;556E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;557E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;115E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;459E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;481E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;460E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;474E;K;11;$aalignmentD;K;6;CP$UIDd;3;482E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;558E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;484E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;467E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;467E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;467E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;474E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;482E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;12;CPScrollViewK;8;$classesA;S;12;CPScrollViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;65E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;115E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;478E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;559E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;560E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;561E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;115E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;562E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;563E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;460E;K;23;CPScrollViewContentViewD;K;6;CP$UIDd;3;501E;K;29;CPScrollViewHeaderClipViewKeyD;K;6;CP$UIDd;1;0E;K;21;CPScrollViewVScrollerD;K;6;CP$UIDd;3;112E;K;21;CPScrollViewHScrollerD;K;6;CP$UIDd;3;132E;K;23;CPScrollViewVLineScrollD;K;6;CP$UIDd;3;565E;K;23;CPScrollViewVPageScrollD;K;6;CP$UIDd;3;565E;K;23;CPScrollViewHLineScrollD;K;6;CP$UIDd;3;565E;K;23;CPScrollViewHPageScrollD;K;6;CP$UIDd;3;565E;K;24;CPScrollViewHasVScrollerD;K;6;CP$UIDd;3;467E;K;24;CPScrollViewHasHScrollerD;K;6;CP$UIDd;3;467E;K;29;CPScrollViewAutohidesScrollerD;K;6;CP$UIDd;3;467E;K;25;CPScrollViewCornerViewKeyD;K;6;CP$UIDd;1;0E;K;31;CPScrollViewBottomCornerViewKeyD;K;6;CP$UIDd;3;566E;K;25;CPScrollViewBorderTypeKeyD;K;6;CP$UIDd;3;474E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;567E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;568E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;464E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;466E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;467E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;124E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;464E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;466E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;467E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;88E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;569E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;570E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;571E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;486E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;160E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;151E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;572E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;136E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;573E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;486E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;127E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;135E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;574E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;486E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;141E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;151E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;575E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;486E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;136E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;162E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;576E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;162E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;577E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;578E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;579E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;493E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;141E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;527E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;528E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;523E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;29E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;580E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;124E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;581E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;578E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;582E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;474E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;44E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;583E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;584E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;162E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;585E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;535E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;486E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;53E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;127E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;586E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;88E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;587E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;588E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;53E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;589E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;35E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;590E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;98E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;591E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;53E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;550E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;486E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;61E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;135E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;592E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;593E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;594E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;482E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;162E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;595E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;10;$classnameS;10;CPCheckBoxK;8;$classesA;S;10;CPCheckBoxS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;90E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;115E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;478E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;596E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;597E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;115E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;459E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;598E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;599E;K;16;$aimage-positionD;K;6;CP$UIDd;3;493E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;478E;K;11;$aalignmentD;K;6;CP$UIDd;3;478E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;482E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;461E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;600E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;467E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;493E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;478E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;601E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;486E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;162E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;127E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;602E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;151E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;603E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;604E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;160E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;605E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;115E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;606E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;607E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;458E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;115E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;459E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;460E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;461E;K;19;CPColorWellColorKeyD;K;6;CP$UIDd;3;608E;K;22;CPColorWellBorderedKeyD;K;6;CP$UIDd;3;464E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;609E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;151E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;577E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;115E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;610E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;611E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;458E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;115E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;459E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;460E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;461E;K;19;CPColorWellColorKeyD;K;6;CP$UIDd;3;612E;K;22;CPColorWellBorderedKeyD;K;6;CP$UIDd;3;464E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;613E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;614E;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;115E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;478E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;615E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;616E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;115E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;459E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;481E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;460E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;474E;K;11;$aalignmentD;K;6;CP$UIDd;3;482E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;617E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;484E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;467E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;467E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;467E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;474E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;482E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;618E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;486E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;124E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;135E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;619E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;151E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;620E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;528E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;567E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;486E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;67E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;162E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;621E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;67E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;622E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;124E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;623E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;115E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;478E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;624E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;625E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;115E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;562E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;481E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;626E;K;6;$afontD;K;6;CP$UIDd;3;628E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;478E;K;11;$aalignmentD;K;6;CP$UIDd;3;461E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;466E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;484E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;467E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;464E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;467E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;478E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;461E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;629E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;630E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;88E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;631E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;632E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;53E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;577E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;500E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;633E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;634E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;635E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;636E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;88E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;637E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;638E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;639E;E;D;K;10;$classnameS;10;CPScrollerK;8;$classesA;S;10;CPScrollerS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;111E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;66E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;478E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;640E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;641E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;66E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;642E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;643E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;644E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;645E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;482E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;66E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;646E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;461E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;478E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;647E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;648E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;67E;E;D;K;10;$classnameS;6;CPViewK;8;$classesA;S;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;114E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;478E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;649E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;649E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;650E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;460E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;569E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;486E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;70E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;151E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;651E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;151E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;652E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;653E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;35E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;590E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;98E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;654E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;35E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;590E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;482E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;98E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;655E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;47E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;638E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;486E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;110E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;135E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;656E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;88E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;464E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;466E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;467E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;88E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;618E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;657E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;658E;E;D;K;6;$classD;K;6;CP$UIDd;2;90E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;115E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;478E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;659E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;660E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;115E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;459E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;598E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;599E;K;16;$aimage-positionD;K;6;CP$UIDd;3;493E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;478E;K;11;$aalignmentD;K;6;CP$UIDd;3;478E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;482E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;461E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;661E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;467E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;493E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;478E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;662E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;162E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;663E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;573E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;664E;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;115E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;478E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;665E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;666E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;115E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;459E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;481E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;460E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;474E;K;11;$aalignmentD;K;6;CP$UIDd;3;482E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;667E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;484E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;467E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;467E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;467E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;474E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;482E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;115E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;478E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;668E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;669E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;115E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;459E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;481E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;460E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;474E;K;11;$aalignmentD;K;6;CP$UIDd;3;482E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;670E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;484E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;467E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;467E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;467E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;474E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;482E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;115E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;478E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;671E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;672E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;115E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;459E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;481E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;460E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;474E;K;11;$aalignmentD;K;6;CP$UIDd;3;482E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;673E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;484E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;467E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;467E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;467E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;474E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;482E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;633E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;486E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;108E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;124E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;3;111E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;66E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;478E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;674E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;675E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;66E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;642E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;643E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;644E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;676E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;478E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;66E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;677E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;461E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;478E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;678E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;679E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;70E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;464E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;466E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;467E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;47E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;680E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;681E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;682E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;575E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;683E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;621E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;136E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;684E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;482E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;141E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;685E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;686E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;471E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;141E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;687E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;688E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;29E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;574E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;689E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;690E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;124E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;520E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;486E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;44E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;151E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;464E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;466E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;467E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;162E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;691E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;53E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;692E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;693E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;53E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;694E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;695E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;61E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;696E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;578E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;697E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;160E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;592E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;486E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;88E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;135E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;698E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;162E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;696E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;485E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;699E;E;D;K;6;$classD;K;6;CP$UIDd;2;90E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;115E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;478E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;700E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;701E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;115E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;459E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;598E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;492E;K;16;$aimage-positionD;K;6;CP$UIDd;3;493E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;478E;K;11;$aalignmentD;K;6;CP$UIDd;3;478E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;478E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;461E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;702E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;467E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;493E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;478E;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;115E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;478E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;703E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;704E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;115E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;459E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;481E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;705E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;474E;K;11;$aalignmentD;K;6;CP$UIDd;3;461E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;508E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;484E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;464E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;464E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;464E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;706E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;474E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;461E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;707E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;151E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;708E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;160E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;709E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;464E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;466E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;467E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;151E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;710E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;461E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;162E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;711E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;529E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;486E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;50E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;88E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;712E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;136E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;571E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;713E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;714E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;151E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;499E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;601E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;715E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;716E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;472E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;486E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;47E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;135E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;10;$classnameS;8;CPSliderK;8;$classesA;S;8;CPSliderS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;164E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;115E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;478E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;717E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;718E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;115E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;459E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;719E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;460E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;478E;K;11;$aalignmentD;K;6;CP$UIDd;3;478E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;720E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;461E;K;19;CPSliderMinValueKeyD;K;6;CP$UIDd;3;721E;K;19;CPSliderMaxValueKeyD;K;6;CP$UIDd;3;722E;K;23;CPSliderAltIncrValueKeyD;K;6;CP$UIDd;3;478E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;723E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;110E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;724E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;464E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;466E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;467E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;162E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;725E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;88E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;726E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;528E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;727E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;70E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;90E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;115E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;478E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;728E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;660E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;115E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;459E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;598E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;599E;K;16;$aimage-positionD;K;6;CP$UIDd;3;493E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;478E;K;11;$aalignmentD;K;6;CP$UIDd;3;478E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;482E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;461E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;729E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;467E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;493E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;478E;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;730E;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;115E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;478E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;731E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;732E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;115E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;459E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;481E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;460E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;474E;K;11;$aalignmentD;K;6;CP$UIDd;3;482E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;733E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;484E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;467E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;467E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;467E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;474E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;482E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;734E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;88E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;735E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;464E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;466E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;467E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;124E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;10;$classnameS;8;CPButtonK;8;$classesA;S;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;175E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;115E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;478E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;736E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;737E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;115E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;738E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;739E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;599E;K;16;$aimage-positionD;K;6;CP$UIDd;3;478E;K;6;$afontD;K;6;CP$UIDd;3;740E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;478E;K;11;$aalignmentD;K;6;CP$UIDd;3;474E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;482E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;461E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;741E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;467E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;478E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;478E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;742E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;47E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;743E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;136E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;464E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;466E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;467E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;151E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;744E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;162E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;499E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;578E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;745E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;474E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;141E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;583E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;746E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;141E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;747E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;621E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;29E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;748E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;124E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;581E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;749E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;482E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;44E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;685E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;750E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;493E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;162E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;741E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;751E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;53E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;752E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;464E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;466E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;467E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;53E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;464E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;466E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;467E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;162E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;753E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;35E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;590E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;98E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;455E;E;S;1;0S;1;1S;1;2S;1;3S;1;4S;1;5S;1;6S;1;7S;1;8S;1;9S;2;10S;2;11S;2;12S;2;13S;2;14S;2;15S;2;16S;2;17S;2;18S;2;19S;2;20S;2;21S;2;22S;2;23S;2;24S;2;25S;2;26S;2;27S;2;28S;2;29S;2;30S;2;31S;2;32S;2;34S;2;33S;2;35S;2;36S;2;37S;2;38S;2;39S;2;40S;2;41S;2;42S;2;43S;2;44S;2;45S;2;46S;2;47S;2;48S;2;49S;2;50S;2;51S;2;52S;2;53S;2;54S;2;55S;2;56S;2;57S;2;58S;2;59S;2;60S;2;61S;2;62S;2;64S;2;63S;2;65S;2;66S;2;67S;2;68S;2;69S;2;70S;2;71S;2;72S;2;73S;2;80S;2;74S;2;75S;2;77S;2;78S;2;79S;2;76S;2;81S;2;82S;2;83S;2;84S;2;85S;2;86S;2;90S;2;87S;2;89S;2;88S;2;91S;2;92S;2;93S;2;94S;2;95S;2;96S;2;97S;2;98S;2;99S;3;100S;3;101S;3;102S;3;103S;3;104S;3;105S;3;107S;3;106S;3;108S;3;109S;3;110S;3;111S;3;112S;3;113S;3;114S;3;115S;3;116S;3;117S;3;118S;3;119S;3;120S;3;121S;3;122S;3;123S;3;124S;3;125S;3;126S;3;127S;3;128S;3;129S;3;130S;3;131S;3;132S;3;133S;3;134S;3;135S;3;136S;3;137S;3;138S;3;139S;3;140S;3;141S;3;142S;3;143S;3;144S;3;145S;3;146S;3;147S;3;148S;3;149S;12;File's OwnerS;3;150S;3;151S;3;152S;3;153S;3;154S;3;155S;3;156S;3;157S;3;158S;3;159S;3;160S;3;161S;3;162S;3;163S;3;164S;3;165S;3;166S;3;167S;3;168S;3;169S;3;170S;3;171S;3;172S;3;173S;3;174S;3;175S;3;176D;K;10;$classnameS;20;CPCibOutletConnectorK;8;$classesA;S;20;CPCibOutletConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;369E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;16E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;171E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;754E;E;D;K;6;$classD;K;6;CP$UIDd;3;369E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;171E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;105E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;755E;E;D;K;6;$classD;K;6;CP$UIDd;3;369E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;171E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;41E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;756E;E;D;K;6;$classD;K;6;CP$UIDd;3;369E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;171E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;26E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;757E;E;D;K;6;$classD;K;6;CP$UIDd;3;369E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;41E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;58E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;754E;E;D;K;10;$classnameS;21;CPCibControlConnectorK;8;$classesA;S;21;CPCibControlConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;177E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;758E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;57E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;759E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;42E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;16E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;760E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;106E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;761E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;43E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;762E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;109E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;763E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;168E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;764E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;173E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;765E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;59E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;766E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;83E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;767E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;166E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;768E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;122E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;769E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;62E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;770E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;184E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;771E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;104E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;55E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;772E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;79E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;773E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;142E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;774E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;169E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;775E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;133E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;776E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;161E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;777E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;33E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;778E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;117E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;779E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;155E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;780E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;154E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;781E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;96E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;782E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;94E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;783E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;93E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;784E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;138E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;785E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;182E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;786E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;101E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;787E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;148E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;788E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;120E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;789E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;147E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;790E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;23E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;791E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;20E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;792E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;185E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;793E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;80E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;794E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;48E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;795E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;145E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;796E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;187E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;797E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;86E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;798E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;146E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;799E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;84E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;800E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;39E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;801E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;107E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;802E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;81E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;803E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;126E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;804E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;180E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;805E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;76E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;806E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;137E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;807E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;159E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;808E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;45E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;809E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;178E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;810E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;72E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;811E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;103E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;812E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;46E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;813E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;113E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;814E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;183E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;815E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;78E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;816E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;140E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;817E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;36E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;818E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;176E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;41E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;819E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;41E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;171E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;820E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;22E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;171E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;821E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;60E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;171E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;821E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;52E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;171E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;821E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;95E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;171E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;821E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;97E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;171E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;821E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;38E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;171E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;821E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;170E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;171E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;822E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;35E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;171E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;823E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;153E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;171E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;824E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;91E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;171E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;825E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;152E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;171E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;826E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;125E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;171E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;827E;E;D;K;6;$classD;K;6;CP$UIDd;3;375E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;165E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;171E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;828E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;26E;E;E;S;27;Check Grammar With Spellingd;7;1048576d;4;1003S;23;{{936, 280}, {106, 23}}S;19;{{0, 0}, {106, 23}}d;2;33S;6;normald;1;4D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;462E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;829E;E;T;S;18;Customize Toolbar…S;0;F;S;32;{10000000000000, 10000000000000}S;8;CPWindowS;25;{{335, 128}, {1067, 550}}d;1;7S;6;WindowS;4;Boldd;1;2S;1;bS;4;KernD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;183E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;2;36E;E;E;d;1;0S;23;{{822, 172}, {104, 17}}S;19;{{0, 0}, {104, 17}}S;9;textfieldd;1;1S;16;Formattting Filed;4;3072S;4;EditS;14;submenuAction:S;10;Select AllS;1;aS;23;{{933, 135}, {112, 24}}S;19;{{0, 0}, {112, 24}}S;12;popup-buttonS;8;borderedd;1;3S;6;Loosend;4;1006S;23;{{936, 401}, {106, 23}}D;K;6;$classD;K;6;CP$UIDd;3;462E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;830E;E;S;10;Copy RulerS;1;cd;7;1310720D;K;6;$classD;K;6;CP$UIDd;3;564E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;66E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;478E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;836E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;502E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;837E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;66E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;642E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;460E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;2;41E;E;S;20;{{0, 0}, {537, 217}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;832E;E;E;d;2;18S;11;rule-editord;2;75d;2;25S;14;format.stringsS;7;rowTypeS;8;criteriaS;13;displayValuesS;10;boundArrayS;7;subrowsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;33;_CPRuleEditorViewUnboundRowHolderK;8;$classesA;S;33;_CPRuleEditorViewUnboundRowHolderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;515E;K;12;CPBoundArrayD;K;6;CP$UIDd;3;833E;E;S;20;About NewApplicationS;5;CloseS;1;wS;13;SubstitutionsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;48E;E;E;S;9;SubscriptS;8;Use NoneS;14;_CPWindowsMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;177E;E;E;S;11;Smart LinksS;1;Gd;7;1179648S;11;Open RecentS;22;_CPRecentDocumentsMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;62E;E;E;d;4;1001S;23;{{936, 204}, {106, 23}}D;K;6;$classD;K;6;CP$UIDd;3;462E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;834E;E;S;4;TextD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;187E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;3;107E;E;E;S;12;Preferences…S;1;,S;22;{{841, 451}, {85, 17}}S;18;{{0, 0}, {85, 17}}S;10;Row HeightS;8;MinimizeS;1;mS;12;RuleDelegateS;8;Save As…S;1;Sd;4;1002S;23;{{936, 241}, {106, 23}}D;K;6;$classD;K;6;CP$UIDd;3;462E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;835E;E;S;4;ViewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;2;23E;E;E;S;10;Clear MenuS;23;{{810, 364}, {116, 17}}S;19;{{0, 0}, {116, 17}}S;15;Backround ColorS;22;{{831, 244}, {95, 17}}S;18;{{0, 0}, {95, 17}}S;13;Bottom BorderS;23;{{20, 190}, {539, 219}}S;20;{{0, 0}, {539, 219}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;501E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;566E;E;E;d;2;38S;10;scrollviewD;K;10;$classnameS;10;CPClipViewK;8;$classesA;S;10;CPClipViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;d;2;10D;K;6;$classD;K;6;CP$UIDd;3;114E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;66E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;838E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;838E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;66E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;460E;E;S;8;LigatureD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;3;113E;E;E;S;6;SpeechD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;3;169E;E;E;S;20;Spelling and GrammarS;5;LowerS;6;FormatS;4;FindS;8;BaselineS;11;Paste StyleS;1;vd;7;1572864S;13;Find PreviousS;11;Hide OthersS;1;hS;12;Smart QuotesS;1;gS;9;UnderlineS;1;uS;3;NewS;1;nS;10;Show RulerS;8;CompoundS;17;_popUpItemAction:S;7;JustifyS;4;FileD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;158E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;168E;D;K;6;CP$UIDd;3;173E;E;E;S;6;ItalicS;1;iS;22;{{780, 18}, {166, 18}}S;19;{{0, 0}, {166, 18}}S;9;check-boxS;17;selected+borderedS;19;Can Remove All RowsS;4;FontS;4;UndoS;1;zS;14;Show Spelling…S;1;:d;4;1004S;23;{{936, 321}, {106, 23}}D;K;6;$classD;K;6;CP$UIDd;3;462E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;839E;E;S;5;Pasted;4;1005S;23;{{936, 361}, {106, 23}}D;K;6;$classD;K;6;CP$UIDd;3;462E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;840E;E;S;10;OtherViewsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;190E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;3;119E;E;E;S;22;{{835, 139}, {91, 17}}S;18;{{0, 0}, {91, 17}}S;12;Nesting ModeS;14;NewApplicationS;4;RedoS;1;ZS;11;Use DefaultS;19;Quit NewApplicationS;1;qS;21;{{17, 82}, {752, 86}}S;19;{{0, 0}, {752, 86}}S;11;placeholderD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;627E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;841E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;504E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;464E;E;S;9;PredicateS;5;Open…S;1;oS;11;Paste RulerS;8;ServicesS;15;_CPServicesMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;4;SaveS;1;sS;4;HelpD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;166E;E;E;S;24;{{-100, 102}, {15, 217}}S;19;{{0, 0}, {15, 217}}d;1;8d;11;-2147483648S;8;scrollerS;17;disabled+verticalS;27;_verticalScrollerDidScroll:f;18;0.9636362791061401S;7;Use AllS;21;{{0, 0}, {1067, 550}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;3;172E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;153E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;3;165E;D;K;6;CP$UIDd;2;56E;E;E;S;3;CutS;1;xS;4;ListS;6;SimpleS;4;ZoomS;15;Revert to SavedS;18;_CPApplicationMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;3;174E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;3;184E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;3;142E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;3;104E;E;E;S;22;{{866, 110}, {80, 18}}S;18;{{0, 0}, {80, 18}}S;7;AnimateS;11;Show ColorsS;1;CD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;82E;E;E;S;23;{{742, 404}, {184, 17}}S;19;{{0, 0}, {184, 17}}S;26;Alternate Background ColorS;23;{{801, 283}, {125, 17}}S;19;{{0, 0}, {125, 17}}S;18;Last Bottom BorderS;22;{{851, 207}, {75, 17}}S;18;{{0, 0}, {75, 17}}S;10;Top BorderS;24;{{-100, 304}, {223, 15}}S;19;{{0, 0}, {223, 15}}S;8;disabledS;29;_horizontalScrollerDidScroll:f;18;0.5060241222381592S;14;Start SpeakingS;9;AMainMenuS;11;_CPMainMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;3;149E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;3;163E;D;K;6;CP$UIDd;3;121E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;137E;D;K;6;CP$UIDd;3;159E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;3;178E;D;K;6;CP$UIDd;2;72E;E;E;S;5;Find…S;1;fS;22;Use Selection for FindS;1;eS;7;TightenD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;182E;E;E;S;8;Show AllS;10;Align LeftS;1;{S;11;Align RightS;1;}S;12;Show ToolbarS;1;tS;27;Check Spelling While TypingS;10;Show FontsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;156E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;161E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;3;179E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;3;143E;D;K;6;CP$UIDd;3;116E;E;E;S;22;{{721, 48}, {225, 18}}S;19;{{0, 0}, {225, 18}}S;26;Allows Empty Compound RowsS;23;{{933, 165}, {113, 29}}S;19;{{0, 0}, {113, 29}}S;7;bezeledD;K;6;$classD;K;6;CP$UIDd;3;462E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;842E;E;S;6;DeleteS;14;Check SpellingS;1;;S;7;SmallerS;1;-S;11;SuperscriptD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;148E;D;K;6;CP$UIDd;2;20E;E;E;S;4;CopyS;11;_CPFontMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;150E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;186E;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;3;189E;D;K;6;CP$UIDd;3;126E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;180E;D;K;6;CP$UIDd;2;76E;E;E;S;22;{{934, 451}, {96, 21}}S;18;{{0, 0}, {96, 21}}S;6;sliderd;2;26d;2;20d;2;78S;19;NewApplication HelpS;1;?S;13;Page Setup...S;1;PS;13;Stop SpeakingS;21;{{866, 80}, {80, 18}}S;8;EditableS;13;AppControllerS;22;{{869, 324}, {57, 17}}S;18;{{0, 0}, {57, 17}}S;8;SelectedS;6;Print…S;1;pS;21;{{20, 415}, {26, 24}}S;18;{{0, 0}, {26, 24}}d;2;36S;6;buttonD;K;6;$classD;K;6;CP$UIDd;3;627E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;843E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;504E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;467E;E;S;1;+S;18;Bring All to FrontS;5;RaiseS;10;Copy StyleS;9;Find NextS;17;Jump to SelectionS;1;jS;19;Hide NewApplicationS;16;Smart Copy/PasteS;6;BiggerS;6;CenterS;1;|S;6;SingleS;8;delegateS;14;predicateFieldS;10;ruleEditorS;9;theWindowS;15;arrangeInFront:S;19;performMiniaturize:S;29;orderFrontStandardAboutPanel:S;13;openDocument:S;13;performClose:S;13;saveDocument:S;14;runPageLayout:S;6;print:S;15;saveDocumentAs:S;12;newDocument:S;9;showHelp:S;22;revertDocumentToSaved:S;21;clearRecentDocuments:S;5;hide:S;10;terminate:S;22;hideOtherApplications:S;22;unhideAllApplications:S;13;stopSpeaking:S;14;startSpeaking:S;5;copy:S;10;selectAll:S;4;cut:S;14;checkSpelling:S;7;delete:S;6;paste:S;15;showGuessPanel:S;5;undo:S;23;performFindPanelAction:S;29;centerSelectionInVisibleArea:S;5;redo:S;30;toggleContinuousSpellChecking:S;12;performZoom:S;19;toggleToolbarShown:S;31;runToolbarCustomizationPalette:S;22;toggleGrammarChecking:S;24;toggleSmartInsertDelete:S;33;toggleAutomaticQuoteSubstitution:S;29;toggleAutomaticLinkDetection:S;10;alignLeft:S;12;alignCenter:S;15;alignJustified:S;11;alignRight:S;12;toggleRuler:S;10;copyRuler:S;11;pasteRuler:S;10;underline:S;21;orderFrontColorPanel:S;9;copyFont:S;10;pasteFont:S;9;unscript:S;12;superscript:S;10;subscript:S;14;raiseBaseline:S;14;lowerBaseline:S;21;useStandardLigatures:S;17;turnOffLigatures:S;16;useAllLigatures:S;19;useStandardKerning:S;15;turnOffKerning:S;15;tightenKerning:S;14;loosenKerning:S;7;addRow:S;17;ruleEditorAction:S;18;setAttributeValue:S;12;setEditable:S;15;setNestingMode:S;29;setFormattingStringsFilename:S;20;setCanRemoveAllRows:S;27;setAllowsEmptyCompoundRows:S;11;setAnimate:S;13;setRowHeight:D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;844E;D;K;6;CP$UIDd;3;845E;D;K;6;CP$UIDd;3;482E;D;K;6;CP$UIDd;3;482E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;844E;D;K;6;CP$UIDd;3;845E;D;K;6;CP$UIDd;3;482E;D;K;6;CP$UIDd;3;482E;E;E;D;K;10;$classnameS;28;_CPRuleEditorViewSliceHolderK;8;$classesA;S;28;_CPRuleEditorViewSliceHolderS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;831E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;41E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;478E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;502E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;502E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;41E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;504E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;460E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;844E;D;K;6;CP$UIDd;3;845E;D;K;6;CP$UIDd;3;482E;D;K;6;CP$UIDd;3;482E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;844E;D;K;6;CP$UIDd;3;845E;D;K;6;CP$UIDd;3;482E;D;K;6;CP$UIDd;3;482E;E;E;S;20;{{1, 1}, {537, 217}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;41E;E;E;S;16;{{0, 0}, {0, 0}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;844E;D;K;6;CP$UIDd;3;845E;D;K;6;CP$UIDd;3;482E;D;K;6;CP$UIDd;3;482E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;844E;D;K;6;CP$UIDd;3;845E;D;K;6;CP$UIDd;3;482E;D;K;6;CP$UIDd;3;482E;E;E;S;5;ArialD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;482E;D;K;6;CP$UIDd;3;482E;D;K;6;CP$UIDd;3;482E;D;K;6;CP$UIDd;3;482E;E;E;S;12;AppleSymbolsf;13;0.05813049898f;13;0.05554189906E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/CPRuleEditorCibTest/Resources/MainMenu.xib b/Tests/Manual/CPRuleEditorCibTest/Resources/MainMenu.xib new file mode 100644 index 000000000..c86f3d6ed --- /dev/null +++ b/Tests/Manual/CPRuleEditorCibTest/Resources/MainMenu.xib @@ -0,0 +1,4447 @@ + + + + 1050 + 10H574 + 823 + 1038.35 + 461.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 823 + + + YES + + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + NSApplication + + + FirstResponder + + + NSApplication + + + AMainMenu + + YES + + + NewApplication + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + NewApplication + + YES + + + About NewApplication + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Preferences… + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Services + + 1048576 + 2147483647 + + + submenuAction: + + Services + + YES + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide NewApplication + h + 1048576 + 2147483647 + + + + + + Hide Others + h + 1572864 + 2147483647 + + + + + + Show All + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit NewApplication + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + File + + 1048576 + 2147483647 + + + submenuAction: + + File + + YES + + + New + n + 1048576 + 2147483647 + + + + + + Open… + o + 1048576 + 2147483647 + + + + + + Open Recent + + 1048576 + 2147483647 + + + submenuAction: + + Open Recent + + YES + + + Clear Menu + + 1048576 + 2147483647 + + + + + _NSRecentDocumentsMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Close + w + 1048576 + 2147483647 + + + + + + Save + s + 1048576 + 2147483647 + + + + + + Save As… + S + 1179648 + 2147483647 + + + + + + Revert to Saved + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Page Setup... + P + 1179648 + 2147483647 + + + + + + + Print… + p + 1048576 + 2147483647 + + + + + + + + + Edit + + 1048576 + 2147483647 + + + submenuAction: + + Edit + + YES + + + Undo + z + 1048576 + 2147483647 + + + + + + Redo + Z + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Cut + x + 1048576 + 2147483647 + + + + + + Copy + c + 1048576 + 2147483647 + + + + + + Paste + v + 1048576 + 2147483647 + + + + + + Delete + + 1048576 + 2147483647 + + + + + + Select All + a + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Find + + 1048576 + 2147483647 + + + submenuAction: + + Find + + YES + + + Find… + f + 1048576 + 2147483647 + + + 1 + + + + Find Next + g + 1048576 + 2147483647 + + + 2 + + + + Find Previous + G + 1179648 + 2147483647 + + + 3 + + + + Use Selection for Find + e + 1048576 + 2147483647 + + + 7 + + + + Jump to Selection + j + 1048576 + 2147483647 + + + + + + + + + Spelling and Grammar + + 1048576 + 2147483647 + + + submenuAction: + + Spelling and Grammar + + YES + + + Show Spelling… + : + 1048576 + 2147483647 + + + + + + Check Spelling + ; + 1048576 + 2147483647 + + + + + + Check Spelling While Typing + + 1048576 + 2147483647 + + + + + + Check Grammar With Spelling + + 1048576 + 2147483647 + + + + + + + + + Substitutions + + 1048576 + 2147483647 + + + submenuAction: + + Substitutions + + YES + + + Smart Copy/Paste + f + 1048576 + 2147483647 + + + 1 + + + + Smart Quotes + g + 1048576 + 2147483647 + + + 2 + + + + Smart Links + G + 1179648 + 2147483647 + + + 3 + + + + + + + Speech + + 1048576 + 2147483647 + + + submenuAction: + + Speech + + YES + + + Start Speaking + + 1048576 + 2147483647 + + + + + + Stop Speaking + + 1048576 + 2147483647 + + + + + + + + + + + + Format + + 2147483647 + + + submenuAction: + + Format + + YES + + + Font + + 2147483647 + + + submenuAction: + + Font + + YES + + + Show Fonts + t + 1048576 + 2147483647 + + + + + + Bold + b + 1048576 + 2147483647 + + + 2 + + + + Italic + i + 1048576 + 2147483647 + + + 1 + + + + Underline + u + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Bigger + + + 1048576 + 2147483647 + + + 3 + + + + Smaller + - + 1048576 + 2147483647 + + + 4 + + + + YES + YES + + + 2147483647 + + + + + + Kern + + 2147483647 + + + submenuAction: + + Kern + + YES + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Tighten + + 2147483647 + + + + + + Loosen + + 2147483647 + + + + + + + + + Ligature + + 2147483647 + + + submenuAction: + + Ligature + + YES + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Use All + + 2147483647 + + + + + + + + + Baseline + + 2147483647 + + + submenuAction: + + Baseline + + YES + + + Use Default + + 2147483647 + + + + + + Superscript + + 2147483647 + + + + + + Subscript + + 2147483647 + + + + + + Raise + + 2147483647 + + + + + + Lower + + 2147483647 + + + + + + + + + YES + YES + + + 2147483647 + + + + + + Show Colors + C + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Copy Style + c + 1572864 + 2147483647 + + + + + + Paste Style + v + 1572864 + 2147483647 + + + + + _NSFontMenu + + + + + Text + + 2147483647 + + + submenuAction: + + Text + + YES + + + Align Left + { + 1048576 + 2147483647 + + + + + + Center + | + 1048576 + 2147483647 + + + + + + Justify + + 2147483647 + + + + + + Align Right + } + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Show Ruler + + 2147483647 + + + + + + Copy Ruler + c + 1310720 + 2147483647 + + + + + + Paste Ruler + v + 1310720 + 2147483647 + + + + + + + + + + + + View + + 1048576 + 2147483647 + + + submenuAction: + + View + + YES + + + Show Toolbar + t + 1572864 + 2147483647 + + + + + + Customize Toolbar… + + 1048576 + 2147483647 + + + + + + + + + Window + + 1048576 + 2147483647 + + + submenuAction: + + Window + + YES + + + Minimize + m + 1048576 + 2147483647 + + + + + + Zoom + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Bring All to Front + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Help + + 1048576 + 2147483647 + + + submenuAction: + + Help + + YES + + + NewApplication Help + ? + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + 7 + 2 + {{335, 200}, {1067, 550}} + 1946157056 + Window + NSWindow + + {1.79769e+308, 1.79769e+308} + + + 256 + + YES + + + 268 + {{20, 107}, {26, 26}} + + YES + + -2080244224 + 134217728 + + + + AppleSymbols + 18 + 16 + + + -2038152961 + 134 + + + 400 + 75 + + + + + 270 + + YES + + + 2304 + + YES + + + 274 + + YES + + + 274 + {537, 217} + + + + + YES + + YES + NSRuleEditorItemPBoardType + + + {537, 217} + + YES + 75 + 25 + format.strings + YES + NO + NO + 3 + rowType + subrows + criteria + displayValues + boundArray + NSMutableDictionary + + + + + YES + + + + YES + + + + {{1, 1}, {537, 217}} + + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + 4 + + + + -2147483392 + {{-100, -100}, {15, 217}} + + + _doScroller: + 1 + 0.96363627910614014 + + + + -2147483392 + {{-100, -100}, {223, 15}} + + 1 + + _doScroller: + 0.50602412223815918 + + + {{20, 141}, {539, 219}} + + + 2 + + + + + + + 270 + {{17, 382}, {752, 86}} + + YES + + 69336577 + 272629760 + + + LucidaGrande-Bold + 18 + 16 + + Predicate + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + + 265 + + YES + + YES + NSColor pasteboard type + + + {{936, 247}, {106, 23}} + + 1003 + YES + YES + + 1 + MC4wNTgxMzA0OTg5OCAwLjA1NTU0MTg5OTA2IDEAA + + + + + 265 + + YES + + YES + NSColor pasteboard type + + + {{936, 286}, {106, 23}} + + 1002 + YES + YES + + 1 + MC4wNTgxMzA0OTg5OCAwLjA1NTU0MTg5OTA2IDEAA + + + + + 265 + + YES + + YES + NSColor pasteboard type + + + {{936, 323}, {106, 23}} + + 1001 + YES + YES + + 1 + MC4wNTgxMzA0OTg5OCAwLjA1NTU0MTg5OTA2IDEAA + + + + + 265 + + YES + + YES + NSColor pasteboard type + + + {{936, 206}, {106, 23}} + + 1004 + YES + YES + + 1 + MC4wNTgxMzA0OTg5OCAwLjA1NTU0MTg5OTA2IDEAA + + + + + 265 + + YES + + YES + NSColor pasteboard type + + + {{936, 166}, {106, 23}} + + 1005 + YES + YES + + 1 + MC4wNTgxMzA0OTg5OCAwLjA1NTU0MTg5OTA2IDEAA + + + + + 265 + + YES + + YES + NSColor pasteboard type + + + {{936, 126}, {106, 23}} + + 1006 + YES + YES + + 1 + MC4wNTgxMzA0OTg5OCAwLjA1NTU0MTg5OTA2IDEAA + + + + + 265 + {{851, 326}, {75, 17}} + + YES + + 68288064 + 71304192 + Top Border + + LucidaGrande + 13 + 1044 + + + + + + + + + 265 + {{831, 289}, {95, 17}} + + YES + + 68288064 + 71304192 + Bottom Border + + + + + + + + + 265 + {{801, 250}, {125, 17}} + + YES + + 68288064 + 71304192 + Last Bottom Border + + + + + + + + + 265 + {{869, 209}, {57, 17}} + + YES + + 68288064 + 71304192 + Selected + + + + + + + + + 265 + {{810, 169}, {116, 17}} + + YES + + 68288064 + 71304192 + Backround Color + + + + + + + + + 265 + {{742, 129}, {184, 17}} + + YES + + 68288064 + 71304192 + Alternate Background Color + + + + + + + + + 265 + {{866, 452}, {80, 18}} + + YES + + -2080244224 + 0 + Editable + + + 1210864127 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + + + + 265 + {{933, 387}, {112, 26}} + + YES + + -2076049856 + 2048 + + + 109199615 + 129 + + + 400 + 75 + + + Simple + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + Single + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + List + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Compound + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + + + 3 + 1 + YES + YES + 2 + + + + + 265 + {{835, 394}, {91, 17}} + + YES + + 68288064 + 71304192 + Nesting Mode + + + + + + + + + 265 + {{936, 359}, {106, 22}} + + YES + + -1804468671 + 272630784 + format.strings + + + YES + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + textColor + + + + + + + 265 + {{822, 361}, {104, 17}} + + YES + + 68288064 + 71304192 + Formattting File + + + + + + + + + 265 + {{780, 514}, {166, 18}} + + YES + + -2080244224 + 0 + Can Remove All Rows + + + 1210864127 + 2 + + + + + 200 + 25 + + + + + 265 + {{721, 484}, {225, 18}} + + YES + + 67239424 + 0 + Allows Empty Compound Rows + + + 1210864127 + 2 + + + + + 200 + 25 + + + + + 265 + {{866, 422}, {80, 18}} + + YES + + -2080244224 + 0 + Animate + + + 1210864127 + 2 + + + + + 200 + 25 + + + + + 265 + {{934, 78}, {96, 21}} + + YES + + -2080244224 + 0 + + + 78 + 20 + 26 + 0.0 + 0 + 1 + NO + NO + + + + + 265 + {{841, 82}, {85, 17}} + + YES + + 68288064 + 71304192 + Row Height + + + + + + + + {1067, 550} + + + {{0, 0}, {1440, 878}} + {1.79769e+308, 1.79769e+308} + + + AppController + + + RuleDelegate + + + + + YES + + + performMiniaturize: + + + + 37 + + + + arrangeInFront: + + + + 39 + + + + print: + + + + 86 + + + + runPageLayout: + + + + 87 + + + + clearRecentDocuments: + + + + 127 + + + + orderFrontStandardAboutPanel: + + + + 142 + + + + performClose: + + + + 193 + + + + toggleContinuousSpellChecking: + + + + 222 + + + + undo: + + + + 223 + + + + copy: + + + + 224 + + + + checkSpelling: + + + + 225 + + + + paste: + + + + 226 + + + + stopSpeaking: + + + + 227 + + + + cut: + + + + 228 + + + + showGuessPanel: + + + + 230 + + + + redo: + + + + 231 + + + + selectAll: + + + + 232 + + + + startSpeaking: + + + + 233 + + + + delete: + + + + 235 + + + + performZoom: + + + + 240 + + + + performFindPanelAction: + + + + 241 + + + + centerSelectionInVisibleArea: + + + + 245 + + + + toggleGrammarChecking: + + + + 347 + + + + toggleSmartInsertDelete: + + + + 355 + + + + toggleAutomaticQuoteSubstitution: + + + + 356 + + + + toggleAutomaticLinkDetection: + + + + 357 + + + + showHelp: + + + + 360 + + + + saveDocument: + + + + 362 + + + + saveDocumentAs: + + + + 363 + + + + revertDocumentToSaved: + + + + 364 + + + + runToolbarCustomizationPalette: + + + + 365 + + + + toggleToolbarShown: + + + + 366 + + + + hide: + + + + 367 + + + + hideOtherApplications: + + + + 368 + + + + unhideAllApplications: + + + + 370 + + + + newDocument: + + + + 373 + + + + openDocument: + + + + 374 + + + + raiseBaseline: + + + + 426 + + + + lowerBaseline: + + + + 427 + + + + copyFont: + + + + 428 + + + + subscript: + + + + 429 + + + + superscript: + + + + 430 + + + + tightenKerning: + + + + 431 + + + + underline: + + + + 432 + + + + orderFrontColorPanel: + + + + 433 + + + + useAllLigatures: + + + + 434 + + + + loosenKerning: + + + + 435 + + + + pasteFont: + + + + 436 + + + + unscript: + + + + 437 + + + + useStandardKerning: + + + + 438 + + + + useStandardLigatures: + + + + 439 + + + + turnOffLigatures: + + + + 440 + + + + turnOffKerning: + + + + 441 + + + + alignLeft: + + + + 442 + + + + alignJustified: + + + + 443 + + + + copyRuler: + + + + 444 + + + + alignCenter: + + + + 445 + + + + toggleRuler: + + + + 446 + + + + alignRight: + + + + 447 + + + + pasteRuler: + + + + 448 + + + + terminate: + + + + 449 + + + + delegate + + + + 451 + + + + theWindow + + + + 459 + + + + ruleEditor + + + + 473 + + + + addRow: + + + + 474 + + + + ruleEditorAction: + + + + 475 + + + + predicateField + + + + 478 + + + + delegate + + + + 480 + + + + setAttributeValue: + + + + 482 + + + + setAttributeValue: + + + + 486 + + + + setAttributeValue: + + + + 488 + + + + setAttributeValue: + + + + 489 + + + + setCanRemoveAllRows: + + + + 529 + + + + setEditable: + + + + 531 + + + + setNestingMode: + + + + 532 + + + + setAttributeValue: + + + + 534 + + + + setAttributeValue: + + + + 535 + + + + setAllowsEmptyCompoundRows: + + + + 536 + + + + setFormattingStringsFilename: + + + + 537 + + + + setAnimate: + + + + 543 + + + + setRowHeight: + + + + 550 + + + + + YES + + 0 + + YES + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + YES + + + + + + + + + + MainMenu + + + 19 + + + YES + + + + + + 56 + + + YES + + + + + + 103 + + + YES + + + + 1 + + + 217 + + + YES + + + + + + 83 + + + YES + + + + + + 81 + + + YES + + + + + + + + + + + + + + + + 75 + + + 3 + + + 80 + + + 8 + + + 78 + + + 6 + + + 72 + + + + + 82 + + + 9 + + + 124 + + + YES + + + + + + 77 + + + 5 + + + 73 + + + 1 + + + 79 + + + 7 + + + 112 + + + 10 + + + 74 + + + 2 + + + 125 + + + YES + + + + + + 126 + + + + + 205 + + + YES + + + + + + + + + + + + + + + + + + 202 + + + + + 198 + + + + + 207 + + + + + 214 + + + + + 199 + + + + + 203 + + + + + 197 + + + + + 206 + + + + + 215 + + + + + 218 + + + YES + + + + + + 216 + + + YES + + + + + + 200 + + + YES + + + + + + + + + 219 + + + + + 201 + + + + + 204 + + + + + 220 + + + YES + + + + + + + + + + 213 + + + + + 210 + + + + + 221 + + + + + 208 + + + + + 209 + + + + + 106 + + + YES + + + + 2 + + + 111 + + + + + 57 + + + YES + + + + + + + + + + + + + + + + 58 + + + + + 134 + + + + + 150 + + + + + 136 + + + 1111 + + + 144 + + + + + 129 + + + 121 + + + 143 + + + + + 236 + + + + + 131 + + + YES + + + + + + 149 + + + + + 145 + + + + + 130 + + + + + 24 + + + YES + + + + + + + + + 92 + + + + + 5 + + + + + 239 + + + + + 23 + + + + + 295 + + + YES + + + + + + 296 + + + YES + + + + + + + 297 + + + + + 298 + + + + + 211 + + + YES + + + + + + 212 + + + YES + + + + + + + 195 + + + + + 196 + + + + + 346 + + + + + 348 + + + YES + + + + + + 349 + + + YES + + + + + + + + 350 + + + + + 351 + + + + + 354 + + + + + 371 + + + YES + + + + + + 372 + + + YES + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 375 + + + YES + + + + + + 376 + + + YES + + + + + + + 377 + + + YES + + + + + + 378 + + + YES + + + + + + 379 + + + YES + + + + + + + + + + + + + 380 + + + + + 381 + + + + + 382 + + + + + 383 + + + + + 384 + + + + + 385 + + + + + 386 + + + + + 387 + + + + + 388 + + + YES + + + + + + + + + + + + + + + + + + + + + 389 + + + + + 390 + + + + + 391 + + + + + 392 + + + + + 393 + + + + + 394 + + + + + 395 + + + + + 396 + + + + + 397 + + + YES + + + + + + 398 + + + YES + + + + + + 399 + + + YES + + + + + + 400 + + + + + 401 + + + + + 402 + + + + + 403 + + + + + 404 + + + + + 405 + + + YES + + + + + + + + + + 406 + + + + + 407 + + + + + 408 + + + + + 409 + + + + + 410 + + + + + 411 + + + YES + + + + + + + + 412 + + + + + 413 + + + + + 414 + + + + + 415 + + + YES + + + + + + + + + 416 + + + + + 417 + + + + + 418 + + + + + 419 + + + + + 450 + + + + + 466 + + + YES + + + + + + 467 + + + + + 469 + + + YES + + + + + + + + 470 + + + + + 471 + + + + + 472 + + + + + 479 + + + + + 476 + + + YES + + + + + + 477 + + + + + 481 + + + + + 516 + + + YES + + + + + + 517 + + + + + 506 + + + YES + + + + + + 507 + + + + + 492 + + + + + 487 + + + + + 500 + + + YES + + + + + + 501 + + + + + 485 + + + + + 525 + + + YES + + + + + + 526 + + + + + 483 + + + + + 523 + + + YES + + + + + + 524 + + + + + 521 + + + YES + + + + + + 522 + + + + + 496 + + + YES + + + + + + 497 + + + + + 490 + + + + + 498 + + + YES + + + + + + 499 + + + + + 502 + + + YES + + + + + + 503 + + + + + 519 + + + YES + + + + + + 520 + + + + + 508 + + + YES + + + + + + 509 + + + + + 510 + + + YES + + + + + + 511 + + + YES + + + + + + 512 + + + YES + + + + + + + + + 513 + + + + + 514 + + + + + 515 + + + + + 518 + + + + + 504 + + + YES + + + + + + 505 + + + + + 540 + + + YES + + + + + + 541 + + + + + 544 + + + YES + + + + + + 545 + + + + + 547 + + + YES + + + + + + 548 + + + + + + + YES + + YES + -3.IBPluginDependency + 103.IBPluginDependency + 103.ImportedFromIB2 + 106.IBPluginDependency + 106.ImportedFromIB2 + 106.editorWindowContentRectSynchronizationRect + 111.IBPluginDependency + 111.ImportedFromIB2 + 112.IBPluginDependency + 112.ImportedFromIB2 + 124.IBPluginDependency + 124.ImportedFromIB2 + 125.IBPluginDependency + 125.ImportedFromIB2 + 125.editorWindowContentRectSynchronizationRect + 126.IBPluginDependency + 126.ImportedFromIB2 + 129.IBPluginDependency + 129.ImportedFromIB2 + 130.IBPluginDependency + 130.ImportedFromIB2 + 130.editorWindowContentRectSynchronizationRect + 131.IBPluginDependency + 131.ImportedFromIB2 + 134.IBPluginDependency + 134.ImportedFromIB2 + 136.IBPluginDependency + 136.ImportedFromIB2 + 143.IBPluginDependency + 143.ImportedFromIB2 + 144.IBPluginDependency + 144.ImportedFromIB2 + 145.IBPluginDependency + 145.ImportedFromIB2 + 149.IBPluginDependency + 149.ImportedFromIB2 + 150.IBPluginDependency + 150.ImportedFromIB2 + 19.IBPluginDependency + 19.ImportedFromIB2 + 195.IBPluginDependency + 195.ImportedFromIB2 + 196.IBPluginDependency + 196.ImportedFromIB2 + 197.IBPluginDependency + 197.ImportedFromIB2 + 198.IBPluginDependency + 198.ImportedFromIB2 + 199.IBPluginDependency + 199.ImportedFromIB2 + 200.IBPluginDependency + 200.ImportedFromIB2 + 200.editorWindowContentRectSynchronizationRect + 201.IBPluginDependency + 201.ImportedFromIB2 + 202.IBPluginDependency + 202.ImportedFromIB2 + 203.IBPluginDependency + 203.ImportedFromIB2 + 204.IBPluginDependency + 204.ImportedFromIB2 + 205.IBPluginDependency + 205.ImportedFromIB2 + 205.editorWindowContentRectSynchronizationRect + 206.IBPluginDependency + 206.ImportedFromIB2 + 207.IBPluginDependency + 207.ImportedFromIB2 + 208.IBPluginDependency + 208.ImportedFromIB2 + 209.IBPluginDependency + 209.ImportedFromIB2 + 210.IBPluginDependency + 210.ImportedFromIB2 + 211.IBPluginDependency + 211.ImportedFromIB2 + 212.IBPluginDependency + 212.ImportedFromIB2 + 212.editorWindowContentRectSynchronizationRect + 213.IBPluginDependency + 213.ImportedFromIB2 + 214.IBPluginDependency + 214.ImportedFromIB2 + 215.IBPluginDependency + 215.ImportedFromIB2 + 216.IBPluginDependency + 216.ImportedFromIB2 + 217.IBPluginDependency + 217.ImportedFromIB2 + 218.IBPluginDependency + 218.ImportedFromIB2 + 219.IBPluginDependency + 219.ImportedFromIB2 + 220.IBPluginDependency + 220.ImportedFromIB2 + 220.editorWindowContentRectSynchronizationRect + 221.IBPluginDependency + 221.ImportedFromIB2 + 23.IBPluginDependency + 23.ImportedFromIB2 + 236.IBPluginDependency + 236.ImportedFromIB2 + 239.IBPluginDependency + 239.ImportedFromIB2 + 24.IBPluginDependency + 24.ImportedFromIB2 + 24.editorWindowContentRectSynchronizationRect + 29.IBEditorWindowLastContentRect + 29.IBPluginDependency + 29.ImportedFromIB2 + 29.WindowOrigin + 29.editorWindowContentRectSynchronizationRect + 295.IBPluginDependency + 296.IBPluginDependency + 296.editorWindowContentRectSynchronizationRect + 297.IBPluginDependency + 298.IBPluginDependency + 346.IBPluginDependency + 346.ImportedFromIB2 + 348.IBPluginDependency + 348.ImportedFromIB2 + 349.IBPluginDependency + 349.ImportedFromIB2 + 349.editorWindowContentRectSynchronizationRect + 350.IBPluginDependency + 350.ImportedFromIB2 + 351.IBPluginDependency + 351.ImportedFromIB2 + 354.IBPluginDependency + 354.ImportedFromIB2 + 371.IBEditorWindowLastContentRect + 371.IBPluginDependency + 371.IBWindowTemplateEditedContentRect + 371.NSWindowTemplate.visibleAtLaunch + 371.editorWindowContentRectSynchronizationRect + 371.windowTemplate.maxSize + 372.IBPluginDependency + 375.IBPluginDependency + 376.IBEditorWindowLastContentRect + 376.IBPluginDependency + 377.IBPluginDependency + 378.IBPluginDependency + 379.IBPluginDependency + 380.IBPluginDependency + 381.IBPluginDependency + 382.IBPluginDependency + 383.IBPluginDependency + 384.IBPluginDependency + 385.IBPluginDependency + 386.IBPluginDependency + 387.IBPluginDependency + 388.IBEditorWindowLastContentRect + 388.IBPluginDependency + 389.IBPluginDependency + 390.IBPluginDependency + 391.IBPluginDependency + 392.IBPluginDependency + 393.IBPluginDependency + 394.IBPluginDependency + 395.IBPluginDependency + 396.IBPluginDependency + 397.IBPluginDependency + 398.IBPluginDependency + 399.IBPluginDependency + 400.IBPluginDependency + 401.IBPluginDependency + 402.IBPluginDependency + 403.IBPluginDependency + 404.IBPluginDependency + 405.IBPluginDependency + 406.IBPluginDependency + 407.IBPluginDependency + 408.IBPluginDependency + 409.IBPluginDependency + 410.IBPluginDependency + 411.IBPluginDependency + 412.IBPluginDependency + 413.IBPluginDependency + 414.IBPluginDependency + 415.IBPluginDependency + 416.IBPluginDependency + 417.IBPluginDependency + 418.IBPluginDependency + 419.IBPluginDependency + 466.IBPluginDependency + 467.IBPluginDependency + 469.IBPluginDependency + 470.IBPluginDependency + 471.IBPluginDependency + 472.IBPluginDependency + 476.IBPluginDependency + 477.IBPluginDependency + 481.IBPluginDependency + 483.IBPluginDependency + 485.IBPluginDependency + 487.IBPluginDependency + 490.IBPluginDependency + 492.IBPluginDependency + 496.IBPluginDependency + 497.IBPluginDependency + 498.IBPluginDependency + 499.IBPluginDependency + 5.IBPluginDependency + 5.ImportedFromIB2 + 500.IBPluginDependency + 501.IBPluginDependency + 502.IBPluginDependency + 503.IBPluginDependency + 504.IBPluginDependency + 505.IBPluginDependency + 506.IBPluginDependency + 507.IBPluginDependency + 508.IBPluginDependency + 509.IBPluginDependency + 510.IBPluginDependency + 511.IBPluginDependency + 512.IBEditorWindowLastContentRect + 512.IBPluginDependency + 513.IBPluginDependency + 514.IBPluginDependency + 515.IBPluginDependency + 516.IBPluginDependency + 517.IBPluginDependency + 518.IBPluginDependency + 519.IBPluginDependency + 520.IBPluginDependency + 521.IBPluginDependency + 522.IBPluginDependency + 523.IBPluginDependency + 524.IBPluginDependency + 525.IBPluginDependency + 526.IBPluginDependency + 540.IBPluginDependency + 541.IBPluginDependency + 544.IBPluginDependency + 545.IBPluginDependency + 547.IBPluginDependency + 548.IBPluginDependency + 56.IBPluginDependency + 56.ImportedFromIB2 + 57.IBEditorWindowLastContentRect + 57.IBPluginDependency + 57.ImportedFromIB2 + 57.editorWindowContentRectSynchronizationRect + 58.IBPluginDependency + 58.ImportedFromIB2 + 72.IBPluginDependency + 72.ImportedFromIB2 + 73.IBPluginDependency + 73.ImportedFromIB2 + 74.IBPluginDependency + 74.ImportedFromIB2 + 75.IBPluginDependency + 75.ImportedFromIB2 + 77.IBPluginDependency + 77.ImportedFromIB2 + 78.IBPluginDependency + 78.ImportedFromIB2 + 79.IBPluginDependency + 79.ImportedFromIB2 + 80.IBPluginDependency + 80.ImportedFromIB2 + 81.IBPluginDependency + 81.ImportedFromIB2 + 81.editorWindowContentRectSynchronizationRect + 82.IBPluginDependency + 82.ImportedFromIB2 + 83.IBPluginDependency + 83.ImportedFromIB2 + 92.IBPluginDependency + 92.ImportedFromIB2 + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{596, 852}, {216, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{522, 812}, {146, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{436, 809}, {64, 6}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {275, 83}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{187, 434}, {243, 243}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {167, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {241, 103}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{525, 802}, {197, 73}} + {{143, 285}, {478, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + {74, 862} + {{6, 978}, {478, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{475, 832}, {234, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {215, 63}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{44, 281}, {1067, 550}} + com.apple.InterfaceBuilder.CocoaPlugin + {{44, 281}, {1067, 550}} + + {{33, 99}, {480, 360}} + {3.40282e+38, 3.40282e+38} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{437, 242}, {86, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{523, 2}, {178, 283}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{891, 592}, {141, 83}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + {{155, 102}, {245, 183}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{23, 794}, {245, 183}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{145, 474}, {199, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + YES + + + YES + + + + + YES + + + YES + + + + 550 + + + + YES + + AppController + + YES + + YES + ruleEditorAction: + setAllowsEmptyCompoundRows: + setAnimate: + setAttributeValue: + setCanRemoveAllRows: + setEditable: + setFormattingStringsFilename: + setNestingMode: + setRowHeight: + + + YES + id + id + id + id + id + id + id + id + id + + + + YES + + YES + ruleEditorAction: + setAllowsEmptyCompoundRows: + setAnimate: + setAttributeValue: + setCanRemoveAllRows: + setEditable: + setFormattingStringsFilename: + setNestingMode: + setRowHeight: + + + YES + + ruleEditorAction: + id + + + setAllowsEmptyCompoundRows: + id + + + setAnimate: + id + + + setAttributeValue: + id + + + setCanRemoveAllRows: + id + + + setEditable: + id + + + setFormattingStringsFilename: + id + + + setNestingMode: + id + + + setRowHeight: + id + + + + + YES + + YES + predicateField + ruleEditor + theWindow + + + YES + id + id + NSWindow + + + + YES + + YES + predicateField + ruleEditor + theWindow + + + YES + + predicateField + id + + + ruleEditor + id + + + theWindow + NSWindow + + + + + IBUserSource + + + + + NSRuleEditor + NSControl + + IBUserSource + + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + ../adsfsdf.xcodeproj + 3 + + YES + + YES + NSMenuCheckmark + NSMenuMixedState + NSSwitch + + + YES + {9, 8} + {7, 2} + {15, 15} + + + + diff --git a/Tests/Manual/CPRuleEditorCibTest/Resources/criteria.plist b/Tests/Manual/CPRuleEditorCibTest/Resources/criteria.plist new file mode 100644 index 000000000..2ec458116 --- /dev/null +++ b/Tests/Manual/CPRuleEditorCibTest/Resources/criteria.plist @@ -0,0 +1,192 @@ + + + + + rootHeaders + + subrows + + + CPRuleEditorPredicateCompoundType + 2 + criteria + + + valeur + of the following is true + + + valeur + Any + + + CPRuleEditorPredicateCompoundType + 1 + criteria + + + valeur + of the following is true + + + valeur + All + + + + rootChildren + + subrows + + + CPRuleEditorPredicateLeftExpression + firstName + criteria + + + CPRuleEditorPredicateComparisonModifier + 0 + CPRuleEditorPredicateOperatorType + 8 + CPRuleEditorPredicateOptions + 3 + criteria + + + CPRuleEditorCustomControlClass + RuleTextField + + + valeur + CPBeginsWithPredicateOperatorType + + + CPRuleEditorPredicateComparisonModifier + 0 + CPRuleEditorPredicateOperatorType + 7 + CPRuleEditorPredicateOptions + 3 + criteria + + + CPRuleEditorCustomControlClass + RuleTextField + + + valeur + CPLikePredicateOperatorType + + + CPRuleEditorPredicateComparisonModifier + 0 + CPRuleEditorPredicateOperatorType + 6 + CPRuleEditorPredicateOptions + 0 + criteria + + + CPRuleEditorCustomControlClass + RuleTextField + + + valeur + CPMatchesPredicateOperatorType + + + valeur + firstName + + + CPRuleEditorPredicateLeftExpression + lastName + criteria + + + CPRuleEditorPredicateComparisonModifier + 0 + CPRuleEditorPredicateOperatorType + 8 + CPRuleEditorPredicateOptions + 0 + criteria + + + CPRuleEditorCustomControlClass + RuleTextField + + + valeur + CPBeginsWithPredicateOperatorType + + + CPRuleEditorPredicateComparisonModifier + 0 + CPRuleEditorPredicateOperatorType + 9 + CPRuleEditorPredicateOptions + 0 + criteria + + + CPRuleEditorCustomControlClass + RuleTextField + + + valeur + CPEndsWithPredicateOperatorType + + + valeur + lastName + + + CPRuleEditorPredicateLeftExpression + age + criteria + + + CPRuleEditorPredicateComparisonModifier + 0 + CPRuleEditorPredicateOperatorType + 0 + CPRuleEditorPredicateOptions + 0 + criteria + + + CPRuleEditorCustomControlClass + RuleSlider + + + valeur + CPLessThanPredicateOperatorType + + + CPRuleEditorPredicateComparisonModifier + 0 + CPRuleEditorPredicateOperatorType + 3 + CPRuleEditorPredicateOptions + 0 + criteria + + + CPRuleEditorPredicateRightExpression + 50 + valeur + 50 ans + + + valeur + CPGreaterThanOrEqualToPredicateOperatorType + + + valeur + age + + + + + diff --git a/Tests/Manual/CPRuleEditorCibTest/Resources/format.strings b/Tests/Manual/CPRuleEditorCibTest/Resources/format.strings new file mode 100644 index 000000000..4d802654d --- /dev/null +++ b/Tests/Manual/CPRuleEditorCibTest/Resources/format.strings @@ -0,0 +1,18 @@ +"CPLessThanPredicateOperatorType" = "is less than"; //0 +"CPLessThanOrEqualToPredicateOperatorType" = "is less than or equal to"; //1 +"CPGreaterThanPredicateOperatorType" = "is greater than"; //2 +"CPGreaterThanOrEqualToPredicateOperatorType" = "is greater than or equal to"; //3 +"CPEqualToPredicateOperatorType" = "is equal to"; //4 +"CPNotEqualToPredicateOperatorType" = "is not equal"; //5 +"CPMatchesPredicateOperatorType" = "matches"; //6 +"CPLikePredicateOperatorType" = "is like"; //7 +"CPBeginsWithPredicateOperatorType" = "begins with"; //8 +"CPEndsWithPredicateOperatorType" = "ends with"; //9 +"CPInPredicateOperatorType" = "is in"; //10 +"CPCustomSelectorPredicateOperatorType" = "function"; //11 +"CPContainsPredicateOperatorType" = "contains"; //99 +"CPBetweenPredicateOperatorType" = "is between"; //100 +"firstName" = "First Name"; +"lastName" = "Last Name"; +"age" = "Age"; +"birthDate" = "Birth Date"; diff --git a/Tests/Manual/CPRuleEditorCibTest/Resources/spinner.gif b/Tests/Manual/CPRuleEditorCibTest/Resources/spinner.gif new file mode 100644 index 000000000..06dbc2bc2 Binary files /dev/null and b/Tests/Manual/CPRuleEditorCibTest/Resources/spinner.gif differ diff --git a/Tests/Manual/CPRuleEditorCibTest/RuleControls.j b/Tests/Manual/CPRuleEditorCibTest/RuleControls.j new file mode 100644 index 000000000..3a313fa44 --- /dev/null +++ b/Tests/Manual/CPRuleEditorCibTest/RuleControls.j @@ -0,0 +1,76 @@ +/* + * Created by cacaodev@gmail.com. + * Copyright (c) 2008 Pear, Inc. All rights reserved. + */ + +@implementation RuleTextField : CPTextField +{ +} + +- (id)initWithFrame:(CPRect)frame +{ + self = [super initWithFrame:CGRectMake(0, 0, 500, 24)]; + + if (self != nil) + { + [self setBezeled:YES]; + [self setBezelStyle:CPTextFieldSquareBezel]; + [self setBordered:YES]; + [self setEditable:YES]; + [self setFont:[CPFont systemFontOfSize:11]]; + } + + return self; +} + +- (BOOL)isEqual:(id)object +{ + if ([object class] == [RuleTextField class] && + [[object objectValue] isEqual:[self objectValue]]) + return YES; + + return YES; +} + +- (id)copy +{ + var copy = [[RuleTextField alloc] initWithFrame:CGRectMakeZero()]; + [copy setObjectValue:[self objectValue]]; + + return copy; +} + +@end + +@implementation RuleSlider : CPSlider +{ +} + +- (id) initWithFrame:(CPRect)frame +{ + self = [super initWithFrame:CGRectMake(0, 0, 500, 18)]; + + if (self != nil) + { + [self setMinValue:0]; + [self setMaxValue:60]; + [self setContinuous:YES]; + } + + return self; +} + +- (id)objectValue +{ + return ROUND([self doubleValue]); +} + +- (id)copy +{ + var copy = [[RuleSlider alloc] initWithFrame:CGRectMakeZero()]; + [copy setObjectValue:[self objectValue]]; + + return copy; +} + +@end \ No newline at end of file diff --git a/Tests/Manual/CPRuleEditorCibTest/RuleDelegate.j b/Tests/Manual/CPRuleEditorCibTest/RuleDelegate.j new file mode 100644 index 000000000..430121e98 --- /dev/null +++ b/Tests/Manual/CPRuleEditorCibTest/RuleDelegate.j @@ -0,0 +1,147 @@ +/* + * Created by cacaodev@gmail.com. + * Copyright (c) 2008 Pear, Inc. All rights reserved. + */ + +@import +@import "RuleControls.j" + +var CPRuleEditorPredicateKeys = [ + CPRuleEditorPredicateLeftExpression, + CPRuleEditorPredicateRightExpression, + CPRuleEditorPredicateComparisonModifier, + CPRuleEditorPredicateOptions, + CPRuleEditorPredicateOperatorType, + CPRuleEditorPredicateCustomSelector, + CPRuleEditorPredicateCompoundType + ]; + +var CPRuleEditorCustomControlClass = @"CPRuleEditorCustomControlClass"; + +@implementation RuleDelegate : CPObject +{ + CPDictionary criteria; +} + +- (id)init +{ + self = [super init]; + if (self != nil) + { + var path = [[CPBundle mainBundle] pathForResource:@"criteria.plist"], + request = [CPURLRequest requestWithURL:path], + connection = [CPURLConnection connectionWithRequest:request delegate:self]; + } + + return self; +} + +- (void)connection:(CPURLConnection)connection didReceiveData:(CPString)dataString +{ + if (!dataString) + return; + + var data = [[CPData alloc] initWithRawString:dataString]; + criteria = [CPPropertyListSerialization propertyListFromData:data format:CPPropertyListXMLFormat_v1_0]; +} + +/* When called, you should return the number of child items of the given criterion. If criterion is nil, you should return the number of root criteria for the given row type. Implementation of this method is required. */ + +- (int)ruleEditor:(CPRuleEditor)editor numberOfChildrenForCriterion:(id)criterion withRowType:(CPRuleEditorRowType)rowType +{ + var childs; + if (criterion) + childs = [criterion objectForKey:@"criteria"]; + else + childs = [criteria valueForKeyPath:(rowType == CPRuleEditorRowTypeSimple) ? @"rootChildren.subrows" : @"rootHeaders.subrows"]; + + return (childs == NULL) ? 0 : [childs count]; +} + +/* When called, you should return the child of the given item at the given index. If criterion is nil, return the root criterion for the given row type at the given index. Implementation of this method is required. */ + +- (id)ruleEditor:(CPRuleEditor)editor child:(int)index forCriterion:(id)criterion withRowType:(CPRuleEditorRowType)rowType +{ + var childs; + + if (criterion) + childs = [criterion objectForKey:@"criteria"]; + else + childs = [criteria valueForKeyPath:(rowType == CPRuleEditorRowTypeSimple) ? @"rootChildren.subrows" : @"rootHeaders.subrows"]; + + return [childs objectAtIndex:index]; + +} + +/* + When called, you should return a value for the given criterion. The value should be an instance of CPString, CPView, or CPMenuItem (1). If the value is an CPView or CPMenuItem (1), you must ensure it is unique for every invocation of this method; that is, do not return a particular instance of CPView or CPMenuItem more than once. Implementation of this method is required. + (1) CPMenuItem: not implemented yet. +*/ + +- (id)ruleEditor:(CPRuleEditor)editor displayValueForCriterion:(id)criterion inRow:(int)row +{ + var custom_control_class = [criterion objectForKey:CPRuleEditorCustomControlClass]; + + if (custom_control_class != nil) + { + var custom_class = CPClassFromString(custom_control_class); + return [[custom_class alloc] initWithFrame:CGRectMake(0, 0, 100, 18)]; + } + + return [criterion objectForKey:@"valeur"]; +} + +- (CPDictionary)ruleEditor:(CPRuleEditor)editor predicatePartsForCriterion:(id)criterion withDisplayValue:(id)value inRow:(int)row +{ + var predicatePartsForCriterion = [CPDictionary dictionary]; + + if ([editor rowTypeForRow:row] == CPRuleEditorRowTypeCompound) + { + var compound_type = [criterion objectForKey:CPRuleEditorPredicateCompoundType]; + if (compound_type != nil) + [predicatePartsForCriterion setObject:compound_type forKey:CPRuleEditorPredicateCompoundType]; + return predicatePartsForCriterion; + } + + var count = CPRuleEditorPredicateKeys.length; + for (var i = 0 ;i + + + + + + + + + + + + + + + CPRuleEditorCibTest + + + + + + + + + + + + + + +
+
+ + + +
+
+ + + diff --git a/Tests/Manual/CPRuleEditorCibTest/index.html b/Tests/Manual/CPRuleEditorCibTest/index.html new file mode 100644 index 000000000..50db3f53f --- /dev/null +++ b/Tests/Manual/CPRuleEditorCibTest/index.html @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + CPRuleEditorCibTest + + + + + + + + + + + + +
+
+ + + +
+
+ + + diff --git a/Tests/Manual/CPRuleEditorCibTest/main.j b/Tests/Manual/CPRuleEditorCibTest/main.j new file mode 100644 index 000000000..7424228fa --- /dev/null +++ b/Tests/Manual/CPRuleEditorCibTest/main.j @@ -0,0 +1,18 @@ +/* + * AppController.j + * CPRuleEditorCibTest + * + * Created by You on September 3, 2010. + * Copyright 2010, Your Company All rights reserved. + */ + +@import +@import + +@import "AppController.j" + + +function main(args, namedArgs) +{ + CPApplicationMain(args, namedArgs); +} diff --git a/Tests/Manual/CPUserDefaultsControllerTest/AppController.j b/Tests/Manual/CPUserDefaultsControllerTest/AppController.j new file mode 100644 index 000000000..2f3fea5dd --- /dev/null +++ b/Tests/Manual/CPUserDefaultsControllerTest/AppController.j @@ -0,0 +1,32 @@ +/* + * AppController.j + * CPUserDefaultsControllerTest + * + * Created by Alexander Ljungberg on May 30, 2011. + * Copyright 2011, WireLoad All rights reserved. + */ + +@import + + +@implementation AppController : CPObject +{ + CPWindow theWindow; //this "outlet" is connected automatically by the Cib +} + +- (void)applicationDidFinishLaunching:(CPNotification)aNotification +{ + // This is called when the application is done loading. +} + +- (void)awakeFromCib +{ + // This is called when the cib is done loading. + // You can implement this method on any object instantiated from a Cib. + // It's a useful hook for setting up current UI values, and other things. + + // In this case, we want the window from Cib to become our full browser window + [theWindow setFullPlatformWindow:YES]; +} + +@end diff --git a/Tests/Manual/CPUserDefaultsControllerTest/Info.plist b/Tests/Manual/CPUserDefaultsControllerTest/Info.plist new file mode 100644 index 000000000..8f256e86d --- /dev/null +++ b/Tests/Manual/CPUserDefaultsControllerTest/Info.plist @@ -0,0 +1,10 @@ + + + + + Main cib file base name + MainMenu.cib + CPBundleName + CPUserDefaultsControllerTest + + diff --git a/Tests/Manual/CPUserDefaultsControllerTest/Jakefile b/Tests/Manual/CPUserDefaultsControllerTest/Jakefile new file mode 100644 index 000000000..856aa9289 --- /dev/null +++ b/Tests/Manual/CPUserDefaultsControllerTest/Jakefile @@ -0,0 +1,94 @@ +/* + * Jakefile + * CPUserDefaultsControllerTest + * + * Created by Alexander Ljungberg on May 30, 2011. + * Copyright 2011, WireLoad All rights reserved. + */ + +var ENV = require("system").env, + FILE = require("file"), + JAKE = require("jake"), + task = JAKE.task, + FileList = JAKE.FileList, + app = require("cappuccino/jake").app, + configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug", + OS = require("os"); + +app ("CPUserDefaultsControllerTest", function(task) +{ + task.setBuildIntermediatesPath(FILE.join("Build", "CPUserDefaultsControllerTest.build", configuration)); + task.setBuildPath(FILE.join("Build", configuration)); + + task.setProductName("CPUserDefaultsControllerTest"); + task.setIdentifier("com.yourcompany.CPUserDefaultsControllerTest"); + task.setVersion("1.0"); + task.setAuthor("WireLoad"); + task.setEmail("feedback @nospam@ yourcompany.com"); + task.setSummary("CPUserDefaultsControllerTest"); + task.setSources((new FileList("**/*.j")).exclude(FILE.join("Build", "**"))); + task.setResources(new FileList("Resources/**")); + task.setIndexFilePath("index.html"); + task.setInfoPlistPath("Info.plist"); + task.setNib2CibFlags("-R Resources/"); + + if (configuration === "Debug") + task.setCompilerFlags("-DDEBUG -g"); + else + task.setCompilerFlags("-O"); +}); + +task ("default", ["CPUserDefaultsControllerTest"], function() +{ + printResults(configuration); +}); + +task ("build", ["default"]); + +task ("debug", function() +{ + ENV["CONFIGURATION"] = "Debug"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("release", function() +{ + ENV["CONFIGURATION"] = "Release"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("run", ["debug"], function() +{ + OS.system(["open", FILE.join("Build", "Debug", "CPUserDefaultsControllerTest", "index.html")]); +}); + +task ("run-release", ["release"], function() +{ + OS.system(["open", FILE.join("Build", "Release", "CPUserDefaultsControllerTest", "index.html")]); +}); + +task ("deploy", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Deployment", "CPUserDefaultsControllerTest")); + OS.system(["press", "-f", FILE.join("Build", "Release", "CPUserDefaultsControllerTest"), FILE.join("Build", "Deployment", "CPUserDefaultsControllerTest")]); + printResults("Deployment") +}); + +task ("desktop", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Desktop", "CPUserDefaultsControllerTest")); + require("cappuccino/nativehost").buildNativeHost(FILE.join("Build", "Release", "CPUserDefaultsControllerTest"), FILE.join("Build", "Desktop", "CPUserDefaultsControllerTest", "CPUserDefaultsControllerTest.app")); + printResults("Desktop") +}); + +task ("run-desktop", ["desktop"], function() +{ + OS.system([FILE.join("Build", "Desktop", "CPUserDefaultsControllerTest", "CPUserDefaultsControllerTest.app", "Contents", "MacOS", "NativeHost"), "-i"]); +}); + +function printResults(configuration) +{ + print("----------------------------"); + print(configuration+" app built at path: "+FILE.join("Build", configuration, "CPUserDefaultsControllerTest")); + print("----------------------------"); +} diff --git a/Tests/Manual/CPUserDefaultsControllerTest/Resources/MainMenu.cib b/Tests/Manual/CPUserDefaultsControllerTest/Resources/MainMenu.cib new file mode 100644 index 000000000..350627b9a --- /dev/null +++ b/Tests/Manual/CPUserDefaultsControllerTest/Resources/MainMenu.cib @@ -0,0 +1 @@ +280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;4E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;7E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;9E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;2;10E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;2;11E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;2;12E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;2;13E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;2;14E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;16E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;18E;E;D;K;10;$classnameS;7;CPArrayK;8;$classesA;S;7;CPArrayS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;3;126E;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;137E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;3;143E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;3;148E;D;K;6;CP$UIDd;3;149E;D;K;6;CP$UIDd;3;150E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;153E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;156E;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;3;158E;D;K;6;CP$UIDd;3;159E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;161E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;3;163E;D;K;6;CP$UIDd;3;164E;D;K;6;CP$UIDd;3;165E;D;K;6;CP$UIDd;3;166E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;168E;D;K;6;CP$UIDd;3;169E;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;3;171E;D;K;6;CP$UIDd;3;172E;D;K;6;CP$UIDd;3;173E;D;K;6;CP$UIDd;3;174E;D;K;6;CP$UIDd;3;175E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;177E;D;K;6;CP$UIDd;3;178E;D;K;6;CP$UIDd;3;179E;D;K;6;CP$UIDd;3;180E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;3;183E;D;K;6;CP$UIDd;3;184E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;186E;D;K;6;CP$UIDd;3;187E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;189E;D;K;6;CP$UIDd;3;190E;D;K;6;CP$UIDd;3;191E;D;K;6;CP$UIDd;3;192E;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;3;194E;D;K;6;CP$UIDd;3;195E;D;K;6;CP$UIDd;3;196E;D;K;6;CP$UIDd;3;197E;D;K;6;CP$UIDd;3;198E;D;K;6;CP$UIDd;3;199E;D;K;6;CP$UIDd;3;200E;D;K;6;CP$UIDd;3;201E;D;K;6;CP$UIDd;3;202E;D;K;6;CP$UIDd;3;203E;D;K;6;CP$UIDd;3;204E;D;K;6;CP$UIDd;3;205E;D;K;6;CP$UIDd;3;206E;D;K;6;CP$UIDd;3;207E;D;K;6;CP$UIDd;3;208E;D;K;6;CP$UIDd;3;209E;D;K;6;CP$UIDd;3;210E;D;K;6;CP$UIDd;3;211E;D;K;6;CP$UIDd;3;212E;D;K;6;CP$UIDd;3;213E;D;K;6;CP$UIDd;3;214E;D;K;6;CP$UIDd;3;215E;D;K;6;CP$UIDd;3;216E;D;K;6;CP$UIDd;3;217E;D;K;6;CP$UIDd;3;218E;D;K;6;CP$UIDd;3;219E;D;K;6;CP$UIDd;3;220E;D;K;6;CP$UIDd;3;221E;D;K;6;CP$UIDd;3;222E;D;K;6;CP$UIDd;3;223E;D;K;6;CP$UIDd;3;224E;D;K;6;CP$UIDd;3;225E;D;K;6;CP$UIDd;3;226E;D;K;6;CP$UIDd;3;227E;D;K;6;CP$UIDd;3;228E;D;K;6;CP$UIDd;3;229E;D;K;6;CP$UIDd;3;230E;D;K;6;CP$UIDd;3;231E;D;K;6;CP$UIDd;3;232E;D;K;6;CP$UIDd;3;233E;D;K;6;CP$UIDd;3;234E;D;K;6;CP$UIDd;3;235E;D;K;6;CP$UIDd;3;236E;D;K;6;CP$UIDd;3;237E;D;K;6;CP$UIDd;3;238E;D;K;6;CP$UIDd;3;239E;D;K;6;CP$UIDd;3;240E;D;K;6;CP$UIDd;3;241E;D;K;6;CP$UIDd;3;242E;D;K;6;CP$UIDd;3;243E;D;K;6;CP$UIDd;3;244E;D;K;6;CP$UIDd;3;245E;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;247E;D;K;6;CP$UIDd;3;248E;D;K;6;CP$UIDd;3;249E;D;K;6;CP$UIDd;3;250E;D;K;6;CP$UIDd;3;251E;D;K;6;CP$UIDd;3;252E;D;K;6;CP$UIDd;3;253E;D;K;6;CP$UIDd;3;254E;D;K;6;CP$UIDd;3;255E;D;K;6;CP$UIDd;3;256E;D;K;6;CP$UIDd;3;257E;D;K;6;CP$UIDd;3;258E;D;K;6;CP$UIDd;3;259E;D;K;6;CP$UIDd;3;260E;D;K;6;CP$UIDd;3;261E;D;K;6;CP$UIDd;3;262E;D;K;6;CP$UIDd;3;263E;D;K;6;CP$UIDd;3;264E;D;K;6;CP$UIDd;3;265E;D;K;6;CP$UIDd;3;266E;D;K;6;CP$UIDd;3;267E;D;K;6;CP$UIDd;3;268E;D;K;6;CP$UIDd;3;269E;D;K;6;CP$UIDd;3;270E;D;K;6;CP$UIDd;3;271E;D;K;6;CP$UIDd;3;272E;D;K;6;CP$UIDd;3;273E;D;K;6;CP$UIDd;3;274E;D;K;6;CP$UIDd;3;275E;D;K;6;CP$UIDd;3;276E;D;K;6;CP$UIDd;3;277E;D;K;6;CP$UIDd;3;278E;D;K;6;CP$UIDd;3;279E;D;K;6;CP$UIDd;3;280E;D;K;6;CP$UIDd;3;281E;D;K;6;CP$UIDd;3;282E;D;K;6;CP$UIDd;3;283E;D;K;6;CP$UIDd;3;284E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;286E;D;K;6;CP$UIDd;3;287E;D;K;6;CP$UIDd;3;289E;D;K;6;CP$UIDd;3;290E;D;K;6;CP$UIDd;3;291E;D;K;6;CP$UIDd;3;292E;D;K;6;CP$UIDd;3;293E;D;K;6;CP$UIDd;3;294E;D;K;6;CP$UIDd;3;295E;D;K;6;CP$UIDd;3;296E;D;K;6;CP$UIDd;3;297E;D;K;6;CP$UIDd;3;298E;D;K;6;CP$UIDd;3;299E;D;K;6;CP$UIDd;3;300E;D;K;6;CP$UIDd;3;301E;D;K;6;CP$UIDd;3;302E;D;K;6;CP$UIDd;3;303E;D;K;6;CP$UIDd;3;304E;D;K;6;CP$UIDd;3;305E;D;K;6;CP$UIDd;3;306E;D;K;6;CP$UIDd;3;307E;D;K;6;CP$UIDd;3;308E;D;K;6;CP$UIDd;3;309E;D;K;6;CP$UIDd;3;310E;D;K;6;CP$UIDd;3;311E;D;K;6;CP$UIDd;3;312E;D;K;6;CP$UIDd;3;313E;D;K;6;CP$UIDd;3;314E;D;K;6;CP$UIDd;3;315E;D;K;6;CP$UIDd;3;316E;D;K;6;CP$UIDd;3;317E;D;K;6;CP$UIDd;3;318E;D;K;6;CP$UIDd;3;319E;D;K;6;CP$UIDd;3;320E;D;K;6;CP$UIDd;3;321E;D;K;6;CP$UIDd;3;322E;D;K;6;CP$UIDd;3;323E;D;K;6;CP$UIDd;3;324E;D;K;6;CP$UIDd;3;325E;D;K;6;CP$UIDd;3;326E;D;K;6;CP$UIDd;3;327E;D;K;6;CP$UIDd;3;328E;D;K;6;CP$UIDd;3;329E;D;K;6;CP$UIDd;3;330E;D;K;6;CP$UIDd;3;331E;D;K;6;CP$UIDd;3;332E;D;K;6;CP$UIDd;3;333E;D;K;6;CP$UIDd;3;334E;D;K;6;CP$UIDd;3;335E;D;K;6;CP$UIDd;3;336E;D;K;6;CP$UIDd;3;337E;D;K;6;CP$UIDd;3;338E;D;K;6;CP$UIDd;3;339E;D;K;6;CP$UIDd;3;340E;D;K;6;CP$UIDd;3;341E;D;K;6;CP$UIDd;3;342E;D;K;6;CP$UIDd;3;343E;D;K;6;CP$UIDd;3;344E;D;K;6;CP$UIDd;3;345E;D;K;6;CP$UIDd;3;346E;D;K;6;CP$UIDd;3;347E;D;K;6;CP$UIDd;3;348E;D;K;6;CP$UIDd;3;349E;D;K;6;CP$UIDd;3;350E;D;K;6;CP$UIDd;3;352E;E;E;S;16;IBCocoaFrameworkD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;3;126E;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;137E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;3;143E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;3;148E;D;K;6;CP$UIDd;3;149E;D;K;6;CP$UIDd;3;150E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;153E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;3;143E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;2;69E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;18;_CPCibCustomObjectK;8;$classesA;S;18;_CPCibCustomObjectS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;353E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;3;354E;E;D;K;10;$classnameS;6;CPMenuK;8;$classesA;S;6;CPMenuS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;355E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;356E;E;D;K;10;$classnameS;10;CPMenuItemK;8;$classesA;S;10;CPMenuItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;357E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;358E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;133E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;112E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;360E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;361E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;113E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;362E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;10;$classnameS;8;CPSliderK;8;$classesA;S;8;CPSliderS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;38E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;363E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;364E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;365E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;38E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;366E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;367E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;368E;K;6;$afontD;K;6;CP$UIDd;3;370E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;363E;K;11;$aalignmentD;K;6;CP$UIDd;3;363E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;371E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;372E;K;19;CPSliderMinValueKeyD;K;6;CP$UIDd;3;363E;K;19;CPSliderMaxValueKeyD;K;6;CP$UIDd;3;373E;K;23;CPSliderAltIncrValueKeyD;K;6;CP$UIDd;3;363E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;374E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;42E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;375E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;358E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;42E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;113E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;376E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;52E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;377E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;10;$classnameS;11;CPTextFieldK;8;$classesA;S;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;29E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;38E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;363E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;378E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;379E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;38E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;366E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;380E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;381E;K;6;$afontD;K;6;CP$UIDd;3;382E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;383E;K;11;$aalignmentD;K;6;CP$UIDd;3;361E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;384E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;385E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;386E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;384E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;384E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;384E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;388E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;383E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;361E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;389E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;71E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;390E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;391E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;358E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;76E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;47E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;392E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;393E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;394E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;395E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;76E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;384E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;385E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;396E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;71E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;397E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;398E;E;D;K;10;$classnameS;6;CPViewK;8;$classesA;S;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;37E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;363E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;399E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;400E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;401E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;368E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;384E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;385E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;396E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;113E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;402E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;80E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;403E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;404E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;71E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;405E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;375E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;406E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;407E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;42E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;408E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;36E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;409E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;410E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;411E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;20E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;412E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;413E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;20E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;414E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;415E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;416E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;417E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;69E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;418E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;58E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;419E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;112E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;420E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;421E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;422E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;58E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;423E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;424E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;425E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;69E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;426E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;427E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;428E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;113E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;429E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;418E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;128E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;430E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;69E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;431E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;432E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;433E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;434E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;435E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;436E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;58E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;437E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;128E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;438E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;113E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;439E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;440E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;358E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;113E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;99E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;441E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;383E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;57E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;442E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;384E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;385E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;396E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;112E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;443E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;113E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;409E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;421E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;384E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;385E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;396E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;80E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;444E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;71E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;445E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;446E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;447E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;448E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;449E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;450E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;68E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;451E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;452E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;453E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;454E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;455E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;36E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;456E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;457E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;36E;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;458E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;391E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;459E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;384E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;385E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;396E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;36E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;460E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;358E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;99E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;47E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;461E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;72E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;462E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;463E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;464E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;465E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;466E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;69E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;467E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;468E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;469E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;52E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;470E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;471E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;68E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;392E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;358E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;33E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;69E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;472E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;473E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;52E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;474E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;427E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;384E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;385E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;396E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;112E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;384E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;385E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;396E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;69E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;384E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;385E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;396E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;112E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;475E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;69E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;476E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;418E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;42E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;384E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;385E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;396E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;112E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;384E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;385E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;396E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;113E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;477E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;42E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;355E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;358E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;20E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;71E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;478E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;71E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;479E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;427E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;480E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;76E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;481E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;421E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;463E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;358E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;80E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;47E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;482E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;71E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;483E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;460E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;484E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;485E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;71E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;409E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;486E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;36E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;405E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;410E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;487E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;20E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;488E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;489E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;20E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;434E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;358E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;58E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;113E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;490E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;69E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;491E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;427E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;432E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;358E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;57E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;71E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;492E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;112E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;420E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;384E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;385E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;396E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;69E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;493E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;58E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;494E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;112E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;495E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;358E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;128E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;113E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;496E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;497E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;498E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;440E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;499E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;500E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;384E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;385E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;396E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;113E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;374E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;128E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;384E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;385E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;396E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;113E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;501E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;112E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;502E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;503E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;469E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;113E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;504E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;505E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;469E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;57E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;470E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;506E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;58E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;507E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;473E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;57E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;474E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;427E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;508E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;113E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;405E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;421E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;509E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;80E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;510E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;71E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;511E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;473E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;113E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;512E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;513E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;80E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;446E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;358E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;68E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;71E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;495E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;514E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;397E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;358E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;36E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;99E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;515E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;383E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;113E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;516E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;517E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;36E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;518E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;519E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;36E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;520E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;357E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;521E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;522E;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;353E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;523E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;36E;E;D;K;10;$classnameS;24;CPUserDefaultsControllerK;8;$classesA;S;24;CPUserDefaultsControllerS;12;CPControllerS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;136E;K;33;CPUserDefaultsControllerSharedKeyD;K;6;CP$UIDd;3;384E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;384E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;385E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;396E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;71E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;453E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;358E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;72E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;47E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;496E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;358E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;112E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;47E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;524E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;113E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;481E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;142E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;525E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;526E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;527E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;528E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;463E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;38E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;448E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;358E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;69E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;47E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;423E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;358E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;52E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;71E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;529E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;69E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;530E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;531E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;383E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;52E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;442E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;532E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;112E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;533E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;33E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;534E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;528E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;52E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;535E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;451E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;358E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;71E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;47E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;536E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;112E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;537E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;538E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;69E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;539E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;359E;E;S;1;0S;1;1S;1;2S;1;3S;1;4S;1;5S;1;6S;2;19S;1;7S;1;8S;1;9S;2;11S;2;12S;2;13S;2;14S;2;15S;2;16S;2;17S;2;18S;2;10S;2;20S;2;21S;2;22S;2;23S;2;24S;2;25S;2;26S;2;27S;2;28S;2;29S;2;30S;2;31S;2;32S;2;33S;2;34S;2;35S;2;36S;2;37S;2;38S;2;39S;2;40S;2;41S;2;42S;2;43S;2;44S;2;45S;2;46S;2;47S;2;48S;2;49S;2;50S;2;51S;2;52S;2;53S;2;55S;2;54S;2;56S;2;57S;2;58S;12;File's OwnerS;2;59S;2;60S;2;61S;2;62S;2;63S;2;64S;2;65S;2;66S;2;67S;2;68S;2;69S;2;70S;2;71S;2;72S;2;73S;2;74S;2;75S;2;76S;2;77S;2;78S;2;79S;2;80S;2;81S;2;82S;2;83S;2;84S;2;85S;2;86S;2;87S;2;88S;2;89S;2;90S;2;91S;2;92S;2;93S;2;94S;2;95S;2;96S;2;97S;2;98S;2;99S;3;100S;3;101S;3;102S;3;103S;3;104S;3;105S;3;106S;3;107S;3;108S;3;109S;3;110S;3;111S;3;112S;3;113S;3;115S;3;114S;3;116S;3;117S;3;118S;3;119S;3;120S;3;121S;3;122S;3;123S;3;124S;3;125S;3;126S;3;127S;3;128S;3;129D;K;10;$classnameS;20;CPCibOutletConnectorK;8;$classesA;S;20;CPCibOutletConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;285E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;16E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;75E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;540E;E;D;K;6;$classD;K;6;CP$UIDd;3;285E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;75E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;143E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;541E;E;D;K;10;$classnameS;21;CPCibControlConnectorK;8;$classesA;S;21;CPCibControlConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;126E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;542E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;40E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;543E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;148E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;16E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;544E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;146E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;545E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;153E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;546E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;89E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;547E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;53E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;548E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;56E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;549E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;105E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;550E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;81E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;551E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;79E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;552E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;48E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;553E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;149E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;554E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;107E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;555E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;117E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;134E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;556E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;50E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;557E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;110E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;558E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;83E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;559E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;70E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;560E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;41E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;561E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;67E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;562E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;98E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;563E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;45E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;564E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;124E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;565E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;100E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;566E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;102E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;567E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;31E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;568E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;82E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;569E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;28E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;570E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;95E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;571E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;103E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;572E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;123E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;573E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;96E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;574E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;34E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;575E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;46E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;576E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;119E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;577E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;63E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;578E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;121E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;579E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;73E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;580E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;131E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;581E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;74E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;582E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;132E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;583E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;135E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;584E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;101E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;585E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;44E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;586E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;54E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;587E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;61E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;588E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;122E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;589E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;65E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;590E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;49E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;591E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;109E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;592E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;51E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;593E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;120E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;594E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;59E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;595E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;55E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;596E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;115E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;597E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;60E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;598E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;90E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;599E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;26E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;600E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;93E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;601E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;43E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;602E;E;D;K;6;$classD;K;6;CP$UIDd;3;288E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;25E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;30E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;603E;E;D;K;10;$classnameS;21;CPCibBindingConnectorK;8;$classesA;S;21;CPCibBindingConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;351E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;30E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;137E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;604E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;605E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;606E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;608E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;143E;E;E;S;20;Spelling and GrammarD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;2;46E;E;E;S;8;ServicesS;14;submenuAction:d;7;1048576S;7;Smallerd;1;4S;1;-d;1;0S;22;{{192, 196}, {96, 21}}S;18;{{0, 0}, {96, 21}}d;2;45S;6;sliderS;6;normalD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;369E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;609E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;610E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;396E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;396E;E;d;2;50d;2;68d;3;100S;8;Use NoneS;4;KernS;17;Jump to SelectionS;1;jS;23;{{186, 143}, {104, 29}}S;19;{{0, 0}, {104, 29}}S;9;textfieldS;19;bezeled+placeholderD;K;6;$classD;K;6;CP$UIDd;3;369E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;611E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;610E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;396E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;396E;E;d;1;2T;S;0;d;4;3072D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;387E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;612E;E;S;4;UndoS;1;zS;4;ViewS;11;Open RecentS;22;_CPRecentDocumentsMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;149E;E;E;S;18;Customize Toolbar…F;S;4;TextD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;2;44E;E;E;S;21;{{7, 11}, {480, 360}}S;20;{{0, 0}, {480, 360}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;30E;E;E;S;8;MinimizeS;1;mS;4;CopyS;1;cD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;43E;E;E;S;6;LoosenS;11;Paste RulerS;1;vd;7;1310720S;14;Check SpellingS;1;;S;27;Check Grammar With SpellingS;9;AMainMenuS;11;_CPMainMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;3;139E;E;E;S;15;Revert to SavedS;11;Use DefaultS;11;Hide OthersS;1;hd;7;1572864S;9;SubscriptS;4;FindD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;3;150E;D;K;6;CP$UIDd;2;28E;E;E;S;13;Page Setup...S;1;Pd;7;1179648S;9;UnderlineS;1;uS;6;Print…S;1;pS;13;SubstitutionsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;3;121E;E;E;S;8;BaselineD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;2;59E;E;E;S;5;LowerS;7;Use AllS;11;Show ColorsS;1;CS;4;FontS;12;Smart QuotesS;1;gS;11;Paste StyleS;10;Select AllS;1;aS;6;SpeechD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;83E;E;E;S;4;FileD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;3;153E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;56E;E;E;S;14;Start SpeakingS;4;EditD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;127E;E;E;S;4;HelpD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;79E;E;E;S;10;Align LeftS;1;{S;7;JustifyS;13;AppControllerD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;34E;E;E;S;6;FormatS;19;NewApplication HelpS;1;?S;6;WindowS;14;_CPWindowsMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;3;126E;E;E;S;3;NewS;1;nS;5;Find…d;1;1S;1;fS;13;Stop SpeakingS;13;Find Previousd;1;3S;1;GS;4;SaveS;1;sS;7;TightenS;4;RedoS;1;ZS;12;Show ToolbarS;1;tS;3;CutS;1;xD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;3;129E;E;E;S;5;PasteS;10;Copy RulerS;14;Show Spelling…S;1;:S;27;Check Spelling While TypingS;8;Save As…S;1;SS;19;Hide NewApplicationS;11;SuperscriptS;8;Show AllS;8;LigatureS;14;NewApplicationS;18;_CPApplicationMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;148E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;3;117E;E;E;S;11;_CPFontMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;2;65E;E;E;S;19;Quit NewApplicationS;1;qS;6;ItalicS;1;iS;16;Smart Copy/PasteS;5;RaiseS;11;Smart LinksS;10;Copy StyleS;4;ZoomS;6;DeleteS;6;BiggerS;1;+S;18;Bring All to FrontD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;2;60E;E;E;S;4;BoldS;1;bS;6;CenterS;1;|S;11;Align RightS;1;}S;15;_CPServicesMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;10;Show RulerS;10;Show FontsS;32;{10000000000000, 10000000000000}S;8;CPWindowS;24;{{335, 428}, {480, 360}}d;1;7S;5;Open…S;1;oS;9;Find NextS;20;About NewApplicationS;10;Clear MenuS;22;Use Selection for FindS;1;eS;12;Preferences…S;1;,S;5;CloseS;1;wS;8;delegateS;9;theWindowS;15;arrangeInFront:S;19;performMiniaturize:S;29;orderFrontStandardAboutPanel:S;13;openDocument:S;13;performClose:S;13;saveDocument:S;14;runPageLayout:S;6;print:S;15;saveDocumentAs:S;12;newDocument:S;9;showHelp:S;22;revertDocumentToSaved:S;21;clearRecentDocuments:S;5;hide:S;10;terminate:S;22;hideOtherApplications:S;22;unhideAllApplications:S;13;stopSpeaking:S;14;startSpeaking:S;5;copy:S;10;selectAll:S;4;cut:S;14;checkSpelling:S;7;delete:S;6;paste:S;15;showGuessPanel:S;5;undo:S;23;performFindPanelAction:S;29;centerSelectionInVisibleArea:S;5;redo:S;30;toggleContinuousSpellChecking:S;12;performZoom:S;19;toggleToolbarShown:S;31;runToolbarCustomizationPalette:S;22;toggleGrammarChecking:S;24;toggleSmartInsertDelete:S;33;toggleAutomaticQuoteSubstitution:S;29;toggleAutomaticLinkDetection:S;10;alignLeft:S;12;alignCenter:S;15;alignJustified:S;11;alignRight:S;12;toggleRuler:S;10;copyRuler:S;11;pasteRuler:S;10;underline:S;21;orderFrontColorPanel:S;9;copyFont:S;10;pasteFont:S;9;unscript:S;12;superscript:S;10;subscript:S;14;raiseBaseline:S;14;lowerBaseline:S;21;useStandardLigatures:S;17;turnOffLigatures:S;16;useAllLigatures:S;19;useStandardKerning:S;15;turnOffKerning:S;15;tightenKerning:S;14;loosenKerning:S;20;takeDoubleValueFrom:S;28;value: values.initWithCoder:S;5;valueS;21;values.initWithCoder:D;K;10;$classnameS;12;CPDictionaryK;8;$classesA;S;12;CPDictionaryS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;607E;K;10;CP.objectsD;E;E;S;9;Helveticad;2;12S;17;Arial, sans-serifD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;469E;D;K;6;CP$UIDd;3;469E;D;K;6;CP$UIDd;3;469E;D;K;6;CP$UIDd;3;469E;E;E;E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/CPUserDefaultsControllerTest/Resources/MainMenu.xib b/Tests/Manual/CPUserDefaultsControllerTest/Resources/MainMenu.xib new file mode 100644 index 000000000..f29b0ffa1 --- /dev/null +++ b/Tests/Manual/CPUserDefaultsControllerTest/Resources/MainMenu.xib @@ -0,0 +1,3263 @@ + + + + 1050 + 10J3210 + 1306 + 1038.35 + 461.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 1306 + + + YES + NSView + NSMenu + NSWindowTemplate + NSMenuItem + NSSliderCell + NSTextField + NSTextFieldCell + NSSlider + NSUserDefaultsController + NSCustomObject + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + YES + + YES + + + + + YES + + NSApplication + + + FirstResponder + + + NSApplication + + + AMainMenu + + YES + + + NewApplication + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + NewApplication + + YES + + + About NewApplication + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Preferences… + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Services + + 1048576 + 2147483647 + + + submenuAction: + + Services + + YES + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide NewApplication + h + 1048576 + 2147483647 + + + + + + Hide Others + h + 1572864 + 2147483647 + + + + + + Show All + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit NewApplication + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + File + + 1048576 + 2147483647 + + + submenuAction: + + File + + YES + + + New + n + 1048576 + 2147483647 + + + + + + Open… + o + 1048576 + 2147483647 + + + + + + Open Recent + + 1048576 + 2147483647 + + + submenuAction: + + Open Recent + + YES + + + Clear Menu + + 1048576 + 2147483647 + + + + + _NSRecentDocumentsMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Close + w + 1048576 + 2147483647 + + + + + + Save + s + 1048576 + 2147483647 + + + + + + Save As… + S + 1179648 + 2147483647 + + + + + + Revert to Saved + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Page Setup... + P + 1179648 + 2147483647 + + + + + + + Print… + p + 1048576 + 2147483647 + + + + + + + + + Edit + + 1048576 + 2147483647 + + + submenuAction: + + Edit + + YES + + + Undo + z + 1048576 + 2147483647 + + + + + + Redo + Z + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Cut + x + 1048576 + 2147483647 + + + + + + Copy + c + 1048576 + 2147483647 + + + + + + Paste + v + 1048576 + 2147483647 + + + + + + Delete + + 1048576 + 2147483647 + + + + + + Select All + a + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Find + + 1048576 + 2147483647 + + + submenuAction: + + Find + + YES + + + Find… + f + 1048576 + 2147483647 + + + 1 + + + + Find Next + g + 1048576 + 2147483647 + + + 2 + + + + Find Previous + G + 1179648 + 2147483647 + + + 3 + + + + Use Selection for Find + e + 1048576 + 2147483647 + + + 7 + + + + Jump to Selection + j + 1048576 + 2147483647 + + + + + + + + + Spelling and Grammar + + 1048576 + 2147483647 + + + submenuAction: + + Spelling and Grammar + + YES + + + Show Spelling… + : + 1048576 + 2147483647 + + + + + + Check Spelling + ; + 1048576 + 2147483647 + + + + + + Check Spelling While Typing + + 1048576 + 2147483647 + + + + + + Check Grammar With Spelling + + 1048576 + 2147483647 + + + + + + + + + Substitutions + + 1048576 + 2147483647 + + + submenuAction: + + Substitutions + + YES + + + Smart Copy/Paste + f + 1048576 + 2147483647 + + + 1 + + + + Smart Quotes + g + 1048576 + 2147483647 + + + 2 + + + + Smart Links + G + 1179648 + 2147483647 + + + 3 + + + + + + + Speech + + 1048576 + 2147483647 + + + submenuAction: + + Speech + + YES + + + Start Speaking + + 1048576 + 2147483647 + + + + + + Stop Speaking + + 1048576 + 2147483647 + + + + + + + + + + + + Format + + 2147483647 + + + submenuAction: + + Format + + YES + + + Font + + 2147483647 + + + submenuAction: + + Font + + YES + + + Show Fonts + t + 1048576 + 2147483647 + + + + + + Bold + b + 1048576 + 2147483647 + + + 2 + + + + Italic + i + 1048576 + 2147483647 + + + 1 + + + + Underline + u + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Bigger + + + 1048576 + 2147483647 + + + 3 + + + + Smaller + - + 1048576 + 2147483647 + + + 4 + + + + YES + YES + + + 2147483647 + + + + + + Kern + + 2147483647 + + + submenuAction: + + Kern + + YES + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Tighten + + 2147483647 + + + + + + Loosen + + 2147483647 + + + + + + + + + Ligature + + 2147483647 + + + submenuAction: + + Ligature + + YES + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Use All + + 2147483647 + + + + + + + + + Baseline + + 2147483647 + + + submenuAction: + + Baseline + + YES + + + Use Default + + 2147483647 + + + + + + Superscript + + 2147483647 + + + + + + Subscript + + 2147483647 + + + + + + Raise + + 2147483647 + + + + + + Lower + + 2147483647 + + + + + + + + + YES + YES + + + 2147483647 + + + + + + Show Colors + C + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Copy Style + c + 1572864 + 2147483647 + + + + + + Paste Style + v + 1572864 + 2147483647 + + + + + _NSFontMenu + + + + + Text + + 2147483647 + + + submenuAction: + + Text + + YES + + + Align Left + { + 1048576 + 2147483647 + + + + + + Center + | + 1048576 + 2147483647 + + + + + + Justify + + 2147483647 + + + + + + Align Right + } + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Show Ruler + + 2147483647 + + + + + + Copy Ruler + c + 1310720 + 2147483647 + + + + + + Paste Ruler + v + 1310720 + 2147483647 + + + + + + + + + + + + View + + 1048576 + 2147483647 + + + submenuAction: + + View + + YES + + + Show Toolbar + t + 1572864 + 2147483647 + + + + + + Customize Toolbar… + + 1048576 + 2147483647 + + + + + + + + + Window + + 1048576 + 2147483647 + + + submenuAction: + + Window + + YES + + + Minimize + m + 1048576 + 2147483647 + + + + + + Zoom + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Bring All to Front + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Help + + 1048576 + 2147483647 + + + submenuAction: + + Help + + YES + + + NewApplication Help + ? + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + 7 + 2 + {{335, 390}, {480, 360}} + 1946157056 + Window + NSWindow + + + + 256 + + YES + + + 301 + {{192, 143}, {96, 21}} + + + + YES + + -2079981824 + 0 + + + Helvetica + 12 + 16 + + + 100 + 0.0 + 50 + 0.0 + 0 + 1 + NO + NO + + + + + 301 + {{192, 191}, {96, 22}} + + + + YES + + -1804468671 + 272630784 + + + LucidaGrande + 13 + 1044 + + + YES + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + textColor + + 3 + MAA + + + + + + {{7, 11}, {480, 360}} + + + + + {{0, 0}, {1920, 1178}} + {1e+13, 1e+13} + + + AppController + + + YES + + + + + YES + + + performMiniaturize: + + + + 37 + + + + arrangeInFront: + + + + 39 + + + + print: + + + + 86 + + + + runPageLayout: + + + + 87 + + + + clearRecentDocuments: + + + + 127 + + + + orderFrontStandardAboutPanel: + + + + 142 + + + + performClose: + + + + 193 + + + + toggleContinuousSpellChecking: + + + + 222 + + + + undo: + + + + 223 + + + + copy: + + + + 224 + + + + checkSpelling: + + + + 225 + + + + paste: + + + + 226 + + + + stopSpeaking: + + + + 227 + + + + cut: + + + + 228 + + + + showGuessPanel: + + + + 230 + + + + redo: + + + + 231 + + + + selectAll: + + + + 232 + + + + startSpeaking: + + + + 233 + + + + delete: + + + + 235 + + + + performZoom: + + + + 240 + + + + performFindPanelAction: + + + + 241 + + + + centerSelectionInVisibleArea: + + + + 245 + + + + toggleGrammarChecking: + + + + 347 + + + + toggleSmartInsertDelete: + + + + 355 + + + + toggleAutomaticQuoteSubstitution: + + + + 356 + + + + toggleAutomaticLinkDetection: + + + + 357 + + + + showHelp: + + + + 360 + + + + saveDocument: + + + + 362 + + + + saveDocumentAs: + + + + 363 + + + + revertDocumentToSaved: + + + + 364 + + + + runToolbarCustomizationPalette: + + + + 365 + + + + toggleToolbarShown: + + + + 366 + + + + hide: + + + + 367 + + + + hideOtherApplications: + + + + 368 + + + + unhideAllApplications: + + + + 370 + + + + newDocument: + + + + 373 + + + + openDocument: + + + + 374 + + + + raiseBaseline: + + + + 426 + + + + lowerBaseline: + + + + 427 + + + + copyFont: + + + + 428 + + + + subscript: + + + + 429 + + + + superscript: + + + + 430 + + + + tightenKerning: + + + + 431 + + + + underline: + + + + 432 + + + + orderFrontColorPanel: + + + + 433 + + + + useAllLigatures: + + + + 434 + + + + loosenKerning: + + + + 435 + + + + pasteFont: + + + + 436 + + + + unscript: + + + + 437 + + + + useStandardKerning: + + + + 438 + + + + useStandardLigatures: + + + + 439 + + + + turnOffLigatures: + + + + 440 + + + + turnOffKerning: + + + + 441 + + + + alignLeft: + + + + 442 + + + + alignJustified: + + + + 443 + + + + copyRuler: + + + + 444 + + + + alignCenter: + + + + 445 + + + + toggleRuler: + + + + 446 + + + + alignRight: + + + + 447 + + + + pasteRuler: + + + + 448 + + + + terminate: + + + + 449 + + + + delegate + + + + 451 + + + + takeDoubleValueFrom: + + + + 458 + + + + theWindow + + + + 459 + + + + value: values.initWithCoder: + + + + + + value: values.initWithCoder: + value + values.initWithCoder: + 2 + + + 463 + + + + + YES + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + YES + + + + + + + + + + MainMenu + + + 19 + + + YES + + + + + + 56 + + + YES + + + + + + 103 + + + YES + + + + 1 + + + 217 + + + YES + + + + + + 83 + + + YES + + + + + + 81 + + + YES + + + + + + + + + + + + + + + + 75 + + + 3 + + + 80 + + + 8 + + + 78 + + + 6 + + + 72 + + + + + 82 + + + 9 + + + 124 + + + YES + + + + + + 77 + + + 5 + + + 73 + + + 1 + + + 79 + + + 7 + + + 112 + + + 10 + + + 74 + + + 2 + + + 125 + + + YES + + + + + + 126 + + + + + 205 + + + YES + + + + + + + + + + + + + + + + + + 202 + + + + + 198 + + + + + 207 + + + + + 214 + + + + + 199 + + + + + 203 + + + + + 197 + + + + + 206 + + + + + 215 + + + + + 218 + + + YES + + + + + + 216 + + + YES + + + + + + 200 + + + YES + + + + + + + + + 219 + + + + + 201 + + + + + 204 + + + + + 220 + + + YES + + + + + + + + + + 213 + + + + + 210 + + + + + 221 + + + + + 208 + + + + + 209 + + + + + 106 + + + YES + + + + 2 + + + 111 + + + + + 57 + + + YES + + + + + + + + + + + + + + + + 58 + + + + + 134 + + + + + 150 + + + + + 136 + + + 1111 + + + 144 + + + + + 129 + + + 121 + + + 143 + + + + + 236 + + + + + 131 + + + YES + + + + + + 149 + + + + + 145 + + + + + 130 + + + + + 24 + + + YES + + + + + + + + + 92 + + + + + 5 + + + + + 239 + + + + + 23 + + + + + 295 + + + YES + + + + + + 296 + + + YES + + + + + + + 297 + + + + + 298 + + + + + 211 + + + YES + + + + + + 212 + + + YES + + + + + + + 195 + + + + + 196 + + + + + 346 + + + + + 348 + + + YES + + + + + + 349 + + + YES + + + + + + + + 350 + + + + + 351 + + + + + 354 + + + + + 371 + + + YES + + + + + + 372 + + + YES + + + + + + + 375 + + + YES + + + + + + 376 + + + YES + + + + + + + 377 + + + YES + + + + + + 378 + + + YES + + + + + + 379 + + + YES + + + + + + + + + + + + + 380 + + + + + 381 + + + + + 382 + + + + + 383 + + + + + 384 + + + + + 385 + + + + + 386 + + + + + 387 + + + + + 388 + + + YES + + + + + + + + + + + + + + + + + + + + + 389 + + + + + 390 + + + + + 391 + + + + + 392 + + + + + 393 + + + + + 394 + + + + + 395 + + + + + 396 + + + + + 397 + + + YES + + + + + + 398 + + + YES + + + + + + 399 + + + YES + + + + + + 400 + + + + + 401 + + + + + 402 + + + + + 403 + + + + + 404 + + + + + 405 + + + YES + + + + + + + + + + 406 + + + + + 407 + + + + + 408 + + + + + 409 + + + + + 410 + + + + + 411 + + + YES + + + + + + + + 412 + + + + + 413 + + + + + 414 + + + + + 415 + + + YES + + + + + + + + + 416 + + + + + 417 + + + + + 418 + + + + + 419 + + + + + 450 + + + + + 452 + + + YES + + + + + + 453 + + + + + 456 + + + YES + + + + + + 457 + + + + + 462 + + + + + + + YES + + YES + -1.IBPluginDependency + -2.IBPluginDependency + -3.IBPluginDependency + 103.IBPluginDependency + 103.ImportedFromIB2 + 106.IBPluginDependency + 106.ImportedFromIB2 + 106.editorWindowContentRectSynchronizationRect + 111.IBPluginDependency + 111.ImportedFromIB2 + 112.IBPluginDependency + 112.ImportedFromIB2 + 124.IBPluginDependency + 124.ImportedFromIB2 + 125.IBPluginDependency + 125.ImportedFromIB2 + 125.editorWindowContentRectSynchronizationRect + 126.IBPluginDependency + 126.ImportedFromIB2 + 129.IBPluginDependency + 129.ImportedFromIB2 + 130.IBPluginDependency + 130.ImportedFromIB2 + 130.editorWindowContentRectSynchronizationRect + 131.IBPluginDependency + 131.ImportedFromIB2 + 134.IBPluginDependency + 134.ImportedFromIB2 + 136.IBPluginDependency + 136.ImportedFromIB2 + 143.IBPluginDependency + 143.ImportedFromIB2 + 144.IBPluginDependency + 144.ImportedFromIB2 + 145.IBPluginDependency + 145.ImportedFromIB2 + 149.IBPluginDependency + 149.ImportedFromIB2 + 150.IBPluginDependency + 150.ImportedFromIB2 + 19.IBPluginDependency + 19.ImportedFromIB2 + 195.IBPluginDependency + 195.ImportedFromIB2 + 196.IBPluginDependency + 196.ImportedFromIB2 + 197.IBPluginDependency + 197.ImportedFromIB2 + 198.IBPluginDependency + 198.ImportedFromIB2 + 199.IBPluginDependency + 199.ImportedFromIB2 + 200.IBPluginDependency + 200.ImportedFromIB2 + 200.editorWindowContentRectSynchronizationRect + 201.IBPluginDependency + 201.ImportedFromIB2 + 202.IBPluginDependency + 202.ImportedFromIB2 + 203.IBPluginDependency + 203.ImportedFromIB2 + 204.IBPluginDependency + 204.ImportedFromIB2 + 205.IBPluginDependency + 205.ImportedFromIB2 + 205.editorWindowContentRectSynchronizationRect + 206.IBPluginDependency + 206.ImportedFromIB2 + 207.IBPluginDependency + 207.ImportedFromIB2 + 208.IBPluginDependency + 208.ImportedFromIB2 + 209.IBPluginDependency + 209.ImportedFromIB2 + 210.IBPluginDependency + 210.ImportedFromIB2 + 211.IBPluginDependency + 211.ImportedFromIB2 + 212.IBPluginDependency + 212.ImportedFromIB2 + 212.editorWindowContentRectSynchronizationRect + 213.IBPluginDependency + 213.ImportedFromIB2 + 214.IBPluginDependency + 214.ImportedFromIB2 + 215.IBPluginDependency + 215.ImportedFromIB2 + 216.IBPluginDependency + 216.ImportedFromIB2 + 217.IBPluginDependency + 217.ImportedFromIB2 + 218.IBPluginDependency + 218.ImportedFromIB2 + 219.IBPluginDependency + 219.ImportedFromIB2 + 220.IBPluginDependency + 220.ImportedFromIB2 + 220.editorWindowContentRectSynchronizationRect + 221.IBPluginDependency + 221.ImportedFromIB2 + 23.IBPluginDependency + 23.ImportedFromIB2 + 236.IBPluginDependency + 236.ImportedFromIB2 + 239.IBPluginDependency + 239.ImportedFromIB2 + 24.IBPluginDependency + 24.ImportedFromIB2 + 24.editorWindowContentRectSynchronizationRect + 29.IBEditorWindowLastContentRect + 29.IBPluginDependency + 29.ImportedFromIB2 + 29.WindowOrigin + 29.editorWindowContentRectSynchronizationRect + 295.IBPluginDependency + 296.IBPluginDependency + 296.editorWindowContentRectSynchronizationRect + 297.IBPluginDependency + 298.IBPluginDependency + 346.IBPluginDependency + 346.ImportedFromIB2 + 348.IBPluginDependency + 348.ImportedFromIB2 + 349.IBPluginDependency + 349.ImportedFromIB2 + 349.editorWindowContentRectSynchronizationRect + 350.IBPluginDependency + 350.ImportedFromIB2 + 351.IBPluginDependency + 351.ImportedFromIB2 + 354.IBPluginDependency + 354.ImportedFromIB2 + 371.IBEditorWindowLastContentRect + 371.IBPluginDependency + 371.IBWindowTemplateEditedContentRect + 371.NSWindowTemplate.visibleAtLaunch + 371.editorWindowContentRectSynchronizationRect + 372.IBPluginDependency + 375.IBPluginDependency + 376.IBEditorWindowLastContentRect + 376.IBPluginDependency + 377.IBPluginDependency + 378.IBPluginDependency + 379.IBPluginDependency + 380.IBPluginDependency + 381.IBPluginDependency + 382.IBPluginDependency + 383.IBPluginDependency + 384.IBPluginDependency + 385.IBPluginDependency + 386.IBPluginDependency + 387.IBPluginDependency + 388.IBEditorWindowLastContentRect + 388.IBPluginDependency + 389.IBPluginDependency + 390.IBPluginDependency + 391.IBPluginDependency + 392.IBPluginDependency + 393.IBPluginDependency + 394.IBPluginDependency + 395.IBPluginDependency + 396.IBPluginDependency + 397.IBPluginDependency + 398.IBPluginDependency + 399.IBPluginDependency + 400.IBPluginDependency + 401.IBPluginDependency + 402.IBPluginDependency + 403.IBPluginDependency + 404.IBPluginDependency + 405.IBPluginDependency + 406.IBPluginDependency + 407.IBPluginDependency + 408.IBPluginDependency + 409.IBPluginDependency + 410.IBPluginDependency + 411.IBPluginDependency + 412.IBPluginDependency + 413.IBPluginDependency + 414.IBPluginDependency + 415.IBPluginDependency + 416.IBPluginDependency + 417.IBPluginDependency + 418.IBPluginDependency + 419.IBPluginDependency + 450.IBPluginDependency + 452.IBPluginDependency + 453.IBPluginDependency + 456.IBPluginDependency + 457.IBPluginDependency + 5.IBPluginDependency + 5.ImportedFromIB2 + 56.IBPluginDependency + 56.ImportedFromIB2 + 57.IBEditorWindowLastContentRect + 57.IBPluginDependency + 57.ImportedFromIB2 + 57.editorWindowContentRectSynchronizationRect + 58.IBPluginDependency + 58.ImportedFromIB2 + 72.IBPluginDependency + 72.ImportedFromIB2 + 73.IBPluginDependency + 73.ImportedFromIB2 + 74.IBPluginDependency + 74.ImportedFromIB2 + 75.IBPluginDependency + 75.ImportedFromIB2 + 77.IBPluginDependency + 77.ImportedFromIB2 + 78.IBPluginDependency + 78.ImportedFromIB2 + 79.IBPluginDependency + 79.ImportedFromIB2 + 80.IBPluginDependency + 80.ImportedFromIB2 + 81.IBPluginDependency + 81.ImportedFromIB2 + 81.editorWindowContentRectSynchronizationRect + 82.IBPluginDependency + 82.ImportedFromIB2 + 83.IBPluginDependency + 83.ImportedFromIB2 + 92.IBPluginDependency + 92.ImportedFromIB2 + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{596, 852}, {216, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{522, 812}, {146, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{436, 809}, {64, 6}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {275, 83}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{187, 434}, {243, 243}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {167, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {241, 103}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{525, 802}, {197, 73}} + {{143, 285}, {478, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + {74, 862} + {{6, 978}, {478, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{475, 832}, {234, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {215, 63}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{303, 221}, {480, 360}} + com.apple.InterfaceBuilder.CocoaPlugin + {{303, 221}, {480, 360}} + + {{33, 99}, {480, 360}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{437, 242}, {86, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{523, 2}, {178, 283}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{155, 102}, {245, 183}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{23, 794}, {245, 183}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{145, 474}, {199, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + YES + + + + + + YES + + + + + 463 + + + + YES + + AppController + NSObject + + IBProjectSource + ./Classes/AppController.h + + + + NSDocument + + YES + + YES + printDocument: + revertDocumentToSaved: + runPageLayout: + saveDocument: + saveDocumentAs: + saveDocumentTo: + + + YES + id + id + id + id + id + id + + + + YES + + YES + printDocument: + revertDocumentToSaved: + runPageLayout: + saveDocument: + saveDocumentAs: + saveDocumentTo: + + + YES + + printDocument: + id + + + revertDocumentToSaved: + id + + + runPageLayout: + id + + + saveDocument: + id + + + saveDocumentAs: + id + + + saveDocumentTo: + id + + + + + IBProjectSource + ./Classes/NSDocument.h + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + 3 + + YES + + YES + NSMenuCheckmark + NSMenuMixedState + + + YES + {9, 8} + {7, 2} + + + + diff --git a/Tests/Manual/CPUserDefaultsControllerTest/Resources/spinner.gif b/Tests/Manual/CPUserDefaultsControllerTest/Resources/spinner.gif new file mode 100644 index 000000000..06dbc2bc2 Binary files /dev/null and b/Tests/Manual/CPUserDefaultsControllerTest/Resources/spinner.gif differ diff --git a/Tests/Manual/CPUserDefaultsControllerTest/index-debug.html b/Tests/Manual/CPUserDefaultsControllerTest/index-debug.html new file mode 100644 index 000000000..eba4226b6 --- /dev/null +++ b/Tests/Manual/CPUserDefaultsControllerTest/index-debug.html @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + CPUserDefaultsControllerTest + + + + + + + + + + + + + + +
+
+ + + +
+
+ + + diff --git a/Tests/Manual/CPUserDefaultsControllerTest/index.html b/Tests/Manual/CPUserDefaultsControllerTest/index.html new file mode 100644 index 000000000..50e6efbc0 --- /dev/null +++ b/Tests/Manual/CPUserDefaultsControllerTest/index.html @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + CPUserDefaultsControllerTest + + + + + + + + + + + + +
+
+ + + +
+
+ + + diff --git a/Tests/Manual/CPUserDefaultsControllerTest/main.j b/Tests/Manual/CPUserDefaultsControllerTest/main.j new file mode 100644 index 000000000..b87982c7c --- /dev/null +++ b/Tests/Manual/CPUserDefaultsControllerTest/main.j @@ -0,0 +1,18 @@ +/* + * AppController.j + * CPUserDefaultsControllerTest + * + * Created by Alexander Ljungberg on May 30, 2011. + * Copyright 2011, WireLoad All rights reserved. + */ + +@import +@import + +@import "AppController.j" + + +function main(args, namedArgs) +{ + CPApplicationMain(args, namedArgs); +} diff --git a/Tests/Manual/RuntimeAttributesTest/AppController.j b/Tests/Manual/RuntimeAttributesTest/AppController.j new file mode 100644 index 000000000..0561523da --- /dev/null +++ b/Tests/Manual/RuntimeAttributesTest/AppController.j @@ -0,0 +1,43 @@ +/* + * AppController.j + * RuntimeAttributesTest + * + * Created by Aparajita Fishman on March 26, 2011. + * Copyright 2009, 280 North, Inc. All rights reserved. + */ + +@import + + +@implementation AppController : CPObject +{ + CPWindow theWindow; //this "outlet" is connected automatically by the Cib + CPView firstResponder; +} + +- (void)applicationDidFinishLaunching:(CPNotification)aNotification +{ + // This is called when the application is done loading. +} + +- (void)awakeFromCib +{ + // This is called when the cib is done loading. + // You can implement this method on any object instantiated from a Cib. + // It's a useful hook for setting up current UI values, and other things. + + // In this case, we want the window from Cib to become our full browser window + //[theWindow setFullPlatformWindow:YES]; +} + +- (void)setInitialResponder:(CPInteger)tag +{ + [theWindow setInitialFirstResponder:[[theWindow contentView] viewWithTag:tag]]; +} + +- (void)setValue:(id)value forUndefinedKey:(CPString)key +{ + console.log("setValue:" + value + " forKey:" + key); +} + +@end diff --git a/Tests/Manual/RuntimeAttributesTest/Info.plist b/Tests/Manual/RuntimeAttributesTest/Info.plist new file mode 100644 index 000000000..e9e570865 --- /dev/null +++ b/Tests/Manual/RuntimeAttributesTest/Info.plist @@ -0,0 +1,10 @@ + + + + + Main cib file base name + MainMenu.cib + CPBundleName + RuntimeAttributesTest + + diff --git a/Tests/Manual/RuntimeAttributesTest/Jakefile b/Tests/Manual/RuntimeAttributesTest/Jakefile new file mode 100644 index 000000000..68f1674da --- /dev/null +++ b/Tests/Manual/RuntimeAttributesTest/Jakefile @@ -0,0 +1,94 @@ +/* + * Jakefile + * test + * + * Created by aparajita on March 26, 2011. + * Copyright 2011, Victory-Heart Productions All rights reserved. + */ + +var ENV = require("system").env, + FILE = require("file"), + JAKE = require("jake"), + task = JAKE.task, + FileList = JAKE.FileList, + app = require("cappuccino/jake").app, + configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug", + OS = require("os"); + +app ("test", function(task) +{ + task.setBuildIntermediatesPath(FILE.join("Build", "test.build", configuration)); + task.setBuildPath(FILE.join("Build", configuration)); + + task.setProductName("test"); + task.setIdentifier("com.aparajitaworld.test"); + task.setVersion("1.0"); + task.setAuthor("Victory-Heart Productions"); + task.setEmail("feedback @nospam@ yourcompany.com"); + task.setSummary("test"); + task.setSources((new FileList("**/*.j")).exclude(FILE.join("Build", "**"))); + task.setResources(new FileList("Resources/**")); + task.setIndexFilePath("index.html"); + task.setInfoPlistPath("Info.plist"); + task.setNib2CibFlags("-R Resources/"); + + if (configuration === "Debug") + task.setCompilerFlags("-DDEBUG -g"); + else + task.setCompilerFlags("-O"); +}); + +task ("default", ["test"], function() +{ + printResults(configuration); +}); + +task ("build", ["default"]); + +task ("debug", function() +{ + ENV["CONFIGURATION"] = "Debug"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("release", function() +{ + ENV["CONFIGURATION"] = "Release"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("run", ["debug"], function() +{ + OS.system(["open", FILE.join("Build", "Debug", "test", "index.html")]); +}); + +task ("run-release", ["release"], function() +{ + OS.system(["open", FILE.join("Build", "Release", "test", "index.html")]); +}); + +task ("deploy", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Deployment", "test")); + OS.system(["press", "-f", FILE.join("Build", "Release", "test"), FILE.join("Build", "Deployment", "test")]); + printResults("Deployment") +}); + +task ("desktop", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Desktop", "test")); + require("cappuccino/nativehost").buildNativeHost(FILE.join("Build", "Release", "test"), FILE.join("Build", "Desktop", "test", "test.app")); + printResults("Desktop") +}); + +task ("run-desktop", ["desktop"], function() +{ + OS.system([FILE.join("Build", "Desktop", "test", "test.app", "Contents", "MacOS", "NativeHost"), "-i"]); +}); + +function printResults(configuration) +{ + print("----------------------------"); + print(configuration+" app built at path: "+FILE.join("Build", configuration, "test")); + print("----------------------------"); +} diff --git a/Tests/Manual/RuntimeAttributesTest/Resources/MainMenu.cib b/Tests/Manual/RuntimeAttributesTest/Resources/MainMenu.cib new file mode 100644 index 000000000..6e4cb2429 --- /dev/null +++ b/Tests/Manual/RuntimeAttributesTest/Resources/MainMenu.cib @@ -0,0 +1,2 @@ +280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;4E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;7E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;9E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;2;10E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;2;11E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;2;12E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;2;13E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;2;14E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;16E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;18E;E;D;K;10;$classnameS;7;CPArrayK;8;$classesA;S;7;CPArrayS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;19E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;1;0E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;58E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;65E;E;E;S;16;IBCocoaFrameworkD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;19E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;1;0E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;21E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;18;_CPCibCustomObjectK;8;$classesA;S;18;_CPCibCustomObjectS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;66E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;2;67E;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;68E;E;D;K;10;$classnameS;11;CPTextFieldK;8;$classesA;S;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;32E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;69E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;70E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;71E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;32E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;72E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;73E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;74E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;75E;K;11;$aalignmentD;K;6;CP$UIDd;2;76E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;2;77E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;78E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;79E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;2;77E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;2;77E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;2;77E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;2;81E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;2;75E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;2;76E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;32E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;82E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;83E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;84E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;32E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;72E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;73E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;85E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;82E;K;11;$aalignmentD;K;6;CP$UIDd;2;76E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;2;77E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;86E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;79E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;2;87E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;2;87E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;2;87E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;2;82E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;2;76E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;8;CPButtonK;8;$classesA;S;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;32E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;82E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;88E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;89E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;32E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;72E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;90E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;91E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;82E;K;11;$aalignmentD;K;6;CP$UIDd;2;75E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;69E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;76E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;2;92E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;1;0E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;2;75E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;2;93E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;2;94E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;2;95E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;2;96E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;2;97E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;32E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;32E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;82E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;98E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;99E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;32E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;72E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;73E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;85E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;75E;K;11;$aalignmentD;K;6;CP$UIDd;2;76E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;2;77E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;100E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;79E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;2;87E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;2;87E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;2;87E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;2;75E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;2;76E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;32E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;82E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;101E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;102E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;32E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;72E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;73E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;85E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;82E;K;11;$aalignmentD;K;6;CP$UIDd;2;76E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;2;77E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;79E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;2;87E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;2;87E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;2;87E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;2;82E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;2;76E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;32E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;82E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;104E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;99E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;32E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;72E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;73E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;85E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;75E;K;11;$aalignmentD;K;6;CP$UIDd;2;76E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;2;77E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;105E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;79E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;2;87E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;2;87E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;2;87E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;2;75E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;2;76E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;32E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;82E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;106E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;89E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;32E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;72E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;90E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;91E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;82E;K;11;$aalignmentD;K;6;CP$UIDd;2;75E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;69E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;76E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;2;90E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;1;0E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;2;75E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;6;CPViewK;8;$classesA;S;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;31E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;82E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;107E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;107E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;108E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;85E;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;109E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;32E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;82E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;110E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;111E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;32E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;72E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;73E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;85E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;75E;K;11;$aalignmentD;K;6;CP$UIDd;2;76E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;2;77E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;112E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;79E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;2;87E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;2;87E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;2;87E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;2;75E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;2;76E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;32E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;75E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;113E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;71E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;32E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;72E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;73E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;74E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;75E;K;11;$aalignmentD;K;6;CP$UIDd;2;76E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;2;77E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;78E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;79E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;2;77E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;2;77E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;2;77E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;2;81E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;2;75E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;2;76E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;S;1;0S;1;1S;1;2S;1;5S;1;3S;1;4S;1;6S;1;7S;12;File's OwnerS;1;8S;1;9S;2;10S;2;11S;2;12S;2;13S;2;15S;2;14S;2;16S;2;17S;2;18S;2;19S;2;20S;2;21D;K;10;$classnameS;31;CPCibRuntimeAttributesConnectorK;8;$classesA;S;31;CPCibRuntimeAttributesConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;59E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;19E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;1;0E;K;40;CPCibRuntimeAttributesConnectorObjectKeyD;K;6;CP$UIDd;2;19E;K;42;CPCibRuntimeAttributesConnectorKeyPathsKeyD;K;6;CP$UIDd;3;114E;K;40;CPCibRuntimeAttributesConnectorValuesKeyD;K;6;CP$UIDd;3;115E;E;D;K;6;$classD;K;6;CP$UIDd;2;59E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;30E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;1;0E;K;40;CPCibRuntimeAttributesConnectorObjectKeyD;K;6;CP$UIDd;2;30E;K;42;CPCibRuntimeAttributesConnectorKeyPathsKeyD;K;6;CP$UIDd;3;116E;K;40;CPCibRuntimeAttributesConnectorValuesKeyD;K;6;CP$UIDd;3;117E;E;D;K;6;$classD;K;6;CP$UIDd;2;59E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;24E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;1;0E;K;40;CPCibRuntimeAttributesConnectorObjectKeyD;K;6;CP$UIDd;2;24E;K;42;CPCibRuntimeAttributesConnectorKeyPathsKeyD;K;6;CP$UIDd;3;118E;K;40;CPCibRuntimeAttributesConnectorValuesKeyD;K;6;CP$UIDd;3;119E;E;D;K;10;$classnameS;20;CPCibOutletConnectorK;8;$classesA;S;20;CPCibOutletConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;63E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;16E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;19E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;120E;E;D;K;6;$classD;K;6;CP$UIDd;2;63E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;19E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;26E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;121E;E;S;8;CPObjectD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;26E;E;E;S;13;AppControllerd;1;1S;22;{{34, 189}, {125, 29}}S;19;{{0, 0}, {125, 29}}d;2;36S;9;textfieldS;19;bezeled+placeholderd;1;2d;1;4T;S;0;d;4;3072D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;80E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;122E;E;d;1;0S;21;{{34, 20}, {389, 45}}S;19;{{0, 0}, {389, 45}}S;6;normalS;104;See the User Defined Runtime Attributes for each view below and for the AppController to see the effect.F;S;22;{{37, 138}, {118, 24}}S;19;{{0, 0}, {118, 24}}S;6;buttonS;17;selected+borderedS;8;disabledS;32;{10000000000000, 10000000000000}S;8;CPWindowS;24;{{162, 112}, {548, 314}}d;2;15S;22;RuntimeAttributes TestS;23;{{179, 103}, {166, 17}}S;19;{{0, 0}, {166, 17}}S;27;This button's title was setS;23;{{179, 241}, {352, 51}}S;19;{{0, 0}, {352, 51}}S;88;This was set to be first responder by the +AppController -setInitialFirstResponder methodS;23;{{179, 141}, {166, 17}}S;24;This button was disabledS;21;{{37, 99}, {118, 24}}S;20;{{0, 0}, {548, 314}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;28E;E;E;S;13;CPApplicationS;23;{{179, 196}, {255, 17}}S;19;{{0, 0}, {255, 17}}S;40;This ordinarily would be first responderS;22;{{34, 235}, {125, 29}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;123E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;75E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;125E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;3;126E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;127E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;87E;E;E;S;8;delegateS;9;theWindowD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;69E;E;E;S;16;initialResponderS;6;hiddenS;5;titleS;6;Hello!S;7;enabledE;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/RuntimeAttributesTest/Resources/MainMenu.xib b/Tests/Manual/RuntimeAttributesTest/Resources/MainMenu.xib new file mode 100644 index 000000000..c1594db54 --- /dev/null +++ b/Tests/Manual/RuntimeAttributesTest/Resources/MainMenu.xib @@ -0,0 +1,609 @@ + + + + 1060 + 10J869 + 804 + 1038.35 + 461.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 804 + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + NSObject + + + FirstResponder + + + NSApplication + + + AppController + + + 15 + 2 + {{162, 992}, {548, 314}} + 611844096 + RuntimeAttributes Test + NSWindow + + {1.79769e+308, 1.79769e+308} + + + 256 + + + + 268 + {{37, 187}, {118, 25}} + + YES + + -2080244224 + 134217728 + button + + LucidaGrande + 13 + 1044 + + + -2038152961 + 163 + + + 400 + 75 + + + + + 268 + {{37, 148}, {118, 25}} + + YES + + -2080244224 + 134217728 + disabled + + + -2038152961 + 163 + + + 400 + 75 + + + + + 268 + {{37, 99}, {118, 22}} + + 1 + YES + + -1804468671 + 272630784 + + + + YES + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + textColor + + 3 + MAA + + + + + + + 268 + {{37, 53}, {118, 22}} + + 2 + YES + + -1804468671 + 272630784 + + + + YES + + + + + + + 268 + {{179, 194}, {166, 17}} + + YES + + 68288064 + 272630784 + This button's title was set + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + + + + + + 268 + {{34, 249}, {389, 45}} + + YES + + 67239424 + 272629760 + See the User Defined Runtime Attributes for each view below and for the AppController to see the effect. + + + + + + + + + 268 + {{179, 156}, {166, 17}} + + YES + + 68288064 + 272630784 + This button was disabled + + + + + + + + + 268 + {{179, 101}, {255, 17}} + + YES + + 68288064 + 272630784 + This ordinarily would be first responder + + + + + + + + + 268 + {{179, 22}, {352, 51}} + + YES + + 67239424 + 272629760 + VGhpcyB3YXMgc2V0IHRvIGJlIGZpcnN0IHJlc3BvbmRlciBieSB0aGUKQXBwQ29udHJvbGxlciAtc2V0 +SW5pdGlhbEZpcnN0UmVzcG9uZGVyIG1ldGhvZA + + + + + + + + {548, 314} + + + {{0, 0}, {2560, 1418}} + {1.79769e+308, 1.79769e+308} + + + + + + + delegate + + + + 10 + + + + theWindow + + + + 25 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 9 + + + App Controller + + + 23 + + + + + + + + 24 + + + + + + + + + + + + + + + + 26 + + + + + + + + 27 + + + + + 32 + + + + + + + + 33 + + + + + 34 + + + + + + + + 35 + + + + + 36 + + + + + + + + 37 + + + + + 39 + + + + + + + + 40 + + + + + 41 + + + + + + + + 42 + + + + + 43 + + + + + + + + 44 + + + + + 45 + + + + + + + + 46 + + + + + 47 + + + + + + + + 48 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{719, 660}, {548, 314}} + com.apple.InterfaceBuilder.CocoaPlugin + {{719, 660}, {548, 314}} + + com.apple.InterfaceBuilder.CocoaPlugin + + IBUserDefinedRuntimeAttributesPlaceholderName + + IBUserDefinedRuntimeAttributesPlaceholderName + + + + com.apple.InterfaceBuilder.userDefinedRuntimeAttributeType.boolean + hidden + + + + com.apple.InterfaceBuilder.userDefinedRuntimeAttributeType.string + title + Hello! + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCDAAAw3IAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCFAAAwsgAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCDAAAwtIAAA + + com.apple.InterfaceBuilder.CocoaPlugin + + IBUserDefinedRuntimeAttributesPlaceholderName + + IBUserDefinedRuntimeAttributesPlaceholderName + + + + com.apple.InterfaceBuilder.userDefinedRuntimeAttributeType.boolean + enabled + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCDAAAw0sAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDMwAAwzwAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDMQAAw0oAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDMQAAwxQAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDMQAAws4AAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCCAAAw5MAAA + + com.apple.InterfaceBuilder.CocoaPlugin + + IBUserDefinedRuntimeAttributesPlaceholderName + + IBUserDefinedRuntimeAttributesPlaceholderName + + + + com.apple.InterfaceBuilder.userDefinedRuntimeAttributeType.number + initialResponder + + + + com.apple.InterfaceBuilder.userDefinedRuntimeAttributeType.string + localized + foo + YES + + + com.apple.InterfaceBuilder.userDefinedRuntimeAttributeType.nil + null + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + 48 + + + + + AppController + NSObject + + theWindow + id + + + theWindow + + theWindow + id + + + + IBUserSource + + + + + NSObject + + delegate + id + + + delegate + + delegate + id + + + + IBUserSource + + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + + 3 + + diff --git a/Tests/Manual/RuntimeAttributesTest/Resources/spinner.gif b/Tests/Manual/RuntimeAttributesTest/Resources/spinner.gif new file mode 100644 index 000000000..06dbc2bc2 Binary files /dev/null and b/Tests/Manual/RuntimeAttributesTest/Resources/spinner.gif differ diff --git a/Tests/Manual/RuntimeAttributesTest/index-debug.html b/Tests/Manual/RuntimeAttributesTest/index-debug.html new file mode 100644 index 000000000..4a301abeb --- /dev/null +++ b/Tests/Manual/RuntimeAttributesTest/index-debug.html @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + RuntimeAttributesTest + + + + + + + + + + + + + + +
+
+ + + +
+
+ + + diff --git a/Tests/Manual/RuntimeAttributesTest/index.html b/Tests/Manual/RuntimeAttributesTest/index.html new file mode 100644 index 000000000..2c49b5954 --- /dev/null +++ b/Tests/Manual/RuntimeAttributesTest/index.html @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + RuntimeAttributesTest + + + + + + + + + + + + +
+
+ + + +
+
+ + + diff --git a/Tests/Manual/RuntimeAttributesTest/main.j b/Tests/Manual/RuntimeAttributesTest/main.j new file mode 100644 index 000000000..00aef0641 --- /dev/null +++ b/Tests/Manual/RuntimeAttributesTest/main.j @@ -0,0 +1,18 @@ +/* + * AppController.j + * test + * + * Created by aparajita on March 26, 2011. + * Copyright 2011, Victory-Heart Productions All rights reserved. + */ + +@import +@import + +@import "AppController.j" + + +function main(args, namedArgs) +{ + CPApplicationMain(args, namedArgs); +} diff --git a/Tests/Manual/SmartFoldersDemo/AppController.j b/Tests/Manual/SmartFoldersDemo/AppController.j new file mode 100644 index 000000000..fbe833c42 --- /dev/null +++ b/Tests/Manual/SmartFoldersDemo/AppController.j @@ -0,0 +1,319 @@ +/* + * AppController.j + * Smart Folders Demo + * + * Created by cacaodev on November 25, 2010. + * Copyright 2010, Your Company All rights reserved. + */ + +@import "BadgedOutlineView.j" +@import "ImageAndTextView.j" + +@import + +var rootItems = [CPArray arrayWithObject:[CPDictionary dictionaryWithObjectsAndKeys:@"SMART FOLDERS", @"name", YES, @"isContainer"]], + smartFolderImage = [[CPImage alloc] initWithContentsOfFile:@"Resources/SmartFolder.png" size:CGSizeMake(24, 24)], + newFolder = [CPDictionary dictionaryWithObjectsAndKeys:@"Smart Folder", @"name", [CPPredicate predicateWithFormat:@"firstName BEGINSWITH ''"], @"predicate"]; + +@implementation AppController : CPObject +{ +// Outlets in MainMenu.cib + @outlet CPWindow theWindow; + @outlet CPView searchBar; + @outlet CPSearchField searchField; + @outlet CPOutlineView smartOutlineView; + @outlet CPTableView table; + @outlet CPArrayController tableController; + +// Outlets in PredicateEditor.cib + @outlet CPPredicateEditor predicateEditor; + @outlet CPTextField folderNameField; + @outlet CPWindow predicateSheet; + +//Model + CPArray smartFolders; + CPString searchCategory; + CPArray tableArray @accessors; + CPPredicate filterPredicate @accessors; +} + +- (void)applicationDidFinishLaunching:(CPNotification)aNotification +{ + // This is called when the application is done loading. + var path = [[CPBundle mainBundle] pathForResource:@"tableArray.plist"], + request = [CPURLRequest requestWithURL:path], + connection = [CPURLConnection connectionWithRequest:request delegate:self]; + + smartFolders = [CPArray array]; + // restore saved folders if they exist + var saved = [[CPUserDefaults standardUserDefaults] objectForKey:@"SmartFolders"]; + if (saved) + { + [smartFolders addObjectsFromArray:saved]; + [smartOutlineView reloadData]; + } + + [[CPNotificationCenter defaultCenter] addObserver:self selector:@selector(ruleEditorRowsDidChange:) name:CPRuleEditorRowsDidChangeNotification object:nil]; +} +// Save folders into defaults +- (void)saveSmartFolders +{ + [CPTimer scheduledTimerWithTimeInterval:0 target:self selector:@selector(_saveSmartFolders) userInfo:nil repeats:NO]; +} + +- (void)_saveSmartFolders +{ + var defaults = [CPUserDefaults standardUserDefaults]; + [defaults setObject:smartFolders forKey:@"SmartFolders"]; +} + +- (void)awakeFromCib +{ +// Search Bar + var color = [CPColor colorWithPatternImage:[[CPImage alloc] initWithContentsOfFile:@"Resources/searchBarBlue.png" size:CGSizeMake(1.0, 34.0)]]; + [searchBar setBackgroundColor:color]; + +// Smart Outline View + var dataView = [[ImageAndTextView alloc] initWithFrame:CGRectMakeZero()], + column = [[smartOutlineView tableColumns] objectAtIndex:0]; + [column setDataView:dataView]; + [smartOutlineView setBackgroundColor:[CPColor colorWithRed:212.0 / 255.0 green:221.0 / 255.0 blue:230.0 / 255.0 alpha:1.0]]; + [smartOutlineView setDoubleAction:@selector(editFolderAction:)]; + [smartOutlineView setAction:@selector(outlineViewAction:)]; + [smartOutlineView setSourceListDataSource:self]; + [smartOutlineView setRowHeight:26]; + [smartOutlineView expandItem:[smartOutlineView itemAtRow:0]]; + +// Search Field + [searchField setSearchMenuTemplate:[searchField defaultSearchMenuTemplate]]; + [searchField setRecentsAutosaveName:"autosave"]; + +// Button Bar + var plusButton = [CPButtonBar plusButton], + minusButton = [CPButtonBar minusButton], + superView = [[smartOutlineView enclosingScrollView] contentView], + buttonBar = [[CPButtonBar alloc] initWithFrame:CGRectMake(0.0, CGRectGetHeight([superView frame]) - 26, CGRectGetWidth([superView frame]), 26)]; + + [plusButton setTarget:self]; + [minusButton setTarget:self]; + [plusButton setAction:@selector(createNewFolder:)]; + [minusButton setAction:@selector(removeFolder:)]; + + [buttonBar setHasResizeControl:YES]; + [buttonBar setAutoresizingMask:CPViewWidthSizable | CPViewMinYMargin]; + [buttonBar setButtons:[CPArray arrayWithObjects:plusButton, minusButton]]; + [superView addSubview:buttonBar]; + + [theWindow setFullBridge:YES]; +} +// Get the table data +- (void)connection:(CPURLConnection)connection didReceiveData:(CPString)dataString +{ + if (!dataString) + return; + + var data = [[CPData alloc] initWithRawString:dataString], + array = [CPPropertyListSerialization propertyListFromData:data format:CPPropertyListXMLFormat_v1_0]; + + var count = [array count]; + while (count--) + { + var record = array[count], + string = [record objectForKey:@"birthDate"], + date = [[CPDate alloc] initWithString:string]; + + [record setObject:date forKey:@"birthDate"]; + } + + [self setTableArray:array]; +} + +// ======================= +// ! Search field action +// ======================= +- (IBAction)searchFieldFilter:(id)sender +{ + var searchString = [searchField stringValue], + predicate = [CPPredicate predicateWithFormat:@"(%K CONTAINS[cd] %@) OR (%K CONTAINS[cd] %@)", "firstName", searchString, "lastName", searchString]; + + [self setFilterPredicate:predicate]; +} + +// ======================== +// ! Manage smart folders +// ======================== + +// Simple click: just filter +- (IBAction)outlineViewAction:(id)sender +{ + var folder = [self selectedFolder], + predicate = [folder objectForKey:@"predicate"]; + + [self setFilterPredicate:predicate]; + + [CPTimer scheduledTimerWithTimeInterval:0 target:self selector:@selector(setPredicateEditorValue:) userInfo:predicate repeats:NO]; +} + +- (void)setPredicateEditorValue:(CPTimer)timer +{ + [predicateEditor setObjectValue:[timer userInfo]]; +} + +// Double click: edit folder +- (IBAction)editFolderAction:(id)sender +{ + var folder = [self selectedFolder]; + [self displaySheetWithFolder:folder]; +} + +- (IBAction)createNewFolder:(id)sender +{ + var folder = [newFolder copy]; + [smartFolders addObject:folder]; + [smartOutlineView reloadData]; + [smartOutlineView selectRowIndexes:[CPIndexSet indexSetWithIndex:[smartFolders count]] byExtendingSelection:NO]; + + [self displaySheetWithFolder:folder]; +} + +- (IBAction)removeFolder:(id)sender +{ + var selectionIndexes = [smartOutlineView selectedRowIndexes]; + if ([selectionIndexes count] == 0) + return; + + [smartFolders removeObjectAtIndex:[selectionIndexes firstIndex] - 1]; + [smartOutlineView reloadData]; + [smartOutlineView selectRowIndexes:[CPIndexSet indexSet] byExtendingSelection:NO]; + [self saveSmartFolders]; +} + +- (void)displaySheetWithFolder:(id)folder +{ + if (predicateSheet == nil) + [CPBundle loadCibNamed:@"PredicateEditor" owner:self]; + + [folderNameField setStringValue:[folder objectForKey:@"name"]]; + [predicateEditor setObjectValue:[folder objectForKey:@"predicate"]]; // nil is ok + + [predicateSheet makeFirstResponder:folderNameField]; + + [CPApp beginSheet:predicateSheet modalForWindow:theWindow modalDelegate:self didEndSelector:@selector(sheetDidEnd:returnCode:folder:) contextInfo:folder]; +} + +- (IBAction)closeSheet:(id)sender +{ + if ([sender tag] == CPOKButton) + [predicateEditor reloadPredicate]; + + [CPApp endSheet:predicateSheet returnCode:[sender tag]]; +} + +- (void)sheetDidEnd:(CPWindow)aSheet returnCode:(int)returnCode folder:(id)folder +{ + var name = [folderNameField stringValue]; + + if (returnCode == CPOKButton && [name length] > 0) + { + var predicate = [predicateEditor objectValue]; + [self setFilterPredicate:predicate]; + + [folder setObject:predicate forKey:@"predicate"]; + [folder setObject:name forKey:@"name"]; + [folder setObject:[[tableController arrangedObjects] count] forKey:@"count"]; + [smartOutlineView reloadData]; + + [self saveSmartFolders]; + } +} +// convenience method +- (id)selectedFolder +{ + var selectionIndexes = [smartOutlineView selectedRowIndexes]; + if ([selectionIndexes count] > 0) + { + return [smartFolders objectAtIndex:[selectionIndexes firstIndex] - 1]; // O is not selectable + } + + return nil; +} + +// ================================================================ +// Badged Outline View data source & delegate methods. +// ================================================================ + +- (CPArray)childrenForItem:(id)item +{ + if (item == nil) + return rootItems; + + return smartFolders; +} + +- (id)outlineView:(CPOutlineView)theOutlineView child:(CPInteger)index ofItem:(id)item +{ + var children = [self childrenForItem:item]; + return [children objectAtIndex:index]; +} + +- (CPInteger)outlineView:(CPOutlineView)theOutlineView numberOfChildrenOfItem:(id)item +{ + var children = [self childrenForItem:item]; + return [[self childrenForItem:item] count]; +} + +- (id)outlineView:(CPOutlineView)theOutlineView objectValueForTableColumn:(CPTableColumn)tableColumn byItem:(id)item +{ + return " " + [item objectForKey:@"name"]; +} + +- (void)outlineView:(CPOutlineView)theOutlineView willDisplayView:(CPView)aView forTableColumn:(CPTableColumn)tableColumn item:(id)item +{ + if (![aView isKindOfClass:[ImageAndTextView class]]) + return; + + var isContainer = !![item objectForKey:@"isContainer"]; + if (isContainer) + { + [aView setFont:[CPFont boldSystemFontOfSize:11.0]]; + [aView setTextColor:[CPColor colorWithWhite:100.0 / 255.0 alpha:0.9]]; + [aView setImagePosition:CPNoImage]; + } + else + { + [aView setImagePosition:CPImageLeft]; + [aView setImage:smartFolderImage]; + } +} + +- (BOOL)outlineView:(CPOutlineView)theOutlineView shouldSelectItem:(id)item +{ + return ![item objectForKey:@"isContainer"]; +} + +- (BOOL)outlineView:(CPOutlineView)theOutlineView isItemExpandable:(id)item +{ + return !![item objectForKey:@"isContainer"]; +} +// Badged outline data source methods +- (BOOL)sourceList:(CPOutlineView)aSourceList itemHasBadge:(id)item +{ + return ([item objectForKey:@"count"] != nil); +} + +- (CPInteger)sourceList:(CPOutlineView)aSourceList badgeValueForItem:(id)item +{ + return [item objectForKey:@"count"]; +} + +// Resize the sheet if needed +- (void)ruleEditorRowsDidChange:(CPNotification)notif +{ + var frame = [predicateSheet frame], + newHeight = [predicateEditor numberOfRows] * [predicateEditor rowHeight] + 103; + + frame.size.height = MAX([predicateSheet minSize].height, newHeight); + [predicateSheet setFrame:frame display:[predicateSheet isSheet] animate:[predicateSheet isSheet]]; +} + +@end diff --git a/Tests/Manual/SmartFoldersDemo/BadgedOutlineView.j b/Tests/Manual/SmartFoldersDemo/BadgedOutlineView.j new file mode 100644 index 000000000..8bf191afb --- /dev/null +++ b/Tests/Manual/SmartFoldersDemo/BadgedOutlineView.j @@ -0,0 +1,264 @@ +/* + * BadgedOutlineView.j + * + * Created by cacaodev on February 22, 2010. + * Copyright 2010, All rights reserved. + * + * Based on PXSourceList + * Created by Alex Rozanski on 05/09/2009. + * Copyright 2009-10 Alex Rozanski http://perspx.com +*/ + +@import "AppController.j" + +var MIN_BADGE_WIDTH = 22.0, //The minimum badge width for each item (default 22.0) + BADGE_HEIGHT = 14.0, //The badge height for each item (default 14.0) + BADGE_MARGIN = 5.0, //The spacing between the badge and the cell for that row + ROW_RIGHT_MARGIN = 5.0, //The spacing between the right edge of the badge and the edge of the table column + BADGE_BACKGROUND_COLOR = [CPColor colorWithCalibratedRed:(152/255.0) green:(168/255.0) blue:(202/255.0) alpha:1], + BADGE_HIDDEN_BACKGROUND_COLOR = [CPColor colorWithWhite:(180/255.0) alpha:1], + BADGE_SELECTED_TEXT_COLOR = [CPColor colorWithCalibratedRed:(75/255.0) green:(137/255.0) blue:(208/255.0) alpha:1], + BADGE_SELECTED_UNFOCUSED_TEXT_COLOR = [CPColor colorWithCalibratedRed:(153/255.0) green:(169/255.0) blue:(203/255.0) alpha:1], + BADGE_SELECTED_HIDDEN_TEXT_COLOR = [CPColor colorWithCalibratedWhite:(170/255.0) alpha:1], + BADGE_FONT = [CPFont boldSystemFontOfSize:11]; + +var CPSourceListDataSource_sourceList_itemHasBadge_ = 1 << 1, + CPSourceListDataSource_sourceList_badgeValueForItem_ = 1 << 2, + CPSourceListDataSource_sourceList_badgeBackgroundColorForItem_ = 1 << 3, + CPSourceListDataSource_sourceList_badgeTextColorForItem_ = 1 << 4; + +@implementation BadgedOutlineView : CPOutlineView +{ + id _sourceListDataSource @accessors(property=sourceListDataSource); + int _implementedSourceListDataSourceMethods; +} + +- (void)setSourceListDataSource:(id)aDataSource +{ + _sourceListDataSource = aDataSource; + implementedSourceListDataSourceMethods = 0; + + if ([_sourceListDataSource respondsToSelector:@selector(sourceList:itemHasBadge:)]) + implementedSourceListDataSourceMethods |= CPSourceListDataSource_sourceList_itemHasBadge_; + if ([_sourceListDataSource respondsToSelector:@selector(sourceList:badgeValueForItem:)]) + implementedSourceListDataSourceMethods |= CPSourceListDataSource_sourceList_badgeValueForItem_; + if ([_sourceListDataSource respondsToSelector:@selector(sourceList:badgeBackgroundColorForItem:)]) + implementedSourceListDataSourceMethods |= CPSourceListDataSource_sourceList_badgeBackgroundColorForItem_; + if ([_sourceListDataSource respondsToSelector:@selector(sourceList:badgeTextColorForItem:)]) + implementedSourceListDataSourceMethods |= CPSourceListDataSource_sourceList_badgeTextColorForItem_; +} + +- (BOOL)itemHasBadge:(id)item +{ + if (implementedSourceListDataSourceMethods & CPSourceListDataSource_sourceList_itemHasBadge_) + return [_sourceListDataSource sourceList:self itemHasBadge:item]; + + return NO; +} + +- (CPInteger)badgeValueForItem:(id)item +{ + if ([self itemHasBadge:item] && implementedSourceListDataSourceMethods & CPSourceListDataSource_sourceList_badgeValueForItem_) + return [_sourceListDataSource sourceList:self badgeValueForItem:item]; + + return CPNotFound; +} + +//This method calculates and returns the size of the badge for the row index passed to the method. If the +//row for the row index passed to the method does not have a badge, then NSZeroSize is returned. +- (CGSize)sizeOfBadgeAtRow:(CPInteger)rowIndex +{ + var rowItem = [self itemAtRow:rowIndex]; + + //Make sure that the item has a badge + if (![self itemHasBadge:rowItem]) + return CGSizeZero(); + + var badgeString = [CPString stringWithFormat:@"%d", [self badgeValueForItem:rowItem]]; + + var stringSize = [badgeString sizeWithFont:BADGE_FONT]; + + //Calculate the width needed to display the text or the minimum width if it's smaller + var width = MAX(MIN_BADGE_WIDTH, stringSize.width + 2 * BADGE_MARGIN); + + return CGSizeMake(width, BADGE_HEIGHT); +} + +- (void)drawRow:(CPInteger)rowIndex clipRect:(CGRect)clipRect +{ + var item = [self itemAtRow:rowIndex]; + //Draw the badge if the item has one + if ([self itemHasBadge:item]) + { + var columnIndex = [_tableColumns indexOfObjectIdenticalTo:[self outlineTableColumn]], + viewRect = [self frameOfDataViewAtColumn:columnIndex row:rowIndex], + badgeSize = [self sizeOfBadgeAtRow:rowIndex], + + badgeFrame = CGRectMake(CGRectGetMaxX(viewRect) - badgeSize.width - ROW_RIGHT_MARGIN, + CGRectGetMidY(viewRect) - (badgeSize.height/2.0), + badgeSize.width, + badgeSize.height); + + [self drawBadgeForRow:rowIndex inRect:badgeFrame]; + } +} + +- (void)drawBadgeForRow:(CPInteger)rowIndex inRect:(CGRect)badgeFrame +{ + + var rowItem = [self itemAtRow:rowIndex], + badgePath = [CPBezierPath bezierPath]; + + [badgePath appendBezierPathWithRoundedRect:badgeFrame xRadius:(BADGE_HEIGHT/2.0) yRadius:(BADGE_HEIGHT/2.0)]; + + //Get window and control state to determine colours used + var isFocused = [[[self window] firstResponder] isEqual:self], + rowBeingEdited = -1 // uninplemented [self editedRow]; + + //Set the attributes based on the row state + var backgroundColor, + textColor; + + if ([[self selectedRowIndexes] containsIndex:rowIndex]) + { + backgroundColor = [CPColor whiteColor]; + + //Set the text color based on window and control state + if (isFocused || rowBeingEdited == rowIndex) + textColor = BADGE_SELECTED_TEXT_COLOR; + else if (!isFocused) + textColor = BADGE_SELECTED_UNFOCUSED_TEXT_COLOR; + else + textColor = BADGE_SELECTED_HIDDEN_TEXT_COLOR; + } + else + { + //Set the text colour based on window and control state + textColor = [CPColor whiteColor]; + + //If the data source returns a custom colour.. + if (implementedSourceListDataSourceMethods & CPSourceListDataSource_sourceList_badgeBackgroundColorForItem_) + { + backgroundColor = [_sourceListDataSource sourceList:self badgeBackgroundColorForItem:rowItem]; + + if (backgroundColor == nil) + backgroundColor = BADGE_BACKGROUND_COLOR; + } + else //Otherwise use the default (purple-blue colour) + backgroundColor = BADGE_BACKGROUND_COLOR; + + //If the delegate wants a custom badge text colour.. + if (implementedSourceListDataSourceMethods & CPSourceListDataSource_sourceList_badgeTextColorForItem_) + { + textColor = [_sourceListDataSource sourceList:self badgeTextColorForItem:rowItem]; + + if (textColor == nil) + textColor = [CPColor whiteColor]; + } + } + + [backgroundColor set]; + [badgePath fill]; + + //Draw the badge text + var badgeString = [CPString stringWithFormat:@"%d", [self badgeValueForItem:rowItem]], + stringSize = [badgeString sizeWithFont:BADGE_FONT], + badgeTextPoint = CGPointMake(CGRectGetMidX(badgeFrame) - (stringSize.width/2.0), //Center in the badge frame + CGRectGetMidY(badgeFrame) + (stringSize.height/4.0)); //Center in the badge frame + [textColor setFill]; + [badgeString drawAtPoint:badgeTextPoint withFont:BADGE_FONT]; +} + +/* This CPOutlineView subclass is necessary only if you want to delete items by dragging them to the trash. In order to support drags to the trash, you need to implement draggedImage:endedAt:operation: and handle the CPDragOperationDelete operation. For any other operation, pass the message to the superclass +*/ +- (void)draggedImage:(CPImage)image endedAt:(CPPoint)screenPoint operation:(CPDragOperation)operation +{ + if (operation == CPDragOperationDelete) + { + // Tell all of the dragged nodes to remove themselves from the model. + var selection = [[self dataSource] draggedNodes], + count = [selection count]; + + while (count--) + { + var node = selection[count]; + [[[node parentNode] mutableChildNodes] removeObject:node]; + } + + [self reloadData]; + [self deselectAll:nil]; + } + else + { + [super draggedImage:image endedAt:screenPoint operation:operation]; + } +} + +@end + +@implementation CPOutlineView (MyExtensions) + +- (CPView)preparedViewAtColumn:(int)column row:(int)row +{ + return [self _newDataViewForRow:row tableColumn:_tableColumns[column]]; +} + +- (CPArray)selectedItems +{ + var items = [CPArray array], + selectedRows = [self selectedRowIndexes], + row = [selectedRows firstIndex]; + + if (selectedRows != nil) + { + while (row != CPNotFound) + { + [items addObject:[self itemAtRow:row]]; + row = [selectedRows indexGreaterThanIndex:row]; + } + } + + return items; +} + +- (void)setSelectedItems:(CPArray)items +{ + // If we are extending the selection, we start with the existing selection; otherwise, we create a new blank set of the indexes. + var newSelection = [CPIndexSet indexSet], + count = [items count]; + + for (var i = 0; i < count; i++) + { + var row = [self rowForItem:[items objectAtIndex:i]]; + if (row != CPNotFound) + [newSelection addIndex:row]; + } + + [self selectRowIndexes:newSelection byExtendingSelection:NO]; +} + +@end + +@implementation CPString (DrawingAdditions) + +- (CGSize)drawAtPoint:(CGPoint)point withFont:(CPFont)font +{ + var ctx = [[CPGraphicsContext currentContext] graphicsPort]; + CGContextSaveGState(ctx); + CGContextSetFont(ctx, font); + CGContextShowTextAtPoint(ctx, point.x, point.y + 1, self, 0); + CGContextRestoreGState(ctx); + return [self sizeWithFont:font]; +} + +@end + +function CGContextShowTextAtPoint(aContext, x, y, aString,/* unused */ aStringLength) +{ + aContext.fillText(aString, x, y); +} + +function CGContextSetFont(aContext, aFont) +{ + aContext.font = [aFont cssString]; +} diff --git a/Tests/Manual/SmartFoldersDemo/ImageAndTextView.j b/Tests/Manual/SmartFoldersDemo/ImageAndTextView.j new file mode 100644 index 000000000..995c5926f --- /dev/null +++ b/Tests/Manual/SmartFoldersDemo/ImageAndTextView.j @@ -0,0 +1,69 @@ + +@implementation ImageAndTextView : _CPImageAndTextView +{ +} + +- (id)initWithFrame:(CGRect)frame +{ + if (self = [super initWithFrame:frame]) + { + [self _initShared]; + } + + return self; +} + +- (void)_initShared +{ + //[self setLineBreakMode:CPLineBreakByTruncatingTail]; + [self setImagePosition:CPImageLeft]; + [self setAlignment:CPLeftTextAlignment]; + [self setVerticalAlignment:CPCenterVerticalTextAlignment]; +} + +- (id)initWithCoder:(CPCoder)coder +{ + self = [super initWithCoder:coder]; + [self _initShared]; + + return self; +} + +- (void)encodeWithCoder:(CPCoder)coder +{ + [super encodeWithCoder:coder]; +} + +- (id)objectValue +{ + return [self text]; +} + +- (void)setObjectValue:(id)value +{ + [self setText:value]; +} + +- (void)setThemeState:(CPThemeState)state +{ + if (state === CPThemeStateSelectedDataView) + { + [self setTextColor:[CPColor whiteColor]]; + [self setFont:[CPFont boldSystemFontOfSize:13]]; + } + + [super setThemeState:state]; +} + +- (void)unsetThemeState:(CPThemeState)state +{ + if (state === CPThemeStateSelectedDataView) + { + [self setTextColor:[CPColor colorWithWhite:0.3 alpha:1]]; + [self setFont:[CPFont systemFontOfSize:13]]; + } + + [super unsetThemeState:state]; +} +@end + diff --git a/Tests/Manual/SmartFoldersDemo/Info.plist b/Tests/Manual/SmartFoldersDemo/Info.plist new file mode 100644 index 000000000..8f75aee51 --- /dev/null +++ b/Tests/Manual/SmartFoldersDemo/Info.plist @@ -0,0 +1,12 @@ + + + + + Main cib file base name + MainMenu.cib + CPBundleName + SmartFoldersDemo + CPPrincipalClass + CPApplication + + diff --git a/Tests/Manual/SmartFoldersDemo/Jakefile b/Tests/Manual/SmartFoldersDemo/Jakefile new file mode 100644 index 000000000..d7c4148a6 --- /dev/null +++ b/Tests/Manual/SmartFoldersDemo/Jakefile @@ -0,0 +1,94 @@ +/* + * Jakefile + * SmartFoldersDemo + * + * Created by You on November 25, 2010. + * Copyright 2010, Your Company All rights reserved. + */ + +var ENV = require("system").env, + FILE = require("file"), + JAKE = require("jake"), + task = JAKE.task, + FileList = JAKE.FileList, + app = require("cappuccino/jake").app, + configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug", + OS = require("os"); + +app ("SmartFoldersDemo", function(task) +{ + task.setBuildIntermediatesPath(FILE.join("Build", "SmartFoldersDemo.build", configuration)); + task.setBuildPath(FILE.join("Build", configuration)); + + task.setProductName("SmartFoldersDemo"); + task.setIdentifier("com.yourcompany."); + task.setVersion("1.0"); + task.setAuthor("Your Company"); + task.setEmail("feedback @nospam@ yourcompany.com"); + task.setSummary("SmartFoldersDemo"); + task.setSources((new FileList("**/*.j")).exclude(FILE.join("Build", "**"))); + task.setResources(new FileList("Resources/**")); + task.setIndexFilePath("index.html"); + task.setInfoPlistPath("Info.plist"); + task.setNib2CibFlags("-R Resources/"); + + if (configuration === "Debug") + task.setCompilerFlags("-DDEBUG -g"); + else + task.setCompilerFlags("-O"); +}); + +task ("default", ["SmartFoldersDemo"], function() +{ + printResults(configuration); +}); + +task ("build", ["default"]); + +task ("debug", function() +{ + ENV["CONFIGURATION"] = "Debug"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("release", function() +{ + ENV["CONFIGURATION"] = "Release"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("run", ["debug"], function() +{ + OS.system(["open", FILE.join("Build", "Debug", "SmartFoldersDemo", "index.html")]); +}); + +task ("run-release", ["release"], function() +{ + OS.system(["open", FILE.join("Build", "Release", "SmartFoldersDemo", "index.html")]); +}); + +task ("deploy", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Deployment", "SmartFoldersDemo")); + OS.system(["press", "-f", FILE.join("Build", "Release", "SmartFoldersDemo"), FILE.join("Build", "Deployment", "SmartFoldersDemo")]); + printResults("Deployment") +}); + +task ("desktop", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Desktop", "SmartFoldersDemo")); + require("cappuccino/nativehost").buildNativeHost(FILE.join("Build", "Release", "SmartFoldersDemo"), FILE.join("Build", "Desktop", "SmartFoldersDemo", "SmartFoldersDemo.app")); + printResults("Desktop") +}); + +task ("run-desktop", ["desktop"], function() +{ + OS.system([FILE.join("Build", "Desktop", "SmartFoldersDemo", "SmartFoldersDemo.app", "Contents", "MacOS", "NativeHost"), "-i"]); +}); + +function printResults(configuration) +{ + print("----------------------------"); + print(configuration+" app built at path: "+FILE.join("Build", configuration, "SmartFoldersDemo")); + print("----------------------------"); +} diff --git a/Tests/Manual/SmartFoldersDemo/Resources/MainMenu.cib b/Tests/Manual/SmartFoldersDemo/Resources/MainMenu.cib new file mode 100644 index 000000000..0d6adb5d7 --- /dev/null +++ b/Tests/Manual/SmartFoldersDemo/Resources/MainMenu.cib @@ -0,0 +1 @@ +280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;4E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;7E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;9E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;2;10E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;2;11E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;2;12E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;2;13E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;2;14E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;16E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;18E;E;D;K;10;$classnameS;7;CPArrayK;8;$classesA;S;7;CPArrayS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;1;0E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;80E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;48E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;81E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;100E;E;E;S;16;IBCocoaFrameworkD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;1;0E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;49E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;18;_CPCibCustomObjectK;8;$classesA;S;18;_CPCibCustomObjectS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;101E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;3;102E;E;D;K;10;$classnameS;10;CPScrollerK;8;$classesA;S;10;CPScrollerS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;44E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;104E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;105E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;44E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;106E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;107E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;108E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;109E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;44E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;110E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;111E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;103E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;112E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;52E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;113E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;114E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;52E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;106E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;107E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;108E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;109E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;52E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;110E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;111E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;103E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;115E;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;101E;E;D;K;10;$classnameS;16;_CPCibCustomViewK;8;$classesA;S;16;_CPCibCustomViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;30E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;116E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;116E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;117E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;30E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;118E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;119E;K;28;_CPCibCustomViewClassNameKeyD;K;6;CP$UIDd;3;120E;E;D;K;10;$classnameS;13;CPTableColumnK;8;$classesA;S;13;CPTableColumnS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;3;121E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;122E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;123E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;124E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;126E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;128E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;129E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;130E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;131E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;17;CPArrayControllerK;8;$classesA;S;17;CPArrayControllerS;18;CPObjectControllerS;12;CPControllerS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;27E;K;28;CPObjectControllerContentKeyD;K;6;CP$UIDd;1;0E;K;36;CPObjectControllerObjectClassNameKeyD;K;6;CP$UIDd;3;132E;K;31;CPObjectControllerIsEditableKeyD;K;6;CP$UIDd;3;131E;K;49;CPObjectControllerAutomaticallyPreparesContentKeyD;K;6;CP$UIDd;3;130E;K;37;CPArrayControllerAvoidsEmptySelectionD;K;6;CP$UIDd;3;131E;K;49;CPArrayControllerClearsFilterPredicateOnInsertionD;K;6;CP$UIDd;3;130E;K;41;CPArrayControllerFilterRestrictsInsertionD;K;6;CP$UIDd;3;131E;K;35;CPArrayControllerPreservesSelectionD;K;6;CP$UIDd;3;131E;K;39;CPArrayControllerSelectsInsertedObjectsD;K;6;CP$UIDd;3;131E;K;47;CPArrayControllerAlwaysUsesMultipleValuesMarkerD;K;6;CP$UIDd;3;130E;K;47;CPArrayControllerAutomaticallyRearrangesObjectsD;K;6;CP$UIDd;3;130E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;3;133E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;134E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;135E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;124E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;136E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;137E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;129E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;130E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;131E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;32E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;138E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;139E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;140E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;32E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;141E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;119E;K;28;_CPCibCustomViewClassNameKeyD;K;6;CP$UIDd;3;142E;E;D;K;10;$classnameS;11;CPSplitViewK;8;$classesA;S;11;CPSplitViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;31E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;39E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;143E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;143E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;144E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;39E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;145E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;146E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;119E;K;22;CPSplitViewDelegateKeyD;K;6;CP$UIDd;1;0E;K;24;CPSplitViewIsVerticalKeyD;K;6;CP$UIDd;3;131E;K;28;CPSplitViewIsPaneSplitterKeyD;K;6;CP$UIDd;3;130E;E;D;K;10;$classnameS;13;CPSearchFieldK;8;$classesA;S;13;CPSearchFieldS;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;24E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;147E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;148E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;24E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;149E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;150E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;151E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;152E;K;11;$aalignmentD;K;6;CP$UIDd;3;111E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;153E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;154E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;131E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;131E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;131E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;156E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;152E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;111E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;157E;K;27;CPSendsWholeSearchStringKeyD;K;6;CP$UIDd;3;130E;K;33;CPSendsSearchStringImmediatelyKeyD;K;6;CP$UIDd;3;130E;K;19;CPMaximumRecentsKeyD;K;6;CP$UIDd;3;158E;K;24;CPRecentsAutosaveNameKeyD;K;6;CP$UIDd;3;159E;E;D;K;10;$classnameS;17;CPTableHeaderViewK;8;$classesA;S;17;CPTableHeaderViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;35E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;160E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;161E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;161E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;162E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;119E;K;29;CPTableHeaderViewTableViewKeyD;K;6;CP$UIDd;2;41E;K;33;CPTableHeaderViewDrawsColumnLinesD;K;6;CP$UIDd;3;131E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;44E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;163E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;164E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;44E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;106E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;107E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;108E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;165E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;44E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;166E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;111E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;103E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;167E;E;D;K;10;$classnameS;6;CPViewK;8;$classesA;S;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;38E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;168E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;168E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;169E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;119E;E;D;K;10;$classnameS;11;CPTableViewK;8;$classesA;S;11;CPTableViewS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;40E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;170E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;171E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;171E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;170E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;145E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;172E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;119E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;111E;K;24;CPTableViewDataSourceKeyD;K;6;CP$UIDd;1;0E;K;22;CPTableViewDelegateKeyD;K;6;CP$UIDd;1;0E;K;23;CPTableViewRowHeightKeyD;K;6;CP$UIDd;3;173E;K;30;CPTableViewIntercellSpacingKeyD;K;6;CP$UIDd;3;174E;K;37;CPTableViewSelectionHighlightStyleKeyD;K;6;CP$UIDd;3;103E;K;37;CPTableViewColumnAutoresizingStyleKeyD;K;6;CP$UIDd;3;103E;K;31;CPTableViewMultipleSelectionKeyD;K;6;CP$UIDd;3;130E;K;28;CPTableViewEmptySelectionKeyD;K;6;CP$UIDd;3;131E;K;30;CPTableViewColumnReorderingKeyD;K;6;CP$UIDd;3;131E;K;28;CPTableViewColumnResizingKeyD;K;6;CP$UIDd;3;131E;K;29;CPTableViewColumnSelectionKeyD;K;6;CP$UIDd;3;131E;K;26;CPTableViewTableColumnsKeyD;K;6;CP$UIDd;3;175E;K;23;CPTableViewGridColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTableViewGridStyleMaskKeyD;K;6;CP$UIDd;3;176E;K;39;CPTableViewUsesAlternatingBackgroundKeyD;K;6;CP$UIDd;3;131E;K;34;CPTableViewAlternatingRowColorsKeyD;K;6;CP$UIDd;1;0E;K;24;CPTableViewCornerViewKeyD;K;6;CP$UIDd;3;178E;K;24;CPTableViewHeaderViewKeyD;K;6;CP$UIDd;2;36E;K;26;CPTableViewAutosaveNameKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;3;179E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;134E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;141E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;180E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;181E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;182E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;129E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;130E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;131E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;12;CPScrollViewK;8;$classesA;S;12;CPScrollViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;43E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;32E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;183E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;183E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;184E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;32E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;185E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;186E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;119E;K;23;CPScrollViewContentViewD;K;6;CP$UIDd;3;188E;K;29;CPScrollViewHeaderClipViewKeyD;K;6;CP$UIDd;1;0E;K;21;CPScrollViewVScrollerD;K;6;CP$UIDd;2;37E;K;21;CPScrollViewHScrollerD;K;6;CP$UIDd;2;20E;K;23;CPScrollViewVLineScrollD;K;6;CP$UIDd;3;141E;K;23;CPScrollViewVPageScrollD;K;6;CP$UIDd;3;141E;K;23;CPScrollViewHLineScrollD;K;6;CP$UIDd;3;141E;K;23;CPScrollViewHPageScrollD;K;6;CP$UIDd;3;141E;K;24;CPScrollViewHasVScrollerD;K;6;CP$UIDd;3;130E;K;24;CPScrollViewHasHScrollerD;K;6;CP$UIDd;3;130E;K;29;CPScrollViewAutohidesScrollerD;K;6;CP$UIDd;3;130E;K;25;CPScrollViewCornerViewKeyD;K;6;CP$UIDd;1;0E;K;31;CPScrollViewBottomCornerViewKeyD;K;6;CP$UIDd;3;189E;K;25;CPScrollViewBorderTypeKeyD;K;6;CP$UIDd;3;152E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;52E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;190E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;191E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;52E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;106E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;107E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;108E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;165E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;103E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;52E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;166E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;111E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;103E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;192E;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;193E;E;D;K;10;$classnameS;18;_CPCibClassSwapperK;8;$classesA;S;18;_CPCibClassSwapperS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;47E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;188E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;194E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;194E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;188E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;145E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;172E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;119E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;111E;K;24;CPTableViewDataSourceKeyD;K;6;CP$UIDd;1;0E;K;22;CPTableViewDelegateKeyD;K;6;CP$UIDd;1;0E;K;23;CPTableViewRowHeightKeyD;K;6;CP$UIDd;3;195E;K;30;CPTableViewIntercellSpacingKeyD;K;6;CP$UIDd;3;196E;K;37;CPTableViewSelectionHighlightStyleKeyD;K;6;CP$UIDd;3;176E;K;37;CPTableViewColumnAutoresizingStyleKeyD;K;6;CP$UIDd;3;176E;K;31;CPTableViewMultipleSelectionKeyD;K;6;CP$UIDd;3;130E;K;28;CPTableViewEmptySelectionKeyD;K;6;CP$UIDd;3;131E;K;30;CPTableViewColumnReorderingKeyD;K;6;CP$UIDd;3;130E;K;28;CPTableViewColumnResizingKeyD;K;6;CP$UIDd;3;130E;K;29;CPTableViewColumnSelectionKeyD;K;6;CP$UIDd;3;130E;K;26;CPTableViewTableColumnsKeyD;K;6;CP$UIDd;3;197E;K;23;CPTableViewGridColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTableViewGridStyleMaskKeyD;K;6;CP$UIDd;1;0E;K;39;CPTableViewUsesAlternatingBackgroundKeyD;K;6;CP$UIDd;3;130E;K;34;CPTableViewAlternatingRowColorsKeyD;K;6;CP$UIDd;1;0E;K;24;CPTableViewCornerViewKeyD;K;6;CP$UIDd;3;198E;K;24;CPTableViewHeaderViewKeyD;K;6;CP$UIDd;1;0E;K;26;CPTableViewAutosaveNameKeyD;K;6;CP$UIDd;1;0E;K;34;CPOutlineViewOutlineTableColumnKeyD;K;6;CP$UIDd;2;26E;K;35;CPOutlineViewIndentationPerLevelKeyD;K;6;CP$UIDd;3;106E;K;26;CPOutlineViewDataSourceKeyD;K;6;CP$UIDd;1;0E;K;24;CPOutlineViewDelegateKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibClassSwapperClassNameKeyD;K;6;CP$UIDd;2;81E;K;38;_CPCibClassSwapperOriginalClassNameKeyD;K;6;CP$UIDd;3;199E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;3;200E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;201E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;135E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;124E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;202E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;203E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;129E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;130E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;131E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;204E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;205E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;206E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;207E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;208E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;39E;E;D;K;6;$classD;K;6;CP$UIDd;2;43E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;30E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;209E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;210E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;211E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;30E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;145E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;186E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;119E;K;23;CPScrollViewContentViewD;K;6;CP$UIDd;3;170E;K;29;CPScrollViewHeaderClipViewKeyD;K;6;CP$UIDd;3;160E;K;21;CPScrollViewVScrollerD;K;6;CP$UIDd;2;45E;K;21;CPScrollViewHScrollerD;K;6;CP$UIDd;2;21E;K;23;CPScrollViewVLineScrollD;K;6;CP$UIDd;3;141E;K;23;CPScrollViewVPageScrollD;K;6;CP$UIDd;3;141E;K;23;CPScrollViewHLineScrollD;K;6;CP$UIDd;3;141E;K;23;CPScrollViewHPageScrollD;K;6;CP$UIDd;3;141E;K;24;CPScrollViewHasVScrollerD;K;6;CP$UIDd;3;131E;K;24;CPScrollViewHasHScrollerD;K;6;CP$UIDd;3;130E;K;29;CPScrollViewAutohidesScrollerD;K;6;CP$UIDd;3;131E;K;25;CPScrollViewCornerViewKeyD;K;6;CP$UIDd;3;178E;K;31;CPScrollViewBottomCornerViewKeyD;K;6;CP$UIDd;3;212E;K;25;CPScrollViewBorderTypeKeyD;K;6;CP$UIDd;3;152E;E;S;1;0S;1;1S;1;2S;1;3S;1;4S;1;5S;12;File's OwnerS;1;6S;1;7S;1;8S;1;9S;2;10S;2;11S;2;12S;2;13S;2;14S;2;15S;2;16S;2;17S;2;18S;2;19S;2;20S;2;21S;2;22S;2;23S;2;24S;2;25S;2;26S;17;BadgedOutlineViewD;K;10;$classnameS;20;CPCibOutletConnectorK;8;$classesA;S;20;CPCibOutletConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;82E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;22E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;46E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;213E;E;D;K;6;$classD;K;6;CP$UIDd;2;82E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;46E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;24E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;214E;E;D;K;6;$classD;K;6;CP$UIDd;2;82E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;46E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;34E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;215E;E;D;K;6;$classD;K;6;CP$UIDd;2;82E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;46E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;48E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;216E;E;D;K;6;$classD;K;6;CP$UIDd;2;82E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;46E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;41E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;217E;E;D;K;6;$classD;K;6;CP$UIDd;2;82E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;46E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;28E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;218E;E;D;K;6;$classD;K;6;CP$UIDd;2;82E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;46E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;51E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;219E;E;D;K;6;$classD;K;6;CP$UIDd;2;82E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;48E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;46E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;220E;E;D;K;6;$classD;K;6;CP$UIDd;2;82E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;48E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;46E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;213E;E;D;K;6;$classD;K;6;CP$UIDd;2;82E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;41E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;46E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;213E;E;D;K;10;$classnameS;21;CPCibControlConnectorK;8;$classesA;S;21;CPCibControlConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;93E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;34E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;46E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;221E;E;D;K;10;$classnameS;21;CPCibBindingConnectorK;8;$classesA;S;21;CPCibBindingConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;95E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;28E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;46E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;222E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;223E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;223E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;225E;E;D;K;6;$classD;K;6;CP$UIDd;2;95E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;28E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;46E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;226E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;227E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;228E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;229E;E;D;K;6;$classD;K;6;CP$UIDd;2;95E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;42E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;28E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;230E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;231E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;232E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;233E;E;D;K;6;$classD;K;6;CP$UIDd;2;95E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;29E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;28E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;234E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;231E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;235E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;236E;E;D;K;6;$classD;K;6;CP$UIDd;2;95E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;49E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;28E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;237E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;231E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;238E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;239E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;51E;E;E;d;1;0S;24;{{-100, 769}, {238, 15}}S;19;{{0, 0}, {238, 15}}d;1;8d;11;-2147483648S;8;scrollerS;8;disabledS;29;_horizontalScrollerDidScroll:d;1;4f;18;0.9933774834437086S;24;{{-100, 738}, {713, 15}}S;19;{{0, 0}, {713, 15}}f;18;0.9106002554278416S;19;{{0, 0}, {956, 34}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;34E;E;E;d;2;34S;6;normalS;12;NSCustomViewS;4;NAMEd;3;175d;2;16d;4;1000D;K;10;$classnameS;24;_CPTableColumnHeaderViewK;8;$classesA;S;24;_CPTableColumnHeaderViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;125E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;240E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;240E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;242E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;119E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;103E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;153E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;244E;E;D;K;10;$classnameS;11;CPTextFieldK;8;$classesA;S;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;127E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;240E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;240E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;245E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;246E;K;6;$afontD;K;6;CP$UIDd;3;248E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;111E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;152E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;15;$acontent-insetD;K;6;CP$UIDd;3;250E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;153E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;154E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;111E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;103E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;153E;E;d;1;3F;T;S;19;CPMutableDictionaryS;8;lastNamed;3;305d;2;40D;K;6;$classD;K;6;CP$UIDd;3;125E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;240E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;240E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;251E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;242E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;119E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;103E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;252E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;244E;E;D;K;6;$classD;K;6;CP$UIDd;3;127E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;240E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;240E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;245E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;246E;K;6;$afontD;K;6;CP$UIDd;3;253E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;111E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;152E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;15;$acontent-insetD;K;6;CP$UIDd;3;254E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;153E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;154E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;111E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;103E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;153E;E;S;22;{{181, 0}, {956, 684}}S;20;{{0, 0}, {956, 684}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;24E;E;E;d;2;10S;6;CPViewS;21;{{0, 0}, {1137, 684}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;30E;E;E;d;2;18S;9;splitviewS;21;{{745, 2}, {195, 29}}S;19;{{0, 0}, {195, 29}}d;2;33S;11;searchfieldS;27;bezeled+rounded+placeholderd;1;2S;0;d;4;3072D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;255E;E;S;22;First Name | Last Named;3;254S;8;autosaveD;K;6;$classD;K;6;CP$UIDd;3;187E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;52E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;274E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;275E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;276E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;52E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;106E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;273E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;119E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;2;36E;E;S;19;{{0, 0}, {954, 23}}S;14;tableHeaderRowS;24;{{-100, 682}, {15, 102}}S;19;{{0, 0}, {15, 102}}S;17;disabled+verticalS;27;_verticalScrollerDidScroll:f;18;0.9984871406959153S;21;{{0, 0}, {1137, 682}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;32E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;187E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;52E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;271E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;171E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;272E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;52E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;106E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;273E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;119E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;2;41E;E;S;20;{{0, 0}, {954, 635}}S;9;tableviewd;2;23S;6;{3, 2}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;42E;E;E;d;1;1D;K;10;$classnameS;13;_CPCornerViewK;8;$classesA;S;13;_CPCornerViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;177E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;52E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;256E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;257E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;52E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;106E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;107E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;258E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;119E;E;S;3;aged;22;3.4028234663852886e+38D;K;6;$classD;K;6;CP$UIDd;3;125E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;240E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;240E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;259E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;242E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;119E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;103E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;260E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;244E;E;D;K;6;$classD;K;6;CP$UIDd;3;127E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;240E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;240E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;245E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;246E;K;6;$afontD;K;6;CP$UIDd;3;261E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;111E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;152E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;15;$acontent-insetD;K;6;CP$UIDd;3;262E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;153E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;154E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;111E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;103E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;153E;E;S;20;{{0, 0}, {180, 684}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;3;189E;E;E;d;2;28S;10;scrollviewD;K;10;$classnameS;10;CPClipViewK;8;$classesA;S;10;CPClipViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;187E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;44E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;263E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;194E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;264E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;44E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;106E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;265E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;119E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;2;48E;E;D;K;6;$classD;K;6;CP$UIDd;2;38E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;44E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;240E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;240E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;44E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;119E;E;S;24;{{-100, 249}, {15, 504}}S;19;{{0, 0}, {15, 504}}f;18;0.9752883031301482S;13;AppControllerS;20;{{0, 0}, {178, 682}}d;2;20S;6;{3, 0}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;26E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;177E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;103E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;266E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;257E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;107E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;258E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;119E;E;S;13;CPOutlineViewS;9;firstNamed;3;335D;K;6;$classD;K;6;CP$UIDd;3;125E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;240E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;240E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;267E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;242E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;119E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;103E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;268E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;244E;E;D;K;6;$classD;K;6;CP$UIDd;3;127E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;240E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;240E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;245E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;246E;K;6;$afontD;K;6;CP$UIDd;3;269E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;111E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;152E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;15;$acontent-insetD;K;6;CP$UIDd;3;270E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;153E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;154E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;111E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;103E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;153E;E;S;32;{10000000000000, 10000000000000}S;8;CPWindowS;25;{{347, 158}, {1137, 682}}d;2;15S;7;FenêtreS;21;{{0, 31}, {956, 653}}S;20;{{0, 0}, {956, 653}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;178E;D;K;6;CP$UIDd;3;212E;E;E;D;K;6;$classD;K;6;CP$UIDd;2;38E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;52E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;240E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;240E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;52E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;119E;E;S;8;delegateS;9;searchBarS;11;searchFieldS;16;smartOutlineViewS;5;tableS;15;tableControllerS;9;theWindowS;10;dataSourceS;18;searchFieldFilter:S;32;filterPredicate: filterPredicateS;15;filterPredicateD;K;10;$classnameS;12;CPDictionaryK;8;$classesA;S;12;CPDictionaryS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;224E;K;10;CP.objectsD;E;E;S;24;contentArray: tableArrayS;12;contentArrayS;10;tableArrayD;K;6;$classD;K;6;CP$UIDd;3;224E;K;10;CP.objectsD;E;E;S;26;value: arrangedObjects.ageS;5;valueS;19;arrangedObjects.ageD;K;6;$classD;K;6;CP$UIDd;3;224E;K;10;CP.objectsD;E;E;S;31;value: arrangedObjects.lastNameS;24;arrangedObjects.lastNameD;K;6;$classD;K;6;CP$UIDd;3;224E;K;10;CP.objectsD;E;E;S;32;value: arrangedObjects.firstNameS;25;arrangedObjects.firstNameD;K;6;$classD;K;6;CP$UIDd;3;224E;K;10;CP.objectsD;E;E;S;16;{{0, 0}, {0, 0}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;278E;E;E;S;12;columnHeaderD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;243E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;279E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;280E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;130E;E;S;9;textfieldS;11;placeholderD;K;10;$classnameS;17;_CPThemeAttributeK;8;$classesA;S;17;_CPThemeAttributeS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;247E;K;4;nameD;K;6;CP$UIDd;3;281E;K;6;valuesD;K;6;CP$UIDd;3;282E;E;D;K;10;$classnameS;21;_CPKeyedArchiverValueK;8;$classesA;S;21;_CPKeyedArchiverValueS;7;CPValueS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;249E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;283E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;284E;E;E;S;9;Last NameD;K;6;$classD;K;6;CP$UIDd;3;247E;K;4;nameD;K;6;CP$UIDd;3;281E;K;6;valuesD;K;6;CP$UIDd;3;285E;E;D;K;6;$classD;K;6;CP$UIDd;3;249E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;283E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;176E;E;E;S;22;{{758, 630}, {16, 23}}S;18;{{0, 0}, {16, 23}}S;10;cornerviewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;286E;E;E;S;3;AgeD;K;6;$classD;K;6;CP$UIDd;3;247E;K;4;nameD;K;6;CP$UIDd;3;281E;K;6;valuesD;K;6;CP$UIDd;3;287E;E;D;K;6;$classD;K;6;CP$UIDd;3;249E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;283E;E;S;20;{{1, 1}, {178, 682}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;48E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;288E;E;S;20;{{224, 0}, {16, 23}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;289E;E;E;S;9;FirstNameD;K;6;$classD;K;6;CP$UIDd;3;247E;K;4;nameD;K;6;CP$UIDd;3;281E;K;6;valuesD;K;6;CP$UIDd;3;290E;E;D;K;6;$classD;K;6;CP$UIDd;3;249E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;283E;E;S;20;{{1, 1}, {954, 635}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;41E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;291E;E;S;21;{{1, 636}, {954, 17}}S;19;{{0, 0}, {954, 17}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;36E;E;E;D;K;10;$classnameS;19;_CPImageAndTextViewK;8;$classesA;S;19;_CPImageAndTextViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;277E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;126E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;240E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;240E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;126E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;145E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;119E;E;S;17;Arial, sans-serifd;2;12S;4;fontD;K;6;$classD;K;6;CP$UIDd;3;224E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;292E;K;6;normalD;K;6;CP$UIDd;3;244E;E;E;S;39;{"top":0,"right":5,"bottom":0,"left":5}D;K;6;$classD;K;6;CP$UIDd;3;277E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;136E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;240E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;240E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;136E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;145E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;119E;E;D;K;6;$classD;K;6;CP$UIDd;3;224E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;292E;K;6;normalD;K;6;CP$UIDd;3;244E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;277E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;181E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;240E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;240E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;181E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;145E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;119E;E;D;K;6;$classD;K;6;CP$UIDd;3;224E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;292E;K;6;normalD;K;6;CP$UIDd;3;244E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;293E;D;K;6;CP$UIDd;3;294E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;176E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;277E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;202E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;240E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;240E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;202E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;145E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;119E;E;D;K;6;$classD;K;6;CP$UIDd;3;224E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;292E;K;6;normalD;K;6;CP$UIDd;3;244E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;176E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;243E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;279E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;280E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;131E;E;f;12;0.7549452686f;12;0.8328956135E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/SmartFoldersDemo/Resources/MainMenu.xib b/Tests/Manual/SmartFoldersDemo/Resources/MainMenu.xib new file mode 100644 index 000000000..d5592dbfc --- /dev/null +++ b/Tests/Manual/SmartFoldersDemo/Resources/MainMenu.xib @@ -0,0 +1,1123 @@ + + + + 1060 + 10H574 + 823 + 1038.35 + 461.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 823 + + + YES + + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + NSApplication + + + FirstResponder + + + NSApplication + + + 15 + 2 + {{347, 188}, {1137, 682}} + 611844096 + Fenêtre + NSWindow + + {1.79769e+308, 1.79769e+308} + + + 256 + + YES + + + 274 + + YES + + + 308 + + YES + + + 2304 + + YES + + + 274 + {178, 682} + + YES + + + -2147483392 + {{224, 0}, {16, 17}} + + + YES + + NAME + 175 + 16 + 1000 + + 75628096 + 2048 + + + LucidaGrande + 11 + 3100 + + + 3 + MC4zMzMzMzI5ODU2AA + + + 6 + System + headerTextColor + + 3 + MAA + + + + + 337772096 + 2048 + Text Cell + + LucidaGrande + 13 + 1044 + + + + 6 + System + controlBackgroundColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + + + 3 + YES + YES + + + + 3 + 0.0 + + 6 + System + _sourceListBackgroundColor + + 1 + MC44MzkyMTU2OTU5IDAuODY2NjY2Njc0NiAwLjg5ODAzOTIyMTgAA + + + + 6 + System + gridColor + + 3 + MC41AA + + + 20 + 306216960 + + + 1 + 15 + 0 + YES + 1 + 1 + 8 + + + {{1, 1}, {178, 682}} + + + + + 1 + MC43NTQ5NDUyNjg2IDAuODMyODk1NjEzNSAxAA + + 4 + + + + -2147483392 + {{-100, -100}, {15, 102}} + + + _doScroller: + 0.99848714069591527 + + + + -2147483392 + {{-100, -100}, {238, 15}} + + 1 + + _doScroller: + 0.99337748344370858 + + + {180, 684} + + + 2 + + + + QSAAAEEgAABBoAAAQaAAAA + + + + 258 + + YES + + + 274 + + YES + + + 2304 + + YES + + + 274 + {954, 635} + + YES + + + 256 + {954, 17} + + + + + + -2147483392 + {{758, 0}, {16, 17}} + + + + YES + + firstName + 335 + 40 + 1000 + + 75628096 + 2048 + FirstName + + + 3 + MC4zMzMzMzI5ODU2AA + + + + + 337772096 + 2048 + Text Cell + + + + + + 3 + YES + YES + + + + lastName + 305 + 40 + 1000 + + 75628096 + 2048 + Last Name + + + + + + 337772096 + 2048 + Text Cell + + + + + + 3 + YES + YES + + + + age + 305 + 10 + 3.4028234663852886e+38 + + 75628096 + 2048 + Age + + + 6 + System + headerColor + + 3 + MQA + + + + + + 337772096 + 2048 + Text Cell + + + + + + 3 + YES + YES + + + + 3 + 2 + + + 17 + -692060160 + + + 1 + 0 + 15 + 0 + YES + 0 + + + {{1, 17}, {954, 635}} + + + + + 4 + + + + -2147483392 + {{-100, -100}, {15, 504}} + + + _doScroller: + 0.97528830313014825 + + + + -2147483392 + {{-100, -100}, {713, 15}} + + 1 + + _doScroller: + 0.91060025542784162 + + + + 2304 + + YES + + + {{1, 0}, {954, 17}} + + + + + 4 + + + + {956, 653} + + + 530 + + + + + + QSAAAEEgAABBmAAAQZgAAA + + + + 266 + + YES + + + 265 + {{748, 6}, {188, 22}} + + YES + + 343014976 + 268436544 + + + First Name | Last Name + + YES + 1 + + 6 + System + textBackgroundColor + + + + + 130560 + 0 + search + + _searchFieldSearch: + + 138690815 + 0 + + 400 + 75 + + + 130560 + 0 + clear + + YES + + YES + + YES + AXDescription + NSAccessibilityEncodedAttributesValueType + + + YES + cancel + + + + + + _searchFieldCancel: + + 138690815 + 0 + + 400 + 75 + + autosave + 255 + + + + {{0, 650}, {956, 34}} + + NSCustomView + + + {{181, 0}, {956, 684}} + + NSView + + + {{0, -2}, {1137, 684}} + + YES + 2 + + + {1137, 682} + + + {{0, 0}, {1680, 1028}} + {1.79769e+308, 1.79769e+308} + + + AppController + + + + YES + firstName + lastName + age + + YES + + YES + YES + YES + YES + + + + + YES + + + delegate + + + + 822 + + + + searchField + + + + 907 + + + + dataSource + + + + 909 + + + + table + + + + 937 + + + + searchBar + + + + 940 + + + + theWindow + + + + 941 + + + + delegate + + + + 942 + + + + smartOutlineView + + + + 943 + + + + searchFieldFilter: + + + + 946 + + + + delegate + + + + 948 + + + + contentArray: tableArray + + + + + + contentArray: tableArray + contentArray + tableArray + 2 + + + 949 + + + + value: arrangedObjects.firstName + + + + + + value: arrangedObjects.firstName + value + arrangedObjects.firstName + 2 + + + 952 + + + + value: arrangedObjects.lastName + + + + + + value: arrangedObjects.lastName + value + arrangedObjects.lastName + 2 + + + 954 + + + + value: arrangedObjects.age + + + + + + value: arrangedObjects.age + value + arrangedObjects.age + 2 + + + 956 + + + + filterPredicate: filterPredicate + + + + + + filterPredicate: filterPredicate + filterPredicate + filterPredicate + 2 + + + 958 + + + + tableController + + + + 959 + + + + + YES + + 0 + + YES + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 367 + + + YES + + + + + + 368 + + + YES + + + + + + 821 + + + + + 921 + + + YES + + + + + + + 836 + + + YES + + + + + + + + 839 + + + YES + + + + + + 838 + + + + + 837 + + + + + 841 + + + YES + + + + + + 846 + + + YES + + + + + + + 891 + + + YES + + + + + + + + + 895 + + + + + 894 + + + YES + + + + + + + + 893 + + + + + 892 + + + + + 900 + + + YES + + + + + + 897 + + + YES + + + + + + 896 + + + YES + + + + + + 899 + + + + + 898 + + + + + 901 + + + + + 844 + + + + + 924 + + + + + 939 + + + YES + + + + + + 847 + + + YES + + + + + + 848 + + + + + + + YES + + YES + -3.IBPluginDependency + 367.IBEditorWindowLastContentRect + 367.IBPluginDependency + 367.IBWindowTemplateEditedContentRect + 367.NSWindowTemplate.visibleAtLaunch + 367.editorWindowContentRectSynchronizationRect + 367.windowTemplate.maxSize + 368.IBPluginDependency + 836.IBPluginDependency + 837.IBPluginDependency + 838.IBPluginDependency + 839.CustomClassName + 839.IBPluginDependency + 841.IBPluginDependency + 844.IBPluginDependency + 846.IBPluginDependency + 846.IBViewBoundsToFrameTransform + 847.IBPluginDependency + 847.IBViewBoundsToFrameTransform + 848.IBPluginDependency + 891.IBPluginDependency + 891.IBViewBoundsToFrameTransform + 892.IBPluginDependency + 893.IBPluginDependency + 894.IBPluginDependency + 895.IBPluginDependency + 896.IBPluginDependency + 897.IBPluginDependency + 898.IBPluginDependency + 899.IBPluginDependency + 921.IBViewBoundsToFrameTransform + 924.IBPluginDependency + 939.IBPluginDependency + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + {{42, 195}, {1137, 682}} + com.apple.InterfaceBuilder.CocoaPlugin + {{42, 195}, {1137, 682}} + + {{11, 666}, {480, 270}} + {3.40282e+38, 3.40282e+38} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + BadgedOutlineView + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + AUNJAABCQAAAA + + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABD84AAxCNAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAAAAAAAAxCIAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAAAAAAAAxCUAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + YES + + + YES + + + + + YES + + + YES + + + + 959 + + + + YES + + AppController + NSObject + + searchFieldFilter: + id + + + searchFieldFilter: + + searchFieldFilter: + id + + + + YES + + YES + searchBar + searchField + smartOutlineView + table + tableController + theWindow + + + YES + NSCustomView + NSSearchField + BadgedOutlineView + NSTableView + NSArrayController + NSWindow + + + + YES + + YES + searchBar + searchField + smartOutlineView + table + tableController + theWindow + + + YES + + searchBar + NSCustomView + + + searchField + NSSearchField + + + smartOutlineView + BadgedOutlineView + + + table + NSTableView + + + tableController + NSArrayController + + + theWindow + NSWindow + + + + + IBUserSource + + + + + BadgedOutlineView + NSOutlineView + + IBUserSource + + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + + 3 + + diff --git a/Tests/Manual/SmartFoldersDemo/Resources/PredicateEditor.cib b/Tests/Manual/SmartFoldersDemo/Resources/PredicateEditor.cib new file mode 100644 index 000000000..d8ad2dafb --- /dev/null +++ b/Tests/Manual/SmartFoldersDemo/Resources/PredicateEditor.cib @@ -0,0 +1 @@ +280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;4E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;7E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;9E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;2;10E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;2;11E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;2;12E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;2;13E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;2;14E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;16E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;18E;E;D;K;10;$classnameS;7;CPArrayK;8;$classesA;S;7;CPArrayS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;60E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;97E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;105E;E;E;S;16;IBCocoaFrameworkD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;24E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;33E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;18;_CPCibCustomObjectK;8;$classesA;S;18;_CPCibCustomObjectS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;106E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;3;107E;E;D;K;10;$classnameS;28;CPPredicateEditorRowTemplateK;8;$classesA;S;28;CPPredicateEditorRowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;23;CPPredicateTemplateTypeD;K;6;CP$UIDd;3;108E;K;26;CPPredicateTemplateOptionsD;K;6;CP$UIDd;3;109E;K;27;CPPredicateTemplateModifierD;K;6;CP$UIDd;3;109E;K;36;CPPredicateTemplateLeftAttributeTypeD;K;6;CP$UIDd;3;109E;K;37;CPPredicateTemplateRightAttributeTypeD;K;6;CP$UIDd;3;109E;K;33;CPPredicateTemplateLeftIsWildcardD;K;6;CP$UIDd;3;110E;K;34;CPPredicateTemplateRightIsWildcardD;K;6;CP$UIDd;3;110E;K;24;CPPredicateTemplateViewsD;K;6;CP$UIDd;3;111E;E;D;K;10;$classnameS;10;CPScrollerK;8;$classesA;S;10;CPScrollerS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;37E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;109E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;112E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;113E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;37E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;114E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;115E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;116E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;117E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;109E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;37E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;118E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;119E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;109E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;120E;E;D;K;10;$classnameS;6;CPMenuK;8;$classesA;S;6;CPMenuS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;121E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;122E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;121E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;123E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;121E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;124E;E;D;K;10;$classnameS;17;CPPredicateEditorK;8;$classesA;S;17;CPPredicateEditorS;12;CPRuleEditorS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;27E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;125E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;109E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;126E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;126E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;127E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;125E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;128E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;129E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;130E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;119E;K;20;CPRuleEditorEditableD;K;6;CP$UIDd;3;131E;K;35;CPRuleEditorAllowsEmptyCompoundRowsD;K;6;CP$UIDd;3;110E;K;25;CPRuleEditorDisallowEmptyD;K;6;CP$UIDd;3;131E;K;30;CPRuleEditorAlignmentGridWidthD;K;6;CP$UIDd;3;132E;K;23;CPRuleEditorSliceHeightD;K;6;CP$UIDd;3;133E;K;23;CPRuleEditorNestingModeD;K;6;CP$UIDd;3;134E;K;27;CPRuleEditorStringsFilenameD;K;6;CP$UIDd;1;0E;K;26;CPRuleEditorRowTypeKeyPathD;K;6;CP$UIDd;3;135E;K;24;CPRuleEditorItemsKeyPathD;K;6;CP$UIDd;3;136E;K;25;CPRuleEditorValuesKeyPathD;K;6;CP$UIDd;3;137E;K;29;CPRuleEditorBoundArrayKeyPathD;K;6;CP$UIDd;3;138E;K;31;CPRuleEditorSubrowsArrayKeyPathD;K;6;CP$UIDd;3;139E;K;24;CPRuleEditorSlicesHolderD;K;6;CP$UIDd;1;0E;K;18;CPRuleEditorSlicesD;K;6;CP$UIDd;3;140E;K;27;CPRuleEditorBoundArrayOwnerD;K;6;CP$UIDd;3;142E;K;20;CPPredicateTemplatesD;K;6;CP$UIDd;3;143E;E;D;K;10;$classnameS;10;CPMenuItemK;8;$classesA;S;10;CPMenuItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;29E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;144E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;145E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;39E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;146E;K;30;CPMenuItemRepresentedObjectKeyD;K;6;CP$UIDd;3;147E;E;D;K;10;$classnameS;11;CPTextFieldK;8;$classesA;S;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;31E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;51E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;109E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;148E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;149E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;51E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;150E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;130E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;108E;K;11;$aalignmentD;K;6;CP$UIDd;3;119E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;152E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;153E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;110E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;110E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;110E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;108E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;119E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;23;CPPredicateTemplateTypeD;K;6;CP$UIDd;3;154E;K;26;CPPredicateTemplateOptionsD;K;6;CP$UIDd;3;109E;K;27;CPPredicateTemplateModifierD;K;6;CP$UIDd;3;109E;K;36;CPPredicateTemplateLeftAttributeTypeD;K;6;CP$UIDd;3;109E;K;37;CPPredicateTemplateRightAttributeTypeD;K;6;CP$UIDd;3;155E;K;33;CPPredicateTemplateLeftIsWildcardD;K;6;CP$UIDd;3;110E;K;34;CPPredicateTemplateRightIsWildcardD;K;6;CP$UIDd;3;131E;K;24;CPPredicateTemplateViewsD;K;6;CP$UIDd;3;156E;E;D;K;6;$classD;K;6;CP$UIDd;2;29E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;157E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;145E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;39E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;146E;K;30;CPMenuItemRepresentedObjectKeyD;K;6;CP$UIDd;3;158E;E;D;K;6;$classD;K;6;CP$UIDd;2;29E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;159E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;145E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;25E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;146E;K;30;CPMenuItemRepresentedObjectKeyD;K;6;CP$UIDd;3;154E;E;D;K;10;$classnameS;12;CPScrollViewK;8;$classesA;S;12;CPScrollViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;36E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;51E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;109E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;160E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;161E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;162E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;51E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;128E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;163E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;130E;K;23;CPScrollViewContentViewD;K;6;CP$UIDd;3;125E;K;29;CPScrollViewHeaderClipViewKeyD;K;6;CP$UIDd;1;0E;K;21;CPScrollViewVScrollerD;K;6;CP$UIDd;2;22E;K;21;CPScrollViewHScrollerD;K;6;CP$UIDd;2;60E;K;23;CPScrollViewVLineScrollD;K;6;CP$UIDd;3;165E;K;23;CPScrollViewVPageScrollD;K;6;CP$UIDd;3;165E;K;23;CPScrollViewHLineScrollD;K;6;CP$UIDd;3;165E;K;23;CPScrollViewHPageScrollD;K;6;CP$UIDd;3;165E;K;24;CPScrollViewHasVScrollerD;K;6;CP$UIDd;3;131E;K;24;CPScrollViewHasHScrollerD;K;6;CP$UIDd;3;110E;K;29;CPScrollViewAutohidesScrollerD;K;6;CP$UIDd;3;131E;K;25;CPScrollViewCornerViewKeyD;K;6;CP$UIDd;1;0E;K;31;CPScrollViewBottomCornerViewKeyD;K;6;CP$UIDd;3;166E;K;25;CPScrollViewBorderTypeKeyD;K;6;CP$UIDd;3;108E;E;D;K;6;$classD;K;6;CP$UIDd;2;29E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;167E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;145E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;55E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;146E;K;30;CPMenuItemRepresentedObjectKeyD;K;6;CP$UIDd;3;169E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;121E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;170E;E;D;K;6;$classD;K;6;CP$UIDd;2;29E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;171E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;145E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;24E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;146E;K;30;CPMenuItemRepresentedObjectKeyD;K;6;CP$UIDd;3;108E;E;D;K;6;$classD;K;6;CP$UIDd;2;29E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;172E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;145E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;154E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;39E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;146E;K;30;CPMenuItemRepresentedObjectKeyD;K;6;CP$UIDd;3;114E;E;D;K;6;$classD;K;6;CP$UIDd;2;29E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;173E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;145E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;154E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;25E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;146E;K;30;CPMenuItemRepresentedObjectKeyD;K;6;CP$UIDd;3;108E;E;D;K;6;$classD;K;6;CP$UIDd;2;29E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;174E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;145E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;154E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;55E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;146E;K;30;CPMenuItemRepresentedObjectKeyD;K;6;CP$UIDd;3;175E;E;D;K;10;$classnameS;8;CPButtonK;8;$classesA;S;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;44E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;51E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;154E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;176E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;177E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;51E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;158E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;178E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;179E;K;16;$aimage-positionD;K;6;CP$UIDd;3;109E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;109E;K;11;$aalignmentD;K;6;CP$UIDd;3;108E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;109E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;119E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;180E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;110E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;109E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;109E;E;D;K;6;$classD;K;6;CP$UIDd;2;29E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;181E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;145E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;154E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;54E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;146E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;47E;K;30;_CPCibWindowTemplateMinSizeKeyD;K;6;CP$UIDd;3;182E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;183E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;184E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;185E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;186E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;187E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;51E;E;D;K;6;$classD;K;6;CP$UIDd;2;29E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;188E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;145E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;24E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;146E;K;30;CPMenuItemRepresentedObjectKeyD;K;6;CP$UIDd;3;109E;E;D;K;10;$classnameS;6;CPViewK;8;$classesA;S;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;109E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;189E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;189E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;190E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;130E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;23;CPPredicateTemplateTypeD;K;6;CP$UIDd;3;154E;K;26;CPPredicateTemplateOptionsD;K;6;CP$UIDd;3;134E;K;27;CPPredicateTemplateModifierD;K;6;CP$UIDd;3;109E;K;36;CPPredicateTemplateLeftAttributeTypeD;K;6;CP$UIDd;3;109E;K;37;CPPredicateTemplateRightAttributeTypeD;K;6;CP$UIDd;3;191E;K;33;CPPredicateTemplateLeftIsWildcardD;K;6;CP$UIDd;3;110E;K;34;CPPredicateTemplateRightIsWildcardD;K;6;CP$UIDd;3;131E;K;24;CPPredicateTemplateViewsD;K;6;CP$UIDd;3;192E;E;D;K;6;$classD;K;6;CP$UIDd;2;31E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;51E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;109E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;193E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;194E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;51E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;150E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;195E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;108E;K;11;$aalignmentD;K;6;CP$UIDd;3;119E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;121E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;153E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;131E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;131E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;131E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;197E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;108E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;119E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;121E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;198E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;121E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;199E;E;D;K;6;$classD;K;6;CP$UIDd;2;29E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;200E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;145E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;154E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;24E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;146E;K;30;CPMenuItemRepresentedObjectKeyD;K;6;CP$UIDd;3;119E;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;201E;E;D;K;6;$classD;K;6;CP$UIDd;2;29E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;202E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;145E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;154E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;26E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;146E;K;30;CPMenuItemRepresentedObjectKeyD;K;6;CP$UIDd;3;203E;E;D;K;6;$classD;K;6;CP$UIDd;2;44E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;51E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;109E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;204E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;205E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;51E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;158E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;178E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;179E;K;16;$aimage-positionD;K;6;CP$UIDd;3;109E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;109E;K;11;$aalignmentD;K;6;CP$UIDd;3;108E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;109E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;119E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;206E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;110E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;109E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;109E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;37E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;109E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;207E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;208E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;37E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;114E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;115E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;116E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;209E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;109E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;37E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;210E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;119E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;109E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;154E;E;S;1;0S;1;2S;2;35S;1;3S;1;4S;1;5S;1;6S;1;7S;1;9S;1;8S;2;10S;2;15S;2;11S;2;12S;2;14S;2;13S;2;16S;2;17S;2;18S;12;File's OwnerS;2;19S;2;20S;2;22S;2;21S;2;23S;2;24S;2;25S;2;26S;2;27S;2;28S;2;29S;2;30S;2;31S;2;32S;2;33S;2;34S;1;1D;K;10;$classnameS;20;CPCibOutletConnectorK;8;$classesA;S;20;CPCibOutletConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;98E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;57E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;16E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;211E;E;D;K;6;$classD;K;6;CP$UIDd;2;98E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;16E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;53E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;212E;E;D;K;6;$classD;K;6;CP$UIDd;2;98E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;16E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;28E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;213E;E;D;K;6;$classD;K;6;CP$UIDd;2;98E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;16E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;48E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;214E;E;D;K;10;$classnameS;21;CPCibControlConnectorK;8;$classesA;S;21;CPCibControlConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;103E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;45E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;16E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;215E;E;D;K;6;$classD;K;6;CP$UIDd;3;103E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;59E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;16E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;215E;E;S;13;AppControllerD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;48E;E;E;d;1;2d;1;0F;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;217E;D;K;6;CP$UIDd;3;218E;E;E;S;21;{{492, 51}, {15, 49}}S;18;{{0, 0}, {15, 49}}d;1;8d;11;-2147483648S;8;scrollerS;17;disabled+verticalS;27;_verticalScrollerDidScroll:d;1;4f;4;0.98S;0;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;40E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;35E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;58E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;164E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;37E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;109E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;225E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;126E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;226E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;37E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;114E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;227E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;130E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;2;28E;E;S;19;{{0, 0}, {506, 99}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;220E;E;E;d;2;18S;11;rule-editorS;6;normalT;d;2;75d;2;25d;1;3S;7;rowTypeS;8;criteriaS;13;displayValuesS;10;boundArrayS;7;subrowsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;33;_CPRuleEditorViewUnboundRowHolderK;8;$classesA;S;33;_CPRuleEditorViewUnboundRowHolderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;141E;K;12;CPBoundArrayD;K;6;CP$UIDd;3;221E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;33E;E;E;S;8;containsS;17;_popUpItemAction:d;7;1048576d;2;99S;20;{{17, 18}, {45, 17}}S;18;{{0, 0}, {45, 17}}d;2;36S;9;textfieldS;5;Name:d;4;3072d;1;1d;3;300D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;222E;D;K;6;CP$UIDd;3;223E;D;K;6;CP$UIDd;3;224E;E;E;S;9;ends withd;1;9S;3;AllS;22;{{20, 50}, {508, 101}}S;20;{{0, 0}, {508, 101}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;3;166E;E;E;S;10;scrollviewD;K;10;$classnameS;10;CPClipViewK;8;$classesA;S;10;CPClipViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;d;2;10D;K;6;$classD;K;6;CP$UIDd;2;50E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;37E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;228E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;228E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;37E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;130E;E;S;8;lastNameD;K;10;$classnameS;20;CPExpression_keypathK;8;$classesA;S;20;CPExpression_keypathS;21;CPExpression_functionS;12;CPExpressionS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;168E;K;14;CPSelectorNameD;K;6;CP$UIDd;3;229E;K;11;CPArgumentsD;K;6;CP$UIDd;3;230E;K;9;CPOperandD;K;6;CP$UIDd;3;232E;K;16;CPExpressionTypeD;K;6;CP$UIDd;3;134E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;30E;E;E;S;15;is greater thanS;11;begins withS;3;AnyS;9;firstNameD;K;6;$classD;K;6;CP$UIDd;3;168E;K;14;CPSelectorNameD;K;6;CP$UIDd;3;229E;K;11;CPArgumentsD;K;6;CP$UIDd;3;233E;K;9;CPOperandD;K;6;CP$UIDd;3;232E;K;16;CPExpressionTypeD;K;6;CP$UIDd;3;134E;E;S;22;{{477, 164}, {51, 24}}S;18;{{0, 0}, {51, 24}}S;6;buttonS;8;borderedS;2;OKS;25;of the following are trueS;10;{548, 172}S;10;{548, 522}S;8;CPWindowS;24;{{571, 393}, {548, 204}}d;2;79S;16;Predicate EditorS;12;is less thanS;20;{{0, 0}, {548, 204}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;59E;E;E;d;3;700D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;234E;D;K;6;CP$UIDd;3;235E;D;K;6;CP$UIDd;3;236E;E;E;S;21;{{64, 11}, {468, 29}}S;19;{{0, 0}, {468, 29}}S;19;bezeled+placeholderD;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;196E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;237E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;46E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;38E;E;E;S;2;isS;13;CPApplicationS;3;ageD;K;6;$classD;K;6;CP$UIDd;3;168E;K;14;CPSelectorNameD;K;6;CP$UIDd;3;229E;K;11;CPArgumentsD;K;6;CP$UIDd;3;238E;K;9;CPOperandD;K;6;CP$UIDd;3;232E;K;16;CPExpressionTypeD;K;6;CP$UIDd;3;134E;E;S;22;{{391, 164}, {76, 24}}S;18;{{0, 0}, {76, 24}}S;6;CancelS;24;{{-100, 186}, {360, 15}}S;19;{{0, 0}, {360, 15}}S;8;disabledS;29;_horizontalScrollerDidScroll:S;8;delegateS;15;folderNameFieldS;15;predicateEditorS;14;predicateSheetS;11;closeSheet:D;K;10;$classnameS;13;CPPopUpButtonK;8;$classesA;S;13;CPPopUpButtonS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;216E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;2;25E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;239E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;240E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;179E;K;6;$afontD;K;6;CP$UIDd;3;243E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;119E;K;11;$aalignmentD;K;6;CP$UIDd;3;109E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;109E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;119E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;1;0E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;108E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;216E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;2;54E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;244E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;245E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;179E;K;6;$afontD;K;6;CP$UIDd;3;243E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;119E;K;11;$aalignmentD;K;6;CP$UIDd;3;109E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;109E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;119E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;1;0E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;108E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;28;_CPRuleEditorViewSliceHolderK;8;$classesA;S;28;_CPRuleEditorViewSliceHolderS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;219E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;28E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;109E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;246E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;126E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;28E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;128E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;130E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;3;216E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;2;26E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;247E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;248E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;179E;K;6;$afontD;K;6;CP$UIDd;3;243E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;119E;K;11;$aalignmentD;K;6;CP$UIDd;3;109E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;109E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;119E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;1;0E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;108E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;216E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;2;24E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;249E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;250E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;179E;K;6;$afontD;K;6;CP$UIDd;3;243E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;119E;K;11;$aalignmentD;K;6;CP$UIDd;3;109E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;109E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;119E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;1;0E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;108E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;31E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;109E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;251E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;252E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;195E;K;6;$afontD;K;6;CP$UIDd;3;243E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;108E;K;11;$aalignmentD;K;6;CP$UIDd;3;109E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;121E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;153E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;131E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;131E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;131E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;197E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;108E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;109E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;S;19;{{1, 1}, {506, 99}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;28E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;196E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;253E;E;S;16;{{0, 0}, {0, 0}}S;12;valueForKey:D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;255E;E;E;D;K;10;$classnameS;17;CPExpression_selfK;8;$classesA;S;17;CPExpression_selfS;12;CPExpressionS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;231E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;256E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;216E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;2;55E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;257E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;258E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;179E;K;6;$afontD;K;6;CP$UIDd;3;243E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;119E;K;11;$aalignmentD;K;6;CP$UIDd;3;109E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;109E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;119E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;1;0E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;108E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;216E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;2;39E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;259E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;260E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;241E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;179E;K;6;$afontD;K;6;CP$UIDd;3;243E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;119E;K;11;$aalignmentD;K;6;CP$UIDd;3;109E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;109E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;119E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;1;0E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;108E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;31E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;109E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;261E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;262E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;195E;K;6;$afontD;K;6;CP$UIDd;3;243E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;108E;K;11;$aalignmentD;K;6;CP$UIDd;3;109E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;121E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;153E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;131E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;131E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;131E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;197E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;108E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;109E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;154E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;263E;E;E;S;18;{{7, 7}, {58, 24}}S;18;{{0, 0}, {58, 24}}S;12;popup-buttonD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;242E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;264E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;265E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;110E;E;S;20;{{71, 7}, {167, 24}}S;19;{{0, 0}, {167, 24}}S;20;{{1, -1}, {506, 99}}S;19;{{37, 7}, {57, 24}}S;18;{{0, 0}, {57, 24}}S;21;{{100, 7}, {115, 24}}S;19;{{0, 0}, {115, 24}}S;20;{{218, 1}, {32, 25}}S;18;{{0, 0}, {32, 25}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;266E;D;K;6;CP$UIDd;3;266E;D;K;6;CP$UIDd;3;266E;D;K;6;CP$UIDd;3;154E;E;E;D;K;10;$classnameS;21;CPExpression_constantK;8;$classesA;S;21;CPExpression_constantS;12;CPExpressionS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;254E;K;15;CPConstantValueD;K;6;CP$UIDd;3;167E;E;D;K;6;$classD;K;6;CP$UIDd;3;254E;K;15;CPConstantValueD;K;6;CP$UIDd;3;174E;E;S;19;{{37, 7}, {89, 24}}S;18;{{0, 0}, {89, 24}}S;20;{{132, 7}, {99, 24}}S;18;{{0, 0}, {99, 24}}S;21;{{234, 1}, {167, 25}}S;19;{{0, 0}, {167, 25}}D;K;6;$classD;K;6;CP$UIDd;3;254E;K;15;CPConstantValueD;K;6;CP$UIDd;3;202E;E;S;5;Ariald;2;11f;12;0.9100000262E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/SmartFoldersDemo/Resources/PredicateEditor.xib b/Tests/Manual/SmartFoldersDemo/Resources/PredicateEditor.xib new file mode 100644 index 000000000..facd33868 --- /dev/null +++ b/Tests/Manual/SmartFoldersDemo/Resources/PredicateEditor.xib @@ -0,0 +1,1530 @@ + + + + 1060 + 10H574 + 823 + 1038.35 + 461.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 823 + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + AppController + + + FirstResponder + + + NSApplication + + + 79 + 2 + {{571, 431}, {548, 204}} + 611844096 + Predicate Editor + NSWindow + + {548, 500} + {548, 150} + + + 256 + + + + 268 + {{67, 167}, {461, 22}} + + YES + + -1804468671 + 272630784 + + + LucidaGrande + 13 + 1044 + + + YES + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + textColor + + 3 + MAA + + + + + + + 268 + {{17, 169}, {45, 17}} + + YES + + 68288064 + 272630784 + Name: + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + + + + + + 274 + + + + 2304 + + + + 274 + + + + 274 + + + + 290 + + + + 257 + {{478, 4}, {18, 18}} + + + -1 + YES + + 67239424 + 134348800 + + + + LucidaGrande-Bold + 12 + 16 + + + + add + + + + + _addOption: + + -2038284033 + 36 + + LucidaGrande + 12 + 4883 + + + 400 + 75 + + + + + -2147483391 + {{458, 4}, {18, 18}} + + + -1 + YES + + 67239424 + 134348800 + - + + + + remove + + + + + _deleteOption: + + -2038284033 + 36 + + + 400 + 75 + + + + + 256 + {{7, 3}, {58, 19}} + + + -1 + YES + + 67239488 + 4196352 + + LucidaGrande + 11 + 3100 + + + + -2038284033 + 36 + + LucidaGrande + 11 + 16 + + + 400 + 75 + + + Any + + 1048576 + 2147483647 + 1 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + _popUpItemAction: + + + + YES + + + + + + + All + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + + + 3 + YES + YES + 2 + + + + + 256 + {{71, 3}, {167, 19}} + + + -1 + YES + + 67239488 + 4196352 + + + -2038284033 + 36 + + + 400 + 75 + + + of the following are true + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + + + + + + 3 + YES + YES + 2 + + + + {506, 25} + + + 0 + 0 + + + + + + + 2 + {{7, 3}, {58, 19}} + {{71, 3}, {167, 19}} + + + + + 2 + 0 + 0 + 0 + 0 + + + + + NO + NO + + + + + + + + 2 + {{7, 3}, {58, 19}} + {{71, 3}, {167, 19}} + + + 0 + 0 + YES + + + + 290 + + + + 257 + {{478, 4}, {18, 18}} + + + -1 + YES + + 67239424 + 134348800 + + + + + + add + + + + + _addOption: + + -2038284033 + 36 + + + 400 + 75 + + + + + 257 + {{458, 4}, {18, 18}} + + + -1 + YES + + 67239424 + 134348800 + - + + + + remove + + + + + _deleteOption: + + -2038284033 + 36 + + + 400 + 75 + + + + + 256 + {{37, 3}, {89, 19}} + + + -1 + YES + + 67239488 + 4196352 + + + 3 + valueForKey: + + 1 + + + + 10 + firstName + + + + + -2038284033 + 36 + + + 400 + 75 + + + firstName + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + + YES + + + + + + + lastName + + 1048576 + 2147483647 + + + _popUpItemAction: + + 3 + valueForKey: + + + + 10 + lastName + + + + + + + + + 3 + YES + YES + 2 + + + + + 256 + {{132, 3}, {99, 19}} + + + -1 + YES + + 67239488 + 4196352 + + + + -2038284033 + 36 + + + 400 + 75 + + + begins with + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + + YES + + + + + + + ends with + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + + contains + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + + + 3 + YES + YES + 2 + + + + + 256 + {{237, 4}, {160, 18}} + + + YES + + 343014976 + 4326400 + + + + YES + + + + + + {{0, 25}, {506, 25}} + + + 1 + 1 + + + + + + + + 3 + {{37, 3}, {89, 19}} + {{132, 3}, {99, 19}} + {{237, 4}, {160, 18}} + + + + + 1 + 3 + 0 + 0 + 700 + + + + + + NO + YES + + + + + + + + + + + + 3 + {{37, 3}, {89, 19}} + {{132, 3}, {99, 19}} + {{237, 4}, {160, 18}} + + + 0 + 0 + YES + + + + 290 + + + + 257 + {{478, 4}, {18, 18}} + + + -1 + YES + + 67239424 + 134348800 + + + + + + add + + + + + _addOption: + + -2038284033 + 36 + + + 400 + 75 + + + + + 257 + {{458, 4}, {18, 18}} + + + -1 + YES + + 67239424 + 134348800 + - + + + + remove + + + + + _deleteOption: + + -2038284033 + 36 + + + 400 + 75 + + + + + 256 + {{37, 3}, {57, 19}} + + + -1 + YES + + 67239488 + 4196352 + + + 3 + valueForKey: + + + + 10 + age + + + + + -2038284033 + 36 + + + 400 + 75 + + + age + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + + YES + + + + + + + 3 + YES + YES + 2 + + + + + 256 + {{100, 3}, {115, 19}} + + + -1 + YES + + 67239488 + 4196352 + + + + -2038284033 + 36 + + + 400 + 75 + + + is + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + + YES + + + + + + + is less than + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + + is greater than + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + + 3 + YES + YES + 2 + + + + + 256 + {{221, 4}, {25, 18}} + + + YES + + 343014976 + 4326400 + + + + YES + + + + + + {{0, 50}, {506, 25}} + + + 2 + 1 + + + + + + + + 3 + {{37, 3}, {57, 19}} + {{100, 3}, {115, 19}} + {{221, 4}, {25, 18}} + + + + + 1 + 0 + 0 + 0 + 300 + + + + + + NO + YES + + + + + + + + + + + + 3 + {{37, 3}, {57, 19}} + {{100, 3}, {115, 19}} + {{221, 4}, {25, 18}} + + + 0 + 0 + YES + + + {{1, 1}, {506, 99}} + + + + + + NSRuleEditorItemPBoardType + + {506, 99} + + + YES + 75 + 25 + YES + NO + YES + 3 + rowType + subrows + criteria + displayValues + boundArray + NSMutableDictionary + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{1, 1}, {506, 99}} + + + + + 3 + MC45MTAwMDAwMjYyAA + + 4 + + + + -2147483392 + {{492, 1}, {15, 49}} + + + _doScroller: + 0.97999999999999998 + + + + -2147483392 + {{-100, -100}, {360, 15}} + + 1 + + _doScroller: + + + {{20, 53}, {508, 101}} + + + 530 + + + + + + + 289 + {{477, 12}, {51, 25}} + + 1 + YES + + 67239424 + 134217728 + OK + + + -2038152961 + 134 + + + 400 + 75 + + + + + 289 + {{391, 12}, {76, 25}} + + YES + + 67239424 + 134217728 + Cancel + + + -2038152961 + 134 + + + 400 + 75 + + + + {548, 204} + + + {{0, 0}, {1680, 1028}} + {548, 172} + {548, 522} + + + + + + + delegate + + + + 36 + + + + predicateSheet + + + + 43 + + + + closeSheet: + + + + 68 + + + + predicateEditor + + + + 69 + + + + folderNameField + + + + 70 + + + + closeSheet: + + + + 84 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 1 + + + + + + Sheet + + + 2 + + + + + + + + + + + + 24 + + + + + + + + 25 + + + + + 26 + + + + + + + + 27 + + + + + 44 + + + + + + + + + + 45 + + + + + 46 + + + + + 47 + + + + + + + + + + 48 + + + + + + + + + 49 + + + + + + + + + 50 + + + + + + + + + 51 + + + + + + + + + + 57 + + + + + 58 + + + + + 60 + + + + + + + + + 61 + + + + + + + + 62 + + + + + 63 + + + + + 64 + + + + + 65 + + + + + + + + 66 + + + + + 78 + + + + + 79 + + + + + 80 + + + + + 81 + + + + + + + + 82 + + + + + 85 + + + + + + + + + 86 + + + + + + + + 90 + + + + + + + + + + 94 + + + + + 98 + + + + + 99 + + + + + 100 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{439, 592}, {548, 204}} + com.apple.InterfaceBuilder.CocoaPlugin + {{439, 592}, {548, 204}} + + + + {548, 500} + {548, 150} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDGgAAwzsAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABBiAAAwzYAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABBoAAAwxgAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{487, 675}, {126, 41}} + com.apple.InterfaceBuilder.CocoaPlugin + {{569, 618}, {137, 98}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABD7oAAwiQAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDw4AAwiQAAA + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + 100 + + + + + AppController + NSObject + + closeSheet: + id + + + closeSheet: + + closeSheet: + id + + + + NSTextField + NSPredicateEditor + NSWindow + + + + folderNameField + NSTextField + + + predicateEditor + NSPredicateEditor + + + predicateSheet + NSWindow + + + + IBUserSource + + + + + NSObject + + IBUserSource + + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + YES + + 3 + + {9, 8} + {7, 2} + + + diff --git a/Tests/Manual/SmartFoldersDemo/Resources/SmartFolder.png b/Tests/Manual/SmartFoldersDemo/Resources/SmartFolder.png new file mode 100644 index 000000000..85e175cb0 Binary files /dev/null and b/Tests/Manual/SmartFoldersDemo/Resources/SmartFolder.png differ diff --git a/Tests/Manual/SmartFoldersDemo/Resources/searchBarBlue.png b/Tests/Manual/SmartFoldersDemo/Resources/searchBarBlue.png new file mode 100644 index 000000000..f700c6d52 Binary files /dev/null and b/Tests/Manual/SmartFoldersDemo/Resources/searchBarBlue.png differ diff --git a/Tests/Manual/SmartFoldersDemo/Resources/spinner.gif b/Tests/Manual/SmartFoldersDemo/Resources/spinner.gif new file mode 100644 index 000000000..06dbc2bc2 Binary files /dev/null and b/Tests/Manual/SmartFoldersDemo/Resources/spinner.gif differ diff --git a/Tests/Manual/SmartFoldersDemo/Resources/tableArray.plist b/Tests/Manual/SmartFoldersDemo/Resources/tableArray.plist new file mode 100644 index 000000000..31317585f --- /dev/null +++ b/Tests/Manual/SmartFoldersDemo/Resources/tableArray.plist @@ -0,0 +1,96 @@ + + + + + + birthDate + 2010-05-16 10:40:55 +0000 + firstName + Jimmy + lastName + McNulty + age + 46 + + + birthDate + 2010-05-12 10:40:55 +0000 + firstName + Kima + lastName + Georges + age + 41 + + + birthDate + 2010-04-31 10:40:55 +0000 + firstName + Lester + lastName + Freamon + age + 57 + + + birthDate + 2010-02-16 10:40:55 +0000 + firstName + kevin + lastName + Russel + age + 37 + + + birthDate + 2010-01-16 10:40:55 +0000 + firstName + William + lastName + Moreland + age + 53 + + + birthDate + 2007-12-16 10:40:55 +0000 + firstName + Cedric + lastName + Daniels + age + 47 + + + birthDate + 2008-11-16 10:40:55 +0000 + firstName + Roland + lastName + Prysbylewski + age + 27 + + + birthDate + 2007-10-16 10:40:55 +0000 + firstName + Omar + lastName + Little + age + 29 + + + birthDate + 2008-09-16 10:40:55 +0000 + firstName + Avon + lastName + Barkstale + age + 36 + + + diff --git a/Tests/Manual/SmartFoldersDemo/index-debug.html b/Tests/Manual/SmartFoldersDemo/index-debug.html new file mode 100644 index 000000000..a987ded85 --- /dev/null +++ b/Tests/Manual/SmartFoldersDemo/index-debug.html @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + SmartFoldersDemo + + + + + + + + + + + + + + +
+
+ + + +
+
+ + + diff --git a/Tests/Manual/SmartFoldersDemo/index.html b/Tests/Manual/SmartFoldersDemo/index.html new file mode 100644 index 000000000..130870d18 --- /dev/null +++ b/Tests/Manual/SmartFoldersDemo/index.html @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + SmartFoldersDemo + + + + + + + + + + + + +
+
+ + + +
+
+ + + diff --git a/Tests/Manual/SmartFoldersDemo/main.j b/Tests/Manual/SmartFoldersDemo/main.j new file mode 100644 index 000000000..c446f82f7 --- /dev/null +++ b/Tests/Manual/SmartFoldersDemo/main.j @@ -0,0 +1,18 @@ +/* + * AppController.j + * null + * + * Created by You on November 25, 2010. + * Copyright 2010, Your Company All rights reserved. + */ + +@import +@import + +@import "AppController.j" + + +function main(args, namedArgs) +{ + CPApplicationMain(args, namedArgs); +} diff --git a/Tests/Manual/TableTest/TableCibTest/AppController.j b/Tests/Manual/TableTest/TableCibTest/AppController.j index 7c2424f26..4f417530c 100644 --- a/Tests/Manual/TableTest/TableCibTest/AppController.j +++ b/Tests/Manual/TableTest/TableCibTest/AppController.j @@ -25,8 +25,8 @@ CPLogRegister(CPLogConsole); { // This is called when the cib is done loading. // You can implement this method on any object instantiated from a Cib. - // It's a useful hook for setting up current UI values, and other things. - + // It's a useful hook for setting up current UI values, and other things. + // In this case, we want the window from Cib to become our full browser window [theWindow setFullBridge:YES]; } diff --git a/Tests/Manual/TableTest/TableCibTest/Resources/MainMenu.cib b/Tests/Manual/TableTest/TableCibTest/Resources/MainMenu.cib index edbf60171..ab3e4cbef 100644 --- a/Tests/Manual/TableTest/TableCibTest/Resources/MainMenu.cib +++ b/Tests/Manual/TableTest/TableCibTest/Resources/MainMenu.cib @@ -1 +1 @@ -280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;4E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;7E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;9E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;2;10E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;2;11E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;2;12E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;2;13E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;2;14E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;16E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;18E;E;D;K;10;$classnameS;7;CPArrayK;8;$classesA;S;7;CPArrayS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;57E;E;E;S;16;IBCocoaFrameworkD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;1;0E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;22E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;18;_CPCibCustomObjectK;8;$classesA;S;18;_CPCibCustomObjectS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;58E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;2;59E;E;D;K;10;$classnameS;10;CPScrollerK;8;$classesA;S;10;CPScrollerS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;27E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;60E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;61E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;62E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;27E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;63E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;2;64E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;65E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;66E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;60E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;27E;K;18;CPControlActionKeyD;K;6;CP$UIDd;2;67E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;68E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;2;60E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;2;69E;E;D;K;10;$classnameS;13;CPTableColumnK;8;$classesA;S;13;CPTableColumnS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;2;40E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;2;70E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;2;71E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;2;72E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;2;74E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;2;76E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;2;77E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;2;78E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;2;79E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;17;CPTableHeaderViewK;8;$classesA;S;17;CPTableHeaderViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;80E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;60E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;81E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;81E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;80E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;82E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;83E;K;29;CPTableHeaderViewTableViewKeyD;K;6;CP$UIDd;2;32E;K;33;CPTableHeaderViewDrawsColumnLinesD;K;6;CP$UIDd;2;79E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;27E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;60E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;84E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;85E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;27E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;63E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;2;64E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;65E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;86E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;87E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;27E;K;18;CPControlActionKeyD;K;6;CP$UIDd;2;88E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;68E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;2;60E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;2;89E;E;D;K;10;$classnameS;12;CPScrollViewK;8;$classesA;S;12;CPScrollViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;26E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;30E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;60E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;90E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;91E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;92E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;30E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;93E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;94E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;83E;K;23;CPScrollViewContentViewD;K;6;CP$UIDd;2;96E;K;29;CPScrollViewHeaderClipViewKeyD;K;6;CP$UIDd;2;80E;K;21;CPScrollViewVScrollerD;K;6;CP$UIDd;2;20E;K;21;CPScrollViewHScrollerD;K;6;CP$UIDd;2;25E;K;23;CPScrollViewVLineScrollD;K;6;CP$UIDd;2;97E;K;23;CPScrollViewVPageScrollD;K;6;CP$UIDd;2;97E;K;23;CPScrollViewHLineScrollD;K;6;CP$UIDd;2;97E;K;23;CPScrollViewHPageScrollD;K;6;CP$UIDd;2;97E;K;24;CPScrollViewHasVScrollerD;K;6;CP$UIDd;2;79E;K;24;CPScrollViewHasHScrollerD;K;6;CP$UIDd;2;79E;K;29;CPScrollViewAutohidesScrollerD;K;6;CP$UIDd;2;79E;K;25;CPScrollViewCornerViewKeyD;K;6;CP$UIDd;2;99E;K;31;CPScrollViewBottomCornerViewKeyD;K;6;CP$UIDd;3;100E;K;25;CPScrollViewBorderTypeKeyD;K;6;CP$UIDd;3;101E;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;58E;E;D;K;10;$classnameS;6;CPViewK;8;$classesA;S;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;29E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;60E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;102E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;103E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;104E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;83E;E;D;K;10;$classnameS;11;CPTableViewK;8;$classesA;S;11;CPTableViewS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;31E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;96E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;60E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;105E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;105E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;96E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;106E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;83E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;68E;K;24;CPTableViewDataSourceKeyD;K;6;CP$UIDd;1;0E;K;22;CPTableViewDelegateKeyD;K;6;CP$UIDd;1;0E;K;23;CPTableViewRowHeightKeyD;K;6;CP$UIDd;3;107E;K;30;CPTableViewIntercellSpacingKeyD;K;6;CP$UIDd;3;108E;K;37;CPTableViewSelectionHighlightStyleKeyD;K;6;CP$UIDd;2;60E;K;37;CPTableViewColumnAutoresizingStyleKeyD;K;6;CP$UIDd;2;68E;K;31;CPTableViewMultipleSelectionKeyD;K;6;CP$UIDd;2;78E;K;28;CPTableViewEmptySelectionKeyD;K;6;CP$UIDd;2;79E;K;30;CPTableViewColumnReorderingKeyD;K;6;CP$UIDd;2;79E;K;28;CPTableViewColumnResizingKeyD;K;6;CP$UIDd;2;79E;K;29;CPTableViewColumnSelectionKeyD;K;6;CP$UIDd;2;79E;K;26;CPTableViewTableColumnsKeyD;K;6;CP$UIDd;3;109E;K;23;CPTableViewGridColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTableViewGridStyleMaskKeyD;K;6;CP$UIDd;2;77E;K;39;CPTableViewUsesAlternatingBackgroundKeyD;K;6;CP$UIDd;2;79E;K;34;CPTableViewAlternatingRowColorsKeyD;K;6;CP$UIDd;1;0E;K;24;CPTableViewCornerViewKeyD;K;6;CP$UIDd;2;99E;K;24;CPTableViewHeaderViewKeyD;K;6;CP$UIDd;2;24E;K;26;CPTableViewAutosaveNameKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;110E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;111E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;112E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;113E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;114E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;30E;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;115E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;2;39E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;116E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;2;71E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;2;72E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;117E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;118E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;2;77E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;2;78E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;2;79E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;3;119E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;120E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;2;97E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;121E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;122E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;124E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;2;77E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;2;78E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;2;79E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;S;2;14S;1;1S;1;2S;1;7S;1;3S;1;4S;1;6S;1;5S;1;8S;1;9S;2;10S;2;11S;2;12S;12;File's OwnerS;2;13S;1;0D;K;10;$classnameS;20;CPCibOutletConnectorK;8;$classesA;S;20;CPCibOutletConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;54E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;16E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;35E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;125E;E;D;K;6;$classD;K;6;CP$UIDd;2;54E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;35E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;34E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;126E;E;D;K;6;$classD;K;6;CP$UIDd;2;54E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;32E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;35E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;127E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;34E;E;E;d;1;0S;22;{{502, 16}, {15, 275}}S;19;{{0, 0}, {15, 275}}d;1;8d;11;-2147483648S;8;scrollerS;17;disabled+verticalS;27;_verticalScrollerDidScroll:d;1;4f;18;0.9482758620689655d;3;154d;2;40d;4;1000D;K;10;$classnameS;24;_CPTableColumnHeaderViewK;8;$classesA;S;24;_CPTableColumnHeaderViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;73E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;128E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;128E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;129E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;130E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;83E;K;16;$atext-alignmentD;K;6;CP$UIDd;2;60E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;131E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;133E;E;D;K;10;$classnameS;11;CPTextFieldK;8;$classesA;S;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;75E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;128E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;128E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;134E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;135E;K;6;$afontD;K;6;CP$UIDd;3;137E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;68E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;101E;K;11;$aalignmentD;K;6;CP$UIDd;2;60E;K;15;$acontent-insetD;K;6;CP$UIDd;3;139E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;140E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;141E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;2;68E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;2;60E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;140E;E;d;1;3F;T;D;K;6;$classD;K;6;CP$UIDd;2;95E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;27E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;60E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;146E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;147E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;148E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;27E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;63E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;145E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;83E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;2;24E;E;S;19;{{0, 0}, {516, 23}}S;14;tableHeaderRowS;6;normalS;19;{{1, 1}, {516, 15}}S;19;{{0, 0}, {516, 15}}S;8;disabledd;1;1S;29;_horizontalScrollerDidScroll:f;18;0.9866156787762906S;22;{{20, 20}, {518, 308}}S;20;{{0, 0}, {518, 308}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;100E;E;E;d;2;36S;10;scrollviewD;K;10;$classnameS;10;CPClipViewK;8;$classesA;S;10;CPClipViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;95E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;27E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;60E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;142E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;105E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;143E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;27E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;63E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;145E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;83E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;2;32E;E;d;2;10D;K;10;$classnameS;13;_CPCornerViewK;8;$classesA;S;13;_CPCornerViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;98E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;27E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;60E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;149E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;150E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;27E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;63E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;2;64E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;83E;E;D;K;6;$classD;K;6;CP$UIDd;2;29E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;27E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;128E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;128E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;27E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;83E;E;d;1;2S;21;{{7, 11}, {558, 348}}S;20;{{0, 0}, {558, 348}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;27E;E;E;S;20;{{0, 0}, {516, 290}}S;9;tableviewd;2;23S;6;{3, 2}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;22E;E;E;S;32;{10000000000000, 10000000000000}S;8;CPWindowS;24;{{335, 128}, {558, 348}}d;1;7S;6;WindowS;13;AppControllerd;3;101D;K;6;$classD;K;6;CP$UIDd;2;73E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;128E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;128E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;152E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;130E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;83E;K;16;$atext-alignmentD;K;6;CP$UIDd;2;60E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;153E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;133E;E;D;K;6;$classD;K;6;CP$UIDd;2;75E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;128E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;128E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;134E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;135E;K;6;$afontD;K;6;CP$UIDd;3;154E;K;12;$atext-colorD;K;6;CP$UIDd;3;155E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;68E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;101E;K;11;$aalignmentD;K;6;CP$UIDd;2;60E;K;15;$acontent-insetD;K;6;CP$UIDd;3;156E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;140E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;141E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;2;68E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;2;60E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;140E;E;S;5;iconsd;3;188d;22;3.4028234663852886e+38D;K;6;$classD;K;6;CP$UIDd;2;73E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;128E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;128E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;157E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;130E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;83E;K;16;$atext-alignmentD;K;6;CP$UIDd;2;60E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;158E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;133E;E;D;K;10;$classnameS;11;CPImageViewK;8;$classesA;S;11;CPImageViewS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;123E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;128E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;128E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;83E;K;15;$aimage-scalingD;K;6;CP$UIDd;2;60E;K;11;$aalignmentD;K;6;CP$UIDd;2;60E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;68E;K;23;CPImageViewHasShadowKeyD;K;6;CP$UIDd;1;0E;K;28;CPImageViewImageAlignmentKeyD;K;6;CP$UIDd;2;60E;E;S;8;delegateS;9;theWindowS;10;dataSourceS;16;{{0, 0}, {0, 0}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;160E;E;E;S;12;columnHeaderS;3;TwoD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;132E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;161E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;162E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;78E;E;S;9;textfieldS;11;placeholderD;K;10;$classnameS;17;_CPThemeAttributeK;8;$classesA;S;17;_CPThemeAttributeS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;136E;K;4;nameD;K;6;CP$UIDd;3;163E;K;6;valuesD;K;6;CP$UIDd;3;165E;E;D;K;10;$classnameS;21;_CPKeyedArchiverValueK;8;$classesA;S;21;_CPKeyedArchiverValueS;7;CPValueS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;138E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;166E;E;S;0;d;4;3072S;20;{{1, 1}, {516, 290}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;32E;E;E;D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;144E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;167E;E;S;21;{{1, 291}, {516, 17}}S;19;{{0, 0}, {516, 17}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;24E;E;E;S;22;{{502, 285}, {16, 23}}S;18;{{0, 0}, {16, 23}}S;10;cornerviewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;168E;E;E;S;8;Column 1D;K;6;$classD;K;6;CP$UIDd;3;136E;K;4;nameD;K;6;CP$UIDd;3;163E;K;6;valuesD;K;6;CP$UIDd;3;169E;E;D;K;6;$classD;K;6;CP$UIDd;3;144E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;170E;E;D;K;6;$classD;K;6;CP$UIDd;3;138E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;166E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;171E;E;E;S;9;ImageViewD;K;10;$classnameS;19;_CPImageAndTextViewK;8;$classesA;S;19;_CPImageAndTextViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;159E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;74E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;128E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;128E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;74E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;172E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;83E;E;S;17;Arial, sans-serifd;2;12S;4;fontD;K;10;$classnameS;12;CPDictionaryK;8;$classesA;S;12;CPDictionaryS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;164E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;173E;K;6;normalD;K;6;CP$UIDd;3;174E;E;E;S;39;{"top":0,"right":5,"bottom":0,"left":5}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;87E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;159E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;117E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;128E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;128E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;117E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;172E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;83E;E;D;K;6;$classD;K;6;CP$UIDd;3;164E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;175E;K;6;normalD;K;6;CP$UIDd;3;133E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;87E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;159E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;122E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;128E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;128E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;122E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;172E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;83E;E;d;2;18D;K;6;$classD;K;6;CP$UIDd;3;132E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;176E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;177E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;79E;E;D;K;6;$classD;K;6;CP$UIDd;3;132E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;176E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;177E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;78E;E;D;K;6;$classD;K;6;CP$UIDd;3;132E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;161E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;162E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;79E;E;S;5;Ariald;2;20E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file +280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;4E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;7E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;9E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;2;10E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;2;11E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;2;12E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;2;13E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;2;14E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;16E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;18E;E;D;K;10;$classnameS;7;CPArrayK;8;$classesA;S;7;CPArrayS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;39E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;59E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;E;E;S;16;IBCocoaFrameworkD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;31E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;22E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;18;_CPCibCustomObjectK;8;$classesA;S;18;_CPCibCustomObjectS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;64E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;2;65E;E;D;K;10;$classnameS;6;CPViewK;8;$classesA;S;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;66E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;67E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;68E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;69E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;70E;E;D;K;10;$classnameS;12;CPScrollViewK;8;$classesA;S;12;CPScrollViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;20E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;66E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;71E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;72E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;73E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;20E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;74E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;75E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;70E;K;23;CPScrollViewContentViewD;K;6;CP$UIDd;2;77E;K;29;CPScrollViewHeaderClipViewKeyD;K;6;CP$UIDd;2;78E;K;21;CPScrollViewVScrollerD;K;6;CP$UIDd;2;37E;K;21;CPScrollViewHScrollerD;K;6;CP$UIDd;2;26E;K;23;CPScrollViewVLineScrollD;K;6;CP$UIDd;2;79E;K;23;CPScrollViewVPageScrollD;K;6;CP$UIDd;2;79E;K;23;CPScrollViewHLineScrollD;K;6;CP$UIDd;2;79E;K;23;CPScrollViewHPageScrollD;K;6;CP$UIDd;2;79E;K;24;CPScrollViewHasVScrollerD;K;6;CP$UIDd;2;80E;K;24;CPScrollViewHasHScrollerD;K;6;CP$UIDd;2;80E;K;29;CPScrollViewAutohidesScrollerD;K;6;CP$UIDd;2;80E;K;25;CPScrollViewCornerViewKeyD;K;6;CP$UIDd;2;82E;K;31;CPScrollViewBottomCornerViewKeyD;K;6;CP$UIDd;2;83E;K;25;CPScrollViewBorderTypeKeyD;K;6;CP$UIDd;2;84E;E;D;K;10;$classnameS;13;CPTableColumnK;8;$classesA;S;13;CPTableColumnS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;1;0E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;2;85E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;2;79E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;2;86E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;2;88E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;2;90E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;2;91E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;2;92E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;2;80E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;10;CPScrollerK;8;$classesA;S;10;CPScrollerS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;22E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;66E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;93E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;94E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;22E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;95E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;2;96E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;97E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;98E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;66E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;22E;K;18;CPControlActionKeyD;K;6;CP$UIDd;2;99E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;100E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;2;66E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;101E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;1;0E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;102E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;2;79E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;2;86E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;103E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;105E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;2;91E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;2;92E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;2;80E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;2;48E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;106E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;107E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;108E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;109E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;111E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;2;91E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;2;92E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;2;80E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;64E;E;D;K;10;$classnameS;17;CPTableHeaderViewK;8;$classesA;S;17;CPTableHeaderViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;78E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;66E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;112E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;112E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;78E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;113E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;70E;K;29;CPTableHeaderViewTableViewKeyD;K;6;CP$UIDd;2;36E;K;33;CPTableHeaderViewDrawsColumnLinesD;K;6;CP$UIDd;2;80E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;2;59E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;114E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;107E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;108E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;115E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;116E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;2;91E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;2;92E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;2;80E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;3;117E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;118E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;2;79E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;119E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;120E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;122E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;2;91E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;2;92E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;2;80E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;123E;E;D;K;10;$classnameS;11;CPTableViewK;8;$classesA;S;11;CPTableViewS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;35E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;77E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;66E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;124E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;124E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;77E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;125E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;70E;K;12;$agrid-colorD;K;6;CP$UIDd;3;127E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;100E;K;24;CPTableViewDataSourceKeyD;K;6;CP$UIDd;1;0E;K;22;CPTableViewDelegateKeyD;K;6;CP$UIDd;1;0E;K;23;CPTableViewRowHeightKeyD;K;6;CP$UIDd;3;128E;K;30;CPTableViewIntercellSpacingKeyD;K;6;CP$UIDd;3;129E;K;37;CPTableViewSelectionHighlightStyleKeyD;K;6;CP$UIDd;2;66E;K;37;CPTableViewColumnAutoresizingStyleKeyD;K;6;CP$UIDd;3;100E;K;31;CPTableViewMultipleSelectionKeyD;K;6;CP$UIDd;2;92E;K;28;CPTableViewEmptySelectionKeyD;K;6;CP$UIDd;2;80E;K;30;CPTableViewColumnReorderingKeyD;K;6;CP$UIDd;2;80E;K;28;CPTableViewColumnResizingKeyD;K;6;CP$UIDd;2;80E;K;29;CPTableViewColumnSelectionKeyD;K;6;CP$UIDd;2;80E;K;26;CPTableViewTableColumnsKeyD;K;6;CP$UIDd;3;130E;K;23;CPTableViewGridColorKeyD;K;6;CP$UIDd;3;127E;K;27;CPTableViewGridStyleMaskKeyD;K;6;CP$UIDd;2;91E;K;39;CPTableViewUsesAlternatingBackgroundKeyD;K;6;CP$UIDd;2;80E;K;34;CPTableViewAlternatingRowColorsKeyD;K;6;CP$UIDd;1;0E;K;24;CPTableViewCornerViewKeyD;K;6;CP$UIDd;2;82E;K;24;CPTableViewHeaderViewKeyD;K;6;CP$UIDd;2;31E;K;26;CPTableViewAutosaveNameKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;22E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;66E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;131E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;132E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;22E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;95E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;2;96E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;97E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;133E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;66E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;22E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;134E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;100E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;2;66E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;135E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;38E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;136E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;137E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;138E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;139E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;140E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;20E;E;S;2;11S;2;12S;2;15S;1;8S;2;16S;2;17S;1;3S;1;7S;1;2S;2;13S;2;18S;1;5S;1;6S;1;4S;2;10S;1;9S;1;0S;2;14S;12;File's OwnerS;1;1D;K;10;$classnameS;20;CPCibOutletConnectorK;8;$classesA;S;20;CPCibOutletConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;60E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;16E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;34E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;141E;E;D;K;6;$classD;K;6;CP$UIDd;2;60E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;34E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;39E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;142E;E;D;K;6;$classD;K;6;CP$UIDd;2;60E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;36E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;34E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;143E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;39E;E;E;d;1;0S;21;{{7, 11}, {686, 348}}S;20;{{0, 0}, {686, 348}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;22E;E;E;S;6;normalS;22;{{20, 20}, {646, 308}}S;20;{{0, 0}, {646, 308}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;83E;E;E;d;2;36S;10;scrollviewD;K;10;$classnameS;10;CPClipViewK;8;$classesA;S;10;CPClipViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;76E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;22E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;66E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;144E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;124E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;145E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;22E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;95E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;146E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;70E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;2;36E;E;D;K;6;$classD;K;6;CP$UIDd;2;76E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;22E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;66E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;147E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;148E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;149E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;22E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;95E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;146E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;70E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;2;31E;E;d;2;10T;D;K;10;$classnameS;13;_CPCornerViewK;8;$classesA;S;13;_CPCornerViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;22E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;66E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;150E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;151E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;22E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;95E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;152E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;70E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;22E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;153E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;153E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;22E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;70E;E;d;1;2d;3;105f;22;3.4028234663852885e+54D;K;10;$classnameS;24;_CPTableColumnHeaderViewK;8;$classesA;S;24;_CPTableColumnHeaderViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;87E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;153E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;153E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;154E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;155E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;70E;K;16;$atext-alignmentD;K;6;CP$UIDd;2;66E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;156E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;158E;E;D;K;10;$classnameS;16;CPLevelIndicatorK;8;$classesA;S;16;CPLevelIndicatorS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;89E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;153E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;153E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;70E;K;11;$aalignmentD;K;6;CP$UIDd;2;66E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;100E;K;24;CPLevelIndicatorStyleKeyD;K;6;CP$UIDd;2;84E;K;27;CPLevelIndicatorMinValueKeyD;K;6;CP$UIDd;2;66E;K;27;CPLevelIndicatorMaxValueKeyD;K;6;CP$UIDd;2;91E;K;31;CPLevelIndicatorWarningValueKeyD;K;6;CP$UIDd;2;91E;K;32;CPLevelIndicatorCriticalValueKeyD;K;6;CP$UIDd;2;91E;K;35;CPLevelIndicatorTickMarkPositionKeyD;K;6;CP$UIDd;2;66E;K;36;CPLevelIndicatorNumberOfTickMarksKeyD;K;6;CP$UIDd;2;66E;K;41;CPLevelIndicatorNumberOfMajorTickMarksKeyD;K;6;CP$UIDd;1;0E;K;29;CPLevelIndicatorIsEditableKeyD;K;6;CP$UIDd;2;92E;E;d;1;3F;S;19;{{1, 1}, {516, 15}}S;19;{{0, 0}, {516, 15}}d;1;8d;11;-2147483648S;8;scrollerS;8;disabledS;29;_horizontalScrollerDidScroll:d;1;4f;18;0.9938271604938271d;2;81D;K;6;$classD;K;6;CP$UIDd;2;87E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;153E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;153E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;159E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;155E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;70E;K;16;$atext-alignmentD;K;6;CP$UIDd;2;84E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;160E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;158E;E;D;K;10;$classnameS;10;CPCheckBoxK;8;$classesA;S;10;CPCheckBoxS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;104E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;153E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;153E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;161E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;70E;K;15;$aimage-scalingD;K;6;CP$UIDd;2;84E;K;16;$aimage-positionD;K;6;CP$UIDd;2;84E;K;20;$avertical-alignmentD;K;6;CP$UIDd;2;84E;K;11;$aalignmentD;K;6;CP$UIDd;2;84E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;100E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;162E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;2;92E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;2;84E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;66E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;163E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;164E;E;d;3;154d;2;40d;4;1000D;K;6;$classD;K;6;CP$UIDd;2;87E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;153E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;153E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;165E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;155E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;70E;K;16;$atext-alignmentD;K;6;CP$UIDd;2;66E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;166E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;158E;E;D;K;10;$classnameS;11;CPTextFieldK;8;$classesA;S;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;110E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;153E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;153E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;167E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;168E;K;6;$afontD;K;6;CP$UIDd;3;170E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;100E;K;20;$avertical-alignmentD;K;6;CP$UIDd;2;84E;K;11;$aalignmentD;K;6;CP$UIDd;2;66E;K;15;$acontent-insetD;K;6;CP$UIDd;3;172E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;173E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;174E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;100E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;2;66E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;173E;E;S;19;{{0, 0}, {644, 23}}S;14;tableHeaderRowd;3;101D;K;6;$classD;K;6;CP$UIDd;2;87E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;153E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;153E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;175E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;155E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;70E;K;16;$atext-alignmentD;K;6;CP$UIDd;2;66E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;176E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;158E;E;D;K;6;$classD;K;6;CP$UIDd;3;110E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;153E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;153E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;167E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;168E;K;6;$afontD;K;6;CP$UIDd;3;177E;K;12;$atext-colorD;K;6;CP$UIDd;3;178E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;100E;K;20;$avertical-alignmentD;K;6;CP$UIDd;2;84E;K;11;$aalignmentD;K;6;CP$UIDd;2;66E;K;15;$acontent-insetD;K;6;CP$UIDd;3;179E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;173E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;174E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;100E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;2;66E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;173E;E;S;5;iconsd;3;188f;21;3.028234663852886e+53D;K;6;$classD;K;6;CP$UIDd;2;87E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;153E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;153E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;180E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;155E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;70E;K;16;$atext-alignmentD;K;6;CP$UIDd;2;66E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;181E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;158E;E;D;K;10;$classnameS;11;CPImageViewK;8;$classesA;S;11;CPImageViewS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;121E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;153E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;153E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;70E;K;15;$aimage-scalingD;K;6;CP$UIDd;2;66E;K;11;$aalignmentD;K;6;CP$UIDd;2;66E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;100E;K;23;CPImageViewHasShadowKeyD;K;6;CP$UIDd;1;0E;K;28;CPImageViewImageAlignmentKeyD;K;6;CP$UIDd;2;66E;E;S;13;AppControllerS;20;{{0, 0}, {644, 290}}S;9;tableviewD;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;126E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;182E;E;d;2;43S;6;{3, 2}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;24E;E;E;S;22;{{502, 16}, {15, 275}}S;19;{{0, 0}, {15, 275}}S;17;disabled+verticalS;27;_verticalScrollerDidScroll:f;18;0.9482758620689655S;32;{10000000000000, 10000000000000}S;8;CPWindowS;24;{{335, 428}, {686, 348}}d;1;7S;6;WindowS;8;delegateS;9;theWindowS;10;dataSourceS;20;{{1, 1}, {644, 290}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;36E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;126E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;183E;E;S;21;{{1, 291}, {644, 17}}S;19;{{0, 0}, {644, 17}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;31E;E;E;S;22;{{502, 285}, {16, 23}}S;18;{{0, 0}, {16, 23}}S;10;cornerviewS;16;{{0, 0}, {0, 0}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;185E;E;E;S;12;columnHeaderS;15;Level IndicatorD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;157E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;186E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;187E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;92E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;2;92E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;188E;E;E;S;8;CheckboxS;9;check-boxS;5;Checkf;3;0.5f;4;0.05D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;189E;E;E;S;3;TwoS;9;textfieldS;11;placeholderD;K;10;$classnameS;17;_CPThemeAttributeK;8;$classesA;S;17;_CPThemeAttributeS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;169E;K;4;nameD;K;6;CP$UIDd;3;190E;K;6;valuesD;K;6;CP$UIDd;3;192E;E;D;K;10;$classnameS;21;_CPKeyedArchiverValueK;8;$classesA;S;21;_CPKeyedArchiverValueS;7;CPValueS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;171E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;193E;E;S;0;d;4;3072D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;194E;E;E;S;8;Column 1D;K;6;$classD;K;6;CP$UIDd;3;169E;K;4;nameD;K;6;CP$UIDd;3;190E;K;6;valuesD;K;6;CP$UIDd;3;195E;E;D;K;6;$classD;K;6;CP$UIDd;3;126E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;196E;E;D;K;6;$classD;K;6;CP$UIDd;3;171E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;193E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;197E;E;E;S;9;ImageViewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;163E;D;K;6;CP$UIDd;3;163E;D;K;6;CP$UIDd;3;163E;D;K;6;CP$UIDd;3;198E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;198E;D;K;6;CP$UIDd;3;198E;D;K;6;CP$UIDd;3;198E;D;K;6;CP$UIDd;3;198E;E;E;D;K;10;$classnameS;19;_CPImageAndTextViewK;8;$classesA;S;19;_CPImageAndTextViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;184E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;88E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;153E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;153E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;88E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;199E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;70E;E;S;17;Arial, sans-serifd;2;12D;K;6;$classD;K;6;CP$UIDd;3;184E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;103E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;153E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;153E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;103E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;199E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;70E;E;D;K;6;$classD;K;6;CP$UIDd;3;184E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;109E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;153E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;153E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;109E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;199E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;70E;E;S;4;fontD;K;10;$classnameS;12;CPDictionaryK;8;$classesA;S;12;CPDictionaryS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;191E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;200E;K;6;normalD;K;6;CP$UIDd;3;201E;E;E;S;39;{"top":0,"right":5,"bottom":0,"left":5}D;K;6;$classD;K;6;CP$UIDd;3;184E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;115E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;153E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;153E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;115E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;199E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;70E;E;D;K;6;$classD;K;6;CP$UIDd;3;191E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;202E;K;6;normalD;K;6;CP$UIDd;3;158E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;3;198E;D;K;6;CP$UIDd;3;198E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;184E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;120E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;153E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;153E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;120E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;199E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;70E;E;d;1;1d;2;18D;K;6;$classD;K;6;CP$UIDd;3;157E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;186E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;203E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;80E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;2;92E;E;D;K;6;$classD;K;6;CP$UIDd;3;157E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;186E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;203E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;92E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;2;92E;E;D;K;6;$classD;K;6;CP$UIDd;3;157E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;186E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;187E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;80E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;2;92E;E;d;2;20E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/TableTest/TableCibTest/Resources/MainMenu.xib b/Tests/Manual/TableTest/TableCibTest/Resources/MainMenu.xib index 35905bcb3..79c702e87 100644 --- a/Tests/Manual/TableTest/TableCibTest/Resources/MainMenu.xib +++ b/Tests/Manual/TableTest/TableCibTest/Resources/MainMenu.xib @@ -2,26 +2,28 @@ 1050 - 10J567 - 1294 + 10J3210 + 1306 1038.35 - 462.00 + 461.00 com.apple.InterfaceBuilder.CocoaPlugin - 1294 + 1306 YES - NSView - NSTableView - NSScrollView - NSWindowTemplate - NSTextFieldCell - NSTableHeaderView - NSTableColumn - NSImageCell NSScroller + NSTableHeaderView + NSScrollView + NSTextFieldCell + NSButtonCell + NSImageCell + NSTableView NSCustomObject + NSView + NSWindowTemplate + NSLevelIndicatorCell + NSTableColumn YES @@ -48,7 +50,7 @@ 7 2 - {{335, 402}, {558, 348}} + {{335, 402}, {686, 348}} 1946157056 Window NSWindow @@ -71,7 +73,7 @@ 256 - {516, 290} + {644, 290} @@ -79,7 +81,7 @@ 256 - {516, 17} + {644, 17} @@ -99,7 +101,7 @@ icons 188 10 - 3.4028234663852886e+38 + 3.0282346638528862e+53 75628096 2048 @@ -109,11 +111,11 @@ 11 3100 - + 6 System headerColor - + 3 MQA @@ -223,10 +225,75 @@ YES + + 81 + 10 + 3.4028234663852885e+54 + + 75628096 + 2048 + Checkbox + + + + + + 67239424 + 134217728 + Check + + + 1211912703 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + 3 + YES + YES + + + + 105 + 10 + 3.4028234663852885e+54 + + 75628096 + 2048 + Level Indicator + + + + + + -2080244224 + 0 + + + 3 + 3 + 3 + 3 + 2 + + 3 + YES + YES + + 3 2 - + 6 System @@ -236,8 +303,8 @@ MC41AA - 23 - -157286400 + 43 + -155189248 3 @@ -248,7 +315,7 @@ 0 - {{1, 17}, {516, 290}} + {{1, 17}, {644, 290}} @@ -277,8 +344,7 @@ 1 _doScroller: - 1 - 0.98661567877629064 + 0.99382716049382713 @@ -287,7 +353,7 @@ YES - {{1, 0}, {516, 17}} + {{1, 0}, {644, 17}} @@ -297,7 +363,7 @@
- {{20, 20}, {518, 308}} + {{20, 20}, {646, 308}} @@ -307,15 +373,15 @@ - QSAAAEEgAABByAAAQcgAAA + QSAAAEEgAABCNAAAQjQAAA - {{7, 11}, {558, 348}} + {{7, 11}, {686, 348}} - {{0, 0}, {1440, 878}} + {{0, 0}, {1920, 1178}} {1e+13, 1e+13} @@ -430,6 +496,8 @@ + + @@ -475,11 +543,39 @@ + + 504 + + + YES + + + + + + 506 + + + YES + + + + + + 510 + + + 503 + + 508 + + + @@ -503,6 +599,8 @@ 496.IBPluginDependency 497.IBPluginDependency 503.IBPluginDependency + 508.IBPluginDependency + 510.IBPluginDependency YES @@ -523,6 +621,8 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin @@ -537,24 +637,14 @@ - 503 + 512 YES AppController - - theWindow - NSWindow - - - theWindow - - theWindow - NSWindow - - + NSObject IBProjectSource ./Classes/AppController.h @@ -574,5 +664,9 @@ YES 3 + + NSSwitch + {15, 15} + diff --git a/Tests/Manual/predicateWithFormat/AppController.j b/Tests/Manual/predicateWithFormat/AppController.j new file mode 100644 index 000000000..28da72e6d --- /dev/null +++ b/Tests/Manual/predicateWithFormat/AppController.j @@ -0,0 +1,150 @@ +/* + * AppController.j + * predicateWithFormat + * + * Created by aparajita on May 25, 2011. + * Copyright 2011, Victory-Heart Productions All rights reserved. + */ + +@import + +var usesNewCode = NO; + +@implementation AppController : CPObject +{ + CPWindow theWindow; + CPPopUpButton dataMenu; + CPPopUpButton comparisonMenu; + CPPopUpButton nameMenu; + CPTextField resultsField; +} + +- (void)applicationDidFinishLaunching:(CPNotification)aNotification +{ + useNewCode = usesNewCode; +} + +- (void)awakeFromCib +{ +} + +- (BOOL)useNewCode +{ + return usesNewCode; +} + +- (void)setUseNewCode:(BOOL)flag +{ + usesNewCode = flag; +} + +- (void)search:(id)sender +{ + var results = @""; + + try + { + var format = [CPString stringWithFormat:@"SELF %@ %%@", [comparisonMenu titleOfSelectedItem]], + predicate = [CPPredicate predicateWithFormat:format, [nameMenu titleOfSelectedItem]], + data = [[dataMenu titleOfSelectedItem]], + searchResults = [data filteredArrayUsingPredicate:predicate], + + results = searchResults.join("\n"); + [resultsField setTextColor:[CPColor blackColor]]; + } + catch (ex) + { + results = [ex reason]; + [resultsField setTextColor:[CPColor redColor]]; + } + + [resultsField setStringValue:@"Result: " + results]; +} + +@end + +var CPComparisonPredicateModifier, + CPPredicateOperatorType; + +@implementation CPComparisonPredicate (test) + +- (BOOL)_evaluateValue:lhs rightValue:rhs +{ + var leftIsNil = (lhs == nil || [lhs isEqual:[CPNull null]]), + rightIsNil = (rhs == nil || [rhs isEqual:[CPNull null]]); + + if ((leftIsNil || rightIsNil) && _type != CPCustomSelectorPredicateOperatorType) + return (leftIsNil == rightIsNil && + (_type == CPEqualToPredicateOperatorType || + _type == CPLessThanOrEqualToPredicateOperatorType || + _type == CPGreaterThanOrEqualToPredicateOperatorType)); + + var string_compare_options = 0; + + // left and right should be casted first [CAST()] following 10.5 rules. + switch (_type) + { + case CPLessThanPredicateOperatorType: return ([lhs compare:rhs] == CPOrderedAscending); + case CPLessThanOrEqualToPredicateOperatorType: return ([lhs compare:rhs] != CPOrderedDescending); + case CPGreaterThanPredicateOperatorType: return ([lhs compare:rhs] == CPOrderedDescending); + case CPGreaterThanOrEqualToPredicateOperatorType: return ([lhs compare:rhs] != CPOrderedAscending); + case CPEqualToPredicateOperatorType: return [lhs isEqual:rhs]; + case CPNotEqualToPredicateOperatorType: return (![lhs isEqual:rhs]); + + case CPMatchesPredicateOperatorType: var commut = (_options & CPCaseInsensitivePredicateOption) ? "gi":"g"; + if (_options & CPDiacriticInsensitivePredicateOption) + { + lhs = lhs.stripDiacritics(); + rhs = rhs.stripDiacritics(); + } + return (new RegExp(rhs,commut)).test(lhs); + + case CPLikePredicateOperatorType: if (_options & CPDiacriticInsensitivePredicateOption) + { + lhs = lhs.stripDiacritics(); + rhs = rhs.stripDiacritics(); + } + var commut = (_options & CPCaseInsensitivePredicateOption) ? "gi":"g", + reg = new RegExp(rhs.escapeForRegExp(),commut); + return reg.test(lhs); + + case CPBeginsWithPredicateOperatorType: var range = usesNewCode ? CPMakeRange(0, MIN([lhs length], [rhs length])) : CPMakeRange(0,[rhs length]); + if (_options & CPCaseInsensitivePredicateOption) string_compare_options |= CPCaseInsensitiveSearch; + if (_options & CPDiacriticInsensitivePredicateOption) string_compare_options |= CPDiacriticInsensitiveSearch; + return ([lhs compare:rhs options:string_compare_options range:range] == CPOrderedSame); + + case CPEndsWithPredicateOperatorType: var range = usesNewCode ? CPMakeRange(MAX([lhs length] - [rhs length], 0), MIN([lhs length], [rhs length])) : CPMakeRange([lhs length] - [rhs length],[rhs length]); + if (_options & CPCaseInsensitivePredicateOption) string_compare_options |= CPCaseInsensitiveSearch; + if (_options & CPDiacriticInsensitivePredicateOption) string_compare_options |= CPDiacriticInsensitiveSearch; + return ([lhs compare:rhs options:string_compare_options range:range] == CPOrderedSame); + + case CPCustomSelectorPredicateOperatorType: return [lhs performSelector:_customSelector withObject:rhs]; + + case CPInPredicateOperatorType: var a = lhs; // swap + lhs = rhs; + rhs = a; + case CPContainsPredicateOperatorType: if (![lhs isKindOfClass:[CPString class]]) + { + if (![lhs respondsToSelector: @selector(objectEnumerator)]) + [CPException raise:CPInvalidArgumentException reason:@"The left/right hand side for a CONTAINS/IN operator must be a collection or a string"]; + + return [lhs containsObject:rhs]; + } + + if (_options & CPCaseInsensitivePredicateOption) + string_compare_options |= CPCaseInsensitiveSearch; + if (_options & CPDiacriticInsensitivePredicateOption) + string_compare_options |= CPDiacriticInsensitiveSearch; + + return ([lhs rangeOfString:rhs options:string_compare_options].location != CPNotFound); + + case CPBetweenPredicateOperatorType: if ([rhs count] < 2) + [CPException raise:CPInvalidArgumentException reason:@"The right hand side for a BETWEEN operator must contain 2 objects"]; + + return ([lhs compare:rhs[0]] == CPOrderedDescending && [lhs compare:rhs[1]] == CPOrderedAscending); + + default: return NO; + } +} + +@end diff --git a/Tests/Manual/predicateWithFormat/Info.plist b/Tests/Manual/predicateWithFormat/Info.plist new file mode 100644 index 000000000..1857a66d9 --- /dev/null +++ b/Tests/Manual/predicateWithFormat/Info.plist @@ -0,0 +1,10 @@ + + + + + Main cib file base name + MainMenu.cib + CPBundleName + test + + diff --git a/Tests/Manual/predicateWithFormat/Jakefile b/Tests/Manual/predicateWithFormat/Jakefile new file mode 100644 index 000000000..654a5bcb8 --- /dev/null +++ b/Tests/Manual/predicateWithFormat/Jakefile @@ -0,0 +1,94 @@ +/* + * Jakefile + * test + * + * Created by aparajita on May 25, 2011. + * Copyright 2011, Victory-Heart Productions All rights reserved. + */ + +var ENV = require("system").env, + FILE = require("file"), + JAKE = require("jake"), + task = JAKE.task, + FileList = JAKE.FileList, + app = require("cappuccino/jake").app, + configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug", + OS = require("os"); + +app ("test", function(task) +{ + task.setBuildIntermediatesPath(FILE.join("Build", "test.build", configuration)); + task.setBuildPath(FILE.join("Build", configuration)); + + task.setProductName("test"); + task.setIdentifier("com.aparajita.test"); + task.setVersion("1.0"); + task.setAuthor("Victory-Heart Productions"); + task.setEmail("feedback @nospam@ yourcompany.com"); + task.setSummary("test"); + task.setSources((new FileList("**/*.j")).exclude(FILE.join("Build", "**"))); + task.setResources(new FileList("Resources/**")); + task.setIndexFilePath("index.html"); + task.setInfoPlistPath("Info.plist"); + task.setNib2CibFlags("-R Resources/"); + + if (configuration === "Debug") + task.setCompilerFlags("-DDEBUG -g"); + else + task.setCompilerFlags("-O"); +}); + +task ("default", ["test"], function() +{ + printResults(configuration); +}); + +task ("build", ["default"]); + +task ("debug", function() +{ + ENV["CONFIGURATION"] = "Debug"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("release", function() +{ + ENV["CONFIGURATION"] = "Release"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("run", ["debug"], function() +{ + OS.system(["open", FILE.join("Build", "Debug", "test", "index.html")]); +}); + +task ("run-release", ["release"], function() +{ + OS.system(["open", FILE.join("Build", "Release", "test", "index.html")]); +}); + +task ("deploy", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Deployment", "test")); + OS.system(["press", "-f", FILE.join("Build", "Release", "test"), FILE.join("Build", "Deployment", "test")]); + printResults("Deployment") +}); + +task ("desktop", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Desktop", "test")); + require("cappuccino/nativehost").buildNativeHost(FILE.join("Build", "Release", "test"), FILE.join("Build", "Desktop", "test", "test.app")); + printResults("Desktop") +}); + +task ("run-desktop", ["desktop"], function() +{ + OS.system([FILE.join("Build", "Desktop", "test", "test.app", "Contents", "MacOS", "NativeHost"), "-i"]); +}); + +function printResults(configuration) +{ + print("----------------------------"); + print(configuration+" app built at path: "+FILE.join("Build", configuration, "test")); + print("----------------------------"); +} diff --git a/Tests/Manual/predicateWithFormat/Resources/MainMenu.cib b/Tests/Manual/predicateWithFormat/Resources/MainMenu.cib new file mode 100644 index 000000000..d356e5c88 --- /dev/null +++ b/Tests/Manual/predicateWithFormat/Resources/MainMenu.cib @@ -0,0 +1 @@ +280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;4E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;7E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;9E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;2;10E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;2;11E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;2;12E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;2;13E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;2;14E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;16E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;18E;E;D;K;10;$classnameS;7;CPArrayK;8;$classesA;S;7;CPArrayS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;51E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;82E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;94E;E;E;S;16;IBCocoaFrameworkD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;29E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;34E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;18;_CPCibCustomObjectK;8;$classesA;S;18;_CPCibCustomObjectS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;95E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;2;96E;E;D;K;10;$classnameS;10;CPMenuItemK;8;$classesA;S;10;CPMenuItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;2;97E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;48E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;2;98E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;39E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;2;99E;E;D;K;10;$classnameS;11;CPTextFieldK;8;$classesA;S;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;27E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;100E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;101E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;102E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;27E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;103E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;104E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;105E;K;6;$afontD;K;6;CP$UIDd;3;107E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;108E;K;11;$aalignmentD;K;6;CP$UIDd;3;109E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;110E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;111E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;112E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;113E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;113E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;113E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;108E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;109E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;13;CPPopUpButtonK;8;$classesA;S;13;CPPopUpButtonS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;27E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;2;40E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;100E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;114E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;115E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;27E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;103E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;116E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;117E;K;6;$afontD;K;6;CP$UIDd;3;118E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;109E;K;11;$aalignmentD;K;6;CP$UIDd;3;100E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;100E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;109E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;113E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;108E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;100E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;119E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;34E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;2;98E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;120E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;29E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;2;99E;E;D;K;10;$classnameS;6;CPViewK;8;$classesA;S;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;26E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;100E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;121E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;121E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;122E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;105E;E;D;K;10;$classnameS;6;CPMenuK;8;$classesA;S;6;CPMenuS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;123E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;124E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;125E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;34E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;2;98E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;29E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;2;99E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;31E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;126E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;127E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;128E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;129E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;130E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;27E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;131E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;48E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;2;98E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;39E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;2;99E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;27E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;2;29E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;100E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;132E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;133E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;27E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;103E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;116E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;117E;K;6;$afontD;K;6;CP$UIDd;3;118E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;109E;K;11;$aalignmentD;K;6;CP$UIDd;3;100E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;100E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;109E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;113E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;108E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;100E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;134E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;24E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;2;98E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;40E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;2;99E;E;D;K;10;$classnameS;10;CPCheckBoxK;8;$classesA;S;10;CPCheckBoxS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;36E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;27E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;100E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;135E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;136E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;27E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;103E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;137E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;105E;K;16;$aimage-positionD;K;6;CP$UIDd;3;108E;K;6;$afontD;K;6;CP$UIDd;3;107E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;100E;K;11;$aalignmentD;K;6;CP$UIDd;3;100E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;100E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;109E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;138E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;113E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;108E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;100E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;139E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;34E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;2;98E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;29E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;2;99E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;123E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;140E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;123E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;141E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;142E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;24E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;2;98E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;120E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;40E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;2;99E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;125E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;48E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;2;98E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;39E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;2;99E;E;D;K;10;$classnameS;8;CPButtonK;8;$classesA;S;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;43E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;27E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;100E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;143E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;144E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;27E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;103E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;145E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;117E;K;16;$aimage-positionD;K;6;CP$UIDd;3;100E;K;6;$afontD;K;6;CP$UIDd;3;118E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;100E;K;11;$aalignmentD;K;6;CP$UIDd;3;108E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;100E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;109E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;146E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;113E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;100E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;100E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;119E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;48E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;2;98E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;120E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;39E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;2;99E;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;95E;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;147E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;27E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;2;39E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;100E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;148E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;133E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;27E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;103E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;116E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;117E;K;6;$afontD;K;6;CP$UIDd;3;118E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;109E;K;11;$aalignmentD;K;6;CP$UIDd;3;100E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;100E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;109E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;113E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;108E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;100E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;18;CPObjectControllerK;8;$classesA;S;18;CPObjectControllerS;12;CPControllerS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;49E;K;28;CPObjectControllerContentKeyD;K;6;CP$UIDd;1;0E;K;36;CPObjectControllerObjectClassNameKeyD;K;6;CP$UIDd;3;149E;K;31;CPObjectControllerIsEditableKeyD;K;6;CP$UIDd;3;110E;K;49;CPObjectControllerAutomaticallyPreparesContentKeyD;K;6;CP$UIDd;3;113E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;150E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;34E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;2;98E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;29E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;2;99E;E;S;18;Menu Item (Tomboy)S;21;Static Text (Result:)S;20;Button Cell (Search)S;13;Pop Up ButtonS;31;Pop Up Button Cell (beginsWith)S;14;Menu Item (To)S;12;Content ViewS;19;Menu (OtherViews)-1S;16;Menu Item (Tomb)S;15;Window (Window)S;12;File's OwnerS;25;Text Field Cell (Result:)S;15;Menu Item (Tom)S;15;Pop Up Button-1S;20;Menu Item (endsWith)S;24;Check Box (Use new code)S;15;Menu Item (boy)S;19;Menu (OtherViews)-2S;26;Button Cell (Use new code)S;17;Menu (OtherViews)S;22;Menu Item (beginsWith)S;18;Menu Item (Tomb)-1S;23;Pop Up Button Cell (To)S;30;Round Textured Button (Search)S;25;Pop Up Button Cell (To)-1S;16;Menu Item (To)-1S;11;ApplicationS;14;App ControllerS;15;Pop Up Button-2S;17;Object ControllerS;14;Menu Item (om)D;K;10;$classnameS;20;CPCibOutletConnectorK;8;$classesA;S;20;CPCibOutletConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;83E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;16E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;47E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;151E;E;D;K;6;$classD;K;6;CP$UIDd;2;83E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;47E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;24E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;152E;E;D;K;6;$classD;K;6;CP$UIDd;2;83E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;47E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;48E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;153E;E;D;K;6;$classD;K;6;CP$UIDd;2;83E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;47E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;34E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;154E;E;D;K;6;$classD;K;6;CP$UIDd;2;83E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;47E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;22E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;155E;E;D;K;6;$classD;K;6;CP$UIDd;2;83E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;47E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;32E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;156E;E;D;K;6;$classD;K;6;CP$UIDd;2;83E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;50E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;47E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;157E;E;D;K;10;$classnameS;21;CPCibControlConnectorK;8;$classesA;S;21;CPCibControlConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;91E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;44E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;47E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;158E;E;D;K;10;$classnameS;21;CPCibBindingConnectorK;8;$classesA;S;21;CPCibBindingConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;93E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;37E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;50E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;159E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;3;160E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;3;161E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;3;163E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;32E;E;E;S;6;TomboyS;17;_popUpItemAction:d;7;1048576d;1;0S;22;{{38, 128}, {321, 17}}S;19;{{0, 0}, {321, 17}}d;2;36S;9;textfieldS;6;normalD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;106E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;164E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;165E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;113E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;113E;E;d;1;2d;1;4T;S;7;Result:d;4;3072F;S;22;{{154, 26}, {123, 24}}S;19;{{0, 0}, {123, 24}}S;12;popup-buttonS;8;borderedD;K;6;$classD;K;6;CP$UIDd;3;106E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;164E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;165E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;110E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;113E;E;S;2;Tod;1;1S;20;{{0, 0}, {571, 179}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;37E;E;E;S;10;OtherViewsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;38E;E;E;S;4;TombS;28;{1.79769e+308, 1.79769e+308}S;8;CPWindowS;24;{{335, 128}, {571, 179}}d;1;7S;6;WindowS;3;TomS;21;{{303, 26}, {94, 24}}S;18;{{0, 0}, {94, 24}}S;8;endsWithS;21;{{39, 74}, {109, 18}}S;19;{{0, 0}, {109, 18}}S;9;check-boxS;12;Use new codeS;3;boyD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;20E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;35E;E;E;S;10;beginsWithS;21;{{422, 25}, {77, 24}}S;18;{{0, 0}, {77, 24}}S;6;buttonS;6;SearchS;13;AppControllerS;20;{{33, 26}, {94, 24}}S;19;CPMutableDictionaryS;2;omS;8;delegateS;14;comparisonMenuS;8;dataMenuS;8;nameMenuS;12;resultsFieldS;9;theWindowS;7;contentS;7;search:S;27;value: selection.useNewCodeS;5;valueS;20;selection.useNewCodeD;K;10;$classnameS;12;CPDictionaryK;8;$classesA;S;12;CPDictionaryS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;162E;K;10;CP.objectsD;E;E;S;17;Arial, sans-serifd;2;12E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/predicateWithFormat/Resources/MainMenu.xib b/Tests/Manual/predicateWithFormat/Resources/MainMenu.xib new file mode 100644 index 000000000..e4baa6e0c --- /dev/null +++ b/Tests/Manual/predicateWithFormat/Resources/MainMenu.xib @@ -0,0 +1,927 @@ + + + + 1050 + 10J869 + 804 + 1038.35 + 461.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 804 + + + YES + + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + NSApplication + + + FirstResponder + + + NSApplication + + + 7 + 2 + {{335, 571}, {571, 179}} + 1946157056 + Window + NSWindow + + {1.79769e+308, 1.79769e+308} + + + 256 + + YES + + + 268 + {{38, 34}, {321, 17}} + + YES + + 68288064 + 272630784 + Result: + + LucidaGrande + 13 + 1044 + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + + 268 + {{302, 127}, {100, 26}} + + YES + + -2076049856 + 2048 + + + 109199615 + 129 + + + 400 + 75 + + + To + + 1048576 + 2147483647 + 1 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + + om + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Tomb + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + boy + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + + 1 + YES + YES + 2 + + + + + 268 + {{153, 127}, {129, 26}} + + YES + + -2076049856 + 2048 + + + 109199615 + 129 + + + 400 + 75 + + + beginsWith + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + + endsWith + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + + 1 + YES + YES + 2 + + + + + 268 + {{424, 128}, {77, 25}} + + YES + + 67239424 + 134217728 + Search + + + -2038152961 + 163 + + + 400 + 75 + + + + + 268 + {{32, 127}, {100, 26}} + + YES + + -2076049856 + 2048 + + + 109199615 + 129 + + + 400 + 75 + + + To + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + + Tom + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Tomb + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Tomboy + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + + 1 + YES + YES + 2 + + + + + 268 + {{39, 87}, {109, 18}} + + YES + + 67239424 + 0 + Use new code + + + 1211912703 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + + + {571, 179} + + + {{0, 0}, {1440, 878}} + {1.79769e+308, 1.79769e+308} + + + AppController + + + + YES + useNewCode + + YES + + + + + + YES + + + delegate + + + + 451 + + + + resultsField + + + + 474 + + + + nameMenu + + + + 475 + + + + search: + + + + 476 + + + + theWindow + + + + 477 + + + + comparisonMenu + + + + 484 + + + + dataMenu + + + + 498 + + + + content + + + + 503 + + + + value: selection.useNewCode + + + + + + value: selection.useNewCode + value + selection.useNewCode + 2 + + + 505 + + + + + YES + + 0 + + YES + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 371 + + + YES + + + + + + 372 + + + YES + + + + + + + + + + + 450 + + + + + 464 + + + YES + + + + + + 465 + + + YES + + + + + + 466 + + + YES + + + + + + + + + 467 + + + + + 468 + + + + + 469 + + + + + 470 + + + YES + + + + + + 471 + + + + + 472 + + + YES + + + + + + 473 + + + + + 478 + + + YES + + + + + + 479 + + + YES + + + + + + 480 + + + YES + + + + + + + 482 + + + + + 483 + + + + + 485 + + + + + 491 + + + YES + + + + + + 492 + + + YES + + + + + + 493 + + + YES + + + + + + + + + 494 + + + + + 495 + + + + + 496 + + + + + 497 + + + + + 499 + + + YES + + + + + + 500 + + + + + 502 + + + + + + + YES + + YES + -3.IBPluginDependency + 371.IBEditorWindowLastContentRect + 371.IBPluginDependency + 371.IBWindowTemplateEditedContentRect + 371.NSWindowTemplate.visibleAtLaunch + 371.editorWindowContentRectSynchronizationRect + 372.IBPluginDependency + 464.IBPluginDependency + 464.IBViewBoundsToFrameTransform + 465.IBPluginDependency + 466.IBEditorWindowLastContentRect + 466.IBPluginDependency + 467.IBPluginDependency + 468.IBPluginDependency + 469.IBPluginDependency + 470.IBPluginDependency + 471.IBPluginDependency + 472.IBPluginDependency + 472.IBViewBoundsToFrameTransform + 473.IBPluginDependency + 478.IBPluginDependency + 478.IBViewBoundsToFrameTransform + 479.IBPluginDependency + 480.IBEditorWindowLastContentRect + 480.IBPluginDependency + 482.IBPluginDependency + 483.IBPluginDependency + 485.IBPluginDependency + 491.IBPluginDependency + 491.IBViewBoundsToFrameTransform + 492.IBPluginDependency + 493.IBEditorWindowLastContentRect + 493.IBPluginDependency + 494.IBPluginDependency + 495.IBPluginDependency + 496.IBPluginDependency + 497.IBPluginDependency + 499.IBPluginDependency + 500.IBPluginDependency + 502.IBPluginDependency + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + {{441, 973}, {571, 179}} + com.apple.InterfaceBuilder.CocoaPlugin + {{441, 973}, {571, 179}} + + {{33, 99}, {480, 360}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDlwAAwzQAAA + + com.apple.InterfaceBuilder.CocoaPlugin + {{732, 1043}, {122, 83}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCAAAAwiwAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDAgAAwzIAAA + + com.apple.InterfaceBuilder.CocoaPlugin + {{560, 1083}, {142, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCLAAAwzEAAA + + com.apple.InterfaceBuilder.CocoaPlugin + {{462, 1043}, {122, 83}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + YES + + + YES + + + + + YES + + + YES + + + + 505 + + + + YES + + AppController + + theWindow + NSWindow + + + theWindow + + theWindow + NSWindow + + + + IBProjectSource + ./Classes/AppController.h + + + + AppController + NSObject + + search: + id + + + search: + + search: + id + + + + YES + + YES + comparisonMenu + dataMenu + nameMenu + resultsField + + + YES + id + id + id + id + + + + YES + + YES + comparisonMenu + dataMenu + nameMenu + resultsField + + + YES + + comparisonMenu + id + + + dataMenu + id + + + nameMenu + id + + + resultsField + id + + + + + IBUserSource + + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + + 3 + + YES + + YES + NSMenuCheckmark + NSMenuMixedState + NSSwitch + + + YES + {9, 8} + {7, 2} + {15, 15} + + + + diff --git a/Tests/Manual/predicateWithFormat/Resources/spinner.gif b/Tests/Manual/predicateWithFormat/Resources/spinner.gif new file mode 100644 index 000000000..06dbc2bc2 Binary files /dev/null and b/Tests/Manual/predicateWithFormat/Resources/spinner.gif differ diff --git a/Tests/Manual/predicateWithFormat/index-debug.html b/Tests/Manual/predicateWithFormat/index-debug.html new file mode 100644 index 000000000..bb7f1eabe --- /dev/null +++ b/Tests/Manual/predicateWithFormat/index-debug.html @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + test + + + + + + + + + + + + + + +
+
+ + + +
+
+ + + diff --git a/Tests/Manual/predicateWithFormat/index.html b/Tests/Manual/predicateWithFormat/index.html new file mode 100644 index 000000000..8629cc826 --- /dev/null +++ b/Tests/Manual/predicateWithFormat/index.html @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + test + + + + + + + + + + + + +
+
+ + + +
+
+ + + diff --git a/Tests/Manual/predicateWithFormat/main.j b/Tests/Manual/predicateWithFormat/main.j new file mode 100644 index 000000000..4ffd55e17 --- /dev/null +++ b/Tests/Manual/predicateWithFormat/main.j @@ -0,0 +1,18 @@ +/* + * AppController.j + * test + * + * Created by aparajita on May 25, 2011. + * Copyright 2011, Victory-Heart Productions All rights reserved. + */ + +@import +@import + +@import "AppController.j" + + +function main(args, namedArgs) +{ + CPApplicationMain(args, namedArgs); +} diff --git a/Tools/Documentation/doxygen.css b/Tools/Documentation/doxygen.css index 4c7c19801..fa16d6d4b 100644 --- a/Tools/Documentation/doxygen.css +++ b/Tools/Documentation/doxygen.css @@ -265,7 +265,7 @@ div.contents hr { } td.indexkey { - font-family: Consolas, "Lucida Console"; + font-family: Consolas, Menlo, "Lucida Console"; border-bottom: 1px solid #eee; padding: .25em 0 .25em .5em; } @@ -275,7 +275,7 @@ table tr.indexkey:first-child td { } td.indexvalue { - font-family: Consolas, "Lucida Console"; + font-family: Consolas, Menlo, "Lucida Console"; border-bottom: 1px solid #eee; padding: .25em 0 .25em .5em; } @@ -285,7 +285,7 @@ table tr.memlist > td { } tr.memlist td { - font-family: Consolas, "Lucida Console"; + font-family: Consolas, Menlo, "Lucida Console"; padding: .25em 0; border-bottom: 1px solid #eee; } @@ -425,7 +425,7 @@ hr.footer { /* @group Member Descriptions */ table.memberdecls { - font-family: Consolas, "Lucida Console"; + font-family: Consolas, Menlo, "Lucida Console"; border-spacing: 0px; padding: 0px; margin: 0 !important; @@ -485,7 +485,7 @@ table.memberdecls { .memname { white-space: nowrap; - font: bold 105% Consolas, "Lucida Console"; + font: bold 105% Consolas, Menlo, "Lucida Console"; margin: .25em 0 .1em .25em; } @@ -495,7 +495,7 @@ table.memberdecls { padding: 6px 15px; color: #253554; background-color: #f7f7f7; - font-family: Consolas, "Lucida Console"; + font-family: Consolas, Menlo, "Lucida Console"; font-weight: bold; } @@ -526,7 +526,7 @@ table.memberdecls { } .memdoc dl dd td em { - font-family: Consolas, "Lucida Console"; + font-family: Consolas, Menlo, "Lucida Console"; font-weight: bold; white-space: nowrap; } diff --git a/Tools/Scripts/ci.sh b/Tools/Scripts/ci.sh index 045c90d63..bb89cc298 100755 --- a/Tools/Scripts/ci.sh +++ b/Tools/Scripts/ci.sh @@ -7,7 +7,7 @@ export PATH="$HOME/narwhal/bin:$PATH" export CAPP_AUTO_UPGRADE="yes" export CAPP_BUILD="$project_home/build_incremental" -time jake test +time jake CommonJS test-only code=$? if [ $code -ne 0 ]; then echo "INCREMENTAL BUILD FAILED ($code)" @@ -19,7 +19,7 @@ fi export CAPP_BUILD="$project_home/build_clean" rm -rf "$CAPP_BUILD" -time jake CommonJS test +time jake CommonJS test-only code=$? if [ $code -ne 0 ]; then echo "CLEAN BUILD FAILED ($code)" diff --git a/Tools/nib2cib/Converter.j b/Tools/nib2cib/Converter.j index be2a1b346..654c5dd0a 100644 --- a/Tools/nib2cib/Converter.j +++ b/Tools/nib2cib/Converter.j @@ -40,18 +40,16 @@ ConverterConversionException = @"ConverterConversionException"; @implementation Converter : CPObject { - CPString inputPath @accessors(readonly); - CPString outputPath @accessors; - CPString resourcesPath @accessors; - NibFormat format @accessors(readonly); - CPArray themes @accessors(readonly); + CPString inputPath @accessors(readonly); + CPString outputPath @accessors; + CPString resourcesPath @accessors; + NibFormat format @accessors(readonly); + CPArray themes @accessors(readonly); + CPArray userNSClasses @accessors; } + (Converter)sharedConverter { - if (!SharedConverter) - SharedConverter = [[Converter alloc] init]; - return SharedConverter; } @@ -61,6 +59,7 @@ ConverterConversionException = @"ConverterConversionException"; if (self) { + SharedConverter = self; inputPath = aPath; format = nibFormat; themes = themeList; diff --git a/Tools/nib2cib/NSAppKit.j b/Tools/nib2cib/NSAppKit.j index 1003a954e..b8008a14c 100644 --- a/Tools/nib2cib/NSAppKit.j +++ b/Tools/nib2cib/NSAppKit.j @@ -39,7 +39,9 @@ @import "NSFont.j" @import "NSFormatter.j" @import "NSIBObjectData.j" +@import "NSImage.j" @import "NSImageView.j" +@import "NSLevelIndicator.j" @import "NSMatrix.j" @import "NSMenu.j" @import "NSMenuItem.j" @@ -47,7 +49,9 @@ @import "NSObjectController.j" @import "NSOutlineView.j" @import "NSPopUpButton.j" +@import "NSPredicateEditor.j" @import "NSResponder.j" +@import "NSRuleEditor.j" @import "NSScrollView.j" @import "NSScroller.j" @import "NSSearchField.j" @@ -68,6 +72,7 @@ @import "NSToolbarShowColorsItem.j" @import "NSToolbarSeparatorItem.j" @import "NSToolbarSpaceItem.j" +@import "NSUserDefaultsController.j" @import "NSView.j" @import "NSViewController.j" @import "NSWindowTemplate.j" diff --git a/Tools/nib2cib/NSButton.j b/Tools/nib2cib/NSButton.j index 1cbda554e..928e06c80 100644 --- a/Tools/nib2cib/NSButton.j +++ b/Tools/nib2cib/NSButton.j @@ -61,131 +61,149 @@ var NSButtonIsBorderedMask = 0x00800000, if (self) { - var cell = [aCoder decodeObjectForKey:@"NSCell"], - alternateImage = [cell alternateImage], - positionOffsetSizeWidth = 0, - positionOffsetOriginX = 0, - positionOffsetOriginY = 0; - - if ([alternateImage isKindOfClass:[NSButtonImageSource class]]) - { - /* - Because CPCheckBox and CPRadio are direct subclasses, - we can just change the class of this object. In the - case of CPRadio, we can add its _radioGroup ivar by setting it - directly on self. - */ - if ([alternateImage imageName] === @"NSSwitch") - self.isa = [CPCheckBox class]; - - else if ([alternateImage imageName] === @"NSRadioButton") - { - self.isa = [CPRadio class]; - self._radioGroup = [CPRadioGroup new]; - } - } - - NIB_CONNECTION_EQUIVALENCY_TABLE[[cell UID]] = self; - - _title = [cell title]; - _controlSize = CPRegularControlSize; - - [self setBordered:[cell isBordered]]; - _bezelStyle = [cell bezelStyle]; - - - // clean up: - switch (_bezelStyle) - { - // implemented: - case CPRoundedBezelStyle: - positionOffsetOriginY = 6; - positionOffsetOriginX = 4; - positionOffsetSizeWidth = -12; - break; - case CPTexturedRoundedBezelStyle: - positionOffsetOriginY = 2; - positionOffsetOriginX = -2; - positionOffsetSizeWidth = 0; - break; - case CPHUDBezelStyle: - break; - // approximations: - case CPRoundRectBezelStyle: - positionOffsetOriginY = -3; - positionOffsetOriginX = -2; - positionOffsetSizeWidth = 0; - _bezelStyle = CPRoundedBezelStyle; - break; - case CPSmallSquareBezelStyle: - positionOffsetOriginX = -2; - positionOffsetSizeWidth = 0; - _bezelStyle = CPTexturedRoundedBezelStyle; - break; - case CPThickSquareBezelStyle: - case CPThickerSquareBezelStyle: - case CPRegularSquareBezelStyle: - positionOffsetOriginY = 3; - positionOffsetOriginX = 0; - positionOffsetSizeWidth = -4; - _bezelStyle = CPTexturedRoundedBezelStyle; - break; - case CPTexturedSquareBezelStyle: - positionOffsetOriginY = 4; - positionOffsetOriginX = -1; - positionOffsetSizeWidth = -2; - _bezelStyle = CPTexturedRoundedBezelStyle; - break; - case CPShadowlessSquareBezelStyle: - positionOffsetOriginY = 5; - positionOffsetOriginX = -2; - positionOffsetSizeWidth = 0; - _bezelStyle = CPTexturedRoundedBezelStyle; - break; - case CPRecessedBezelStyle: - positionOffsetOriginY = -3; - positionOffsetOriginX = -2; - positionOffsetSizeWidth = 0; - _bezelStyle = CPHUDBezelStyle; - break; - // unsupported - case CPRoundedDisclosureBezelStyle: - case CPHelpButtonBezelStyle: - case CPCircularBezelStyle: - case CPDisclosureBezelStyle: - CPLog.warn("NSButton [%s]: unsupported bezel style: %d", _title == null ? "" : '"' + _title + '"', _bezelStyle); - _bezelStyle = CPHUDBezelStyle; - break; - // error: - default: - CPLog.warn("NSButton [%s]: unknown bezel style: %d", _title == null ? "" : '"' + _title + '"', _bezelStyle); - _bezelStyle = CPHUDBezelStyle; - } - - if ([cell isBordered]) - { - CPLog.debug("NSButton [%s]: adjusting height from %d to %d", _title == null ? "" : '"' + _title + '"', _frame.size.height, CPButtonDefaultHeight); - _frame.size.height = CPButtonDefaultHeight; - - // Reposition the buttons according to its particular offsets - _frame.origin.x += positionOffsetOriginX; - _frame.origin.y += positionOffsetOriginY; - _frame.size.width += positionOffsetSizeWidth; - _bounds.size.width += positionOffsetSizeWidth; - - _bounds.size.height = CPButtonDefaultHeight; - } - - _keyEquivalent = [cell keyEquivalent]; - _keyEquivalentModifierMask = [cell keyEquivalentModifierMask]; - - _allowsMixedState = [cell allowsMixedState]; - [self setImagePosition:[cell imagePosition]]; + var cell = [aCoder decodeObjectForKey:@"NSCell"]; + self = [self NS_initWithCell:cell]; } return self; } +/*! + Intialise a button given a cell. This method is meant for reuse by controls which contain + cells other than CPButton itself. +*/ +- (id)NS_initWithCell:(NSCell)cell +{ + var alternateImage = [cell alternateImage], + positionOffsetSizeWidth = 0, + positionOffsetOriginX = 0, + positionOffsetOriginY = 0; + + if ([alternateImage isKindOfClass:[NSButtonImageSource class]]) + { + /* + Because CPCheckBox and CPRadio are direct subclasses, + we can just change the class of this object. In the + case of CPRadio, we can add its _radioGroup ivar by setting it + directly on self. + + When swizzling the class, make sure to update the theme + attributes. + */ + if ([alternateImage imageName] === @"NSSwitch") + { + self.isa = [CPCheckBox class]; + } + else if ([alternateImage imageName] === @"NSRadioButton") + { + self.isa = [CPRadio class]; + self._radioGroup = [CPRadioGroup new]; + } + } + + NIB_CONNECTION_EQUIVALENCY_TABLE[[cell UID]] = self; + + _title = [cell title]; + _controlSize = CPRegularControlSize; + + [self setBordered:[cell isBordered]]; + _bezelStyle = [cell bezelStyle]; + + + // clean up: + switch (_bezelStyle) + { + // implemented: + case CPRoundedBezelStyle: + positionOffsetOriginY = 6; + positionOffsetOriginX = 4; + positionOffsetSizeWidth = -12; + break; + case CPTexturedRoundedBezelStyle: + positionOffsetOriginY = 2; + positionOffsetOriginX = -2; + positionOffsetSizeWidth = 0; + break; + case CPHUDBezelStyle: + break; + // approximations: + case CPRoundRectBezelStyle: + positionOffsetOriginY = -3; + positionOffsetOriginX = -2; + positionOffsetSizeWidth = 0; + _bezelStyle = CPRoundedBezelStyle; + break; + case CPSmallSquareBezelStyle: + positionOffsetOriginX = -2; + positionOffsetSizeWidth = 0; + _bezelStyle = CPTexturedRoundedBezelStyle; + break; + case CPThickSquareBezelStyle: + case CPThickerSquareBezelStyle: + case CPRegularSquareBezelStyle: + positionOffsetOriginY = 3; + positionOffsetOriginX = 0; + positionOffsetSizeWidth = -4; + _bezelStyle = CPTexturedRoundedBezelStyle; + break; + case CPTexturedSquareBezelStyle: + positionOffsetOriginY = 4; + positionOffsetOriginX = -1; + positionOffsetSizeWidth = -2; + _bezelStyle = CPTexturedRoundedBezelStyle; + break; + case CPShadowlessSquareBezelStyle: + positionOffsetOriginY = 5; + positionOffsetOriginX = -2; + positionOffsetSizeWidth = 0; + _bezelStyle = CPTexturedRoundedBezelStyle; + break; + case CPRecessedBezelStyle: + positionOffsetOriginY = -3; + positionOffsetOriginX = -2; + positionOffsetSizeWidth = 0; + _bezelStyle = CPHUDBezelStyle; + break; + // unsupported + case CPRoundedDisclosureBezelStyle: + case CPHelpButtonBezelStyle: + case CPCircularBezelStyle: + case CPDisclosureBezelStyle: + CPLog.warn("NSButton [%s]: unsupported bezel style: %d", _title == null ? "" : '"' + _title + '"', _bezelStyle); + _bezelStyle = CPHUDBezelStyle; + break; + // error: + default: + CPLog.warn("NSButton [%s]: unknown bezel style: %d", _title == null ? "" : '"' + _title + '"', _bezelStyle); + _bezelStyle = CPHUDBezelStyle; + } + + if ([cell isBordered]) + { + CPLog.debug("NSButton [%s]: adjusting height from %d to %d", _title == null ? "" : '"' + _title + '"', _frame.size.height, CPButtonDefaultHeight); + _frame.size.height = CPButtonDefaultHeight; + + // Reposition the buttons according to its particular offsets + _frame.origin.x += positionOffsetOriginX; + _frame.origin.y += positionOffsetOriginY; + _frame.size.width += positionOffsetSizeWidth; + _bounds.size.width += positionOffsetSizeWidth; + + _bounds.size.height = CPButtonDefaultHeight; + } + + _keyEquivalent = [cell keyEquivalent]; + _keyEquivalentModifierMask = [cell keyEquivalentModifierMask]; + + _allowsMixedState = [cell allowsMixedState]; + [self setImage:[cell normalImage]]; + [self setImagePosition:[cell imagePosition]]; + + [self setEnabled:[cell isEnabled]]; + + return self; +} + @end @implementation NSButton : CPButton @@ -208,6 +226,7 @@ var NSButtonIsBorderedMask = 0x00800000, int _bezelStyle @accessors(readonly, getter=bezelStyle); CPString _title @accessors(readonly, getter=title); + CPImage _normalImage @accessors(readonly, getter=normalImage); CPImage _alternateImage @accessors(readonly, getter=alternateImage); BOOL _allowsMixedState @accessors(readonly, getter=allowsMixedState); @@ -236,6 +255,7 @@ var NSButtonIsBorderedMask = 0x00800000, // ... and _objectValue is _state _objectValue = [self state]; + _normalImage = [aCoder decodeObjectForKey:@"NSNormalImage"]; _alternateImage = [aCoder decodeObjectForKey:@"NSAlternateImage"]; _allowsMixedState = (cellFlags2 & NSButtonAllowsMixedStateMask) ? YES : NO; diff --git a/Tools/nib2cib/NSClassSwapper.j b/Tools/nib2cib/NSClassSwapper.j index ecf733f2d..91e26c765 100644 --- a/Tools/nib2cib/NSClassSwapper.j +++ b/Tools/nib2cib/NSClassSwapper.j @@ -1,3 +1,26 @@ +/* + * NSClassSwapper.j + * nib2cib + * + * Created by Francisco Tolmasky + * Copyright 2009, 280 North, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +@import "Converter.j" var NSClassSwapperClassNames = {}, NSClassSwapperOriginalClassNames = {}; @@ -16,15 +39,38 @@ var _CPCibClassSwapperClassNameKey = @"_CPCibClassSwapperClassNameKey", if (!swapperClass) { - var originalClass = objj_lookUpClass(anOriginalClassName); + // If this is a userland NS class, call its KVC methods directly + var nsClass = nil; + + if ([[[Converter sharedConverter] userNSClasses] containsObject:aClassName]) + nsClass = objj_lookUpClass("NS_" + aClassName); + + var originalClass = nsClass || objj_lookUpClass(anOriginalClassName); swapperClass = objj_allocateClassPair(originalClass, swapperClassName); objj_registerClassPair(swapperClass); + /* + When calling userland KVC methods, they should think that the class is + the NS class (not the swapper class) so that they are in their userland space, + not in AppKit space. For example, this ensures that bundleForClass:[self class] will work correctly. + We can accomplish this safely by changing the class of self temporarily and sending directly + to self instead of to super. This swizzle is safe because NSClassSwapper and _CPCibClassSwapper + do not add any ivars. + */ + class_addMethod(swapperClass, @selector(initWithCoder:), function(self, _cmd, aCoder) { - self = objj_msgSendSuper({super_class:originalClass, receiver:self}, _cmd, aCoder); + if (nsClass) + { + // Switch to userland temporarily + self.isa = nsClass; + self = objj_msgSend(self, _cmd, aCoder); + self.isa = swapperClass; + } + else + self = objj_msgSendSuper({super_class:originalClass, receiver:self}, _cmd, aCoder); if (self) { @@ -44,9 +90,26 @@ var _CPCibClassSwapperClassNameKey = @"_CPCibClassSwapperClassNameKey", class_addMethod(swapperClass, @selector(encodeWithCoder:), function(self, _cmd, aCoder) { - objj_msgSendSuper({super_class:originalClass, receiver:self}, _cmd, aCoder); + if (nsClass) + { + // Switch to userland temporarily + self.isa = nsClass; + objj_msgSend(self, _cmd, aCoder); + self.isa = swapperClass; + } + else + objj_msgSendSuper({super_class:originalClass, receiver:self}, _cmd, aCoder); + + // If this is a custom NS class, lookup its archiver class so that + // the correct class is swapped during unarchiving. + if (nsClass) + { + var classForArchiver = objj_msgSend(nsClass, "classForKeyedArchiver"); + + if (classForArchiver) + aClassName = [classForArchiver className]; + } - // FIXME: map class name as well? [aCoder encodeObject:aClassName forKey:_CPCibClassSwapperClassNameKey]; [aCoder encodeObject:CP_NSMapClassName(anOriginalClassName) forKey:_CPCibClassSwapperOriginalClassNameKey]; }, ""); diff --git a/Tools/nib2cib/NSControl.j b/Tools/nib2cib/NSControl.j index abe978ec9..06afe13cd 100644 --- a/Tools/nib2cib/NSControl.j +++ b/Tools/nib2cib/NSControl.j @@ -44,9 +44,10 @@ [self setFont:[cell font]]; [self setAlignment:[cell alignment]]; - // The NSEnabled flag is never changed when changing the enabled state of a control - // Enabled state should is derived from the NSCellFlags decoded by NSCell - [self setEnabled:[cell isEnabled]]; + // Enabled state is derived from the NSEnabled flag or the control's cell. + // For example NSTableView uses the NSEnabled flag, but NSButton uses it's cell isEnabled state. + // We use the NSEnabled flag here and override the behavior in controls using different logic (NSButton). + [self setEnabled:[aCoder decodeBoolForKey:@"NSEnabled"]]; [self setContinuous:[cell isContinuous]]; [self setTarget:[aCoder decodeObjectForKey:@"NSTarget"]]; diff --git a/Tools/nib2cib/NSCustomResource.j b/Tools/nib2cib/NSCustomResource.j index 5656f2fbd..6d716f36b 100644 --- a/Tools/nib2cib/NSCustomResource.j +++ b/Tools/nib2cib/NSCustomResource.j @@ -40,8 +40,17 @@ var FILE = require("file"); var size = CGSizeMakeZero(); - if (![[aCoder resourcesPath] length]) + if (_resourceName == "NSSwitch") + return nil; + else if (_resourceName == "NSAddTemplate" || _resourceName == "NSRemoveTemplate") + { + // Defer resolving this path until runtime. + _resourceName = _resourceName.replace("NS", "CP"); + } + else if (![[aCoder resourcesPath] length]) + { CPLog.warn("Resources found in nib, but no resources path specified with -R option."); + } else { var resourcePath = [aCoder resourcePathForName:_resourceName]; diff --git a/Tools/nib2cib/NSExpression.j b/Tools/nib2cib/NSExpression.j new file mode 100644 index 000000000..52f2c09ef --- /dev/null +++ b/Tools/nib2cib/NSExpression.j @@ -0,0 +1,199 @@ +@import + +@implementation NSKeyPathExpression : CPExpression_keypath +{ +} + +- (id)initWithCoder:(CPCoder)aCoder +{ + return [self NS_initWithCoder:aCoder]; +} + +- (Class)classForKeyedArchiver +{ + return [CPExpression_keypath class]; +} + +@end + +@implementation CPKeyPathSpecifierExpression : CPExpression_constant +{ +} + +- (id)NS_initWithCoder:(CPCoder)aCoder +{ + var keyPath = [aCoder decodeObjectForKey:@"NSKeyPath"]; + self = [super initWithValue:keyPath]; + return self; +} + +@end + +@implementation NSKeyPathSpecifierExpression : CPKeyPathSpecifierExpression +{ +} + +- (id)initWithCoder:(CPCoder)aCoder +{ + return [self NS_initWithCoder:aCoder]; +} + +- (Class)classForKeyedArchiver +{ + return [CPExpression_constant class]; +} + +@end + +@implementation CPExpression_constant (NSCoding) + +- (id)NS_initWithCoder:(CPCoder)aCoder +{ + var value = [aCoder decodeObjectForKey:@"NSConstantValue"]; + return [self initWithValue:value]; +} + +@end + +@implementation NSConstantValueExpression : CPExpression_constant +{ +} + +- (id)initWithCoder:(CPCoder)aCoder +{ + return [self NS_initWithCoder:aCoder]; +} + +- (Class)classForKeyedArchiver +{ + return [CPExpression_constant class]; +} + +@end + +@implementation CPExpression_function (NSCoding) + +- (id)NS_initWithCoder:(CPCoder)aCoder +{ + var type = [aCoder decodeIntForKey:@"NSExpressionType"], + operand = [aCoder decodeObjectForKey:@"NSOperand"], + selector = CPSelectorFromString([aCoder decodeObjectForKey:@"NSSelectorName"]), + args = [aCoder decodeObjectForKey:@"NSArguments"]; + + return [self initWithTarget:operand selector:selector arguments:args type:type]; +} + +@end + +@implementation NSFunctionExpression : CPExpression_function +{ +} + +- (id)initWithCoder:(CPCoder)aCoder +{ + return [self NS_initWithCoder:aCoder]; +} + +- (Class)classForKeyedArchiver +{ + return [CPExpression_function class]; +} + +@end + +@implementation CPExpression_set (NSCoding) + +- (id)NS_initWithCoder:(CPCoder)aCoder +{ + var type = [aCoder decodeIntForKey:@"NSExpressionType"], + left = [aCoder decodeObjectForKey:@"NSLeftExpression"], + right = [aCoder decodeObjectForKey:@"NSRightExpression"]; + + return [self initWithType:type left:left right:right]; +} + +@end + +@implementation NSSetExpression : CPExpression_set +{ +} + +- (id)initWithCoder:(CPCoder)aCoder +{ + return [self NS_initWithCoder:aCoder]; +} + +- (Class)classForKeyedArchiver +{ + return [CPExpression_set class]; +} + +@end + +@implementation NSSelfExpression : CPExpression_self +{ +} + +- (id)initWithCoder:(CPCoder)aCoder +{ + return [super init]; +} + +- (Class)classForKeyedArchiver +{ + return [CPExpression_self class]; +} + +@end + +@implementation CPExpression_variable (NSCoding) + +- (id)NS_initWithCoder:(CPCoder)aCoder +{ + var variable = [aCoder decodeObjectForKey:@"NSVariable"]; + return [self initWithVariable:variable]; +} + +@end + +@implementation NSVariableExpression : CPExpression_variable +{ +} + +- (id)initWithCoder:(CPCoder)aCoder +{ + return [self NS_initWithCoder:aCoder]; +} + +- (Class)classForKeyedArchiver +{ + return [CPExpression_variable class]; +} + +@end + +@implementation CPExpression_aggregate (NSCoding) + +- (id)NS_initWithCoder:(CPCoder)aCoder +{ + var collection = [aCoder decodeObjectForKey:@"NSCollection"]; + return [self initWithAggregate:collection]; +} + +@end + +@implementation NSAggregateExpression : CPExpression_aggregate +{ +} + +- (id)initWithCoder:(CPCoder)aCoder +{ + return [self NS_initWithCoder:aCoder]; +} + +- (Class)classForKeyedArchiver +{ + return [CPExpression_aggregate class]; +} + +@end diff --git a/Tools/nib2cib/NSFoundation.j b/Tools/nib2cib/NSFoundation.j index d49818b1a..5b12c138f 100644 --- a/Tools/nib2cib/NSFoundation.j +++ b/Tools/nib2cib/NSFoundation.j @@ -21,6 +21,8 @@ */ @import "NSArray.j" +@import "NSExpression.j" @import "NSDictionary.j" @import "NSMutableString.j" +@import "NSNull.j" @import "NSSet.j" diff --git a/Tools/nib2cib/NSImage.j b/Tools/nib2cib/NSImage.j new file mode 100644 index 000000000..a40b85f95 --- /dev/null +++ b/Tools/nib2cib/NSImage.j @@ -0,0 +1,60 @@ +/* + * NSImage.j + * nib2cib + * + * Created by Alexander Ljungberg. + * Copyright 2011, WireLoad Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +@import + +@implementation CPImage (CPCoding) + +- (id)NS_initWithCoder:(CPCoder)aCoder +{ + self = [self init]; + + if (self) + { + var imageFlags = [aCoder decodeIntForKey:@"NSImageFlags"]; + + // TODO Do something with this serialised image data. + // var imageContentReps = [aCoder decodeObjectForKey:@"NSReps"]; + + _size = [aCoder decodeSizeForKey:@"NSSize"]; + } + + return self; +} + +@end + +@implementation NSImage : CPImage +{ +} + +- (id)initWithCoder:(CPCoder)aCoder +{ + return [self NS_initWithCoder:aCoder]; +} + +- (Class)classForKeyedArchiver +{ + return [CPImage class]; +} + +@end diff --git a/Tools/nib2cib/NSLevelIndicator.j b/Tools/nib2cib/NSLevelIndicator.j new file mode 100644 index 000000000..159691c26 --- /dev/null +++ b/Tools/nib2cib/NSLevelIndicator.j @@ -0,0 +1,120 @@ +/* + * NSLevelIndicator.j + * nib2cib + * + * Created by Alexander Ljungberg. + * Copyright 2011, WireLoad Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +@import + +@implementation CPLevelIndicator (CPCoding) + +- (id)NS_initWithCoder:(CPCoder)aCoder +{ + var cell = [aCoder decodeObjectForKey:@"NSCell"]; + + // Initialise before [super ...] to ensure setObjectValue constrains the values properly. + _minValue = [cell minValue]; + _maxValue = [cell maxValue]; + + self = [super NS_initWithCoder:aCoder]; + + if (self) + { + self = [self NS_initWithCell:cell]; + } + + return self; +} + +/*! + Intialise the receiver given a cell. This method is meant for reuse by controls which contain + cells other than CPLevelIndicator itself. +*/ +- (id)NS_initWithCell:(NSCell)cell +{ + _minValue = [cell minValue]; + _maxValue = [cell maxValue]; + _levelIndicatorStyle = [cell levelIndicatorStyle]; + _warningValue = [cell warningValue]; + _criticalValue = [cell criticalValue]; + _tickMarkPosition = [cell tickMarkPosition]; + _numberOfTickMarks = [cell numberOfTickMarks]; + _numberOfMajorTickMarks = [cell numberOfMajorTickMarks]; + + [self setEditable:[cell isEditable]]; + [self setContinuous:[cell isContinuous]]; + + return self; +} + +@end + +@implementation NSLevelIndicator : CPLevelIndicator +{ +} + +- (id)initWithCoder:(CPCoder)aCoder +{ + return [self NS_initWithCoder:aCoder]; +} + +- (Class)classForKeyedArchiver +{ + return [CPLevelIndicator class]; +} + +@end + +@implementation NSLevelIndicatorCell : NSCell +{ + CPLevelIndicator _levelIndicatorStyle @accessors(readonly, getter=levelIndicatorStyle); + double _minValue @accessors(readonly, getter=minValue); + double _maxValue @accessors(readonly, getter=maxValue); + double _warningValue @accessors(readonly, getter=warningValue); + double _criticalValue @accessors(readonly, getter=criticalValue); + CPTickMarkPosition _tickMarkPosition @accessors(readonly, getter=tickMarkPosition); + int _numberOfTickMarks @accessors(readonly, getter=numberOfTickMarks); + int _numberOfMajorTickMarks @accessors(readonly, getter=numberOfMajorTickMarks); +} + +- (id)initWithCoder:(CPCoder)aCoder +{ + self = [super initWithCoder:aCoder]; + + if (self) + { + _objectValue = [aCoder decodeDoubleForKey:@"NSValue"]; + + _minValue = [aCoder decodeDoubleForKey:@"NSMinValue"] || 0; + _maxValue = [aCoder decodeDoubleForKey:@"NSMaxValue"]; + _warningValue = [aCoder decodeDoubleForKey:@"NSWarningValue"]; + _criticalValue = [aCoder decodeDoubleForKey:@"NSCriticalValue"]; + + _levelIndicatorStyle = [aCoder decodeIntForKey:@"NSIndicatorStyle"] || 0; + + // None of these are included in the XIB if the defaults are used. + _tickMarkPosition = [aCoder decodeIntForKey:@"NSTickMarkPosition"] || 0; + _numberOfTickMarks = [aCoder decodeIntForKey:@"NSNumberOfTickMarks"] || 0; + _numberOfTickMarks = [aCoder decodeIntForKey:@"NSNumberOfMajorTickMarks"] || 0; + } + + return self; +} + +@end diff --git a/Tools/nib2cib/NSNibConnector.j b/Tools/nib2cib/NSNibConnector.j index 04bb9c7ee..15c274fe1 100644 --- a/Tools/nib2cib/NSNibConnector.j +++ b/Tools/nib2cib/NSNibConnector.j @@ -23,6 +23,7 @@ @import @import @import +@import NIB_CONNECTION_EQUIVALENCY_TABLE = {}; @@ -53,7 +54,8 @@ NIB_CONNECTION_EQUIVALENCY_TABLE = {}; _destination = NIB_CONNECTION_EQUIVALENCY_TABLE[destinationUID]; } - CPLog.debug(@"NSNibConnector: connection: " + [_source description] + " " + [_destination description] + " " + _label); + if (_source && _destination) + CPLog.debug(@"NSNibConnector: connection: " + [_source description] + " " + [_destination description] + " " + _label); } return self; @@ -109,7 +111,7 @@ NIB_CONNECTION_EQUIVALENCY_TABLE = {}; @end -var NSTramsformers = [CPSet setWithObjects: +var NSTransformers = [CPSet setWithObjects: @"NSNegateBoolean", @"NSIsNil", @"NSIsNotNil", @@ -138,7 +140,7 @@ var NSTramsformers = [CPSet setWithObjects: var CPKey = @"CP" + key.substring(2), NSValue = [NSOptions objectForKey:key]; - if (CPKey === CPValueTransformerNameBindingOption && [NSTramsformers containsObject:NSValue]) + if (CPKey === CPValueTransformerNameBindingOption && [NSTransformers containsObject:NSValue]) NSValue = @"CP" + NSValue.substring(2); [_options setObject:NSValue forKey:CPKey]; @@ -167,3 +169,47 @@ var NSTramsformers = [CPSet setWithObjects: } @end + +@implementation CPCibRuntimeAttributesConnector (NSCoding) + +- (id)NS_initWithCoder:(CPCoder)aCoder +{ + self = [super NS_initWithCoder:aCoder]; + + if (self) + { + _source = [aCoder decodeObjectForKey:@"NSObject"]; + _keyPaths = [aCoder decodeObjectForKey:@"NSKeyPaths"]; + _values = [aCoder decodeObjectForKey:@"NSValues"]; + + var count = [_keyPaths count]; + + CPLog.debug(@"NSNibConnector: runtime attributes connector: " + [_source description]); + + while (count--) + { + var value = _values[count], + type = typeof(value) === "boolean" ? "BOOL" : [value className]; + + CPLog.debug(@" %s (%s): %s", _keyPaths[count], type, value); + } + } + + return self; +} + +@end + +@implementation NSIBUserDefinedRuntimeAttributesConnector : CPCibRuntimeAttributesConnector + +- (id)initWithCoder:(CPCoder)aCoder +{ + return [self NS_initWithCoder:aCoder]; +} + +- (Class)classForKeyedArchiver +{ + return [CPCibRuntimeAttributesConnector class]; +} + +@end diff --git a/Tools/nib2cib/NSNull.j b/Tools/nib2cib/NSNull.j new file mode 100644 index 000000000..a1af4df00 --- /dev/null +++ b/Tools/nib2cib/NSNull.j @@ -0,0 +1,37 @@ +/* + * NSNull.j + * nib2cib + * + * Created by Aparajita Fishman. + * Copyright 2011, 280 North, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +@import + +@implementation NSNull : CPNull + +- (id)initWithCoder:(CPCoder)aCoder +{ + return [CPNull null]; +} + +- (Class)classForKeyedArchiver +{ + return [CPNull class]; +} + +@end diff --git a/Tools/nib2cib/NSPredicateEditor.j b/Tools/nib2cib/NSPredicateEditor.j new file mode 100644 index 000000000..2ef4ea8a1 --- /dev/null +++ b/Tools/nib2cib/NSPredicateEditor.j @@ -0,0 +1,94 @@ +/* + * NSPredicateEditor.j + * nib2cib + * + * Created by cacaodev. + * Copyright 2010. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +@import + +@implementation CPPredicateEditor (NSCoding) + +- (id)NS_initWithCoder:(CPCoder)aCoder +{ + self = [super NS_initWithCoder:aCoder]; + + if (self) + { + _allTemplates = [aCoder decodeObjectForKey:@"NSPredicateTemplates"]; + } + + return self; +} + +@end + +@implementation NSPredicateEditor : CPPredicateEditor +{ +} + +- (id)initWithCoder:(CPCoder)aCoder +{ + return [self NS_initWithCoder:aCoder]; +} + +- (Class)classForKeyedArchiver +{ + return [CPPredicateEditor class]; +} + +@end + +@implementation CPPredicateEditorRowTemplate (NSCoding) + +- (id)NS_initWithCoder:(CPCoder)aCoder +{ + self = [super init]; + + if (self) + { + _templateType = [aCoder decodeIntForKey:@"NSPredicateTemplateType"]; + _predicateOptions = [aCoder decodeIntForKey:@"NSPredicateTemplateOptions"]; + _predicateModifier = [aCoder decodeIntForKey:@"NSPredicateTemplateModifier"]; + _leftAttributeType = [aCoder decodeIntForKey:@"NSPredicateTemplateLeftAttributeType"]; + _rightAttributeType = [aCoder decodeIntForKey:@"NSPredicateTemplateRightAttributeType"]; + _leftIsWildcard = [aCoder decodeBoolForKey:@"NSPredicateTemplateLeftIsWildcard"]; + _rightIsWildcard = [aCoder decodeBoolForKey:@"NSPredicateTemplateRightIsWildcard"]; + _views = [aCoder decodeObjectForKey:@"NSPredicateTemplateViews"]; + } + + return self; +} + +@end + +@implementation NSPredicateEditorRowTemplate : CPPredicateEditorRowTemplate +{ +} + +- (id)initWithCoder:(CPCoder)aCoder +{ + return [self NS_initWithCoder:aCoder]; +} + +- (Class)classForKeyedArchiver +{ + return [CPPredicateEditorRowTemplate class]; +} + +@end diff --git a/Tools/nib2cib/NSRuleEditor.j b/Tools/nib2cib/NSRuleEditor.j new file mode 100644 index 000000000..8955626f4 --- /dev/null +++ b/Tools/nib2cib/NSRuleEditor.j @@ -0,0 +1,111 @@ +/* + * NSRuleEditor.j + * nib2cib + * + * Created by cacaodev. + * Copyright 2010. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +@import +@import + +@import "NSCell.j" +@import "NSControl.j" + +@implementation CPRuleEditor (NSCoding) + +- (id)NS_initWithCoder:(CPCoder)aCoder +{ + self = [super NS_initWithCoder:aCoder]; + + if (self) + { + _alignmentGridWidth = [aCoder decodeFloatForKey:@"NSRuleEditorAlignmentGridWidth"]; + _sliceHeight = [aCoder decodeDoubleForKey:@"NSRuleEditorSliceHeight"]; + _stringsFilename = [aCoder decodeObjectForKey:@"NSRuleEditorStringsFileName"]; + _editable = [aCoder decodeBoolForKey:@"NSRuleEditorEditable"]; + _allowsEmptyCompoundRows = [aCoder decodeBoolForKey:@"NSRuleEditorAllowsEmptyCompoundRows"]; + _disallowEmpty = [aCoder decodeBoolForKey:@"NSRuleEditorDisallowEmpty"]; + _nestingMode = [aCoder decodeIntForKey:@"NSRuleEditorNestingMode"]; + _typeKeyPath = [aCoder decodeObjectForKey:@"NSRuleEditorRowTypeKeyPath"]; + _itemsKeyPath = [aCoder decodeObjectForKey:@"NSRuleEditorItemsKeyPath"]; + _valuesKeyPath = [aCoder decodeObjectForKey:@"NSRuleEditorValuesKeyPath"]; + _subrowsArrayKeyPath = [aCoder decodeObjectForKey:@"NSRuleEditorSubrowsArrayKeyPath"]; + _boundArrayKeyPath = [aCoder decodeObjectForKey:@"NSRuleEditorBoundArrayKeyPath"]; + + //_slicesHolder = [aCoder decodeObjectForKey:@"NSRuleEditorViewSliceHolder"]; + _boundArrayOwner = [aCoder decodeObjectForKey:@"NSRuleEditorBoundArrayOwner"]; + _slices = [aCoder decodeObjectForKey:@"NSRuleEditorSlices"]; + _ruleDelegate = [aCoder decodeObjectForKey:@"NSRuleEditorDelegate"]; + } + + return self; +} + +@end + +@implementation NSRuleEditor : CPRuleEditor +{ +} + +- (id)initWithCoder:(CPCoder)aCoder +{ + return [self NS_initWithCoder:aCoder]; +} + +- (Class)classForKeyedArchiver +{ + return [CPRuleEditor class]; +} + +@end + +@implementation _NSRuleEditorViewSliceHolder : _CPRuleEditorViewSliceHolder +{ +} + +- (id)initWithCoder:(CPCoder)aCoder +{ + return [self NS_initWithCoder:aCoder]; +} + +- (Class)classForKeyedArchiver +{ + return [_CPRuleEditorViewSliceHolder class]; +} + +@end + +@implementation _NSRuleEditorViewUnboundRowHolder : _CPRuleEditorViewUnboundRowHolder +{ +} + +- (id)initWithCoder:(CPCoder)aCoder +{ + if (self = [super init]) + boundArray = [aCoder decodeObjectForKey:@"NSBoundArray"]; + + return self; +} + +- (Class)classForKeyedArchiver +{ + return [_CPRuleEditorViewUnboundRowHolder class]; +} + +@end diff --git a/Tools/nib2cib/NSSlider.j b/Tools/nib2cib/NSSlider.j index e8923b57e..8e80eb887 100644 --- a/Tools/nib2cib/NSSlider.j +++ b/Tools/nib2cib/NSSlider.j @@ -22,9 +22,6 @@ @import -@import "NSSlider.j" - - @implementation CPSlider (CPCoding) - (id)NS_initWithCoder:(CPCoder)aCoder diff --git a/Tools/nib2cib/NSTableColumn.j b/Tools/nib2cib/NSTableColumn.j index 785227901..f573c29f8 100644 --- a/Tools/nib2cib/NSTableColumn.j +++ b/Tools/nib2cib/NSTableColumn.j @@ -23,6 +23,7 @@ @import @import +@import @implementation CPTableColumn (NSCoding) @@ -42,7 +43,7 @@ [_dataView setImageScaling:[dataViewCell imageScaling]]; [_dataView setImageAlignment:[dataViewCell imageAlignment]]; } - else + else if ([dataViewCell isKindOfClass:[NSTextFieldCell class]]) { _dataView = [[CPTextField alloc] initWithFrame:CPRectMakeZero()]; @@ -72,6 +73,16 @@ if (![textColor isEqual:defaultColor]) [_dataView setTextColor:[dataViewCell textColor]]; } + else if ([dataViewCell isKindOfClass:[NSButtonCell class]]) + { + _dataView = [[CPButton alloc] initWithFrame:CGRectMakeZero()]; + _dataView = [_dataView NS_initWithCell:dataViewCell]; + } + else if ([dataViewCell isKindOfClass:[NSLevelIndicatorCell class]]) + { + _dataView = [[CPLevelIndicator alloc] initWithFrame:CGRectMakeZero()]; + _dataView = [_dataView NS_initWithCell:dataViewCell]; + } [_dataView setValue:[dataViewCell alignment] forThemeAttribute:@"alignment"]; diff --git a/Tools/nib2cib/NSUserDefaultsController.j b/Tools/nib2cib/NSUserDefaultsController.j new file mode 100644 index 000000000..7cf08cfd9 --- /dev/null +++ b/Tools/nib2cib/NSUserDefaultsController.j @@ -0,0 +1,58 @@ +/* + * NSUserDefaultsController.j + * AppKit + * + * Created by Alexander Ljungberg. + * Copyright 2011, WireLoad Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +@import + +@implementation CPUserDefaultsController (CPCoding) + +- (id)NS_initWithCoder:(CPCoder)aCoder +{ + if ([aCoder decodeBoolForKey:@"NSSharedInstance"]) + return [CPUserDefaultsController sharedUserDefaultsController]; + + self = [super NS_initWithCoder:aCoder]; + + if (self) + { + [CPException raise:CPUnsupportedMethodException reason:@"decoding of non-shared NSUserDefaultsController not implemented"]; + } + + return self; +} + +@end + +@implementation NSUserDefaultsController : CPUserDefaultsController +{ +} + +- (id)initWithCoder:(CPCoder)aCoder +{ + return [self NS_initWithCoder:aCoder]; +} + +- (Class)classForKeyedArchiver +{ + return [CPUserDefaultsController class]; +} + +@end diff --git a/Tools/nib2cib/NSView.j b/Tools/nib2cib/NSView.j index 25b86fcdd..743068b30 100644 --- a/Tools/nib2cib/NSView.j +++ b/Tools/nib2cib/NSView.j @@ -68,6 +68,7 @@ var NSViewAutoresizingMask = 0x3F, _isHidden = vFlags & NSViewHiddenMask; _opacity = 1.0;//[aCoder decodeIntForKey:CPViewOpacityKey]; + _themeClass = [self themeClass]; _themeAttributes = {}; _themeState = CPThemeStateNormal; [self _loadThemeAttributes]; diff --git a/Tools/nib2cib/Nib2Cib.j b/Tools/nib2cib/Nib2Cib.j new file mode 100644 index 000000000..340db4936 --- /dev/null +++ b/Tools/nib2cib/Nib2Cib.j @@ -0,0 +1,952 @@ +/* + * Nib2Cib.j + * nib2cib + * + * Created by Francisco Tolmasky and Aparajita Fishman. + * Copyright 2008, 280 North, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +@import +@import +@import + +@import "NSFoundation.j" +@import "NSAppKit.j" + +@import "Nib2CibKeyedUnarchiver.j" +@import "Converter.j" + +var FILE = require("file"), + OS = require("os"), + SYS = require("system"), + FileList = require("jake").FileList, + stream = require("narwhal/term").stream, + StaticResource = require("objective-j").StaticResource, + + DefaultTheme = "Aristo", + BuildTypes = ["Debug", "Release"], + DefaultFile = "MainMenu", + AllowedStoredOptionsRe = new RegExp("^(defaultTheme|auxThemes|verbosity|quiet|frameworks|format)$"); + ArgsRe = /"[^\"]+"|'[^\']+'|\S+/g; + + +@implementation Nib2Cib : CPObject +{ + CPArray commandLineArgs; + JSObject parser; + JSObject nibInfo; + CPString appDirectory; + CPString resourcesDirectory; + CPDictionary infoPlist; + CPArray userNSClasses; +} + +- (id)initWithArgs:(CPArray)theArgs +{ + self = [super init]; + + if (self) + { + commandLineArgs = theArgs; + parser = new (require("narwhal/args").Parser)(); + nibInfo = {}; + appDirectory = @""; + resourcesDirectory = @""; + infoPlist = [CPDictionary dictionary]; + userNSClasses = []; + } + + return self; +} + +- (void)run +{ + try + { + var options = [self parseOptionsFromArgs:commandLineArgs]; + + [self setLogLevel:options.quiet ? -1 : options.verbosity]; + + if (options.watch) + [self watchWithOptions:options]; + else + [self convertWithOptions:options inputFile:nil]; + } + catch (anException) + { + CPLog.fatal([self exceptionReason:anException]); + OS.exit(1); + } +} + +- (BOOL)convertWithOptions:(JSObject)options inputFile:(CPString)inputFile +{ + try + { + inputFile = inputFile || [self getInputFile:options.args]; + + [self getAppAndResourceDirectoriesFromInputFile:inputFile options:options]; + + if (options.readStoredOptions) + { + options = [self mergeOptionsWithStoredOptions:options inputFile:inputFile]; + [self setLogLevel:options.quiet ? -1 : options.verbosity]; + } + + if (!options.quiet && options.verbosity > 0) + [self printVersion]; + + var outputFile = [self getOutputFileFromInputFile:inputFile args:options.args], + configInfo = [self readConfigFile:options.configFile || @"" inputFile:inputFile]; + + infoPlist = configInfo.plist; + + if (infoPlist) + { + var systemFontFace = [infoPlist valueForKey:@"CPSystemFontFace"]; + + if (systemFontFace) + [CPFont setSystemFontFace:systemFontFace]; + + var systemFontSize = [infoPlist valueForKey:@"CPSystemFontSize"]; + + if (systemFontSize) + [CPFont setSystemFontSize:parseFloat(systemFontSize, 10)]; + } + + var themeList = [self getThemeList:options], + themes = [self loadThemesFromList:themeList]; + + CPLog.info("\n-------------------------------------------------------------"); + CPLog.info("Input : " + inputFile); + CPLog.info("Output : " + outputFile); + CPLog.info("Format : " + ["Auto", "Mac", "iPhone"][options.format]); + CPLog.info("Application : " + appDirectory); + CPLog.info("Resources : " + resourcesDirectory); + CPLog.info("Frameworks : " + (options.frameworks || "")); + CPLog.info("Default theme : " + themeList[0]); + CPLog.info("Aux themes : " + themeList.slice(1).join(", ")); + CPLog.info("Config file : " + (configInfo.path || "")); + CPLog.info("System Font : " + [CPFont systemFontSize] + "px " + [CPFont systemFontFace]); + CPLog.info("-------------------------------------------------------------\n"); + + var converter = [[Converter alloc] initWithInputPath:inputFile + format:options.format + themes:themes]; + + [converter setOutputPath:outputFile]; + [converter setResourcesPath:resourcesDirectory]; + + var loadFrameworksCallback = function() + { + [self loadNSClassesFromBundle:[CPBundle mainBundle]]; + [converter setUserNSClasses:userNSClasses]; + [converter convert]; + }; + + [self loadFrameworks:options.frameworks verbosity:options.verbosity callback:loadFrameworksCallback]; + + return YES; + } + catch (anException) + { + CPLog.fatal([self exceptionReason:anException]); + return NO; + } +} + +- (void)watchWithOptions:(JSObject)options +{ + var verbosity = options.quiet ? -1 : options.verbosity, + watchDir = options.args[0]; + + if (!watchDir) + watchDir = FILE.canonical(FILE.isDirectory("Resources") ? "Resources" : "."); + else + { + watchDir = FILE.canonical(watchDir); + + if (FILE.basename(watchDir) !== "Resources") + { + var path = FILE.join(watchDir, "Resources"); + + if (FILE.isDirectory(path)) + watchDir = path; + } + } + + if (!FILE.isDirectory(watchDir)) + [self failWithMessage:@"Cannot find the directory: " + watchDir]; + + // Turn on info messages + [self setLogLevel:1]; + + var nibs = new FileList(FILE.join(watchDir, "*.[nx]ib")).items(), + count = nibs.length; + + // First time through only IB files with no corresponding cib + // or a cib with an earlier or equal mtime are converted. + while (count--) + { + var nib = nibs[count], + cib = nib.substr(0, nib.length - 4) + ".cib"; + + if (FILE.exists(cib) && (FILE.mtime(nib) - FILE.mtime(cib)) <= 0) + nibInfo[nib] = FILE.mtime(nib); + } + + CPLog.info("Watching: " + CPLogColorize(watchDir, "debug")); + CPLog.info("Press Control-C to stop..."); + + while (true) + { + var modifiedNibs = [self getModifiedNibsInDirectory:watchDir]; + + for (var i = 0; i < modifiedNibs.length; ++i) + { + var action = modifiedNibs[i][0], + nib = modifiedNibs[i][1], + label = action === "add" ? "Added" : "Modified", + level = action === "add" ? "info" : "debug"; + + CPLog.info(">> %s: %s", CPLogColorize(label, level), nib); + + // Don't convert an add if there is an existing cib with a later mtime + if (action === "add") + { + var cib = nib.substr(0, nib.length - 4) + ".cib"; + + if (FILE.exists(cib) && (FILE.mtime(nib) - FILE.mtime(cib)) < 0) + continue; + } + + // Let the converter log however the user configured it + [self setLogLevel:verbosity]; + + var success = [self convertWithOptions:options inputFile:nib]; + + [self setLogLevel:1]; + + if (success) + { + if (verbosity > 0) + stream.print(); + else + CPLog.warn("Conversion successful"); + } + } + + OS.sleep(1); + } +} + +- (JSObject)parseOptionsFromArgs:(CPArray)theArgs +{ + parser.usage("[--watch DIRECTORY] [INPUT_FILE [OUTPUT_FILE]]"); + + parser.option("--watch", "watch") + .set(true) + .help("Ask nib2cib to watch a directory for changes"); + + parser.option("-R", "resourcesDir") + .set() + .displayName("directory") + .help("Set the Resources directory, usually unnecessary as it is inferred from the input path"); + + parser.option("--default-theme", "defaultTheme") + .set() + .displayName("name") + .help("Specify a custom default theme which is not set in your Info.plist"); + + parser.option("-t", "--theme", "auxThemes") + .push() + .displayName("name") + .help("An additional theme loaded dynamically by your application"); + + parser.option("--config", "configFile") + .set() + .displayName("path") + .help("A path to an Info.plist file from which the system font and/or size can be retrieved"); + + parser.option("-v", "--verbose", "verbosity") + .inc() + .help("Increase verbosity level"); + + parser.option("-q", "--quiet", "quiet") + .set(true) + .help("No output"); + + parser.option("-F", "--framework", "frameworks") + .push() + .help("Add a framework to load"); + + parser.option("--no-stored-options", "readStoredOptions") + .set(false) + .def(true) + .help("Do not read stored options"); + + parser.option("--mac", "format") + .set(NibFormatMac) + .def(NibFormatUndetermined) + .help("Set format to Mac"); + + parser.option("--version", "showVersion") + .action(function() { [self printVersionAndExit]; }) + .help("Show the version of nib2cib and quit"); + + parser.helpful(); + + var options = parser.parse(theArgs, null, null, true); + + if (options.args.length > 2) + { + parser.printUsage(options); + OS.exit(0); + } + + return options; +} + +- (JSObject)mergeOptionsWithStoredOptions:(JSObject)options inputFile:(CPString)inputFile +{ + // We have to clone options + var userOptions = [self readStoredOptionsAtPath:FILE.join(SYS.env["HOME"], ".nib2cibconfig")], + appOptions = [self readStoredOptionsAtPath:FILE.join(appDirectory, "nib2cib.conf")], + filename = FILE.basename(inputFile, FILE.extension(inputFile)) + ".conf", + fileOptions = [self readStoredOptionsAtPath:FILE.join(FILE.dirname(inputFile), filename)]; + + // At this point we have an array of args without the initial command in args[0], + // add the command and parse the options. + userOptions = [self parseOptionsFromArgs:[options.command].concat(userOptions)]; + appOptions = [self parseOptionsFromArgs:[options.command].concat(appOptions)]; + fileOptions = [self parseOptionsFromArgs:[options.command].concat(fileOptions)]; + + // The increasing order of precedence is: user -> app -> file -> command line + var mergedOptions = userOptions; + + [self mergeOptions:appOptions with:mergedOptions]; + [self mergeOptions:fileOptions with:mergedOptions]; + [self mergeOptions:options with:mergedOptions]; + mergedOptions.args = options.args; + + return mergedOptions; +} + +- (CPArray)readStoredOptionsAtPath:(CPString)path +{ + path = FILE.canonical(path); + + if (!FILE.isReadable(path)) + return []; + + var file = FILE.open(path, "r"), + line = file.readLine(), + matches = line.match(ArgsRe) || []; + + file.close(); + CPLog.debug("Reading stored options: " + path); + + if (matches) + { + for (var i = 0; i < matches.length; ++i) + { + var str = matches[i]; + + if ((str.charAt(0) === '"' && str.substr(-1) === '"') || (str.charAt(0) === "'" && str.substr(-1) === "'")) + matches[i] = str.substr(1, str.length - 2); + } + + return matches; + } + else + return []; +} + +- (void)printOptions:options +{ + for (option in options) + { + var value = options[option]; + + if (value) + { + var show = value.length !== undefined ? value.length > 0 : !!value; + + if (show) + print(option + ": " + value); + } + } +} + +// Merges properties in sourceOptions into targetOptions, overriding properties in targetOptions +- (void)mergeOptions:(JSObject)sourceOptions with:(JSObject)targetOptions +{ + for (option in sourceOptions) + { + // Make sure only a supported option is given + if (!AllowedStoredOptionsRe.test(option)) + continue; + + if (sourceOptions.hasOwnProperty(option)) + { + var value = sourceOptions[option]; + + if (value) + { + var copy = value.length !== undefined ? value.length > 0 : !!value; + + if (copy) + targetOptions[option] = value; + } + } + } +} + +- (void)setLogLevel:(int)level +{ + CPLogUnregister(CPLogPrint); + + if (level === 0) + CPLogRegister(CPLogPrint, "warn", logFormatter); + else if (level === 1) + CPLogRegister(CPLogPrint, "info", logFormatter); + else if (level > 1) + CPLogRegister(CPLogPrint, null, logFormatter); +} + +- (CPString)getInputFile:(CPArray)theArgs +{ + var inputFile = theArgs[0] || DefaultFile, + path = ""; + + if (!/^.+\.[nx]ib$/.test(inputFile)) + { + if (path = [self findInputFile:inputFile extension:@".xib"]) + inputFile = path; + else if (path = [self findInputFile:inputFile extension:@".nib"]) + inputFile = path; + else + [self failWithMessage:@"Cannot find the input file (.xib or .nib): " + FILE.canonical(inputFile)]; + } + else if (path = [self findInputFile:inputFile extension:nil]) + inputFile = path; + else + [self failWithMessage:@"Could not read the input file: " + FILE.canonical(inputFile)]; + + return FILE.canonical(inputFile); +} + +- (void)findInputFile:(CPString)inputFile extension:(CPString)extension +{ + var path = inputFile; + + if (extension) + path += extension; + + if (FILE.isReadable(path)) + return path; + + if (FILE.basename(FILE.dirname(inputFile)) !== "Resources" && FILE.isDirectory("Resources")) + { + path = FILE.resolve(path, FILE.join("Resources", FILE.basename(path))); + + if (FILE.isReadable(path)) + return path; + } + + return null; +} + +- (void)getAppAndResourceDirectoriesFromInputFile:(CPString)inputFile options:(JSObject)options +{ + appDirectory = resourcesDirectory = ""; + + if (options.resourcesDir) + { + var path = FILE.canonical(options.resourcesDir); + + if (!FILE.isDirectory(path)) + [self failWithMessage:@"Cannot read resources at: " + path]; + + resourcesDirectory = path; + } + + var parentDir = FILE.dirname(inputFile); + + if (FILE.basename(parentDir) === "Resources") + { + appDirectory = FILE.dirname(parentDir); + resourcesDirectory = resourcesDirectory || parentDir; + } + else + { + appDirectory = parentDir; + + if (!resourcesDirectory) + { + var path = FILE.join(appDirectory, "Resources"); + + if (FILE.isDirectory(path)) + resourcesDirectory = path; + } + } +} + +- (CPString)getOutputFileFromInputFile:(CPString)inputFile args:(CPArray)theArgs +{ + var outputFile = null; + + if (theArgs.length > 1) + { + outputFile = theArgs[1]; + + if (!/^.+\.cib$/.test(outputFile)) + outputFile += ".cib"; + } + else + outputFile = FILE.join(FILE.dirname(inputFile), FILE.basename(inputFile, FILE.extension(inputFile))) + ".cib"; + + outputFile = FILE.canonical(outputFile); + + if (!FILE.isWritable(FILE.dirname(outputFile))) + [self failWithMessage:@"Cannot write the output file at: " + outputFile]; + + return outputFile; +} + +- (void)loadFrameworks:(CPArray)frameworks verbosity:(int)verbosity callback:(JSObject)aCallback +{ + if (!frameworks || frameworks.length === 0) + return aCallback(); + + var returnPath = function(path) { return path; }; + + frameworks.forEach(function(aFramework) + { + [self setLogLevel:verbosity]; + + var frameworkPath = nil; + + // If it is just a name with no path components, try to locate it + if (aFramework.indexOf("/") === -1) + { + frameworkPath = [self findInCappBuild:aFramework isDirectory:YES callback:returnPath]; + + if (!frameworkPath) + frameworkPath = [self findInFrameworks:FILE.join(appDirectory, "Frameworks") + path:aFramework + isDirectory:YES + callback:returnPath]; + + if (!frameworkPath) + frameworkPath = [self findInInstalledFrameworks:aFramework isDirectory:YES callback:returnPath]; + } + else + frameworkPath = FILE.canonical(aFramework); + + if (!frameworkPath) + [self failWithMessage:@"Cannot find the framework \"" + aFramework + "\""]; + + CPLog.debug("Loading framework: " + frameworkPath); + + try + { + // CPBundle is a bit loquacious with logging, we will defer + // logging its exceptions till later. + [self setLogLevel:-1]; + + var frameworkBundle = [[CPBundle alloc] initWithPath:frameworkPath]; + + [frameworkBundle loadWithDelegate:nil]; + [self setLogLevel:verbosity]; + + [self loadNSClassesFromBundle:frameworkBundle]; + } + finally + { + [self setLogLevel:verbosity]; + } + + require("browser/timeout").serviceTimeouts(); + }); + + aCallback(); +} + +- (void)loadNSClassesFromBundle:(CPBundle)aBundle +{ + // See if the framework defines NS classes + var nsClasses = [aBundle objectForInfoDictionaryKey:@"IBClasses"] || [], + bundlePath = [aBundle bundlePath]; + + for (var i = 0; i < nsClasses.length; ++i) + { + if (userNSClasses.indexOf(nsClasses[i]) >= 0) + continue; + + var path = FILE.join(bundlePath, "NS_" + nsClasses[i] + ".j"); + + objj_importFile(path, YES); + CPLog.debug("Imported NS class: %s", path); + + userNSClasses.push(nsClasses[i]); + } +} + +- (CPArray)getThemeList:(JSObject)options +{ + var defaultTheme = options.defaultTheme; + + if (!defaultTheme) + defaultTheme = [infoPlist valueForKey:@"CPDefaultTheme"]; + + if (!defaultTheme) + defaultTheme = [self getAppKitDefaultThemeName]; + + var themes = [CPSet setWithObject:defaultTheme]; + + if (options.auxThemes) + [themes addObjectsFromArray:options.auxThemes]; + + var auxThemes = infoPlist.valueForKey("CPAuxiliaryThemes"); + + if (auxThemes) + [themes addObjectsFromArray:auxThemes]; + + // Now remove the default theme, get the list as an array, and insert the default at the beginning + [themes removeObject:defaultTheme]; + + var allThemes = [themes allObjects]; + + [allThemes insertObject:defaultTheme atIndex:0]; + + return allThemes; +} + +// Returns undefined if $CAPP_BUILD is not defined, false if path cannot be found in $CAPP_BUILD +- (id)findInCappBuild:(CPString)path isDirectory:(BOOL)isDirectory callback:(JSObject)callback +{ + var cappBuild = SYS.env["CAPP_BUILD"]; + + if (!cappBuild) + return undefined; + + cappBuild = FILE.canonical(cappBuild); + + if (FILE.isDirectory(cappBuild)) + { + var result = null; + + for (var i = 0; i < BuildTypes.length && !result; ++i) + { + var findPath = FILE.join(cappBuild, BuildTypes[i], path); + + if ((isDirectory && FILE.isDirectory(findPath)) || (!isDirectory && FILE.exists(findPath))) + result = callback(findPath); + } + + return result; + } + else + return false; +} + +- (id)findInInstalledFrameworks:(CPString)path isDirectory:(BOOL)isDirectory callback:(JSObject)callback +{ + // NOTE: It's safe to use '/' directly in the path, we're guaranteed to be on a Mac + return [self findInFrameworks:FILE.canonical(FILE.join(SYS.prefix, "packages/cappuccino/Frameworks")) + path:path + isDirectory:isDirectory + callback:callback]; +} + +- (id)findInFrameworks:(CPString)frameworksPath path:(CPString)path isDirectory:(BOOL)isDirectory callback:(JSObject)callback +{ + var result = null, + findPath = FILE.join(frameworksPath, "Debug", path); + + if ((isDirectory && FILE.isDirectory(findPath)) || (!isDirectory && FILE.exists(findPath))) + result = callback(findPath); + + if (!result) + { + findPath = FILE.join(frameworksPath, path); + + if ((isDirectory && FILE.isDirectory(findPath)) || (!isDirectory && FILE.exists(findPath))) + result = callback(findPath); + } + + return result; +} + +- (CPString)getAppKitDefaultThemeName +{ + var callback = function(path) { return [self themeNameFromPropertyList:path]; }, + themeName = [self findInCappBuild:@"AppKit/Info.plist" isDirectory:NO callback:callback]; + + if (!themeName) + themeName = [self findInInstalledFrameworks:@"AppKit/Info.plist" isDirectory:NO callback:callback]; + + return themeName || DefaultTheme; +} + +- (CPString)themeNameFromPropertyList:(CPString)path +{ + if (!FILE.isReadable(path)) + return nil; + + var themeName = nil, + plist = CFPropertyList.readPropertyListFromFile(path); + + if (plist) + themeName = plist.valueForKey("CPDefaultTheme"); + + return themeName; +} + +- (CPArray)loadThemesFromList:(CPArray)themeList +{ + var themes = []; + + for (var i = 0; i < themeList.length; ++i) + themes.push([self loadThemeNamed:themeList[i] directory:resourcesDirectory]); + + return themes; +} + +- (CPTheme)loadThemeNamed:(CPString)themeName directory:(CPString)themeDir +{ + if (/^.+\.blend$/.test(themeName)) + themeName = themeName.substr(0, themeName.length - ".blend".length); + + var blendName = themeName + ".blend", + themePath = ""; + + if (themeDir) + { + themePath = FILE.join(FILE.canonical(themeDir), blendName); + + if (!FILE.isDirectory(themePath)) + themePath = themeDir = null; + } + + if (!themeDir) + { + var returnPath = function(path) { return path; }; + + themePath = [self findInCappBuild:blendName isDirectory:YES callback:returnPath]; + + if (!themePath) + themePath = [self findInInstalledFrameworks:@"AppKit/Resources/" + blendName isDirectory:YES callback:returnPath]; + + // Last resort, try the cwd + if (!themePath) + { + var path = FILE.canonical(blendName); + + if (FILE.isDirectory(path)) + themePath = path; + } + } + + if (!themePath) + [self failWithMessage:@"Cannot find the theme \"" + themeName + "\""]; + + return [self readThemeWithName:themeName atPath:themePath]; +} + +- (CPTheme)readThemeWithName:(CPString)name atPath:(CPString)path +{ + var themeBundle = new CFBundle(path); + + // By default when we try to load the bundle it will use the CommonJS environment, + // but we want the Browser environment. So we override mostEligibleEnvironment(). + themeBundle.mostEligibleEnvironment = function() { return "Browser"; } + themeBundle.load(); + + var keyedThemes = themeBundle.valueForInfoDictionaryKey("CPKeyedThemes"); + + if (!keyedThemes) + [self failWithMessage:@"Could not find the keyed themes in the theme: " + path]; + + var index = keyedThemes.indexOf(name + ".keyedtheme"); + + if (index < 0) + [self failWithMessage:@"Could not find the main theme data (" + name + ".keyedtheme" + ") in the theme: " + path]; + + // Load the keyed theme data, making sure to resolve it + var resourcePath = themeBundle.pathForResource(keyedThemes[index]), + themeData = new CFMutableData(); + + themeData.setRawString(StaticResource.resourceAtURL(new CFURL(resourcePath), true).contents()); + + var theme = [CPKeyedUnarchiver unarchiveObjectWithData:themeData]; + + if (!theme) + [self failWithMessage:@"Could not unarchive the theme at: " + path]; + + CPLog.debug("Loaded theme: " + path); + return theme; +} + +- (JSObject)readConfigFile:(CPString)configFile inputFile:(CPString)inputFile +{ + var configPath = null, + path; + + // First see if the user passed a config file path + if (configFile) + { + path = FILE.canonical(configFile); + + if (!FILE.isReadable(path)) + [self failWithMessage:@"Cannot find the config file: " + path]; + + configPath = path; + } + else + { + path = FILE.join(appDirectory, "Info.plist"); + + if (FILE.isReadable(path)) + configPath = path; + } + + var plist = null; + + if (configPath) + { + var plist = FILE.read(configPath); + + if (!plist) + [self failWithMessage:@"Could not read the Info.plist at: " + configPath]; + + plist = CFPropertyList.propertyListFromString(plist); + + if (!plist) + [self failWithMessage:@"Could not parse the Info.plist at: " + configPath]; + } + + return {path: configPath, plist: plist}; +} + +- (CPArray)getModifiedNibsInDirectory:(CPString)path +{ + var nibs = new FileList(FILE.join(path, "*.[nx]ib")).items(), + count = nibs.length, + newNibInfo = {}, + modifiedNibs = []; + + while (count--) + { + var nib = nibs[count]; + + newNibInfo[nib] = FILE.mtime(nib); + + if (!nibInfo.hasOwnProperty(nib)) + modifiedNibs.push(["add", nib]); + else + { + if (newNibInfo[nib] - nibInfo[nib] !== 0) + modifiedNibs.push(["mod", nib]); + + // Remove matching nibs so that we leave + // deleted nibs in nibInfo. + delete nibInfo[nib]; + } + } + + for (var nib in nibInfo) + if (nibInfo.hasOwnProperty(nib)) + CPLog.info(">> %s: %s", CPLogColorize("Deleted", "warn"), nib); + + nibInfo = newNibInfo; + + return modifiedNibs; +} + +- (void)printVersionAndExit +{ + [self printVersion]; + OS.exit(0); +} + +- (void)printVersion +{ + /* + There are two usual possibilities for the location of the nib2cib binary. + If we are executing the installed narwhal binary, the location is: + /packages/cappuccino/bin/nib2cib + If we are executing the built binary, the location is: + /Debug|Release/CommonJS/cappuccino/bin/nib2cib + + Base on these paths we can locate nib2cib's Info.plist. + */ + var path = FILE.dirname(FILE.dirname(FILE.canonical(SYS.args[0]))), + version = null; + + if (FILE.basename(path) === "narwhal") + path = FILE.join(path, "packages", "cappuccino"); + + path = FILE.join(path, "lib", "nib2cib", "Info.plist"); + + if (FILE.isReadable(path)) + { + var plist = FILE.read(path); + + if (!plist) + return; + + plist = CFPropertyList.propertyListFromString(plist); + + if (!plist) + return; + + version = plist.valueForKey("CPBundleVersion"); + + if (version) + stream.print("nib2cib v" + version); + } + + if (!version) + stream.print(""); +} + +- (CPString)exceptionReason:(JSObject)exception +{ + if (typeof(exception) === "string") + return exception; + else if (exception.isa && [exception respondsToSelector:@selector(reason)]) + return [exception reason]; + else + return @"An unknown error occurred"; +} + +- (void)failWithMessage:(CPString)message +{ + [CPException raise:ConverterConversionException reason:message]; +} + +@end + +function logFormatter(aString, aLevel, aTitle) +{ + if (aLevel === "info") + return aString; + else + return CPLogColorize(aString, aLevel); +} diff --git a/Tools/nib2cib/main.j b/Tools/nib2cib/main.j index 7ab91ef33..3e5475c9d 100644 --- a/Tools/nib2cib/main.j +++ b/Tools/nib2cib/main.j @@ -20,728 +20,11 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -@import -@import -@import - -@import "NSFoundation.j" -@import "NSAppKit.j" - -@import "Nib2CibKeyedUnarchiver.j" -@import "Converter.j" - -var FILE = require("file"), - OS = require("os"), - SYS = require("system"), - FileList = require("jake").FileList, - stream = require("narwhal/term").stream, - StaticResource = require("objective-j").StaticResource, - - DefaultTheme = "Aristo", - BuildTypes = ["Debug", "Release"], - DefaultFile = "MainMenu"; - -var parser = new (require("narwhal/args").Parser)(), - nibInfo = {}, - appDirectory = "", - resourcesDirectory = ""; - +@import "Nib2Cib.j" function main(args) { - try - { - var options = parseOptions(args); + var nib2cib = [[Nib2Cib alloc] initWithArgs:args]; - if (options.watch) - watch(options); - else - convert(options); - } - catch (anException) - { - CPLog.fatal(exceptionReason(anException)); - OS.exit(1); - } -} - -function convert(options, inputFile) -{ - try - { - inputFile = inputFile || getInputFile(options.args); - - getAppAndResourceDirectoriesFromInputFile(inputFile, options); - - var outputFile = getOutputFile(inputFile, options.args), - configInfo = readConfigFile(options.configFile || "", inputFile), - defaultTheme = null; - - if (configInfo.plist) - { - var systemFontFace = configInfo.plist.valueForKey("CPSystemFontFace"); - - if (systemFontFace) - [CPFont setSystemFontFace:systemFontFace]; - - var systemFontSize = configInfo.plist.valueForKey("CPSystemFontSize"); - - if (systemFontSize) - [CPFont setSystemFontSize:parseFloat(systemFontSize, 10)]; - - if (!options.defaultTheme) - defaultTheme = configInfo.plist.valueForKey("CPDefaultTheme"); - } - - var themeList = getThemeList(defaultTheme || options.defaultTheme, options), - themes = loadThemes(themeList); - - CPLog.info("\n-------------------------------------------------------------"); - CPLog.info("Input : " + inputFile); - CPLog.info("Output : " + outputFile); - CPLog.info("Format : " + ["Auto", "Mac", "iPhone"][options.format]); - CPLog.info("Application : " + appDirectory); - CPLog.info("Resources : " + resourcesDirectory); - CPLog.info("Frameworks : " + (options.frameworks || "")); - CPLog.info("Default theme : " + themeList[0]); - CPLog.info("Extra themes : " + themeList.slice(1).join(", ")); - CPLog.info("Config file : " + (configInfo.path || "")); - CPLog.info("System Font : " + [CPFont systemFontSize] + "px " + [CPFont systemFontFace]); - CPLog.info("-------------------------------------------------------------\n"); - - var converter = [[Converter alloc] initWithInputPath:inputFile - format:options.format - themes:themes]; - - [converter setOutputPath:outputFile]; - [converter setResourcesPath:resourcesDirectory]; - - loadFrameworks(options.frameworks, options.verbosity, function() - { - [converter convert]; - }); - - return true; - } - catch (anException) - { - CPLog.fatal(exceptionReason(anException)); - return false; - } -} - -function watch(options) -{ - var verbosity = options.quiet ? -1 : options.verbosity, - watchDir = options.args[0]; - - if (!watchDir) - watchDir = FILE.canonical(FILE.isDirectory("Resources") ? "Resources" : "."); - else - { - watchDir = FILE.canonical(watchDir); - - if (FILE.basename(watchDir) !== "Resources") - { - var path = FILE.join(watchDir, "Resources"); - - if (FILE.isDirectory(path)) - watchDir = path; - } - } - - if (!FILE.isDirectory(watchDir)) - fail("Cannot find the directory: " + watchDir); - - // Turn on info messages - setLogLevel(1); - - var nibs = new FileList(FILE.join(watchDir, "*.[nx]ib")).items(), - count = nibs.length; - - // First time through only IB files with no corresponding cib - // or a cib with an earlier or equal mtime are converted. - while (count--) - { - var nib = nibs[count], - cib = nib.substr(0, nib.length - 4) + ".cib"; - - if (FILE.exists(cib) && (FILE.mtime(nib) - FILE.mtime(cib)) <= 0) - nibInfo[nib] = FILE.mtime(nib); - } - - CPLog.info("Watching: " + CPLogColorize(watchDir, "debug")); - CPLog.info("Press Control-C to stop..."); - - while (true) - { - var modifiedNibs = getModifiedNibs(watchDir); - - for (var i = 0; i < modifiedNibs.length; ++i) - { - var action = modifiedNibs[i][0], - nib = modifiedNibs[i][1], - label = action === "add" ? "Added" : "Modified", - level = action === "add" ? "info" : "debug"; - - CPLog.info(">> %s: %s", CPLogColorize(label, level), nib); - - // Don't convert an add if there is an existing cib with a later mtime - if (action === "add") - { - var cib = nib.substr(0, nib.length - 4) + ".cib"; - - if (FILE.exists(cib) && (FILE.mtime(nib) - FILE.mtime(cib)) < 0) - continue; - } - - // Let the converter log however the user configured it - setLogLevel(verbosity); - - var success = convert(options, nib); - - setLogLevel(1); - - if (success) - { - if (verbosity > 0) - stream.print(); - else - CPLog.warn("Conversion successful"); - } - } - - OS.sleep(1); - } -} - -function parseOptions(args) -{ - parser.usage("[--watch DIRECTORY] [INPUT_FILE [OUTPUT_FILE]]"); - - parser.option("--watch", "watch") - .set(true) - .help("Ask nib2cib to watch a directory for changes"); - - parser.option("-R", "resourcesDir") - .set() - .displayName("directory") - .help("Set the Resources directory, usually unnecessary as it is inferred from the input path"); - - parser.option("--default-theme", "defaultTheme") - .set() - .displayName("name") - .help("Specify a custom default theme which is not set in your Info.plist"); - - parser.option("-t", "--theme", "extraThemes") - .push() - .displayName("name") - .help("An additional theme loaded dynamically by your application"); - - parser.option("--config", "configFile") - .set() - .displayName("path") - .help("A path to an Info.plist file from which the system font and/or size can be retrieved"); - - // parser.option("--iphone", "format") - // .set(NibFormatIPhone) - // .help("Set format to iPhone"); - - parser.option("-v", "--verbose", "verbosity") - .inc() - .help("Increase verbosity level"); - - parser.option("-q", "--quiet", "quiet") - .set(true) - .help("No output"); - - parser.option("-F", "framework", "frameworks") - .push() - .help("Add a framework to load"); - - parser.option("--mac", "format") - .set(NibFormatMac) - .def(NibFormatUndetermined) - .help("Set format to Mac"); - - parser.option("--version", "showVersion") - .action(printVersionAndExit) - .help("Show the version of nib2cib and quit"); - - parser.helpful(); - - var options = parser.parse(args, null, null, true); - - if (options.args.length > 2) - { - parser.printUsage(options); - OS.exit(0); - } - - setLogLevel(options.quiet ? -1 : options.verbosity); - - if (!options.quiet && options.verbosity > 0) - printVersion(); - - return options; -} - -function setLogLevel(level) -{ - CPLogUnregister(CPLogPrint); - - if (level === 0) - CPLogRegister(CPLogPrint, "warn", logFormatter); - else if (level === 1) - CPLogRegister(CPLogPrint, "info", logFormatter); - else if (level > 1) - CPLogRegister(CPLogPrint, null, logFormatter); -} - -function getInputFile(args) -{ - var inputFile = args[0] || DefaultFile, - path = ""; - - if (!/^.+\.[nx]ib$/.test(inputFile)) - { - if (path = findInputFile(inputFile, ".xib")) - inputFile = path; - else if (path = findInputFile(inputFile, ".nib")) - inputFile = path; - else - fail("Cannot find the input file (.xib or .nib): " + FILE.canonical(inputFile)); - } - else if (path = findInputFile(inputFile)) - inputFile = path; - else - fail("Could not read the input file: " + FILE.canonical(inputFile)); - - return FILE.canonical(inputFile); -} - -function findInputFile(inputFile, extension) -{ - var path = inputFile; - - if (extension) - path += extension; - - if (FILE.isReadable(path)) - return path; - - if (FILE.basename(FILE.dirname(inputFile)) !== "Resources" && FILE.isDirectory("Resources")) - { - path = FILE.resolve(path, FILE.join("Resources", FILE.basename(path))); - - if (FILE.isReadable(path)) - return path; - } - - return null; -} - -function getAppAndResourceDirectoriesFromInputFile(inputFile, options) -{ - appDirectory = resourcesDirectory = ""; - - if (options.resourcesDir) - { - var path = FILE.canonical(options.resourcesDir); - - if (!FILE.isDirectory(path)) - fail("Cannot read resources at: " + path); - - resourcesDirectory = path; - } - - var parentDir = FILE.dirname(inputFile); - - if (FILE.basename(parentDir) === "Resources") - { - appDirectory = FILE.dirname(parentDir); - resourcesDirectory = resourcesDirectory || parentDir; - } - else - { - appDirectory = parentDir; - - if (!resourcesDirectory) - { - var path = FILE.join(appDirectory, "Resources"); - - if (FILE.isDirectory(path)) - resourcesDirectory = path; - } - } -} - -function getOutputFile(inputFile, args) -{ - var outputFile = null; - - if (args.length > 1) - { - outputFile = args[1]; - - if (!/^.+\.cib$/.test(outputFile)) - outputFile += ".cib"; - } - else - outputFile = FILE.join(FILE.dirname(inputFile), FILE.basename(inputFile, FILE.extension(inputFile))) + ".cib"; - - outputFile = FILE.canonical(outputFile); - - if (!FILE.isWritable(FILE.dirname(outputFile))) - fail("Cannot write the output file at: " + outputFile); - - return outputFile; -} - -function loadFrameworks(frameworkPaths, verbosity, aCallback) -{ - if (!frameworkPaths || frameworkPaths.length === 0) - return aCallback(); - - frameworkPaths.forEach(function(aFrameworkPath) - { - setLogLevel(verbosity); - CPLog.info("Loading " + aFrameworkPath); - - try - { - // CPBundle is a bit loquacious with logging, we will defer - // logging its exceptions till later. - setLogLevel(-1); - - var frameworkBundle = [[CPBundle alloc] initWithPath:aFrameworkPath]; - - [frameworkBundle loadWithDelegate:nil]; - } - finally - { - setLogLevel(verbosity); - } - - require("browser/timeout").serviceTimeouts(); - }); - - aCallback(); -} - -function logFormatter(aString, aLevel, aTitle) -{ - if (aLevel === "info") - return aString; - else - return CPLogColorize(aString, aLevel); -} - -function getThemeList(defaultTheme, options) -{ - var themes = [defaultTheme || getAppKitDefaultThemeName()]; - - if (options.extraThemes) - for (var i = 0; i < options.extraThemes.length; ++i) - if (themes.indexOf(options.extraThemes[i]) < 0) - themes.push(options.extraThemes[i]); - - return themes; -} - -// Returns undefined if $CAPP_BUILD is not defined, false if path cannot be found in $CAPP_BUILD -function findInCappBuild(path, isDirectory, callback) -{ - var cappBuild = SYS.env["CAPP_BUILD"]; - - if (!cappBuild) - return undefined; - - cappBuild = FILE.canonical(cappBuild); - - if (FILE.isDirectory(cappBuild)) - { - var result = null; - - for (var i = 0; i < BuildTypes.length && !result; ++i) - { - var findPath = FILE.join(cappBuild, BuildTypes[i], path); - - if ((isDirectory && FILE.isDirectory(findPath)) || (!isDirectory && FILE.exists(findPath))) - result = callback(findPath); - } - - return result; - } - else - return false; -} - -function findInInstalledFrameworks(path, isDirectory, callback) -{ - // NOTE: It's safe to use '/' directly in the path, we're guaranteed to be on a Mac - var frameworks = FILE.canonical(FILE.join(SYS.prefix, "packages/cappuccino/Frameworks")), - result = null, - findPath = FILE.join(frameworks, "Debug", path); - - if ((isDirectory && FILE.isDirectory(findPath)) || (!isDirectory && FILE.exists(findPath))) - result = callback(findPath); - - if (!result) - { - findPath = FILE.join(frameworks, path); - - if ((isDirectory && FILE.isDirectory(findPath)) || (!isDirectory && FILE.exists(findPath))) - result = callback(findPath); - } - - return result; -} - -function getAppKitDefaultThemeName() -{ - var callback = function(path) { return themeNameFromPropertyList(path); }, - themeName = findInCappBuild("AppKit/Info.plist", false, callback); - - if (!themeName) - themeName = findInInstalledFrameworks("AppKit/Info.plist", false, callback); - - return themeName || DefaultTheme; -} - -function themeNameFromPropertyList(path) -{ - if (!FILE.isReadable(path)) - return nil; - - var themeName = nil, - plist = CFPropertyList.readPropertyListFromFile(path); - - if (plist) - themeName = plist.valueForKey("CPDefaultTheme"); - - return themeName; -} - -function loadThemes(themeList) -{ - var themes = []; - - for (var i = 0; i < themeList.length; ++i) - themes.push(loadTheme(themeList[i], resourcesDirectory)); - - return themes; -} - -function loadTheme(themeName, themeDir) -{ - if (/^.+\.blend$/.test(themeName)) - themeName = themeName.substr(0, themeName.length - ".blend".length); - - var blendName = themeName + ".blend", - themePath = ""; - - if (themeDir) - { - themePath = FILE.join(FILE.canonical(themeDir), blendName); - - if (!FILE.isDirectory(themePath)) - themePath = themeDir = null; - } - - if (!themeDir) - { - var returnPath = function(path) { return path; }; - - themePath = findInCappBuild(blendName, true, returnPath); - - if (!themePath) - themePath = findInInstalledFrameworks("AppKit/Resources/" + blendName, true, returnPath); - - // Last resort, try the cwd - if (!themePath) - { - var path = FILE.canonical(blendName); - - if (FILE.isDirectory(path)) - themePath = path; - } - } - - if (!themePath) - fail('Cannot find the theme "' + themeName + '"'); - - return readTheme(themeName, themePath); -} - -function readTheme(name, path) -{ - var themeBundle = new CFBundle(path); - - // By default when we try to load the bundle it will use the CommonJS environment, - // but we want the Browser environment. So we override mostEligibleEnvironment(). - themeBundle.mostEligibleEnvironment = function() { return "Browser"; } - themeBundle.load(); - - var keyedThemes = themeBundle.valueForInfoDictionaryKey("CPKeyedThemes"); - - if (!keyedThemes) - fail("Could not find the keyed themes in the theme: " + path); - - var index = keyedThemes.indexOf(name + ".keyedtheme"); - - if (index < 0) - fail("Could not find the main theme data (" + name + ".keyedtheme" + ") in the theme: " + path); - - // Load the keyed theme data, making sure to resolve it - var resourcePath = themeBundle.pathForResource(keyedThemes[index]), - themeData = new CFMutableData(); - - themeData.setRawString(StaticResource.resourceAtURL(new CFURL(resourcePath), true).contents()); - - var theme = [CPKeyedUnarchiver unarchiveObjectWithData:themeData]; - - if (!theme) - fail("Could not unarchive the theme at: " + path); - - CPLog.debug("Loaded theme: " + path); - return theme; -} - -function readConfigFile(configFile, inputFile) -{ - var configPath = null, - path; - - // First see if the user passed a config file path - if (configFile) - { - path = FILE.canonical(configFile); - - if (!FILE.isReadable(path)) - fail("Cannot find the config file: " + path); - - configPath = path; - } - else - { - path = FILE.join(appDirectory, "Info.plist"); - - if (FILE.isReadable(path)) - configPath = path; - } - - var plist = null; - - if (configPath) - { - var plist = FILE.read(configPath); - - if (!plist) - fail("Could not read the Info.plist at: " + configPath); - - plist = CFPropertyList.propertyListFromString(plist); - - if (!plist) - fail("Could not parse the Info.plist at: " + configPath); - } - - return {path: configPath, plist: plist}; -} - -function getModifiedNibs(path) -{ - var nibs = new FileList(FILE.join(path, "*.[nx]ib")).items(), - count = nibs.length, - newNibInfo = {}, - modifiedNibs = []; - - while (count--) - { - var nib = nibs[count]; - - newNibInfo[nib] = FILE.mtime(nib); - - if (!nibInfo.hasOwnProperty(nib)) - modifiedNibs.push(["add", nib]); - else - { - if (newNibInfo[nib] - nibInfo[nib] !== 0) - modifiedNibs.push(["mod", nib]); - - // Remove matching nibs so that we leave - // deleted nibs in nibInfo. - delete nibInfo[nib]; - } - } - - for (var nib in nibInfo) - if (nibInfo.hasOwnProperty(nib)) - CPLog.info(">> %s: %s", CPLogColorize("Deleted", "warn"), nib); - - nibInfo = newNibInfo; - - return modifiedNibs; -} - -function printVersionAndExit() -{ - printVersion(); - OS.exit(0); -} - -function printVersion() -{ - /* - There are two usual possibilities for the location of the nib2cib binary. - If we are executing the installed narwhal binary, the location is: - /packages/cappuccino/bin/nib2cib - If we are executing the built binary, the location is: - /Debug|Release/CommonJS/cappuccino/bin/nib2cib - - Base on these paths we can locate nib2cib's Info.plist. - */ - var path = FILE.dirname(FILE.dirname(FILE.canonical(SYS.args[0]))), - version = null; - - if (FILE.basename(path) === "narwhal") - path = FILE.join(path, "packages", "cappuccino"); - - path = FILE.join(path, "lib", "nib2cib", "Info.plist"); - - if (FILE.isReadable(path)) - { - var plist = FILE.read(path); - - if (!plist) - return; - - plist = CFPropertyList.propertyListFromString(plist); - - if (!plist) - return; - - version = plist.valueForKey("CPBundleVersion"); - - if (version) - stream.print("nib2cib v" + version); - } - - if (!version) - stream.print(""); -} - -function exceptionReason(exception) -{ - if (typeof(exception) === "string") - return exception; - else if (exception.isa && [exception respondsToSelector:@selector(reason)]) - return [exception reason]; - else - return "An unknown error occurred"; -} - -function fail(message) -{ - [CPException raise:ConverterConversionException reason:message]; + [nib2cib run]; } diff --git a/Tools/nib2cib/nib2cib.1 b/Tools/nib2cib/nib2cib.1 index 44c5ec433..bf36102ab 100644 --- a/Tools/nib2cib/nib2cib.1 +++ b/Tools/nib2cib/nib2cib.1 @@ -1,6 +1,7 @@ .Dd April 3, 2011 .Os "Cappuccino" .Dt NIB2CIB 1 "PRM" +.nh .\"----------------------------------------------------------------------------------------- .Sh NAME .\"----------------------------------------------------------------------------------------- @@ -154,8 +155,15 @@ options, one for each theme that you load. .Pp Themes are searched for in the Resources, $CAPP_BUILD/Debug and $CAPP_BUILD/Release directories. +.Pp +If you have a list of auxiliary themes in your Info.plist using the +.Ar CPAuxiliaryThemes +item, +.Nm +will load them automatically, you do not have to do anything special. +.Nm .\"----------------------------------------------------------------------------------------- -.Sh "COMMON OPTIONS" +.Sh "OPTIONS" .\"----------------------------------------------------------------------------------------- The following options are available in watch mode or single mode: .Bl -tag -width 4n @@ -192,7 +200,7 @@ use this option, as uses the Info.plist in the application directory, which is inferred from the input file. .It Fl F -Specify the path of a framework to load before converting. This is only useful if: +Specify the name or path of a framework to load before converting. This is only useful if: .Bl -dash -width 0n -hang .It Your IB files use classes from the framework. @@ -202,13 +210,33 @@ Those classes need to serialize/deserialize more data than their superclasses. Those classes implement encodeWithCoder: and initWithCoder:. .El .Pp -This option may be used multiple times to load multiple frameworks. +This option may be used multiple times to load multiple frameworks. If the argument +contains a "/" character, it is considered to be a relative or absolute path and +the framework is searched for at that location. Otherwise it is considered a framework +name and is searched for in the following directories: +.Bl -ohang -offset 4n +.It $CAPP_BUILD/Debug +.It $CAPP_BUILD/Release +.It /Frameworks/Debug +.It /Frameworks +.It /packages/cappuccino/Frameworks/Debug +.It /packages/cappuccino/Frameworks +.El .It Fl \-quiet Tells .Nm to output nothing. This is useful if you are using .Nm -in a shell script and are only interested in the return value. +in a shell script and are only interested in the return value. Note that this +option overrides the +.Fl v +option. +.It Fl \-no-stored-options +Tells +.Nm +not to read stored options. See +.Sy Stored Options +below for more information. .It Fl \-version Prints the current version of .Nm @@ -221,7 +249,46 @@ Displays usage and options. .El .\"----------------------------------------------------------------------------------------- +.Ss "Stored Options" +.\"----------------------------------------------------------------------------------------- +To make it easier to use nib2cib in an automated way, you can store command line options +that will apply to converted xibs/nibs. To store command line options, you enter the +options on a single line into a text file. For example, if you always want to set +"MyTheme" as the default theme, you would create a text file with this line: +.Pp +.D1 --default-theme MyTheme +.Pp +If an option takes a parameter and the parameter contains spaces, it must be enclosed in +single or double quotes. You may store options in the following three places, in increasing +order of precedence: +.Bl -ohang -offset 4n +.It Em ~/.nib2cibconfig +nib2cib options that apply to all nibs converted under your user account. +.It Em /nib2cib.conf +nib2cib options that apply to all nibs in /Resources. +.It Em /Resources/.conf +nib2cib options that apply to a specific xib or nib. For example, if the xib +is called MainMenu.xib, the stored options file would be MainMenu.conf. +.El +.Pp +Each of these files is read in the order listed above, and if it exists, its options +are merged with the previous file's options. Options in later files (more specific) +override options in earlier files (more generic). After all of the stored options +are merged, the command line options are merged in. Thus command line options always +override stored options. +.Pp +Using stored options is especially useful if your xibs/nibs use custom themes or +frameworks. By using stored options, you can avoid remembering (or forgetting!) to +specify the theme or framework every time you invoke +.Nm . +.Pp +To prevent +.Nm +from reading stored options, and thus only use command line options, use the +.Fl \-no-stored-options +option on the command line. +.\"----------------------------------------------------------------------------------------- .Sh "RETURN VALUES" .\"----------------------------------------------------------------------------------------- .Nm -returns 0 for a successful conversion and >0 if an error occurred. +returns 0 for a successful conversion and >0 if an error occurred. \ No newline at end of file