diff --git a/AppKit/CPCompatibility.j b/AppKit/CPCompatibility.j index d2b31889a..852f68b26 100644 --- a/AppKit/CPCompatibility.j +++ b/AppKit/CPCompatibility.j @@ -26,11 +26,12 @@ // Browser Engines CPUnknownBrowserEngine = 0; -CPGeckoBrowserEngine = 1; -CPInternetExplorerBrowserEngine = 2; -CPKHTMLBrowserEngine = 3; -CPOperaBrowserEngine = 4; -CPWebKitBrowserEngine = 5; +CPGeckoBrowserEngine = 1 << 0; +CPInternetExplorerBrowserEngine = 1 << 1; +CPKHTMLBrowserEngine = 1 << 2; +CPOperaBrowserEngine = 1 << 3; +CPWebKitBrowserEngine = 1 << 4; // Safari + Chrome +CPBlinkBrowserEngine = 1 << 5; // Recent Chrome // Operating Systems CPMacOperatingSystem = 0; @@ -84,14 +85,23 @@ CPAltEnterTextAreaFeature = 32; /* When an absolutely positioned div (CPView) with an absolutely positioned canvas in it (CPView with drawRect:) moves things on top of the canvas (subviews) don't redraw correctly. E.g. if you have a bunch of text fields in a CPBox in a sheet which animates in, some of the text fields might not be visible because the CPBox has a canvas at the bottom and the box moved form offscreen to onscreen. This bug is probably very related: https://bugs.webkit.org/show_bug.cgi?id=67203 -*/ + */ CPCanvasParentDrawErrorsOnMovementBug = 1 << 0; // The paste event is only sent if an input or textarea has focus. -CPJavaScriptPasteRequiresEditableTarget = 1 << 1; +CPJavaScriptPasteRequiresEditableTarget = 1 << 1; // Redirecting the focus of the browser on keydown to an input for Cmd-V or Ctrl-V makes the paste fail. CPJavaScriptPasteCantRefocus = 1 << 2; +/* + Safari calculates incorrect text size unless you set the canvas font even if it is already set + You can see the bug after disabling the workaround and opening any panel while typing. + You can use the font panel in the manual test for CPTextView. + Look out for a displaced cursor, i.e. after typing letters of small width, such as the 'i'. + https://bugs.webkit.org/show_bug.cgi?id=150224 + */ +CPTextSizingAlwaysNeedsSetFontBug = 1 << 3; + var USER_AGENT = "", PLATFORM_ENGINE = CPUnknownBrowserEngine, @@ -110,7 +120,7 @@ if (typeof window !== "undefined" && typeof window.navigator !== "undefined") // Opera if (typeof window !== "undefined" && window.opera) { - PLATFORM_ENGINE = CPOperaBrowserEngine; + PLATFORM_ENGINE |= CPOperaBrowserEngine; PLATFORM_FEATURES[CPJavaScriptCanvasDrawFeature] = YES; } @@ -118,7 +128,7 @@ if (typeof window !== "undefined" && window.opera) // Internet Explorer else if (typeof window !== "undefined" && (window.attachEvent || (!(window.ActiveXObject) && "ActiveXObject" in window))) // Must follow Opera check. { - PLATFORM_ENGINE = CPInternetExplorerBrowserEngine; + PLATFORM_ENGINE |= CPInternetExplorerBrowserEngine; // Features we can only be sure of with IE (no known independent tests) PLATFORM_FEATURES[CPVMLFeature] = YES; @@ -136,10 +146,10 @@ else if (typeof window !== "undefined" && (window.attachEvent || (!(window.Activ PLATFORM_FEATURES[CPJavaScriptClipboardAccessFeature] = YES; } -// WebKit +// Safari + Chrome (WebKit and Blink) else if (USER_AGENT.indexOf("AppleWebKit/") != -1) { - PLATFORM_ENGINE = CPWebKitBrowserEngine; + PLATFORM_ENGINE |= CPWebKitBrowserEngine; // Features we can only be sure of with WebKit (no known independent tests) PLATFORM_FEATURES[CPCSSRGBAFeature] = YES; @@ -179,7 +189,10 @@ else if (USER_AGENT.indexOf("AppleWebKit/") != -1) PLATFORM_BUGS |= CPJavaScriptPasteRequiresEditableTarget; // https://bugs.webkit.org/show_bug.cgi?id=39689 PLATFORM_BUGS |= CPJavaScriptPasteCantRefocus; + PLATFORM_BUGS |= CPTextSizingAlwaysNeedsSetFontBug; } + else if ((window.chrome || (window.Intl && Intl.v8BreakIterator)) && 'CSS' in window) + PLATFORM_ENGINE |= CPBlinkBrowserEngine; // Assume this bug was introduced around Safari 5.1/Chrome 16. This could probably be tighter. if (majorVersion > 533) @@ -189,13 +202,13 @@ else if (USER_AGENT.indexOf("AppleWebKit/") != -1) // KHTML else if (USER_AGENT.indexOf("KHTML") != -1) // Must follow WebKit check. { - PLATFORM_ENGINE = CPKHTMLBrowserEngine; + PLATFORM_ENGINE |= CPKHTMLBrowserEngine; } // Gecko else if (USER_AGENT.indexOf("Gecko") !== -1) // Must follow KHTML check. { - PLATFORM_ENGINE = CPGeckoBrowserEngine; + PLATFORM_ENGINE |= CPGeckoBrowserEngine; PLATFORM_FEATURES[CPJavaScriptCanvasDrawFeature] = YES; @@ -286,7 +299,7 @@ function CPPlatformHasBug(aBug) function CPBrowserIsEngine(anEngine) { - return PLATFORM_ENGINE === anEngine; + return PLATFORM_ENGINE & anEngine; } function CPBrowserIsOperatingSystem(anOperatingSystem) diff --git a/AppKit/CPControl.j b/AppKit/CPControl.j index bdb657ce2..94286202a 100644 --- a/AppKit/CPControl.j +++ b/AppKit/CPControl.j @@ -169,7 +169,7 @@ var CPControlBlackColor = [CPColor blackColor]; } /*! - Reverse set the binding iff the CPContinuouslyUpdatesValueBindingOption is set. + Reverse set the binding if the CPContinuouslyUpdatesValueBindingOption is set. */ - (void)_continuouslyReverseSetBinding { diff --git a/AppKit/CPStringDrawing.j b/AppKit/CPStringDrawing.j index cbffafb85..5aab8aa01 100644 --- a/AppKit/CPStringDrawing.j +++ b/AppKit/CPStringDrawing.j @@ -30,9 +30,7 @@ var CPStringSizeWithFontInWidthCache = [], CPStringSizeWithFontHeightCache = [], - CPStringSizeMeasuringContext, - CPStringSizeIsCanvasSizingInvalid, - CPStringSizeDidTestCanvasSizingValid; + CPStringSizeMeasuringContext; CPStringSizeCachingEnabled = YES; @@ -59,22 +57,14 @@ CPStringSizeCachingEnabled = YES; return [self sizeWithFont:aFont inWidth:NULL]; } -- (void) _initializeStringSizing ++ (void) initialize { + if ([self class] != [CPString class]) + return; + #if PLATFORM(DOM) - CPStringSizeIsCanvasSizingInvalid = YES; - - if (CPFeatureIsCompatible(CPHTMLCanvasFeature)) - { - var aFont = [CPFont systemFontOfSize:12.0]; - - if (!CPStringSizeMeasuringContext) - CPStringSizeMeasuringContext = CGBitmapGraphicsContextCreate(); - - CPStringSizeMeasuringContext.font = [aFont cssString]; - var teststring = "0123456879abcdefghiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ,.-()"; - CPStringSizeIsCanvasSizingInvalid = ABS([CPPlatformString sizeOfString:teststring withFont:aFont forWidth:0].width - CPStringSizeMeasuringContext.measureText(teststring).width) > 2; - } + if (CPFeatureIsCompatible(CPHTMLCanvasFeature) && !CPStringSizeMeasuringContext) + CPStringSizeMeasuringContext = CGBitmapGraphicsContextCreate(); #endif } @@ -99,17 +89,11 @@ CPStringSizeCachingEnabled = YES; if (size !== undefined && sizeCacheForFont.hasOwnProperty(cacheKey)) return CGSizeMakeCopy(size); - if (CPStringSizeDidTestCanvasSizingValid === undefined) - { - [self _initializeStringSizing]; - CPStringSizeDidTestCanvasSizingValid = YES; - } - - if (CPStringSizeIsCanvasSizingInvalid || aWidth > 0) + if (!CPFeatureIsCompatible(CPHTMLCanvasFeature) || aWidth > 0) size = [CPPlatformString sizeOfString:self withFont:aFont forWidth:aWidth]; else { - if (CPStringSizeMeasuringContext.font !== cssString) + if (CPPlatformHasBug(CPTextSizingAlwaysNeedsSetFontBug) || CPStringSizeMeasuringContext.font !== cssString) CPStringSizeMeasuringContext.font = cssString; var fontHeight = CPStringSizeWithFontHeightCache[cssString]; diff --git a/AppKit/CPTabView.j b/AppKit/CPTabView.j index 822619650..ad26ad45f 100644 --- a/AppKit/CPTabView.j +++ b/AppKit/CPTabView.j @@ -136,6 +136,8 @@ var CPTabViewDidSelectTabViewItemSelector = 1 << 1, - (void)_insertTabViewItems:(CPArray)tabViewItems atIndexes:(CPIndexSet)indexes { + var prevItemsCount = [self numberOfTabViewItems]; + [_tabs insertSegments:tabViewItems atIndexes:indexes]; [tabViewItems makeObjectsPerformSelector:@selector(_setTabView:) withObject:self]; @@ -143,6 +145,10 @@ var CPTabViewDidSelectTabViewItemSelector = 1 << 1, [self _reverseSetContent]; [self _sendDelegateTabViewDidChangeNumberOfTabViewItems]; + + // Do not allow empty selection if selection bindings are not enabled. + if (prevItemsCount == 0 && [self numberOfTabViewItems] > 0 && ![self _isSelectionBinded]) + [self _selectTabViewItemAtIndex:0]; } /*! @@ -169,7 +175,7 @@ var CPTabViewDidSelectTabViewItemSelector = 1 << 1, - (void)_didRemoveTabViewItem:(CPTabViewItem)aTabViewItem atIndex:(CPInteger)idx { // If the selection is managed by bindings, let the binder do that. - if ([self binderForBinding:CPSelectionIndexesBinding] || [self binderForBinding:CPSelectedIndexBinding]) + if ([self _isSelectionBinded]) return; if (_selectedTabViewItem == aTabViewItem) @@ -335,13 +341,40 @@ var CPTabViewDidSelectTabViewItemSelector = 1 << 1, [_tabs setSelectedSegment:anIndex]; _selectedTabViewItem = aTabViewItem; - [self _displayItemView:[aTabViewItem view]]; + [self _loadTabViewItem:aTabViewItem]; [self _sendDelegateDidSelectTabViewItem:aTabViewItem]; return YES; } +- (void)_loadTabViewItem:(CPTabViewItem)aTabViewItem +{ + var controller = [aTabViewItem viewController]; + + if (controller !== nil && ![controller isViewLoaded]) + { + [controller loadViewWithCompletionHandler:function(view, error) + { + if (error !== nil) + { + CPLog.warn("Could not load the view for item " + aTabViewItem + ". " + error); + } + else if (view !== nil) + { + [aTabViewItem setView:view]; + + if ([self selectedTabViewItem] == aTabViewItem) + [self _displayItemView:view]; + } + }]; + } + else + { + [self _displayItemView:[aTabViewItem view]]; + } +} + /*! Returns the current item being displayed. @return the tab view item currenly being displayed by the receiver @@ -588,6 +621,11 @@ var CPTabViewDidSelectTabViewItemSelector = 1 << 1, return [cls getBinding:aBinding forObject:self]; } +- (BOOL)_isSelectionBinded +{ + return [self binderForBinding:CPSelectionIndexesBinding] || [self binderForBinding:CPSelectedIndexBinding]; +} + - (void)setItems:(CPArray)tabViewItems { if ([tabViewItems isEqualToArray:[_tabs segments]]) @@ -848,4 +886,4 @@ var CPTabViewItemsKey = "CPTabViewItemsKey", return [super hitTest:aPoint]; } -@end \ No newline at end of file +@end diff --git a/AppKit/CPTabViewItem.j b/AppKit/CPTabViewItem.j index 78795d666..a59526d55 100644 --- a/AppKit/CPTabViewItem.j +++ b/AppKit/CPTabViewItem.j @@ -270,7 +270,7 @@ CPPressedTab = 2; [self setLabel:title]; if ([_tabView selectedTabViewItem] == self) - [_tabView _displayItemView:[_viewController view]]; + [_tabView _loadTabViewItem:self]; } @end diff --git a/AppKit/CPTableView.j b/AppKit/CPTableView.j index 04f298f37..951e8f76c 100644 --- a/AppKit/CPTableView.j +++ b/AppKit/CPTableView.j @@ -203,7 +203,7 @@ CPTableViewFirstColumnOnlyAutoresizingStyle = 5; @ingroup appkit @class CPTableView - CPTableView object displays record-oriented data in a table and + A table view control displays record-oriented data in a table and allows the user to edit values and resize and rearrange columns. A CPTableView requires you to either set a data source which implements @ref numberofrows "numberOfRowsInTableView:" and @ref objectValueForTable "tableView:objectValueForTableColumn:row:", diff --git a/AppKit/CPTextView/CPFontPanel.j b/AppKit/CPTextView/CPFontPanel.j index c4c4a6449..81a2cf93f 100644 --- a/AppKit/CPTextView/CPFontPanel.j +++ b/AppKit/CPTextView/CPFontPanel.j @@ -4,8 +4,7 @@ * * TODOs: * 1. make browser-width for size smaller and fix columns - * 2. sampleview is currently not shown - * 3. add all the missing features from the MacOS X counterpart + * 2. add all the missing features from the MacOS X counterpart (sampleview) * * * Created by Daniel Boehringer on 2/JAN/2014. @@ -68,54 +67,6 @@ var kTypefaceIndex_Normal = 0, var _availableTraits= [@"Normal", @"Italic", @"Bold", @"Bold Italic"], _availableSizes = [@"9", @"10", @"11", @"12", @"13", @"14", @"18", @"24", @"36", @"48", @"72", @"96"]; -@implementation _CPFontPanelSampleView : CPView -{ - CPLayoutManager _layoutManager; - CPTextStorage _textStorage; - CPTextContainer _textContainer; -} - -- (id)initWithFrame:(CGRect)rect -{ - if (self = [super initWithFrame:rect]) - { - _textStorage = [[CPTextStorage alloc] init]; - _layoutManager = [[CPLayoutManager alloc] init]; - - _textContainer = [[CPTextContainer alloc] init]; - [_layoutManager addTextContainer:_textContainer]; - - [_textStorage addLayoutManager:_layoutManager]; - } - - return self; -} - -- (void)setAttributedString:(CPAttributedString)aSting -{ - [_textStorage replaceCharactersInRange:CPMakeRange(0, [_textStorage length]) - withAttributedString:aSting]; - - [self setNeedsDisplay:YES]; -} - -- (void)drawRect:(CGRect)rect -{ - var ctx = [[CPGraphicsContext currentContext] graphicsPort], - glyphRange = [_layoutManager glyphRangeForTextContainer:_textContainer], - usedRect = [_layoutManager usedRectForTextContainer:_textContainer], - bounds = [self bounds], - pos = CGPointMake((bounds.size.width - usedRect.size.width) / 2.0, (bounds.size.height - usedRect.size.height) / 2.0); - - CGContextSaveGState(ctx); - CGContextSetFillColor(ctx, [CPColor whiteColor]); - CGContextFillRect(ctx, bounds); - CGContextRestoreGState(ctx); - - [_layoutManager drawGlyphsForGlyphRange:glyphRange atPoint:pos]; -} - -@end /*! @ingroup appkit @@ -132,8 +83,6 @@ var _availableTraits= [@"Normal", @"Italic", @"Bold", @"Bold Italic"], int _currentColorButtonTag; BOOL _setupDone; int _fontChanges; - - _CPFontPanelSampleView _sampleView; } @@ -187,8 +136,6 @@ var _availableTraits= [@"Normal", @"Italic", @"Bold", @"Bold Italic"], /*! @ignore */ - (void)_setupToolbarView { - var colorPanel = [CPColorPanel sharedColorPanel]; - _toolbarView = [[CPView alloc] initWithFrame:CGRectMake(0, kBorderSpacing, CGRectGetWidth([self frame]), kToolbarHeight)]; [_toolbarView setAutoresizingMask:CPViewWidthSizable]; @@ -196,8 +143,6 @@ var _availableTraits= [@"Normal", @"Italic", @"Bold", @"Bold Italic"], _textColorWell = [[CPColorWell alloc] initWithFrame:CGRectMake(10, 0, 25, 25)]; [_textColorWell setColor:_textColor]; [_toolbarView addSubview:_textColorWell]; - [colorPanel setTarget:self]; - [colorPanel setAction:@selector(changeColor:)]; } - (void)_setupBrowser:(CPBrowser)aBrowser @@ -425,10 +370,6 @@ var _availableTraits= [@"Normal", @"Italic", @"Bold", @"Bold Italic"], if ([self currentTrait] != typefaceIndex) [self setCurrentTrait:typefaceIndex ]; - [_sampleView setAttributedString: [[CPAttributedString alloc] initWithString:[font familyName] - attributes:[CPDictionary dictionaryWithObjects:[font, [CPColor blackColor]] - forKeys:[CPFontAttributeName, CPForegroundColorAttributeName]]]]; - _fontChanges = kNothingChanged; } diff --git a/AppKit/CPTextView/CPLayoutManager.j b/AppKit/CPTextView/CPLayoutManager.j index 99d403be3..54591368e 100644 --- a/AppKit/CPTextView/CPLayoutManager.j +++ b/AppKit/CPTextView/CPLayoutManager.j @@ -164,7 +164,7 @@ _oncontextmenuhandler = function () { return false; }; if (![self numberOfGlyphs]) return CGRectMake(0, 0, 1, 12); // crude hack to give a cursor in an empty doc. - if (CPMaxRange(aRange) >= [self numberOfGlyphs]) + if (CPMaxRange(aRange) > [self numberOfGlyphs]) aRange = CPMakeRange([self numberOfGlyphs] - 1, 1); var fragments = _objectsInRange(_lineFragments, aRange), @@ -1370,4 +1370,4 @@ var _objectsInRange = function(aList, aRange) "\n\t_attributes="+[_attributes description]; } -@end \ No newline at end of file +@end diff --git a/AppKit/CPTextView/CPTextView.j b/AppKit/CPTextView/CPTextView.j index 7080aa297..141bffa0b 100644 --- a/AppKit/CPTextView/CPTextView.j +++ b/AppKit/CPTextView/CPTextView.j @@ -122,7 +122,7 @@ var kDelegateRespondsTo_textShouldBeginEditing @implementation CPTextView : CPText { BOOL _allowsUndo @accessors(property=allowsUndo); - BOOL _isHorizontallyResizable @accessors(getter=isHorizontallyResizable, setter=setHorinzontallyResizable:); + BOOL _isHorizontallyResizable @accessors(getter=isHorizontallyResizable, setter=setHorizontallyResizable:); BOOL _isVerticallyResizable @accessors(getter=isVerticallyResizable, setter=setVerticallyResizable:); BOOL _usesFontPanel @accessors(property=usesFontPanel); CGPoint _textContainerOrigin @accessors(getter=textContainerOrigin); @@ -133,7 +133,7 @@ var kDelegateRespondsTo_textShouldBeginEditing CPColor _textColor @accessors(property=textColor); CPDictionary _selectedTextAttributes @accessors(property=selectedTextAttributes); CPDictionary _typingAttributes @accessors(property=typingAttributes); - CPFont _font @accessors(property=font); + CPFont _font; CPLayoutManager _layoutManager @accessors(getter=layoutManager); CPRange _selectionRange @accessors(getter=selectedRange); CPSelectionGranularity _selectionGranularity @accessors(property=selectionGranularity); @@ -153,6 +153,7 @@ var kDelegateRespondsTo_textShouldBeginEditing CPTimer _scrollingTimer; BOOL _scrollingDownward; + CPRange _movingSelection; int _stickyXLocation; @@ -203,7 +204,7 @@ var kDelegateRespondsTo_textShouldBeginEditing _typingAttributes = [[CPDictionary alloc] initWithObjects:[_font, _textColor] forKeys:[CPFontAttributeName, CPForegroundColorAttributeName]]; } - [self registerForDraggedTypes:[CPColorDragType]]; + [self registerForDraggedTypes:[CPColorDragType, CPRTFPboardType]]; return self; } @@ -606,7 +607,7 @@ var kDelegateRespondsTo_textShouldBeginEditing _textContainer = aContainer; _layoutManager = [_textContainer layoutManager]; _textStorage = [_layoutManager textStorage]; - [_textStorage setFont:_font]; + [_textStorage setFont:[self font]]; [_textStorage setForegroundColor:_textColor]; [self invalidateTextContainerOrigin]; @@ -899,6 +900,28 @@ var kDelegateRespondsTo_textShouldBeginEditing }, 500); } +- (CGPoint)_characterIndexFromRawPoint:(CGPoint)point +{ + var fraction = [], + point = [self convertPoint:point fromView:nil]; + + // convert to container coordinate + point.x -= _textContainerOrigin.x; + point.y -= _textContainerOrigin.y; + + var index = [_layoutManager glyphIndexForPoint:point inTextContainer:_textContainer fractionOfDistanceThroughGlyph:fraction]; + + if (index === CPNotFound) + index = [_layoutManager numberOfCharacters]; + else if (fraction[0] > 0.5) + index++; + + return index; +} +- (CGPoint)_characterIndexFromEvent:(CPEvent)event +{ + return [self _characterIndexFromRawPoint:[event locationInWindow]]; +} #pragma mark - #pragma mark Mouse Events @@ -906,28 +929,53 @@ var kDelegateRespondsTo_textShouldBeginEditing - (void)mouseDown:(CPEvent)event { [_CPNativeInputManager cancelCurrentInputSessionIfNeeded]; - - var fraction = [], - point = [self convertPoint:[event locationInWindow] fromView:nil], - granularities = [CPNotFound, CPSelectByCharacter, CPSelectByWord, CPSelectByParagraph]; - [_caret setVisibility:NO]; - - // convert to container coordinate - point.x -= _textContainerOrigin.x; - point.y -= _textContainerOrigin.y; - - _startTrackingLocation = [_layoutManager glyphIndexForPoint:point inTextContainer:_textContainer fractionOfDistanceThroughGlyph:fraction]; - - if (_startTrackingLocation === CPNotFound) - _startTrackingLocation = [_layoutManager numberOfCharacters]; - else if (fraction[0] > 0.5) - _startTrackingLocation++; - + + _startTrackingLocation = [self _characterIndexFromEvent:event]; + + var granularities = [CPNotFound, CPSelectByCharacter, CPSelectByWord, CPSelectByParagraph]; [self setSelectionGranularity:granularities[[event clickCount]]]; - + + if ([self selectionGranularity] == CPSelectByCharacter && CPLocationInRange(_startTrackingLocation, _selectionRange)) + { + var lineBeginningIndex = [_layoutManager _firstLineFragmentForLineFromLocation:_selectionRange.location]._range.location, + placeholderRange = _MakeRangeFromAbs(lineBeginningIndex, CPMaxRange(_selectionRange)), + placeholderString = [_textStorage attributedSubstringFromRange:placeholderRange], + placeholderFrame = CGRectIntersection([_layoutManager boundingRectForGlyphRange:placeholderRange inTextContainer:_textContainer], _frame), + rangeToHide = CPMakeRange(0, _selectionRange.location - lineBeginningIndex), + dragPlaceholder; + + // hide the left part of the first line of the selection that is not included + [placeholderString addAttribute:CPForegroundColorAttributeName + value:[CPColor colorWithRed:1 green:1 blue:1 alpha:0] + range:rangeToHide]; + + _movingSelection = CPMakeRange(_startTrackingLocation, 0); + + dragPlaceholder = [[CPTextView alloc] initWithFrame:placeholderFrame]; + [dragPlaceholder insertText:placeholderString]; + [dragPlaceholder setBackgroundColor:[CPColor colorWithRed:1 green:1 blue:1 alpha:0]]; + [dragPlaceholder setAlphaValue:0.5]; + + var stringForPasting = [_textStorage attributedSubstringFromRange:CPMakeRangeCopy(_selectionRange)], + richData = [_CPRTFProducer produceRTF:stringForPasting documentAttributes:@{}], + draggingPasteboard = [CPPasteboard pasteboardWithName:CPDragPboard]; + [draggingPasteboard declareTypes:[CPRTFPboardType] owner:nil]; + [draggingPasteboard setString:richData forType:CPRTFPboardType]; + + [self dragView:dragPlaceholder + at:placeholderFrame.origin + offset:nil + event:event + pasteboard:draggingPasteboard + source:self + slideBack:YES]; + + return; + } + var setRange = CPMakeRange(_startTrackingLocation, 0); - + if ([event modifierFlags] & CPShiftKeyMask) setRange = _MakeRangeFromAbs(_startTrackingLocation < _MidRange(_selectionRange) ? CPMaxRange(_selectionRange) : _selectionRange.location, _startTrackingLocation); else @@ -943,22 +991,11 @@ var kDelegateRespondsTo_textShouldBeginEditing - (void)mouseDragged:(CPEvent)event { - var fraction = [], - point = [self convertPoint:[event locationInWindow] fromView:nil]; - - // convert to container coordinate - point.x -= _textContainerOrigin.x; - point.y -= _textContainerOrigin.y; - + if (_movingSelection) + return; + var oldRange = [self selectedRange], - index = [_layoutManager glyphIndexForPoint:point - inTextContainer:_textContainer - fractionOfDistanceThroughGlyph:fraction]; - - if (index === CPNotFound) - index = _scrollingDownward ? CPMaxRange(oldRange) : oldRange.location; - else if (fraction[0] > 0.5) - index++; + index = [self _characterIndexFromEvent:event]; if (index > oldRange.location) _scrollingDownward = YES; @@ -977,7 +1014,9 @@ var kDelegateRespondsTo_textShouldBeginEditing - (void)mouseUp:(CPEvent)event { - /* will post CPTextViewDidChangeSelectionNotification */ + _movingSelection = nil; + + // will post CPTextViewDidChangeSelectionNotification _previousSelectionGranularity = [self selectionGranularity]; [self setSelectionGranularity:CPSelectByCharacter]; [self setSelectedRange:[self selectedRange] affinity:0 stillSelecting:NO]; @@ -1547,6 +1586,11 @@ var kDelegateRespondsTo_textShouldBeginEditing #pragma mark - #pragma mark Font methods +- (CPFont)font +{ + return _font || [CPFont systemFontOfSize:12.0]; +} + - (void)setFont:(CPFont)font { _font = font; @@ -1572,7 +1616,7 @@ var kDelegateRespondsTo_textShouldBeginEditing var currentAttributes = [_textStorage attributesAtIndex:range.location effectiveRange:nil] || _typingAttributes; [[[[self window] undoManager] prepareWithInvocationTarget:self] - setFont:[currentAttributes objectForKey:CPFontAttributeName] || _font + setFont:[currentAttributes objectForKey:CPFontAttributeName] || [self font] range:CPMakeRangeCopy(range)]; [_textStorage addAttribute:CPFontAttributeName value:font range:CPMakeRangeCopy(range)]; @@ -1965,6 +2009,15 @@ var kDelegateRespondsTo_textShouldBeginEditing [_caret startBlinking]; } +- (void)draggingUpdated:(CPDraggingInfo)info +{ + var point = [info draggingLocation], + location = [self _characterIndexFromRawPoint:point]; + + _movingSelection = CPMakeRange(location, 0); + [_caret _drawCaretAtLocation:_movingSelection.location]; + [_caret setVisibility:YES]; +} #pragma mark - #pragma mark Dragging operation @@ -1973,11 +2026,33 @@ var kDelegateRespondsTo_textShouldBeginEditing { var location = [self convertPoint:[aSender draggingLocation] fromView:nil], pasteboard = [aSender draggingPasteboard]; + + if ([pasteboard availableTypeFromArray:[CPRTFPboardType]]) + { + [_caret setVisibility:NO]; + + if (CPLocationInRange(_movingSelection.location, _selectionRange)) + { + [self setSelectedRange:_movingSelection]; + _movingSelection = nil; + return; + } - if (![pasteboard availableTypeFromArray:[CPColorDragType]]) - return NO; + if (_movingSelection.location > CPMaxRange(_selectionRange)) + _movingSelection.location -= _selectionRange.length; - [self setTextColor:[CPKeyedUnarchiver unarchiveObjectWithData:[pasteboard dataForType:CPColorDragType]] range:_selectionRange]; + [self _deleteForRange:_selectionRange]; + [self setSelectedRange:_movingSelection]; + + var dataForPasting = [pasteboard stringForType:CPRTFPboardType]; + // setTimeout is to a work around a transaction issue with the undomanager + setTimeout(function(){ + [self insertText:[[_CPRTFParser new] parseRTF:dataForPasting]]; + }, 0); + } + + if ([pasteboard availableTypeFromArray:[CPColorDragType]]) + [self setTextColor:[CPKeyedUnarchiver unarchiveObjectWithData:[pasteboard dataForType:CPColorDragType]] range:_selectionRange]; } @end @@ -2254,6 +2329,12 @@ var CPTextViewAllowsUndoKey = @"CPTextViewAllowsUndoKey", _caretTimer = nil; } } + +- (void)_drawCaretAtLocation:(int)aLoc +{ + var rect = [_textView._layoutManager boundingRectForGlyphRange:CPMakeRange(aLoc, 1) inTextContainer:_textView._textContainer]; + [self setRect:rect]; +} @end @@ -2639,6 +2720,7 @@ var _CPCopyPlaceholder = '-'; -(void) _setRegularExpression:(JSObject)re toFontTrait:(CPFontTrait)aTrait { + var match; while (match = re.exec(_string)) { var attribs = [[self attributesAtIndex:match.index effectiveRange:nil] copy], @@ -2650,6 +2732,7 @@ var _CPCopyPlaceholder = '-'; -(void) _replaceEveryOccurenceOfRegularExpression:(JSObject)re withString:(CPString)aString { + var match; while (match = re.exec(_string)) [self replaceCharactersInRange:CPMakeRange(match.index, match[0].length) withString:aString]; } @@ -2663,6 +2746,7 @@ var _CPCopyPlaceholder = '-'; [self _replaceEveryOccurenceOfRegularExpression:/</i withString:'<']; [self _replaceEveryOccurenceOfRegularExpression:/>/i withString:'>']; [self _replaceEveryOccurenceOfRegularExpression:/&/i withString:'&']; + [self _replaceEveryOccurenceOfRegularExpression:/ /i withString:' ']; return self; } diff --git a/AppKit/CPTextView/_CPRTFParser.j b/AppKit/CPTextView/_CPRTFParser.j index a94081c8d..f1f94db99 100644 --- a/AppKit/CPTextView/_CPRTFParser.j +++ b/AppKit/CPTextView/_CPRTFParser.j @@ -514,6 +514,9 @@ var kRgsymRtf = { return [self _applyPropChange:sym parameter:param]; case kRTFParserType_char: + if((param + '') !== 'NaN' && (param + '').length) + _currentParseIndex -= (param + '').length; + return [self _checkChar:sym parameter:param]; case kRTFParserType_dest: @@ -785,4 +788,4 @@ var kRgsymRtf = { return _result; } -@end \ No newline at end of file +@end diff --git a/AppKit/CPView.j b/AppKit/CPView.j index cadcdf356..33d1bac60 100644 --- a/AppKit/CPView.j +++ b/AppKit/CPView.j @@ -416,7 +416,7 @@ var CPViewHighDPIDrawingEnabled = YES; */ - (void)setToolTip:(CPString)aToolTip { - if (_toolTip == aToolTip) + if (_toolTip === aToolTip) return; if (aToolTip && ![aToolTip isKindOfClass:CPString]) @@ -574,7 +574,7 @@ var CPViewHighDPIDrawingEnabled = YES; [[self window] _dirtyKeyViewLoop]; // If this is already one of our subviews, remove it. - if (aSubview._superview == self) + if (aSubview._superview === self) { var index = [_subviews indexOfObjectIdenticalTo:aSubview]; @@ -863,7 +863,7 @@ var CPViewHighDPIDrawingEnabled = YES; do { - if (view == aView) + if (view === aView) return YES; } while(view = [view superview]) @@ -978,7 +978,7 @@ var CPViewHighDPIDrawingEnabled = YES; - (CPView)viewWithTag:(CPInteger)aTag { - if ([self tag] == aTag) + if ([self tag] === aTag) return self; var index = 0, @@ -1030,7 +1030,7 @@ var CPViewHighDPIDrawingEnabled = YES; [[self superview] viewFrameChanged:[[CPNotification alloc] initWithName:CPViewFrameDidChangeNotification object:self userInfo:nil]]; if (!_inhibitUpdateTrackingAreas) - [self _updateTrackingAreas]; + [self _updateTrackingAreasWithRecursion:YES]; } /*! @@ -1103,7 +1103,7 @@ var CPViewHighDPIDrawingEnabled = YES; #endif if (!_inhibitUpdateTrackingAreas && !_inhibitFrameAndBoundsChangedNotifications) - [self _updateTrackingAreas]; + [self _updateTrackingAreasWithRecursion:YES]; } /*! @@ -1257,7 +1257,7 @@ var CPViewHighDPIDrawingEnabled = YES; [[self superview] viewFrameChanged:[[CPNotification alloc] initWithName:CPViewFrameDidChangeNotification object:self userInfo:nil]]; if (!_inhibitUpdateTrackingAreas && !_inhibitFrameAndBoundsChangedNotifications) - [self _updateTrackingAreas]; + [self _updateTrackingAreasWithRecursion:!_autoresizesSubviews]; } /*! @@ -1306,7 +1306,7 @@ var CPViewHighDPIDrawingEnabled = YES; [[self superview] viewBoundsChanged:[[CPNotification alloc] initWithName:CPViewBoundsDidChangeNotification object:self userInfo:nil]]; if (!_inhibitUpdateTrackingAreas) - [self _updateTrackingAreas]; + [self _updateTrackingAreasWithRecursion:YES]; } /*! @@ -1374,7 +1374,7 @@ var CPViewHighDPIDrawingEnabled = YES; [[self superview] viewBoundsChanged:[[CPNotification alloc] initWithName:CPViewBoundsDidChangeNotification object:self userInfo:nil]]; if (!_inhibitUpdateTrackingAreas && !_inhibitFrameAndBoundsChangedNotifications) - [self _updateTrackingAreas]; + [self _updateTrackingAreasWithRecursion:YES]; } /*! @@ -1418,7 +1418,7 @@ var CPViewHighDPIDrawingEnabled = YES; [[self superview] viewBoundsChanged:[[CPNotification alloc] initWithName:CPViewBoundsDidChangeNotification object:self userInfo:nil]]; if (!_inhibitUpdateTrackingAreas && !_inhibitFrameAndBoundsChangedNotifications) - [self _updateTrackingAreas]; + [self _updateTrackingAreasWithRecursion:YES]; } @@ -1430,7 +1430,7 @@ var CPViewHighDPIDrawingEnabled = YES; { var mask = [self autoresizingMask]; - if (mask == CPViewNotSizable) + if (mask === CPViewNotSizable) return; var frame = _superview._frame, @@ -1611,7 +1611,7 @@ var CPViewHighDPIDrawingEnabled = YES; { do { - if (self == view) + if (self === view) { [_window makeFirstResponder:[self nextValidKeyView]]; break; @@ -1737,7 +1737,7 @@ var CPViewHighDPIDrawingEnabled = YES; */ - (void)setAlphaValue:(float)anAlphaValue { - if (_opacity == anAlphaValue) + if (_opacity === anAlphaValue) return; _opacity = anAlphaValue; @@ -1936,10 +1936,10 @@ var CPViewHighDPIDrawingEnabled = YES; */ - (void)setBackgroundColor:(CPColor)aColor { - if (_backgroundColor == aColor) + if (_backgroundColor === aColor) return; - if (aColor == [CPNull null]) + if (aColor === [CPNull null]) aColor = nil; _backgroundColor = aColor; @@ -1982,7 +1982,7 @@ var CPViewHighDPIDrawingEnabled = YES; var image = slices[i], size = [image size]; - if (!size || (size.width == 0 && size.height == 0)) + if (!size || (size.width === 0 && size.height === 0)) size = nil; _DOMImageSizes[i] = size; @@ -2037,10 +2037,12 @@ var CPViewHighDPIDrawingEnabled = YES; CPDOMDisplayServerSetStyleSize(_DOMImageParts[0], size.width, size.height); } else + { _DOMElement.style.background = colorCSS; if (patternImage) CPDOMDisplayServerSetStyleBackgroundSize(_DOMElement, [patternImage size].width + "px", [patternImage size].height + "px"); + } } else { @@ -2074,7 +2076,7 @@ var CPViewHighDPIDrawingEnabled = YES; partIndex++; } - if (_backgroundType == BackgroundNinePartImage) + if (_backgroundType === BackgroundNinePartImage) { var left = _DOMImageSizes[0] ? _DOMImageSizes[0].width : 0, right = _DOMImageSizes[2] ? _DOMImageSizes[2].width : 0, @@ -2135,7 +2137,7 @@ var CPViewHighDPIDrawingEnabled = YES; CPDOMDisplayServerSetStyleRightBottom(_DOMImageParts[partIndex], NULL, 0.0, 0.0); } } - else if (_backgroundType == BackgroundVerticalThreePartImage) + else if (_backgroundType === BackgroundVerticalThreePartImage) { var top = _DOMImageSizes[0] ? _DOMImageSizes[0].height : 0, bottom = _DOMImageSizes[2] ? _DOMImageSizes[2].height : 0; @@ -2167,7 +2169,7 @@ var CPViewHighDPIDrawingEnabled = YES; CPDOMDisplayServerSetStyleSize(_DOMImageParts[partIndex], frameSize.width, bottom); } } - else if (_backgroundType == BackgroundHorizontalThreePartImage) + else if (_backgroundType === BackgroundHorizontalThreePartImage) { var left = _DOMImageSizes[0] ? _DOMImageSizes[0].width : 0, right = _DOMImageSizes[2] ? _DOMImageSizes[2].width : 0; @@ -3129,7 +3131,7 @@ setBoundsOrigin: */ - (void)setLayer:(CALayer)aLayer { - if (_layer == aLayer) + if (_layer === aLayer) return; if (_layer) @@ -3590,21 +3592,21 @@ setBoundsOrigin: [_trackingAreas removeObjectIdenticalTo:trackingArea]; } -- (void)_updateTrackingAreas +- (void)_updateTrackingAreasWithRecursion:(BOOL)shouldCallRecursively { _inhibitUpdateTrackingAreas = YES; - [self _recursivelyUpdateTrackingAreas]; - - _inhibitUpdateTrackingAreas = NO; -} - -- (void)_recursivelyUpdateTrackingAreas -{ [self _updateTrackingAreasForOwners:[self _calcTrackingAreaOwners]]; - for (var i = 0; i < _subviews.length; i++) - [_subviews[i] _recursivelyUpdateTrackingAreas]; + if (shouldCallRecursively) + { + // Now, call _updateTrackingAreasWithRecursion on subviews + + for (var i = 0; i < _subviews.length; i++) + [_subviews[i] _updateTrackingAreasWithRecursion:YES]; + } + + _inhibitUpdateTrackingAreas = NO; } - (CPArray)_calcTrackingAreaOwners diff --git a/AppKit/CPWindow/CPWindow.j b/AppKit/CPWindow/CPWindow.j index 380b2b149..fd1a0b469 100644 --- a/AppKit/CPWindow/CPWindow.j +++ b/AppKit/CPWindow/CPWindow.j @@ -4098,6 +4098,9 @@ var interpolate = function(fromValue, toValue, progress) [overlappingTrackingAreas addObject:aTrackingArea]; } + if (overlappingTrackingAreas.length === 0) + return; + var frontmostTrackingArea = overlappingTrackingAreas[0], frontmostView = [frontmostTrackingArea view]; diff --git a/AppKit/CoreAnimation/CPAnimationContext.j b/AppKit/CoreAnimation/CPAnimationContext.j index df87259e6..e62b3002d 100644 --- a/AppKit/CoreAnimation/CPAnimationContext.j +++ b/AppKit/CoreAnimation/CPAnimationContext.j @@ -163,9 +163,13 @@ CPLog.debug(_cmd + "context stack =" + _CPAnimationContextStack); { if (needsFrameTimer) [self stopFrameUpdaterWithIdentifier:objectId]; - else if (animationCompletion) + + if (animationCompletion) animationCompletion(); + if (needsFrameTimer || animationCompletion) + [[CPRunLoop currentRunLoop] performSelectors]; + if (_completionHandlerAgent) _completionHandlerAgent.decrement(); }; @@ -289,7 +293,7 @@ CPLog.debug(_cmd + "context stack =" + _CPAnimationContextStack); cssAnimations.push(cssAnimation); } - var css_mapping = [[aTargetView class] cssPropertiesForKeyPath:keyPath]; + var css_mapping = [[aTargetView class] _cssPropertiesForKeyPath:keyPath]; [css_mapping enumerateObjectsUsingBlock:function(aDict, anIndex, stop) { @@ -299,9 +303,6 @@ CPLog.debug(_cmd + "context stack =" + _CPAnimationContextStack); cssAnimation.addPropertyAnimation(property, getter, duration, anAction.keytimes, anAction.values, timingFunctions, completionFunction); }]; - - if (needsFrameTimer) - cssAnimation.setRemoveAnimationPropertyOnCompletion(false); } if (needsFrameTimer) @@ -611,46 +612,42 @@ CFRunLoopRemoveObserver = function(runloop, observer, mode) var FrameUpdater = function(anIdentifier) { this._identifier = anIdentifier; + this._requestId = null; this._duration = 0; this._stop = false; this._targets = []; this._callbacks = []; + var frameUpdater = this; this._updateFunction = function(timestamp) { + if (frameUpdater._startDate == null) + frameUpdater._startDate = timestamp; + if (frameUpdater._stop) return; - if (this._startDate == null) - this._startDate = timestamp; - for (var i = 0; i < frameUpdater._callbacks.length; i++) frameUpdater._callbacks[i](); - if (timestamp - this._startDate < frameUpdater._duration * 1000) + if (timestamp - frameUpdater._startDate < frameUpdater._duration * 1000) window.requestAnimationFrame(frameUpdater._updateFunction); }; }; FrameUpdater.prototype.start = function() { - window.requestAnimationFrame(this._updateFunction); + this._requestId = window.requestAnimationFrame(this._updateFunction); }; FrameUpdater.prototype.stop = function() { -CPLog.debug("stop FrameUpdater with id " + this.identifier()); + // window.cancelAnimationFrame support is Chrome 24, Firefox 23, IE 10, Opera 15, Safari 6.1 + if (window.cancelAnimationFrame) + window.cancelAnimationFrame(this._requestId); this._stop = true; - - var targets = this._targets; - - for (var i = 0; i < targets.length; i++) - { - CPLog.debug(targets[i] + " Remove animation-name property"); - targets[i]._DOMElement.style.removeProperty(CPBrowserCSSProperty("animation-name")); - } }; FrameUpdater.prototype.updateFunction = function() diff --git a/AppKit/CoreAnimation/CPViewAnimator.j b/AppKit/CoreAnimation/CPViewAnimator.j index b2e811e3b..61fd20b71 100644 --- a/AppKit/CoreAnimation/CPViewAnimator.j +++ b/AppKit/CoreAnimation/CPViewAnimator.j @@ -6,35 +6,6 @@ { } -- (void)viewWillMoveToSuperview:(CPView)aSuperview -{ - var orderInAnim = [self animationForKey:@"CPAnimationTriggerOrderIn"]; - - if (orderInAnim && [orderInAnim isKindOfClass:[CAPropertyAnimation class]]) - { - [_target setValue:[orderInAnim fromValue] forKeyPath:[orderInAnim keyPath]]; - } - - [_target viewWillMoveToSuperview:aSuperview]; -} - -- (void)viewDidMoveToSuperview -{ - var orderInAnim = [self animationForKey:@"CPAnimationTriggerOrderIn"]; - - if (orderInAnim && [orderInAnim isKindOfClass:[CAPropertyAnimation class]]) - { - [self _setTargetValue:YES withKeyPath:@"CPAnimationTriggerOrderIn" fallback:nil completion:function() - { - [_target setValue:[orderInAnim toValue] forKeyPath:[orderInAnim keyPath]]; - }]; - } - else - { - [_target viewDidMoveToSuperview]; - } -} - - (void)removeFromSuperview { [self _setTargetValue:nil withKeyPath:@"CPAnimationTriggerOrderOut" setter:_cmd]; @@ -139,7 +110,7 @@ var DEFAULT_CSS_PROPERTIES = nil; @implementation CPView (CPAnimatablePropertyContainer) -+ (CPDictionary)defaultCSSProperties ++ (CPDictionary)_defaultCSSProperties { if (DEFAULT_CSS_PROPERTIES == nil) { @@ -160,9 +131,9 @@ var DEFAULT_CSS_PROPERTIES = nil; return DEFAULT_CSS_PROPERTIES; } -+ (CPArray)cssPropertiesForKeyPath:(CPString)aKeyPath ++ (CPArray)_cssPropertiesForKeyPath:(CPString)aKeyPath { - return [[self defaultCSSProperties] objectForKey:aKeyPath]; + return [[self _defaultCSSProperties] objectForKey:aKeyPath]; } + (Class)animatorClass @@ -190,7 +161,14 @@ var DEFAULT_CSS_PROPERTIES = nil; + (CAAnimation)defaultAnimationForKey:(CPString)aKey { - if ([self cssPropertiesForKeyPath:aKey] !== nil) + // TODO: remove when supported. + if (aKey == @"CPAnimationTriggerOrderIn") + { + CPLog.warn("CPView animated key path CPAnimationTriggerOrderIn is not supported yet."); + return nil; + } + + if ([self _cssPropertiesForKeyPath:aKey] !== nil) return [CAAnimation animation]; return nil; @@ -219,4 +197,4 @@ var DEFAULT_CSS_PROPERTIES = nil; _animationsDictionary = [animationsDict copy]; } -@end \ No newline at end of file +@end diff --git a/AppKit/CoreAnimation/CSSAnimation.j b/AppKit/CoreAnimation/CSSAnimation.j index 31d0c8f7f..4350901a0 100644 --- a/AppKit/CoreAnimation/CSSAnimation.j +++ b/AppKit/CoreAnimation/CSSAnimation.j @@ -51,7 +51,6 @@ CSSAnimation = function(aTarget/*DOM Element*/, anIdentifier) this.animationsdurations = []; this.islive = false; this.didBuildDOMElements = false; - this.removeAnimationPropertyOnCompletion = true; animation = this; CURRENT_ANIMATIONS[anIdentifier] = animation; @@ -177,21 +176,21 @@ CSSAnimation.prototype.endEventListener = function() if (idx !== -1) inFlightAnimationsNames.splice(idx, 1); - if (inFlightAnimationsNames.length == 0) + if (inFlightAnimationsNames.length > 0) + return; + + for (var i = 0; i < animationsNames.length; i++) { - for (var i = 0; i < animationsNames.length; i++) - { - var completion = animation.completionFunctionForAnimationName(animationsNames[i]); - if (completion) - completion(); - } + var completion = animation.completionFunctionForAnimationName(animationsNames[i]); + if (completion) + completion(); + } - var eventTarget = event.target, - style = eventTarget.style; - - if (animation.removeAnimationPropertyOnCompletion) - style.removeProperty(ANIMATION_NAME_PROPERTY); + var eventTarget = event.target, + style = eventTarget.style; + try { + style.removeProperty(ANIMATION_NAME_PROPERTY); style.removeProperty(ANIMATION_DURATION_PROPERTY); style.removeProperty(ANIMATION_FILL_MODE_PROPERTY); style.removeProperty("-webkit-backface-visibility"); @@ -204,6 +203,8 @@ CSSAnimation.prototype.endEventListener = function() eventTarget.removeEventListener(ANIMATION_END_EVENT_NAME, AnimationEndListener); animation.listener = null; delete (CURRENT_ANIMATIONS[animation.identifier]); + } catch (err) { + CPLog.warn("CSSAnimation.j - " + err); } }; @@ -260,11 +261,6 @@ CSSAnimation.prototype.buildDOMElements = function() this.didBuildDOMElements = true; } -CSSAnimation.prototype.setRemoveAnimationPropertyOnCompletion = function(flag) -{ - this.removeAnimationPropertyOnCompletion = flag; -} - CSSAnimation.prototype.start = function() { if (this.propertyanimations.length == 0 || this.islive) diff --git a/Foundation/CPCache.j b/Foundation/CPCache.j index 217758a6b..9292094a3 100644 --- a/Foundation/CPCache.j +++ b/Foundation/CPCache.j @@ -64,7 +64,7 @@ var CPCacheDelegate_cache_willEvictObject_ = 1 << 1; { CPDictionary _items; int _currentPosition; - BOOL _totalCostCache; + int _totalCostCache; unsigned _implementedDelegateMethods; CPString _name @accessors(property=name); @@ -374,4 +374,4 @@ var CPCacheDelegate_cache_willEvictObject_ = 1 << 1; return cacheItem; } -@end \ No newline at end of file +@end diff --git a/Tests/AppKit/CPTabViewTest.j b/Tests/AppKit/CPTabViewTest.j index a8e13ff71..fe149ab60 100644 --- a/Tests/AppKit/CPTabViewTest.j +++ b/Tests/AppKit/CPTabViewTest.j @@ -138,4 +138,16 @@ [self assert:[_tabView selectedTabViewItem] equals:_tabItem2]; } +- (void)testTabViewItemSelectionNotEmpty +{ + // after insertion from empty and no explicit selection. + [self assert:[_tabView numberOfTabViewItems] equals:2]; + [self assert:[_tabView selectedTabViewItem] equals:_tabItem1]; + + // Removes selected Item. + [_tabView removeTabViewItem:_tabItem1]; + [self assert:[_tabView numberOfTabViewItems] equals:1]; + [self assert:[_tabView selectedTabViewItem] equals:_tabItem2]; +} + @end diff --git a/Tests/CucumberTests/CPAnimationContextTest/AppController.j b/Tests/CucumberTests/CPAnimationContextTest/AppController.j new file mode 100644 index 000000000..99fb0c244 --- /dev/null +++ b/Tests/CucumberTests/CPAnimationContextTest/AppController.j @@ -0,0 +1,228 @@ +/* + * AppController.j + * AdvancedHelloWorld + * + * Created by You on December 8, 2011. + * Copyright 2011, Your Company All rights reserved. + */ +/* + This Cucapp tests the following: + • CPAnimationContext -setCompletionHandler: is called and the end value is correct when the frame of a view is animated. + Tested for a vanilla view (no drawing, no layout), a view with custom drawing, with custom layout, with both. + • CPAnimationContext CPView special keyPaths CPAnimationTriggerOrderIn and CPAnimationTriggerOrderOut. + Checks that adding or removing the animator to/from the superview does not throw an error and the superview final value is correct. +*/ + +@import + +@import "CPResponder+Cucapp.j" + +@class ColorView + +var ANIMATION_DURATION = 0.9; + +@implementation AppController : CPObject +{ + /* this "outlet" is connected automatically by the Cib */ + CPWindow theWindow; + + /* We create the outlets of the textfields here */ + @outlet DrawView drawView; + @outlet CustomLayoutView layoutView; + @outlet CustomLayoutDrawView layoutDrawView; + + CPInteger testNumber; + CPString passed; +} + +- (void)awakeFromCib +{ + [theWindow setFullPlatformWindow:YES]; + [layoutView setNeedsLayout]; + [layoutDrawView setNeedsLayout]; + testNumber = 0; + passed = ""; +} + +- (void)testDidPass +{ + passed = "true"; + testNumber++; +} + +- (IBAction)test:(id)sender +{ + passed = "false"; + [self performSelector:CPSelectorFromString("test" + testNumber)]; +} + +- (void)test0 +{ + vanillaView = [[ColorView alloc] initWithFrame:CGRectMake(30,30,148,115)]; + [vanillaView setBackgroundColor:[vanillaView color]]; + + var fadeOut = [CABasicAnimation animationWithKeyPath:@"alphaValue"]; + [fadeOut setFromValue:1]; + [fadeOut setToValue:0]; + [fadeOut setDuration:ANIMATION_DURATION]; + + [vanillaView setAnimations:@{@"CPAnimationTriggerOrderOut":fadeOut}]; + + var ctx = [CPAnimationContext currentContext]; + [ctx setCompletionHandler:function() + { + if ([vanillaView superview] == [theWindow contentView] && [vanillaView alphaValue] == 1) + [self testDidPass]; + }]; + + [[theWindow contentView] addSubview:vanillaView]; +} + +- (void)test1 +{ + [self move:vanillaView]; +} + +- (void)test2 +{ + [self move:drawView]; +} + +- (void)test3 +{ + [self move:layoutView]; +} + +- (void)test4 +{ + [self move:layoutDrawView]; +} + +- (void)test5 +{ + var ctx = [CPAnimationContext currentContext]; + [ctx setCompletionHandler:function() + { + if ([vanillaView superview] == nil && [vanillaView alphaValue] == 1) + [self testDidPass]; + }]; + + [[vanillaView animator] removeFromSuperview]; +} + +- (void)move:(CPView)view +{ + var destinationRect = CGRectMake(200 *testNumber,200,200,200); + var ctx = [CPAnimationContext currentContext]; + [ctx setDuration:ANIMATION_DURATION]; + [ctx setCompletionHandler:function() + { + if (CGRectEqualToRect([view frame], destinationRect)) + [self testDidPass]; + }]; + + [[view animator] setFrame:destinationRect]; +} + +@end + + +@implementation ColorView : CPView +{ + CPColor color @accessors; +} + +- (id)initWithFrame:(CGRect)aFrame +{ + self = [super initWithFrame:aFrame]; + + color = [CPColor randomColor]; + + return self; +} + +- (void)viewDidMoveToSuperview +{ + [self setBackgroundColor:color]; +} + +@end + +@implementation DrawView : CPView +{ + CPColor color; +} + +- (id)initWithFrame:(CGRect)aFrame +{ + self = [super initWithFrame:aFrame]; + + color = [CPColor randomColor]; + + return self; +} + +- (void)drawRect:(CGRect)aRect +{ + var context = [[CPGraphicsContext currentContext] graphicsPort], + bounds = [self bounds]; + + CGContextSetLineWidth(context, 2); + CGContextSetStrokeColor(context, [CPColor blackColor]); + CGContextSetFillColor(context, color); + + CGContextBeginPath(context); + CGContextFillRect(context, bounds); + + var height = CGRectGetHeight(bounds), + width = CGRectGetWidth(bounds); + + CGContextStrokeLineSegments(context, [CGPointMake(10,0), CGPointMake(10, height), + CGPointMake(0, 10), CGPointMake(CGRectGetWidth(aRect), 10), + CGPointMake(width - 10, 0), CGPointMake(width - 10, height), + CGPointMake(0, height - 10), CGPointMake(width, height - 10)], 8); +} + +@end + +@implementation CustomLayoutView : ColorView +{ +} + +- (void)layoutSubviews +{ + [self setBackgroundColor:color]; + + var subviews = [self subviews], + count = [subviews count] - 1; + + var dx = (CGRectGetWidth([self frame]) - 100) / count, + dy = (CGRectGetHeight([self frame]) - 26) / count + + [subviews enumerateObjectsUsingBlock:function(view, idx, stop) + { + [view setFrameOrigin:CGPointMake(dx * idx, dy * idx)]; + }]; +} + +@end + +@implementation CustomLayoutDrawView : DrawView +{ +} + +- (void)layoutSubviews +{ + var subviews = [self subviews], + count = [subviews count] - 1; + + var dx = (CGRectGetWidth([self frame]) - 100) / count, + dy = (CGRectGetHeight([self frame]) - 26) / count + + [subviews enumerateObjectsUsingBlock:function(view, idx, stop) + { + [view setFrameOrigin:CGPointMake(dx * idx, dy * idx)]; + }]; +} + +@end diff --git a/Tests/CucumberTests/CPAnimationContextTest/CPResponder+CuCapp.j b/Tests/CucumberTests/CPAnimationContextTest/CPResponder+CuCapp.j new file mode 100644 index 000000000..8b2a7a250 --- /dev/null +++ b/Tests/CucumberTests/CPAnimationContextTest/CPResponder+CuCapp.j @@ -0,0 +1,94 @@ +/* +* Copyright (c) 2014 Nuage Networks +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +* THE SOFTWARE. +*/ + + +// Import this Categories from your application +// You can now user -(void)setCucappIdentifier: and -(CPString)cucappIdentifier +// to set and get your cucapp IDs. +// Then from a test, you can use it as a selector like //CPView[cucappIdentifier="my-button"] + +@import +@import + +@implementation CPResponder (cucappAdditions) + +- (void)setCucappIdentifier:(CPString)anIdentifier +{ + self.__cucappIdentifier = anIdentifier; +} + +- (CPString)cucappIdentifier +{ + return self.__cucappIdentifier; +} + +@end + +@implementation CPMenuItem (cucappAdditionsMenu) + +- (void)setCucappIdentifier:(CPString)anIdentifier +{ + [[self _menuItemView] setCucappIdentifier:anIdentifier]; +} + +- (CPString)cucappIdentifier +{ + [[self _menuItemView] cucappIdentifier]; +} + +@end + +function load_cucapp_CLI(path) +{ + if (!path) + path = "Cucapp/lib/Cucumber.j" + + try { + objj_importFile(path, true, function() { + [Cucumber stopCucumber]; + CPLog.debug("Cucapp CLI has been well loaded"); + _addition_cpapplication_send_event_method(); + }); + + } + catch(e) + { + [CPException raise:CPInvalidArgumentException reason:@"Invalid path for the lib Cucumber"]; + } +} + + +function load_cucapp_record(path) +{ + if (!path) + path = "CuCapp+Record.j" + + try { + objj_importFile(path, true, function() { + CPLog.debug("Cucapp record has been well loaded"); + }); + } + catch(e) + { + [CPException raise:CPInvalidArgumentException reason:@"Invalid path for the lib Cucapp+Record.j"]; + } +} diff --git a/Tests/CucumberTests/CPAnimationContextTest/CuCapp+Record.j b/Tests/CucumberTests/CPAnimationContextTest/CuCapp+Record.j new file mode 100644 index 000000000..5975dae5c --- /dev/null +++ b/Tests/CucumberTests/CPAnimationContextTest/CuCapp+Record.j @@ -0,0 +1,591 @@ +@import + +function start_record(path) +{ + [CPWindow start_record]; +} + +function stop_record() +{ + [CPWindow stop_record]; +} + +function save_record(fileName) +{ + if (!fileName) + fileName = @"record" + + var eventRecords = [CPWindow eventRecords], + JSONEvents = []; + + for (var i = 0; i < [eventRecords count]; i++) + { + var eventRecord = eventRecords[i]; + [JSONEvents addObject:[eventRecord objectToJSON]]; + } + + var pom = document.createElement('a'); + pom.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(JSON.stringify(JSONEvents, null, 4))); + pom.setAttribute('download', fileName + ".json"); + pom.click(); +} + +function play_record(file_name, cucumber_path) +{ + if (!cucumber_path) + cucumber_path = path = "../../Cucapp/lib/Cucumber.j"; + + load_cucapp_CLI(cucumber_path); + + setTimeout(function(){ + _load_javascript_file(file_name) + },1000); +} + +function _load_javascript_file(file_name) +{ + var AJAX_req = new XMLHttpRequest(); + AJAX_req.open( "GET", file_name, true ); + AJAX_req.setRequestHeader("Content-type", "application/json"); + + AJAX_req.onreadystatechange = function() + { + if (AJAX_req.readyState == 4) + { + var recordingEvents = JSON.parse(AJAX_req.responseText); + + for (var i = 0; i < [recordingEvents count]; i++) + { + var recordingEvent = JSON.parse(recordingEvents[i]), + type = recordingEvent["event"]["type"]; + + if (type == CPLeftMouseDown && i < [recordingEvents count] - 1) + { + var nextRecordingEvent = JSON.parse(recordingEvents[i + 1]), + nextType = nextRecordingEvent["event"]["type"]; + + if (nextType == CPMouseMoved) + { + for (var j = i; j < [recordingEvents count]; j++) + { + var tmpRecordingEvent = JSON.parse(recordingEvents[j]), + tmpType = tmpRecordingEvent["event"]["type"]; + + if (tmpType == CPLeftMouseUp) + { + setTimeout(_simulate_drag_event, recordingEvent["event"]["timestamp"] * 1000, recordingEvent, tmpRecordingEvent); + i = j; + break; + } + } + + continue; + } + } + + setTimeout(_simulate_event, recordingEvent["event"]["timestamp"] * 1000, recordingEvent); + } + } + } + + AJAX_req.send(); +} + +function _simulate_drag_event(event1, event2) +{ + var keyView1 = event1["keyView"], + valueView1 = event1["valueView"], + keyView2 = event2["keyView"], + valueView2 = event2["valueView"], + locationInWindow1 = CGPointMake(event1["event"]["locationInWindow"]["x"], event1["event"]["locationInWindow"]["y"]); + locationInWindow2 = CGPointMake(event2["event"]["locationInWindow"]["x"], event2["event"]["locationInWindow"]["y"]); + + if (keyView1 && valueView1 && keyView2 && valueView2) + simulate_dragged_click_view_to_view(keyView1, valueView1, keyView2, valueView2); + else if (keyView1 && valueView1) + simulate_dragged_click_view_to_point(keyView1, valueView1, locationInWindow1.x, locationInWindow1.y); + else + simulate_dragged_click_point_to_point(locationInWindow1.x, locationInWindow1.y, locationInWindow2.x, locationInWindow2.y); +} + +function _simulate_event(event) +{ + var type = event["event"]["type"], + keyView = event["keyView"], + valueView = event["valueView"], + characters = event["event"]["characters"], + deltaX = event["event"]["deltaX"], + deltaY = event["event"]["deltaY"], + deltaZ = event["event"]["deltaZ"], + deltaZ = event["event"]["deltaZ"], + locationInWindow = CGPointMake(event["event"]["locationInWindow"]["x"], event["event"]["locationInWindow"]["y"]); + + switch (type) + { + case CPScrollWheel: + + if (keyView && valueView) + simulate_scroll_wheel_on_view(keyView, valueView, deltaX, deltaY) + + break; + + case CPLeftMouseDown: + + if (keyView && valueView) + simulate_left_click_on_view(keyView, valueView); + else + simulate_left_click_on_point(locationInWindow.x, locationInWindow.y) + + break; + + case CPRightMouseDown: + + if (keyView && valueView) + simulate_right_click_on_view(keyView, valueView); + else + simulate_right_click_on_point(locationInWindow.x, locationInWindow.y) + + break; + + case CPKeyDown: + simulate_keyboard_event(characters); + break; + } +} + + +var eventRecords, + recording = NO; + +@implementation CPWindow (cucappRecord) + ++ (CPArray)eventRecords +{ + return eventRecords; +} + ++ (void)start_record +{ + eventRecords = []; + recording = YES; +} + ++ (void)stop_record +{ + recording = NO; +} + +/*! + Dispatches events that are sent to it from CPApplication. + @param anEvent the event to be dispatched +*/ +- (void)sendEvent:(CPEvent)anEvent +{ + var type = [anEvent type], + sheet = [self attachedSheet], + recordingEvent = [[RecordingEvent alloc] initWithEvent:anEvent]; + + if (recordingEvent && type != CPFlagsChanged && type != CPMouseMoved) + [eventRecords addObject:recordingEvent]; + + // If a sheet is attached events get filtered here. + // It is not clear what events should be passed to the view, perhaps all? + // CPLeftMouseDown is needed for window moving and resizing to work. + // CPMouseMoved is needed for rollover effects on title bar buttons. + + if (sheet) + { + switch (type) + { + case CPLeftMouseDown: + + // This is needed when a doubleClick occurs when the sheet is closing or opening + if (!_parentWindow) + return; + + [recordingEvent setView:_windowView]; + + [_windowView mouseDown:anEvent]; + + // -dw- if the window is clicked, the sheet should come to front, and become key, + // and the window should be immediately behind + [sheet makeKeyAndOrderFront:self]; + + return; + + case CPMouseMoved: + // Allow these through to the parent + break; + + default: + // Everything else is filtered + return; + } + } + + var point = [anEvent locationInWindow]; + + switch (type) + { + case CPFlagsChanged: + return [[self firstResponder] flagsChanged:anEvent]; + + case CPKeyUp: + return [[self firstResponder] keyUp:anEvent]; + + case CPKeyDown: + if ([anEvent charactersIgnoringModifiers] === CPTabCharacter) + { + if ([anEvent modifierFlags] & CPShiftKeyMask) + [self selectPreviousKeyView:self]; + else + [self selectNextKeyView:self]; + + // Make sure the browser doesn't try to do its own tab handling. + // This is important or the browser might blur the shared text field or token field input field, + // even that we just moved it to a new first responder. + [[[anEvent window] platformWindow] _propagateCurrentDOMEvent:NO] + return; + } + else if ([anEvent charactersIgnoringModifiers] === CPBackTabCharacter) + { + var didTabBack = [self selectPreviousKeyView:self]; + + if (didTabBack) + { + // Make sure the browser doesn't try to do its own tab handling. + // This is important or the browser might blur the shared text field or token field input field, + // even that we just moved it to a new first responder. + [[[anEvent window] platformWindow] _propagateCurrentDOMEvent:NO] + } + return didTabBack; + } + else if ([anEvent charactersIgnoringModifiers] == CPEscapeFunctionKey && [self _processKeyboardUIKey:anEvent]) + { + return; + } + + [[self firstResponder] keyDown:anEvent]; + + // Trigger the default button if needed + // FIXME: Is this only applicable in a sheet? See isse: #722. + if (![self disableKeyEquivalentForDefaultButton]) + { + var defaultButton = [self defaultButton], + keyEquivalent = [defaultButton keyEquivalent], + modifierMask = [defaultButton keyEquivalentModifierMask]; + + if ([anEvent _triggersKeyEquivalent:keyEquivalent withModifierMask:modifierMask]) + [[self defaultButton] performClick:self]; + } + + return; + + case CPScrollWheel: + [recordingEvent setView:[_windowView hitTest:point]]; + + return [[_windowView hitTest:point] scrollWheel:anEvent]; + + case CPLeftMouseUp: + case CPRightMouseUp: + var hitTestedView = _leftMouseDownView, + selector = type == CPRightMouseUp ? @selector(rightMouseUp:) : @selector(mouseUp:); + + if (!hitTestedView) + hitTestedView = [_windowView hitTest:point]; + + [recordingEvent setView:hitTestedView]; + + [hitTestedView performSelector:selector withObject:anEvent]; + + _leftMouseDownView = nil; + + return; + + case CPLeftMouseDown: + case CPRightMouseDown: + // This will return _windowView if it is within a resize region + _leftMouseDownView = [_windowView hitTest:point]; + + [recordingEvent setView:_leftMouseDownView]; + + if (_leftMouseDownView !== _firstResponder && [_leftMouseDownView acceptsFirstResponder]) + [self makeFirstResponder:_leftMouseDownView]; + + [CPApp activateIgnoringOtherApps:YES]; + + var theWindow = [anEvent window], + selector = type == CPRightMouseDown ? @selector(rightMouseDown:) : @selector(mouseDown:); + + if ([theWindow isKeyWindow] || ([theWindow becomesKeyOnlyIfNeeded] && ![_leftMouseDownView needsPanelToBecomeKey])) + return [_leftMouseDownView performSelector:selector withObject:anEvent]; + else + { + // FIXME: delayed ordering? + [self makeKeyAndOrderFront:self]; + + if ([_leftMouseDownView acceptsFirstMouse:anEvent]) + return [_leftMouseDownView performSelector:selector withObject:anEvent]; + } + break; + + case CPLeftMouseDragged: + case CPRightMouseDragged: + if (!_leftMouseDownView) + { + [recordingEvent setView:[_windowView hitTest:point]]; + return [[_windowView hitTest:point] mouseDragged:anEvent]; + } + + [recordingEvent setView:_leftMouseDownView]; + + var selector; + + if (type == CPRightMouseDragged) + { + selector = @selector(rightMouseDragged:) + if (![_leftMouseDownView respondsToSelector:selector]) + selector = nil; + } + + if (!selector) + selector = @selector(mouseDragged:) + + return [_leftMouseDownView performSelector:selector withObject:anEvent]; + + case CPMouseMoved: + [_windowView setCursorForLocation:point resizing:NO]; + + // Ignore mouse moves for parents of sheets + if (!_acceptsMouseMovedEvents || sheet) + return; + + if (!_mouseEnteredStack) + _mouseEnteredStack = []; + + var hitTestView = [_windowView hitTest:point]; + + if ([_mouseEnteredStack count] && [_mouseEnteredStack lastObject] === hitTestView) + return [hitTestView mouseMoved:anEvent]; + + var view = hitTestView, + mouseEnteredStack = []; + + while (view) + { + mouseEnteredStack.unshift(view); + + view = [view superview]; + } + + var deviation = MIN(_mouseEnteredStack.length, mouseEnteredStack.length); + + while (deviation--) + if (_mouseEnteredStack[deviation] === mouseEnteredStack[deviation]) + break; + + var index = deviation + 1, + count = _mouseEnteredStack.length; + + if (index < count) + { + var event = [CPEvent mouseEventWithType:CPMouseExited location:point modifierFlags:[anEvent modifierFlags] timestamp:[anEvent timestamp] windowNumber:_windowNumber context:nil eventNumber:-1 clickCount:1 pressure:0]; + + for (; index < count; ++index) + [_mouseEnteredStack[index] mouseExited:event]; + } + + index = deviation + 1; + count = mouseEnteredStack.length; + + if (index < count) + { + var event = [CPEvent mouseEventWithType:CPMouseEntered location:point modifierFlags:[anEvent modifierFlags] timestamp:[anEvent timestamp] windowNumber:_windowNumber context:nil eventNumber:-1 clickCount:1 pressure:0]; + + for (; index < count; ++index) + [mouseEnteredStack[index] mouseEntered:event]; + } + + _mouseEnteredStack = mouseEnteredStack; + + [hitTestView mouseMoved:anEvent]; + } +} + +@end + + +@implementation RecordingEvent : CPObject +{ + CPEvent _event @accessors(property=event); + CPString _keyView @accessors(property=keyView); + CPString _valueView @accessors(property=valueView); + CGPoint _offsetView @accessors(property=offsetView); + int _offsetXPercentage @accessors(property=offsetXPercentage); + int _offsetYPercentage @accessors(property=offsetYPercentage); +} + +- (id)initWithEvent:(CPEvent)anEvent +{ + if (self = [super init]) + { + _event = anEvent; + _offsetView = CGPointMakeZero(); + _keyView = @""; + _valueView = @""; + } + + return self; +} + +- (void)setView:(CPView)aView +{ + if ([aView respondsToSelector:@selector(cucappIdentifier)]) + { + _keyView = @"cucappIdentifier"; + _valueView = [aView cucappIdentifier]; + } + else if ([aView respondsToSelector:@selector(identifier)]) + { + _keyView = @"identifier"; + _valueView = [aView identifier]; + } + else if ([aView respondsToSelector:@selector(title)]) + { + _keyView = @"title"; + _valueView = [aView title]; + } + else if ([aView respondsToSelector:@selector(placeholderString)]) + { + _keyView = @"placeholderString"; + _valueView = [aView placeholderString]; + } + else if ([aView respondsToSelector:@selector(text)]) + { + _keyView = @"text"; + _valueView = [aView text]; + } + else if ([aView respondsToSelector:@selector(tag)]) + { + _keyView = @"tag"; + _valueView = [aView tag]; + } + else if ([aView respondsToSelector:@selector(label)]) + { + _keyView = @"label"; + _valueView = [aView label]; + } + else if ([aView respondsToSelector:@selector(objectValue)]) + { + _keyView = @"objectValue"; + _valueView = [aView objectValue]; + } + + var globalPoint = [[aView superview] convertPointToBase:[aView frameOrigin]], + globalEventPoint = [_event locationInWindow]; + + _offsetView = CGPointMake(globalEventPoint.x - globalPoint.x, globalEventPoint.y - globalPoint.y); + + _offsetXPercentage = _offsetView.x * 100 / [aView frameSize].width; + _offsetYPercentage = _offsetView.y * 100 / [aView frameSize].height; +} + +- (CPString)objectToJSON +{ + var json = {}; + + json["keyView"] = _keyView; + json["valueView"] = _valueView; + json["offsetXPercentage"] = _offsetXPercentage; + json["offsetYPercentage"] = _offsetYPercentage; + json["offsetView"] = {"x" : _offsetView.x, "y" : _offsetView.y}; + + var event = {}; + event["type"] = [_event type]; + event["deltaX"] = [_event deltaX]; + event["deltaY"] = [_event deltaY]; + event["deltaZ"] = [_event deltaZ]; + event["characters"] = [_event characters]; + event["charactersIgnoringModifiers"] = [_event charactersIgnoringModifiers]; + event["clickCount"] = [_event clickCount]; + event["modifierFlags"] = [_event modifierFlags]; + event["locationInWindow"] = {"x" : [_event locationInWindow].x, "y" : [_event locationInWindow].y}; + event["keyCode"] = [_event keyCode]; + event["timestamp"] = [_event timestamp]; + + json["event"] = event; + + return JSON.stringify(json, null, 4); +} + +@end + + +@implementation CPApplication (cucappRecord) + +/*! + Dispatches events to other objects. + @param anEvent the event to dispatch +*/ +- (void)sendEvent:(CPEvent)anEvent +{ + _currentEvent = anEvent; + CPEventModifierFlags = [anEvent modifierFlags]; + + var theWindow = [anEvent window]; + + // Check if this is a candidate for key equivalent... + if ([anEvent _couldBeKeyEquivalent] && [self _handleKeyEquivalent:anEvent]) + // The key equivalent was handled. + return; + + if ([anEvent type] == CPMouseMoved) + { + if (theWindow !== _lastMouseMoveWindow) + [_lastMouseMoveWindow _mouseExitedResizeRect]; + + _lastMouseMoveWindow = theWindow; + } + + /* + Event listeners are processed from back to front so that newer event listeners normally take + precedence. If during the execution of a callback a new event listener is added, it should + be inserted after the current callback but before any higher priority callbacks. This makes + repeating event listeners (those that reinsert themselves) stable relative to each other. + */ + for (var i = _eventListeners.length - 1; i >= 0; i--) + { + var listener = _eventListeners[i]; + + if (listener._mask & (1 << [anEvent type])) + { + _eventListeners.splice(i, 1); + // In case the callback wants to add more listeners. + _eventListenerInsertionIndex = i; + listener._callback(anEvent); + + var type = [anEvent type], + recordingEvent = [[RecordingEvent alloc] initWithEvent:anEvent]; + + if (recordingEvent && type != CPFlagsChanged && type != CPMouseMoved) + [eventRecords addObject:recordingEvent]; + + if (theWindow) + [recordingEvent setView:[theWindow._windowView hitTest:[anEvent locationInWindow]]]; + + if (listener._dequeue) + { + // Don't process the event normally and don't send it to any other listener. + _eventListenerInsertionIndex = _eventListeners.length; + return; + } + } + } + + _eventListenerInsertionIndex = _eventListeners.length; + + if (theWindow) + [theWindow sendEvent:anEvent]; +} + +@end diff --git a/Tests/CucumberTests/CPAnimationContextTest/Info.plist b/Tests/CucumberTests/CPAnimationContextTest/Info.plist new file mode 100644 index 000000000..bf0cc4942 --- /dev/null +++ b/Tests/CucumberTests/CPAnimationContextTest/Info.plist @@ -0,0 +1,14 @@ + + + + + Main cib file base name + MainMenu.cib + CPBundleName + CPAnimationContextTest + CPBundleVersion + 1.0 + CPHumanReadableCopyright + Copyright © 2016, Your Company All rights reserved. + + diff --git a/Tests/CucumberTests/CPAnimationContextTest/Jakefile b/Tests/CucumberTests/CPAnimationContextTest/Jakefile new file mode 100644 index 000000000..d6d64a29a --- /dev/null +++ b/Tests/CucumberTests/CPAnimationContextTest/Jakefile @@ -0,0 +1,194 @@ +/* + * Jakefile + * CPAnimationContextTest + * + * Created by You on May 6, 2016. + * Copyright 2016, 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"), + projectName = "CPAnimationContextTest"; + +app (projectName, function(task) +{ + ENV["OBJJ_INCLUDE_PATHS"] = "Frameworks"; + + if (configuration === "Debug") + ENV["OBJJ_INCLUDE_PATHS"] = FILE.join(ENV["OBJJ_INCLUDE_PATHS"], configuration); + + task.setBuildIntermediatesPath(FILE.join("Build", "CPAnimationContextTest.build", configuration)); + task.setBuildPath(FILE.join("Build", configuration)); + + task.setProductName("CPAnimationContextTest"); + task.setIdentifier("com.yourcompany.CPAnimationContextTest"); + task.setVersion("1.0"); + task.setAuthor("Your Company"); + task.setEmail("feedback @nospam@ yourcompany.com"); + task.setSummary("CPAnimationContextTest"); + task.setSources(new FileList("**/*.j").exclude(FILE.join("Build", "**")).exclude(FILE.join("Frameworks", "Source", "**"))); + task.setResources(new FileList("Resources/**")); + task.setIndexFilePath("index.html"); + task.setInfoPlistPath("Info.plist"); + + if (configuration === "Debug") + task.setCompilerFlags("-DDEBUG -g"); + else + task.setCompilerFlags("-O2"); +}); + +task ("default", [projectName], function() +{ + printResults(configuration); +}); + +task ("build", ["default"], function() +{ + updateApplicationSize(); +}); + +task ("debug", function() +{ + configuration = ENV["CONFIGURATION"] = "Debug"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("release", function() +{ + configuration = ENV["CONFIGURATION"] = "Release"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("run", ["debug"], function() +{ + OS.system(["open", FILE.join("Build", "Debug", projectName, "index.html")]); +}); + +task ("run-release", ["release"], function() +{ + OS.system(["open", FILE.join("Build", "Release", projectName, "index.html")]); +}); + +task ("deploy", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Deployment", projectName)); + OS.system(["press", "-f", FILE.join("Build", "Release", projectName), FILE.join("Build", "Deployment", projectName)]); + printResults("Deployment") +}); + +task ("desktop", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Desktop", projectName)); + require("cappuccino/nativehost").buildNativeHost(FILE.join("Build", "Release", projectName), FILE.join("Build", "Desktop", projectName, "CPAnimationContextTest.app")); + printResults("Desktop") +}); + +task ("run-desktop", ["desktop"], function() +{ + OS.system([FILE.join("Build", "Desktop", projectName, "CPAnimationContextTest.app", "Contents", "MacOS", "NativeHost"), "-i"]); +}); + +function printResults(configuration) +{ + print("----------------------------"); + print(configuration+" app built at path: "+FILE.join("Build", configuration, projectName)); + print("----------------------------"); +} + +function updateApplicationSize() +{ + print("Calculating application file sizes..."); + + var contents = FILE.read(FILE.join("Build", configuration, projectName, "Info.plist"), { charset:"UTF-8" }), + format = CFPropertyList.sniffedFormatOfString(contents), + plist = CFPropertyList.propertyListFromString(contents), + totalBytes = {executable:0, data:0, mhtml:0}; + + // Get the size of all framework executables and sprite data + var frameworksDir = "Frameworks"; + + if (configuration === "Debug") + frameworksDir = FILE.join(frameworksDir, "Debug"); + + var frameworks = FILE.list(frameworksDir); + + frameworks.forEach(function(framework) + { + if (framework !== "Source") + addBundleFileSizes(FILE.join(frameworksDir, framework), totalBytes); + }); + + // Read in the default theme name, and attempt to get its size + var themeName = plist.valueForKey("CPDefaultTheme") || "Aristo2", + themePath = nil; + + if (themeName === "Aristo" || themeName === "Aristo2") + themePath = FILE.join(frameworksDir, "AppKit", "Resources", themeName + ".blend"); + else + themePath = FILE.join("Frameworks", "Resources", themeName + ".blend"); + + if (FILE.isDirectory(themePath)) + addBundleFileSizes(themePath, totalBytes); + + // Add sizes for the app + addBundleFileSizes(FILE.join("Build", configuration, projectName), totalBytes); + + print("Executables: " + totalBytes.executable + ", sprite data: " + totalBytes.data + ", total: " + (totalBytes.executable + totalBytes.data)); + + var dict = new CFMutableDictionary(); + + dict.setValueForKey("executable", totalBytes.executable); + dict.setValueForKey("data", totalBytes.data); + dict.setValueForKey("mhtml", totalBytes.mhtml); + + plist.setValueForKey("CPApplicationSize", dict); + + FILE.write(FILE.join("Build", configuration, projectName, "Info.plist"), CFPropertyList.stringFromPropertyList(plist, format), { charset:"UTF-8" }); +} + +function addBundleFileSizes(bundlePath, totalBytes) +{ + var bundleName = FILE.basename(bundlePath), + environment = bundleName === "Foundation" ? "Objj" : "Browser", + bundlePath = FILE.join(bundlePath, environment + ".environment"); + + if (FILE.isDirectory(bundlePath)) + { + var filename = bundleName + ".sj", + filePath = new FILE.Path(FILE.join(bundlePath, filename)); + + if (filePath.exists()) + totalBytes.executable += filePath.size(); + + filePath = new FILE.Path(FILE.join(bundlePath, "dataURLs.txt")); + + if (filePath.exists()) + totalBytes.data += filePath.size(); + + filePath = new FILE.Path(FILE.join(bundlePath, "MHTMLData.txt")); + + if (filePath.exists()) + totalBytes.mhtml += filePath.size(); + + filePath = new FILE.Path(FILE.join(bundlePath, "MHTMLPaths.txt")); + + if (filePath.exists()) + totalBytes.mhtml += filePath.size(); + } +} + +task ("cucumber-test", function() +{ + var SYSTEM = require("system"); + + OS.system("ln -s " + SYSTEM.prefix + "/packages/cucapp/Cucapp Cucapp") + var code = OS.system("cucumber"); + OS.system("rm -f Cucapp; rm -f cucumber.html") + OS.exit(code); +}); \ No newline at end of file diff --git a/Tests/CucumberTests/CPAnimationContextTest/Resources/MainMenu.cib b/Tests/CucumberTests/CPAnimationContextTest/Resources/MainMenu.cib new file mode 100644 index 000000000..92be8d56b --- /dev/null +++ b/Tests/CucumberTests/CPAnimationContextTest/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;0E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;0E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;4E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;0E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;1;7E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;1;9E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;11E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;13E;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;15E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;17E;D;K;6;CP$UIDd;2;18E;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;2;23E;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;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;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;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;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;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;85E;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;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;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;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;208E;D;K;6;CP$UIDd;3;210E;D;K;6;CP$UIDd;3;212E;D;K;6;CP$UIDd;1;0E;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;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;2;85E;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;152E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;161E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;168E;D;K;6;CP$UIDd;3;168E;D;K;6;CP$UIDd;3;168E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;172E;D;K;6;CP$UIDd;3;173E;D;K;6;CP$UIDd;3;173E;D;K;6;CP$UIDd;3;173E;D;K;6;CP$UIDd;3;173E;D;K;6;CP$UIDd;3;173E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;150E;D;K;6;CP$UIDd;3;184E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;3;194E;D;K;6;CP$UIDd;3;195E;D;K;6;CP$UIDd;3;195E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;3;198E;D;K;6;CP$UIDd;3;199E;D;K;6;CP$UIDd;3;199E;D;K;6;CP$UIDd;3;199E;D;K;6;CP$UIDd;3;199E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;3;204E;D;K;6;CP$UIDd;3;205E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;3;208E;D;K;6;CP$UIDd;3;210E;D;K;6;CP$UIDd;3;212E;D;K;6;CP$UIDd;3;210E;D;K;6;CP$UIDd;3;210E;D;K;6;CP$UIDd;3;215E;D;K;6;CP$UIDd;3;215E;D;K;6;CP$UIDd;3;215E;D;K;6;CP$UIDd;3;210E;D;K;6;CP$UIDd;3;219E;D;K;6;CP$UIDd;3;219E;D;K;6;CP$UIDd;3;219E;D;K;6;CP$UIDd;2;11E;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;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;224E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;12E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;3;225E;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;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;223E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;226E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;223E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;214E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;227E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;223E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;219E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;228E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;223E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;215E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;229E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;223E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;208E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;230E;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;20E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;203E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;231E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;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;232E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;89E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;11E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;233E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;104E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;234E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;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;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;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;236E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;114E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;237E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;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;238E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;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;239E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;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;240E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;206E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;241E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;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;242E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;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;243E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;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;244E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;100E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;245E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;97E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;246E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;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;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;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;248E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;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;249E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;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;250E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;125E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;251E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;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;252E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;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;253E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;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;254E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;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;255E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;136E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;256E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;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;257E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;129E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;258E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;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;259E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;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;260E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;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;261E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;201E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;262E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;196E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;263E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;197E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;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;265E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;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;266E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;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;267E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;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;268E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;186E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;269E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;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;270E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;188E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;271E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;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;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;191E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;192E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;274E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;193E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;275E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;156E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;276E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;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;277E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;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;278E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;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;279E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;174E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;280E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;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;281E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;176E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;282E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;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;283E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;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;284E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;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;285E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;170E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;286E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;171E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;287E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;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;288E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;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;289E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;165E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;290E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;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;291E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;212E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;223E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;292E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;224E;E;D;K;10;$classnameS;6;CPMenuK;8;$classesA;S;6;CPMenuS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;84E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;293E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;294E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;295E;E;D;K;10;$classnameS;10;CPMenuItemK;8;$classesA;S;10;CPMenuItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;296E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;88E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;297E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;88E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;85E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;84E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;296E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;299E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;300E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;301E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;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;86E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;302E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;303E;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;304E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;88E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;305E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;88E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;306E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;302E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;303E;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;304E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;88E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;307E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;94E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;297E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;94E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;88E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;84E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;307E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;308E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;309E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;302E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;303E;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;304E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;88E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;310E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;88E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;311E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;312E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;88E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;311E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;313E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;314E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;88E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;302E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;303E;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;304E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;88E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;315E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;88E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;316E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;317E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;102E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;297E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;102E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;85E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;84E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;317E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;318E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;319E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;102E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;320E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;321E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;102E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;322E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;323E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;106E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;297E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;106E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;102E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;84E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;323E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;324E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;325E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;326E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;106E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;302E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;303E;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;304E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;102E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;327E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;102E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;328E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;329E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;102E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;330E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;331E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;102E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;332E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;333E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;334E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;102E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;302E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;303E;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;304E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;102E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;335E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;102E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;336E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;333E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;337E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;102E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;338E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;339E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;117E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;297E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;117E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;85E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;84E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;339E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;340E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;341E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;117E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;342E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;343E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;117E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;344E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;333E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;302E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;303E;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;304E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;117E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;345E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;117E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;346E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;347E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;117E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;348E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;349E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;117E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;350E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;351E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;117E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;352E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;117E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;353E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;302E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;303E;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;304E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;117E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;354E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;128E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;297E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;128E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;117E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;84E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;354E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;355E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;356E;K;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;357E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;128E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;358E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;359E;K;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;360E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;128E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;361E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;362E;K;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;363E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;128E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;364E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;333E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;365E;K;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;366E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;128E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;367E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;368E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;128E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;369E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;370E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;135E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;297E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;135E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;117E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;84E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;370E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;371E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;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;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;135E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;373E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;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;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;135E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;375E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;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;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;135E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;377E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;135E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;378E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;141E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;297E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;141E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;117E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;84E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;378E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;379E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;380E;K;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;357E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;141E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;358E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;381E;K;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;360E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;141E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;361E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;382E;K;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;363E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;141E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;364E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;333E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;383E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;146E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;297E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;146E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;117E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;84E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;383E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;384E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;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;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;146E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;386E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;146E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;387E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;150E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;297E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;150E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;85E;E;D;K;6;$classD;K;6;CP$UIDd;2;84E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;387E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;388E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;389E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;152E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;297E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;152E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;150E;E;D;K;6;$classD;K;6;CP$UIDd;2;84E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;389E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;390E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;391E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;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;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;152E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;393E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;394E;K;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;360E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;152E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;395E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;396E;K;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;357E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;152E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;397E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;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;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;152E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;399E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;302E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;303E;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;304E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;152E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;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;3;363E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;152E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;401E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;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;3;403E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;152E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;404E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;302E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;303E;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;304E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;152E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;405E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;162E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;297E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;162E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;152E;E;D;K;6;$classD;K;6;CP$UIDd;2;84E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;405E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;406E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;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;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;162E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;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;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;162E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;409E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;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;86E;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;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;162E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;411E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;168E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;297E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;168E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;152E;E;D;K;6;$classD;K;6;CP$UIDd;2;84E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;411E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;412E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;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;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;168E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;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;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;168E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;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;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;168E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;414E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;173E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;297E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;173E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;152E;E;D;K;6;$classD;K;6;CP$UIDd;2;84E;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;86E;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;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;173E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;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;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;173E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;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;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;173E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;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;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;173E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;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;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;173E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;302E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;303E;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;304E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;152E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;420E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;152E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;421E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;302E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;303E;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;304E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;152E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;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;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;152E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;348E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;313E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;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;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;152E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;350E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;313E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;424E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;185E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;297E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;185E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;150E;E;D;K;6;$classD;K;6;CP$UIDd;2;84E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;424E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;425E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;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;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;185E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;427E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;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;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;185E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;429E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;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;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;185E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;431E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;185E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;432E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;302E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;303E;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;304E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;185E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;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;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;185E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;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;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;185E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;348E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;435E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;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;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;185E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;350E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;435E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;437E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;195E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;297E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;195E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;85E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;84E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;437E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;438E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;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;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;195E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;393E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;313E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;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;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;195E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;441E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;199E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;297E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;199E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;85E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;84E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;441E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;442E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;443E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;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;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;199E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;445E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;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;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;199E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;302E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;303E;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;304E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;199E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;447E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;199E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;448E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;3;205E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;297E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;205E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;85E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;84E;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;86E;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;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;205E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;451E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;207E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;452E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;453E;K;30;_CPCibWindowTemplateWTFlagsKeyD;K;6;CP$UIDd;3;454E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;455E;K;33;_CPCibWindowTemplateScreenRectKeyD;K;6;CP$UIDd;3;456E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;366E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;441E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;3;210E;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;209E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;457E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;458E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;458E;K;17;CPViewSubviewsKeyD;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;14;CPViewScaleKeyD;K;6;CP$UIDd;3;461E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;461E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;304E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;462E;K;32;CPDoNotTranslateAutoresizingMaskD;K;6;CP$UIDd;3;304E;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;211E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;210E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;457E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;463E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;464E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;210E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;465E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;466E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;467E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;457E;K;6;$afontD;K;6;CP$UIDd;3;469E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;457E;K;11;$aalignmentD;K;6;CP$UIDd;3;360E;K;7;$aimageD;K;6;CP$UIDd;3;471E;K;20;CPReuseIdentifierKeyD;K;6;CP$UIDd;3;472E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;461E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;461E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;304E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;473E;K;17;CPHuggingPriorityD;K;6;CP$UIDd;3;474E;K;32;CPDoNotTranslateAutoresizingMaskD;K;6;CP$UIDd;3;304E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;457E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;403E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;3;457E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;3;475E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;476E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;303E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;304E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;477E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;478E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;302E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;360E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;457E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;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;3;213E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;210E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;457E;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;210E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;465E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;460E;K;20;CPReuseIdentifierKeyD;K;6;CP$UIDd;3;481E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;461E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;461E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;304E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;482E;K;32;CPDoNotTranslateAutoresizingMaskD;K;6;CP$UIDd;3;304E;K;28;_CPCibCustomViewClassNameKeyD;K;6;CP$UIDd;3;483E;E;D;K;6;$classD;K;6;CP$UIDd;3;213E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;210E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;457E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;484E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;480E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;485E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;210E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;465E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;460E;K;20;CPReuseIdentifierKeyD;K;6;CP$UIDd;3;486E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;461E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;461E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;304E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;487E;K;32;CPDoNotTranslateAutoresizingMaskD;K;6;CP$UIDd;3;304E;K;28;_CPCibCustomViewClassNameKeyD;K;6;CP$UIDd;3;488E;E;D;K;6;$classD;K;6;CP$UIDd;3;213E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;215E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;457E;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;215E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;465E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;460E;K;20;CPReuseIdentifierKeyD;K;6;CP$UIDd;3;491E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;461E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;461E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;304E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;492E;K;32;CPDoNotTranslateAutoresizingMaskD;K;6;CP$UIDd;3;304E;K;28;_CPCibCustomViewClassNameKeyD;K;6;CP$UIDd;3;493E;E;D;K;6;$classD;K;6;CP$UIDd;3;213E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;215E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;457E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;494E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;490E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;215E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;465E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;460E;K;20;CPReuseIdentifierKeyD;K;6;CP$UIDd;3;491E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;461E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;461E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;304E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;495E;K;32;CPDoNotTranslateAutoresizingMaskD;K;6;CP$UIDd;3;304E;K;28;_CPCibCustomViewClassNameKeyD;K;6;CP$UIDd;3;493E;E;D;K;6;$classD;K;6;CP$UIDd;3;213E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;215E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;457E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;496E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;490E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;215E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;465E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;460E;K;20;CPReuseIdentifierKeyD;K;6;CP$UIDd;3;491E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;461E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;461E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;304E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;497E;K;32;CPDoNotTranslateAutoresizingMaskD;K;6;CP$UIDd;3;304E;K;28;_CPCibCustomViewClassNameKeyD;K;6;CP$UIDd;3;493E;E;D;K;6;$classD;K;6;CP$UIDd;3;213E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;210E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;457E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;498E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;480E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;499E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;210E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;465E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;460E;K;20;CPReuseIdentifierKeyD;K;6;CP$UIDd;3;500E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;461E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;461E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;304E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;501E;K;32;CPDoNotTranslateAutoresizingMaskD;K;6;CP$UIDd;3;304E;K;28;_CPCibCustomViewClassNameKeyD;K;6;CP$UIDd;3;502E;E;D;K;6;$classD;K;6;CP$UIDd;3;213E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;219E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;457E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;503E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;490E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;219E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;465E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;460E;K;20;CPReuseIdentifierKeyD;K;6;CP$UIDd;3;491E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;461E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;461E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;304E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;504E;K;32;CPDoNotTranslateAutoresizingMaskD;K;6;CP$UIDd;3;304E;K;28;_CPCibCustomViewClassNameKeyD;K;6;CP$UIDd;3;493E;E;D;K;6;$classD;K;6;CP$UIDd;3;213E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;219E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;457E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;505E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;490E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;219E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;465E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;460E;K;20;CPReuseIdentifierKeyD;K;6;CP$UIDd;3;491E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;461E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;461E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;304E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;506E;K;32;CPDoNotTranslateAutoresizingMaskD;K;6;CP$UIDd;3;304E;K;28;_CPCibCustomViewClassNameKeyD;K;6;CP$UIDd;3;493E;E;D;K;6;$classD;K;6;CP$UIDd;3;213E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;219E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;457E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;507E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;490E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;219E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;465E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;460E;K;20;CPReuseIdentifierKeyD;K;6;CP$UIDd;3;491E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;3;461E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;3;461E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;3;304E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;508E;K;32;CPDoNotTranslateAutoresizingMaskD;K;6;CP$UIDd;3;304E;K;28;_CPCibCustomViewClassNameKeyD;K;6;CP$UIDd;3;493E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;509E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;208E;E;E;S;8;delegateS;8;drawViewS;14;layoutDrawViewS;10;layoutViewS;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;5;test:S;9;AMainMenuS;11;_CPMainMenuD;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;101E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;149E;D;K;6;CP$UIDd;3;194E;D;K;6;CP$UIDd;3;198E;D;K;6;CP$UIDd;3;204E;E;E;S;14;NewApplicationS;14;submenuAction:d;7;1048576S;18;_CPApplicationMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;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;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;E;E;S;20;About NewApplicationT;S;0;F;S;12;Preferences…S;1;,S;8;ServicesS;15;_CPServicesMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;19;Hide NewApplicationS;1;hS;11;Hide Othersd;7;1572864S;8;Show AllS;19;Quit NewApplicationS;1;qS;4;FileD;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;3;104E;D;K;6;CP$UIDd;3;105E;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;E;E;S;3;NewS;1;nS;5;Open…S;1;oS;11;Open RecentS;22;_CPRecentDocumentsMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;107E;E;E;S;10;Clear MenuS;5;CloseS;1;wS;4;SaveS;1;sS;8;Save As…S;1;Sd;7;1179648S;15;Revert to SavedS;13;Page Setup...S;1;PS;6;Print…S;1;pS;4;EditD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;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;134E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;3;145E;E;E;S;4;UndoS;1;zS;4;RedoS;1;ZS;3;CutS;1;xS;4;CopyS;1;cS;5;PasteS;1;vS;6;DeleteS;10;Select AllS;1;aS;4;FindD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;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;E;E;S;5;Find…d;1;1S;1;fS;9;Find Nextd;1;2S;1;gS;13;Find Previousd;1;3S;1;GS;22;Use Selection for Findd;1;7S;1;eS;17;Jump to SelectionS;1;jS;20;Spelling and GrammarD;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;3;137E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;139E;E;E;S;14;Show Spelling…S;1;:S;14;Check SpellingS;1;;S;27;Check Spelling While TypingS;27;Check Grammar With SpellingS;13;SubstitutionsD;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;3;143E;D;K;6;CP$UIDd;3;144E;E;E;S;16;Smart Copy/PasteS;12;Smart QuotesS;11;Smart LinksS;6;SpeechD;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;3;148E;E;E;S;14;Start SpeakingS;13;Stop SpeakingS;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;184E;E;E;S;4;FontS;11;_CPFontMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;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;167E;D;K;6;CP$UIDd;3;172E;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;E;E;S;10;Show FontsS;1;tS;4;BoldS;1;bS;6;ItalicS;1;iS;9;UnderlineS;1;uS;6;BiggerS;1;+S;7;Smallerd;1;4S;1;-S;4;KernD;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;164E;D;K;6;CP$UIDd;3;165E;D;K;6;CP$UIDd;3;166E;E;E;S;11;Use DefaultS;8;Use NoneS;7;TightenS;6;LoosenS;8;LigatureD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;169E;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;3;171E;E;E;S;7;Use AllS;8;BaselineD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;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;E;E;S;11;SuperscriptS;9;SubscriptS;5;RaiseS;5;LowerS;11;Show ColorsS;1;CS;10;Copy StyleS;11;Paste StyleS;4;TextD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;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;E;E;S;10;Align LeftS;1;{S;6;CenterS;1;|S;7;JustifyS;11;Align RightS;1;}S;10;Show RulerS;10;Copy Rulerd;7;1310720S;11;Paste RulerS;4;ViewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;196E;D;K;6;CP$UIDd;3;197E;E;E;S;12;Show ToolbarS;18;Customize Toolbar…S;6;WindowS;14;_CPWindowsMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;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;E;E;S;8;MinimizeS;1;mS;4;ZoomS;18;Bring All to FrontS;4;HelpD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;206E;E;E;S;19;NewApplication HelpS;1;?S;32;{10000000000000, 10000000000000}S;8;CPWindowd;10;1879048192S;26;{{335, -402}, {940, 1040}}S;22;{{0, 0}, {1680, 1028}}d;1;0S;21;{{0, 0}, {940, 1040}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;212E;D;K;6;CP$UIDd;3;214E;D;K;6;CP$UIDd;3;215E;D;K;6;CP$UIDd;3;219E;E;E;S;6;normalS;6;{1, 1}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;22;{{338, 13}, {122, 25}}S;19;{{0, 0}, {122, 25}}d;2;36S;6;buttonS;27;bordered+controlSizeRegularD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;468E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;510E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;475E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;302E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;304E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;302E;E;D;K;10;$classnameS;17;_CPThemeAttributeK;8;$classesA;S;17;_CPThemeAttributeS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;470E;K;4;nameD;K;6;CP$UIDd;3;511E;K;12;defaultValueD;K;6;CP$UIDd;3;513E;K;5;stateD;K;6;CP$UIDd;3;514E;K;5;valueD;K;6;CP$UIDd;3;515E;E;S;3;runD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;10;{250, 750}d;2;-1S;15;Start Animationd;2;14d;2;12S;23;{{29, 156}, {148, 115}}S;20;{{0, 0}, {148, 115}}S;4;drawD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;8;DrawViewS;23;{{29, 288}, {148, 115}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;218E;D;K;6;CP$UIDd;3;217E;D;K;6;CP$UIDd;3;216E;E;E;S;6;layoutD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;16;CustomLayoutViewS;20;{{20, 20}, {53, 43}}S;18;{{0, 0}, {53, 43}}S;7;vanillaD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;9;ColorViewS;20;{{86, 20}, {53, 43}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;20;{{48, 66}, {53, 43}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;23;{{29, 426}, {148, 115}}D;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;221E;D;K;6;CP$UIDd;3;220E;E;E;S;10;drawLayoutD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;20;CustomLayoutDrawViewS;20;{{12, 11}, {53, 43}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;20;{{84, 11}, {53, 43}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;20;{{48, 62}, {53, 43}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;13;AppControllerS;28;_CPFontSystemFacePlaceholderS;5;imageD;K;10;$classnameS;6;CPNullK;8;$classesA;S;6;CPNullS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;512E;E;S;11;highlightedD;K;6;$classD;K;6;CP$UIDd;3;468E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;516E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;517E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;304E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;304E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;304E;E;S;18;.AppleSystemUIFontd;2;13E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/CucumberTests/CPAnimationContextTest/Resources/MainMenu.xib b/Tests/CucumberTests/CPAnimationContextTest/Resources/MainMenu.xib new file mode 100644 index 000000000..ce15d744e --- /dev/null +++ b/Tests/CucumberTests/CPAnimationContextTest/Resources/MainMenu.xib @@ -0,0 +1,577 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/CucumberTests/CPAnimationContextTest/features/step_definitions/steps.rb b/Tests/CucumberTests/CPAnimationContextTest/features/step_definitions/steps.rb new file mode 100644 index 000000000..074e336fb --- /dev/null +++ b/Tests/CucumberTests/CPAnimationContextTest/features/step_definitions/steps.rb @@ -0,0 +1,177 @@ +# Given the application is lauched +Given /^the application is launched$/ do + launched = app.gui.command "launched" + + if !launched + raise "The application was not launched" + end +end + +# Given I wait for n seconds +Given /^I wait for (\d+) seconds?$/ do |n| + sleep(eval("#{n.to_i}")) +end + +# When I close the popover +When /^I close the popover$/ do + step "I hit the key escape" +end + + +# When I hit the key c +When /^I hit the key (.*)$/ do |key| + step "I hit the mask none and the key #{key}" +end + + +# When I hit the mask shif and the key c +When /^I hit the mask (.*) and the key (.*)$/ do |mask, key| + simulate_keyboard_event(key, mask) +end + + +# When the keys cucapp +When /^I hit the keys (.*)$/ do |keys| + step "I hit the mask none and keys #{keys}" +end + + +# When I hit the mask shif and the keys cucapp +When /^I hit the mask (.*) and keys (.*)$/ do |mask, keys| + simulate_keyboard_event(keys, mask) +end + + +# When I select all +When /^I select all$/ do + app.gui.simulate_keyboard_event "a", [$CPCommandKeyMask] +end + + +# When I save the document +When /^I save the document$/ do + app.gui.simulate_keyboard_event "s", [$CPCommandKeyMask] +end + + +# When I (click|right click|double click) on the field with the value cucapp +When /^I (click|right click|double click) on the (\w*\-*\w*) with the value (.*)$/ do |click_type, element, value| + step "I #{click_type} on the #{element} with the property object-value set to #{value}" +end + + +# When I click on the field with the property cucapp-identifier set to cucapp-identifier-button-add +When /^I (click|right click|double click) on the (\w*\-*\w*) with the property (\w*\-*\w*) set to (.*)$/ do |click_type, element, property, property_value| + step "I #{click_type} with the key mask none on the #{element} with the property #{property} set to #{property_value}" +end + + +# When I click with the mask shift on the field with the property cucapp-identifier set to cucapp-identifier-button-add +When /^I (click|right click|double click) with the key mask (.*) on the (\w*\-*\w*) with the property (\w*\-*\w*) set to (.*)$/ do |click_type, mask, element, property, property_value| + + type = $mouse_left_click + + if click_type == "right click" + type = $mouse_right_click + end + + if click_type == "double click" + type = $mouse_double_click + end + + simulate_click(type, element, property, property_value, mask) +end + + +# When I do a drag and drop from the field with the value cucapp to the field with the value cappuccino +When /^I do a drag and drop from the (\w*\-*\w*) with the value (.*) to the (\w*\-*\w*) with the value (.*)$/ do |element, value, second_element, second_value| + step "I do a drag and drop from the #{element} with the property object-value set to #{value} to the #{second_element} with the property object-value set to #{second_value}" +end + + +# When I do a drag and drop from the field with the property title set to cucapp to the field with the property title set to cappuccino +When /^I do a drag and drop from the (\w*\-*\w*) with the property (\w*\-*\w*) set to (.*) to the (\w*\-*\w*) with the property (\w*\-*\w*) set to (.*)$/ do |element, property, property_value, second_element, second_property, second_property_value| + step "I do a drag and drop with the key mask none from the #{element} with the property #{property} set to #{property_value} to the #{second_element} with the property #{second_property} set to #{second_property_value}" +end + + +# When I do a drag and drop with the key mask shift from the field with the property title set to cucapp to the field with the property title set to cappuccino +When /^I do a drag and drop with the key mask (.*) from the (\w*\-*\w*) with the property (\w*\-*\w*) set to (.*) to the (\w*\-*\w*) with the property (\w*\-*\w*) set to (.*)$/ do |mask, element, property, property_value, second_element, second_property, second_property_value| + simulate_drag_and_drop(element, property, property_value, second_element, second_property, second_property_value, mask) +end + + +# When I vertically|horizontally scroll on the field with the value cappuccino +When /^I (vertically|horizontally) scroll on the (\w*\-*\w*) with the value (.*)$/ do |direction, element, value| + step "When I #{direction} scroll 10 times on the #{element} with the value #{value}" +end + + +# When I vertically|horizontally scroll 10 times on the field with the value cappuccino +When /^I (vertically|horizontally) scroll ([0-9]*) times on the (\w*\-*\w*) with the value (.*)$/ do |direction, times, element, value| + step "I #{direction} scroll #{times} times on the #{element} with the property object-value set to #{value}" +end + + +# When I vertically|horizontally scroll 10 times on the field with the property title set to cappuccino +When /^I (vertically|horizontally) scroll ([0-9]*) times on the (\w*\-*\w*) with the property (\w*\-*\w*) set to (.*)$/ do |direction, times, element, property, property_value| + step "I #{direction} scroll #{times} times with the key mask none on the #{element} with the property #{property} set to #{property_value}" +end + + +# When I vertically|horizontally scroll 10 times on the field with the property title set to cappuccino +When /^I (vertically|horizontally) scroll ([0-9]*) times with the key mask (.*) on the (\w*\-*\w*) with the property (\w*\-*\w*) set to (.*)$/ do |direction, times, mask, element, property, property_value| + + vertically = false + horizontally = false + + if direction == "vertically" + vertically = true + end + + if direction == "horizontally" + horizontally = true + end + + simulate_scroll(element, property, property_value, times, mask, horizontally, vertically) +end + + +# When I select the item name of the pop-up-button with the property cucapp-identifier set to cucappIdentifierPopUpButton +When /^I select the item (.*) of the pop-up-button with the property (\w*\-*\w*) set to (.*)$/ do |item_name, property, property_value| + select_pop_up_button_item(item_name, property, property_value) +end + + +# Then the field with the property title set to name should be focused +Then /^the (\w*\-*\w*) with the property (\w*\-*\w*) set to (.*) should be focused$/ do |element, property, property_value| + app.gui.is_control_focused(create_xpath(element, property, property_value)) +end + + +# Then the field should not have a value +Then /^the (\w*\-*\w*) should not have a value$/ do |element| + step "the #{element} with the property object-value set to #{value} should have the value #{value}" +end + + +# Then the field with the property cucapp-identifier set to cucapp-identifier-textfield-description should not have a value +Then /^the (\w*\-*\w*) with the property (\w*\-*\w*) set to (.*) should not have a value$/ do |element, property, property_value| + check_value_control(element, property, property_value, nil) +end + + +# Then the field should have the value cucapp +Then /^the (\w*\-*\w*) should have the value (.*)$/ do |element, value| + step "the #{element} with the property object-value set to #{value} should have the value #{value}" +end + + +# Then the field with the property cucapp-identifier set to cucapp-identifier-textfield-description should have the value cucapp +Then /^the (\w*\-*\w*) with the property (\w*\-*\w*) set to (.*) should have the value (.*)$/ do |element, property, property_value, value| + check_value_control(element, property, property_value, value) +end + +Then /^the delegate property (\w*) should have the value (.*)$/ do |property, value| + check_delegate_property(property, value) +end diff --git a/Tests/CucumberTests/CPAnimationContextTest/features/support/Cucumber+Extensions.j b/Tests/CucumberTests/CPAnimationContextTest/features/support/Cucumber+Extensions.j new file mode 100644 index 000000000..99c1b446b --- /dev/null +++ b/Tests/CucumberTests/CPAnimationContextTest/features/support/Cucumber+Extensions.j @@ -0,0 +1,30 @@ +@import + +@implementation Cucumber (CuCapp) + +- (CPString)valueIsEqual:(CPArray)params +{ + var obj = cucumber_objects[params[0]], + value = params[1]; + + if (!obj) + return '{"result" : "__CUKE_ERROR__"}'; + + if ([obj respondsToSelector:@selector(stringValue)] && value === [obj stringValue]) + return '{"result" : "OK"}'; + + return '{"result" : "__CUKE_ERROR__"}'; +} + +- (CPString)delegatePropertyIsEqual:(CPArray)params +{ + var property = params[0], + value = params[1]; + + if (property == nil || value !== [[[CPApplication sharedApplication] delegate] valueForKey:property]) + return '{"result" : "__CUKE_ERROR__"}'; + + return '{"result" : "OK"}'; +} + +@end diff --git a/Tests/CucumberTests/CPAnimationContextTest/features/support/cappuccino_mappings.rb b/Tests/CucumberTests/CPAnimationContextTest/features/support/cappuccino_mappings.rb new file mode 100644 index 000000000..fd8dfddba --- /dev/null +++ b/Tests/CucumberTests/CPAnimationContextTest/features/support/cappuccino_mappings.rb @@ -0,0 +1,62 @@ +$cappuccino_control_mappings = { + "image-view-text" => "_CPImageAndTextView", + "menu-item" => "_CPMenuItemView", + "tool-bar-item" => "_CPToolbarItemView", + "box" => "CPBox", + "button" => "CPButton", + "button-bar" => "CPButtonBar", + "collection-view" => "CPCollectionView", + "combo-box" => "CPComboBox", + "control" => "CPControl", + "check-box" => "CPCheckBox", + "date-picker" => "CPDatePicker", + "image-view" => "CPImageView", + "level-indicator" => "CPLevelIndicator", + "outline-view" => "CPOutlineView", + "pop-up-button" => "CPPopUpButton", + "predicate-editor" => "CPPredicateEditor", + "radio-button" => "CPRadio", + "rule-editor" => "CPRuleEditor", + "scroller" => "CPScroller", + "scroll-view" => "CPScrollView", + "search-field" => "CPSearchField", + "secure-field" => "CPSecureTextField", + "segemented-control" => "CPSegmentedControl", + "slider" => "CPSlider", + "stepper" => "CPStepper", + "tab-view" => "CPTabView", + "table" => "CPTableView", + "field" => "CPTextField", + "token-field" => "CPTokenField", + "view" => "CPView", + "none" => nil +} + +$property_mappings = { + "cucapp-identifier" => "cucappIdentifier", + "id" => "id", + "identifier" => "identifier", + "label" => "label", + "object-value" => "objectValue", + "placeholder" => "placeholderString", + "tag" => "tag", + "title" => "title", + "text" => "text", + "none" => nil +} + +$key_mappings = { + "command" => $CPCommandKeyMask, + "shift" => $CPShiftKeyMask, + "option" => $CPAlternateKeyMask, + "control" => $CPControlKeyMask, + "delete" => $CPDeleteCharacter, + "escape" => $CPEscapeFunctionKey, + "enter" => $CPNewlineCharacter, + "left-arrow" => $CPLeftArrowFunctionKey, + "right-arrow" => $CPRightArrowFunctionKey, + "top-arrow" => $CPTopArrowFunctionKey, + "down-arrow" => $CPDownArrowFunctionKey, + "tab" => $CPTabCharacter, + "none" => nil +} \ No newline at end of file diff --git a/Tests/CucumberTests/CPAnimationContextTest/features/support/encumber_category.rb b/Tests/CucumberTests/CPAnimationContextTest/features/support/encumber_category.rb new file mode 100644 index 000000000..5f647cbba --- /dev/null +++ b/Tests/CucumberTests/CPAnimationContextTest/features/support/encumber_category.rb @@ -0,0 +1,20 @@ +module Encumber + + class GUI + def value_is_equal(xpath, value) + + if !value + value = "" + end + + result = command 'valueIsEqual', id_for_element(xpath), value + raise "Value #{value} not found" if result["result"] != "OK" + end + + def delegate_property_is_equal(property, value) + result = command 'delegatePropertyIsEqual', property, value + raise "Value #{value} not found" if result["result"] != "OK" + end + + end +end diff --git a/Tests/CucumberTests/CPAnimationContextTest/features/support/env.rb b/Tests/CucumberTests/CPAnimationContextTest/features/support/env.rb new file mode 100644 index 000000000..949cb9b72 --- /dev/null +++ b/Tests/CucumberTests/CPAnimationContextTest/features/support/env.rb @@ -0,0 +1,20 @@ +$: << File.join(File.dirname(__FILE__), '..', '..', 'Cucapp') + +require 'cucapp.rb' +require 'logger' + +module AppHelper + + def app + @app ||= Cucapp.new + end + + def log + @log ||= ENV['log'] + end + +end + +World( + AppHelper +) \ No newline at end of file diff --git a/Tests/CucumberTests/CPAnimationContextTest/features/support/hooks.rb b/Tests/CucumberTests/CPAnimationContextTest/features/support/hooks.rb new file mode 100644 index 000000000..cb022d6e5 --- /dev/null +++ b/Tests/CucumberTests/CPAnimationContextTest/features/support/hooks.rb @@ -0,0 +1,7 @@ +Before do + app.reset() +end + +After do + app.quit() +end \ No newline at end of file diff --git a/Tests/CucumberTests/CPAnimationContextTest/features/support/steps_helpers.rb b/Tests/CucumberTests/CPAnimationContextTest/features/support/steps_helpers.rb new file mode 100644 index 000000000..311fd53bf --- /dev/null +++ b/Tests/CucumberTests/CPAnimationContextTest/features/support/steps_helpers.rb @@ -0,0 +1,97 @@ + +def check_delegate_property(property, value) + app.gui.delegate_property_is_equal property, value +end + +def check_value_control(element, property, property_value, value) + xpath = create_xpath(element, property, property_value) + + app.gui.wait_for xpath + app.gui.value_is_equal xpath, value +end + +def simulate_keyboard_event(keys, mask) + app.gui.simulate_keyboard_events cappuccino_key(keys), [cappuccino_key(mask)] +end + +def simulate_click(type, element, property, property_value, mask) + xpath = create_xpath(element, property, property_value) + + app.gui.wait_for xpath + + if type == $mouse_double_click + app.gui.simulate_double_click xpath, [cappuccino_key(mask)] + elsif type == $mouse_right_click + app.gui.simulate_right_click xpath, [cappuccino_key(mask)] + else + app.gui.simulate_left_click xpath, [cappuccino_key(mask)] + end +end + +def simulate_drag_and_drop(element, property, property_value, second_element, second_property, second_property_value, mask) + + xpath1 = create_xpath(element, property, property_value) + xpath2 = create_xpath(second_element, second_property, second_property_value) + + app.gui.simulate_dragged_click_view_to_view xpath1, xpath2, [cappuccino_key(mask)] +end + +def simulate_scroll(element, property, property_value, times, mask, horizontal, vertical) + xpath = create_xpath(element, property, property_value) + delta_x = 0 + delta_y = 0 + + if horizontal + delta_x = 1 + end + + if vertical + delta_y = 1 + end + + for i in 0..times.to_i + app.gui.simulate_scroll_wheel xpath, delta_x, delta_y, [cappuccino_key(mask)] + end +end + +def select_pop_up_button_item(item_name, property, property_value) + simulate_click($mouse_left_click, "pop-up-button", property, property_value, []) + + pop_up_button_xpath = create_xpath("pop-up-button", property, property_value) + + pop_up_button_item_xpath = create_xpath("image-view-text", "text", item_name) + + while !app.gui.wait_for_element(pop_up_button_item_xpath, 0.05) && app.gui.pop_up_button_can_scroll_up(pop_up_button_xpath) + simulate_keyboard_event("up-arrow", []) + end + + while !app.gui.wait_for_element(pop_up_button_item_xpath, 0.05) && app.gui.pop_up_button_can_scroll_down(pop_up_button_xpath) + simulate_keyboard_event("down-arrow", []) + end + + if not app.gui.wait_for(pop_up_button_item_xpath) + raise "Menu item #{item_name} not found !" + end + + simulate_click($mouse_left_click, "image-view-text", "text", item_name, []) +end + +def cappuccino_key(key) + if $key_mappings.has_key?(key) + key = $key_mappings[key] + end + + return key +end + +def create_xpath(element, property, property_value) + if !$cappuccino_control_mappings.has_key?(element) + raise "Element #{element} not found in the hash cappuccino_control_mappings. You should complete the hash $cappuccino_control_mappings in env.rb" + end + + if !$property_mappings.has_key?(property) + raise "Property #{property} not found in the hash $property_mappings. You should complete the hash $property_mappings in env.rb" + end + + return "//" + $cappuccino_control_mappings[element] + "["+ $property_mappings[property] +"='#{property_value}']" +end diff --git a/Tests/CucumberTests/CPAnimationContextTest/features/test_application.feature b/Tests/CucumberTests/CPAnimationContextTest/features/test_application.feature new file mode 100644 index 000000000..d213dc4b9 --- /dev/null +++ b/Tests/CucumberTests/CPAnimationContextTest/features/test_application.feature @@ -0,0 +1,23 @@ +Feature: Cappuccino animations +Cappuccino animations powered by css animations + + Scenario: Check if the demo application works + Given the application is launched + When I click on the button with the property identifier set to run + When I wait for 1 second + Then the delegate property passed should have the value true + When I click on the button with the property identifier set to run + When I wait for 1 second + Then the delegate property passed should have the value true + When I click on the button with the property identifier set to run + When I wait for 1 second + Then the delegate property passed should have the value true + When I click on the button with the property identifier set to run + When I wait for 1 second + Then the delegate property passed should have the value true + When I click on the button with the property identifier set to run + When I wait for 1 second + Then the delegate property passed should have the value true + When I click on the button with the property identifier set to run + When I wait for 1 second + Then the delegate property passed should have the value true diff --git a/Tests/CucumberTests/CPAnimationContextTest/index-debug.html b/Tests/CucumberTests/CPAnimationContextTest/index-debug.html new file mode 100644 index 000000000..539df851f --- /dev/null +++ b/Tests/CucumberTests/CPAnimationContextTest/index-debug.html @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + CPAnimationContextTest + + + + + + + + + + + + + + +
+
+
+ +
+
+ +
+ + diff --git a/Tests/CucumberTests/CPAnimationContextTest/index.html b/Tests/CucumberTests/CPAnimationContextTest/index.html new file mode 100644 index 000000000..071273cd3 --- /dev/null +++ b/Tests/CucumberTests/CPAnimationContextTest/index.html @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + CPAnimationContextTest + + + + + + + + + + + + +
+
+
+ +
+
+ +
+ + diff --git a/Tests/CucumberTests/CPAnimationContextTest/main.j b/Tests/CucumberTests/CPAnimationContextTest/main.j new file mode 100644 index 000000000..83c59d28f --- /dev/null +++ b/Tests/CucumberTests/CPAnimationContextTest/main.j @@ -0,0 +1,18 @@ +/* + * AppController.j + * CPAnimationContextTest + * + * Created by You on May 6, 2016. + * Copyright 2016, Your Company All rights reserved. + */ + +@import +@import + +@import "AppController.j" + + +function main(args, namedArgs) +{ + CPApplicationMain(args, namedArgs); +} diff --git a/Tests/Manual/CPTabViewNib/AppController.j b/Tests/Manual/CPTabViewNib/AppController.j index c88a47d07..887c28ae1 100644 --- a/Tests/Manual/CPTabViewNib/AppController.j +++ b/Tests/Manual/CPTabViewNib/AppController.j @@ -7,6 +7,7 @@ */ @import @import +@import "TabViewController.j" CPLogRegister(CPLogConsole); @@ -15,7 +16,6 @@ CPLogRegister(CPLogConsole); CPWindow theWindow; //this "outlet" is connected automatically by the Cib @outlet CPTabView nibTabView; @outlet CPTabView nibTabViewEmpty; - @outlet CPViewController viewController; @outlet CPStepper insertStepper; @outlet CPStepper removeStepper; @outlet CPButton fromViewController; @@ -23,23 +23,25 @@ CPLogRegister(CPLogConsole); - (IBAction)insertTabViewItem:(id)sender { - var idx = [insertStepper intValue], - item; - - if ([fromViewController state]) - item = [CPTabViewItem tabViewItemWithViewController:viewController]; - else - { - item = [[CPTabViewItem alloc] initWithIdentifier:@"Insert" + idx]; - var view = [[CPView alloc] initWithFrame:CGRectMakeZero()]; - [view setBackgroundColor:[CPColor randomColor]]; - [item setView:view]; - [item setLabel:@"Insert" + idx]; - } + var idx = [insertStepper objectValue]; + var item = [[CPTabViewItem alloc] initWithIdentifier:@"Insert" + idx]; + var view = [[CPView alloc] initWithFrame:CGRectMakeZero()]; + [view setBackgroundColor:[CPColor randomColor]]; + [item setView:view]; + [item setLabel:@"Insert" + idx]; [nibTabView insertTabViewItem:item atIndex:idx]; } +- (IBAction)insertViewControllerTabViewItem:(id)sender +{ + var ctl = [[TabViewController alloc] initWithCibName:@"TabViewItem" bundle:nil]; + [ctl setTitle:@"View Controller"]; + var item = [CPTabViewItem tabViewItemWithViewController:ctl]; + + [nibTabView insertTabViewItem:item atIndex:0]; +} + - (IBAction)removeTabViewItem:(id)sender { var idx = [removeStepper intValue], diff --git a/Tests/Manual/CPTabViewNib/Resources/CollectionViewItem.cib b/Tests/Manual/CPTabViewNib/Resources/CollectionViewItem.cib new file mode 100644 index 000000000..da65b21f2 --- /dev/null +++ b/Tests/Manual/CPTabViewNib/Resources/CollectionViewItem.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;0E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;0E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;4E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;0E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;1;7E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;1;9E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;11E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;13E;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;15E;D;K;6;CP$UIDd;2;17E;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;18E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;22E;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;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;20E;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;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;23E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;12E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;2;24E;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;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;20E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;25E;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;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;22E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;11E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;26E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;2;27E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;2;28E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;2;30E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;31E;E;D;K;10;$classnameS;18;_CPCibClassSwapperK;8;$classesA;S;18;_CPCibClassSwapperS;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;32E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;33E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;33E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;34E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;35E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;36E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;37E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;37E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;38E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;2;39E;K;30;_CPCibClassSwapperClassNameKeyD;K;6;CP$UIDd;2;40E;K;38;_CPCibClassSwapperOriginalClassNameKeyD;K;6;CP$UIDd;2;40E;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;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;32E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;41E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;42E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;20E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;43E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;44E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;45E;K;15;$aimage-scalingD;K;6;CP$UIDd;2;32E;K;6;$afontD;K;6;CP$UIDd;2;47E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;32E;K;11;$aalignmentD;K;6;CP$UIDd;2;48E;K;7;$aimageD;K;6;CP$UIDd;2;50E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;37E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;37E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;38E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;2;51E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;32E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;52E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;2;32E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;2;53E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;2;54E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;2;55E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;2;38E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;2;56E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;2;32E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;2;57E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;2;48E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;32E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;S;16;CPViewControllerD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;4;viewS;24;title: representedObjectS;5;titleS;17;representedObjectD;K;10;$classnameS;12;CPDictionaryK;8;$classesA;S;12;CPDictionaryS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;29E;K;10;CP.objectsD;E;E;S;13;CPApplicationd;1;0S;18;{{0, 0}, {90, 40}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;22E;E;E;d;2;12S;6;normalS;6;{1, 1}F;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;6;CPViewS;19;{{9, 10}, {69, 25}}S;18;{{0, 0}, {69, 25}}d;2;36S;6;buttonS;27;bordered+controlSizeRegularD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;13;CPFontNameKeyD;K;6;CP$UIDd;2;58E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;2;53E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;57E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;2;38E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;2;57E;E;d;1;2D;K;10;$classnameS;17;_CPThemeAttributeK;8;$classesA;S;17;_CPThemeAttributeS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;49E;K;4;nameD;K;6;CP$UIDd;2;59E;K;12;defaultValueD;K;6;CP$UIDd;2;61E;K;5;stateD;K;6;CP$UIDd;2;62E;K;5;valueD;K;6;CP$UIDd;2;63E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;d;1;4d;2;-1S;6;ButtonS;0;d;2;14T;S;28;_CPFontSystemFacePlaceholderS;5;imageD;K;10;$classnameS;6;CPNullK;8;$classesA;S;6;CPNullS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;60E;E;S;11;highlightedD;K;6;$classD;K;6;CP$UIDd;2;46E;K;13;CPFontNameKeyD;K;6;CP$UIDd;2;64E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;2;65E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;38E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;2;38E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;2;38E;E;S;18;.AppleSystemUIFontd;2;13E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/CPTabViewNib/Resources/CollectionViewItem.xib b/Tests/Manual/CPTabViewNib/Resources/CollectionViewItem.xib new file mode 100644 index 000000000..739e49563 --- /dev/null +++ b/Tests/Manual/CPTabViewNib/Resources/CollectionViewItem.xib @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/Manual/CPTabViewNib/Resources/MainMenu.cib b/Tests/Manual/CPTabViewNib/Resources/MainMenu.cib index 83fa94ca4..268b28bac 100644 --- a/Tests/Manual/CPTabViewNib/Resources/MainMenu.cib +++ b/Tests/Manual/CPTabViewNib/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;0E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;0E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;4E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;0E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;1;7E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;1;9E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;11E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;13E;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;15E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;17E;D;K;6;CP$UIDd;2;18E;D;K;6;CP$UIDd;2;19E;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;24E;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;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;31E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;1;0E;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;1;0E;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;1;0E;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;1;0E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;1;0E;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;60E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;1;0E;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;1;0E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;67E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;35E;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;46E;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;46E;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;35E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;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;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;68E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;12E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;2;69E;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;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;65E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;70E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;33E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;46E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;71E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;65E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;62E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;72E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;65E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;64E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;73E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;65E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;46E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;74E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;65E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;37E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;75E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;65E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;60E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;76E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;65E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;67E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;77E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;46E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;65E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;70E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;37E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;65E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;70E;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;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;45E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;65E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;78E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;64E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;63E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;79E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;56E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;65E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;80E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;57E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;65E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;81E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;60E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;58E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;79E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;68E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;32E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;2;82E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;2;83E;K;30;_CPCibWindowTemplateWTFlagsKeyD;K;6;CP$UIDd;2;84E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;2;85E;K;33;_CPCibWindowTemplateScreenRectKeyD;K;6;CP$UIDd;2;86E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;2;87E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;2;88E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;35E;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;34E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;89E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;90E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;90E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;91E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;92E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;93E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;94E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;94E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;95E;E;D;K;10;$classnameS;9;CPTabViewK;8;$classesA;S;9;CPTabViewS;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;35E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;89E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;96E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;97E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;35E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;98E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;93E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;94E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;94E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;95E;K;17;CPTabViewItemsKeyD;K;6;CP$UIDd;2;99E;K;24;CPTabViewSelectedItemKeyD;K;6;CP$UIDd;2;39E;K;16;CPTabViewTypeKeyD;K;6;CP$UIDd;2;89E;K;16;CPTabViewFontKeyD;K;6;CP$UIDd;3;101E;K;20;CPTabViewDelegateKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;13;CPTabViewItemK;8;$classesA;S;13;CPTabViewItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;38E;K;26;CPTabViewItemIdentifierKeyD;K;6;CP$UIDd;1;0E;K;21;CPTabViewItemLabelKeyD;K;6;CP$UIDd;3;102E;K;21;CPTabViewItemImageKeyD;K;6;CP$UIDd;1;0E;K;20;CPTabViewItemViewKeyD;K;6;CP$UIDd;2;40E;K;23;CPTabViewItemAuxViewKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;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;2;89E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;103E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;104E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;105E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;92E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;93E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;94E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;94E;K;17;CPViewIsScaledKeyD;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;2;41E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;40E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;89E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;106E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;107E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;40E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;108E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;110E;K;11;$aalignmentD;K;6;CP$UIDd;3;111E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;112E;K;6;$afontD;K;6;CP$UIDd;3;101E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;94E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;94E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;95E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;113E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;102E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;111E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;2;89E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;2;95E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;2;95E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;2;95E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;115E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;112E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;111E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;2;95E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;2;95E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;113E;E;D;K;6;$classD;K;6;CP$UIDd;2;41E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;35E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;89E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;116E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;117E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;35E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;118E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;110E;K;11;$aalignmentD;K;6;CP$UIDd;3;111E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;112E;K;6;$afontD;K;6;CP$UIDd;3;101E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;94E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;94E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;95E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;113E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;119E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;111E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;2;89E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;2;95E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;2;95E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;2;95E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;115E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;112E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;111E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;2;95E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;2;95E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;113E;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;35E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;89E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;120E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;121E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;35E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;118E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;122E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;123E;K;11;$aalignmentD;K;6;CP$UIDd;3;112E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;89E;K;6;$afontD;K;6;CP$UIDd;3;101E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;94E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;94E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;95E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;89E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;111E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;2;89E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;124E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;125E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;2;95E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;126E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;2;89E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;113E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;112E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;89E;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;36E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;35E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;89E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;127E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;97E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;35E;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;2;93E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;94E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;94E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;95E;K;17;CPTabViewItemsKeyD;K;6;CP$UIDd;3;129E;K;24;CPTabViewSelectedItemKeyD;K;6;CP$UIDd;2;53E;K;16;CPTabViewTypeKeyD;K;6;CP$UIDd;2;89E;K;16;CPTabViewFontKeyD;K;6;CP$UIDd;3;101E;K;20;CPTabViewDelegateKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;38E;K;26;CPTabViewItemIdentifierKeyD;K;6;CP$UIDd;3;130E;K;21;CPTabViewItemLabelKeyD;K;6;CP$UIDd;3;131E;K;21;CPTabViewItemImageKeyD;K;6;CP$UIDd;1;0E;K;20;CPTabViewItemViewKeyD;K;6;CP$UIDd;2;48E;K;23;CPTabViewItemAuxViewKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;89E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;103E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;104E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;132E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;92E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;93E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;94E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;94E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;95E;E;D;K;6;$classD;K;6;CP$UIDd;2;41E;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;2;89E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;133E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;134E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;48E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;108E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;110E;K;11;$aalignmentD;K;6;CP$UIDd;3;111E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;112E;K;6;$afontD;K;6;CP$UIDd;3;101E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;94E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;94E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;95E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;113E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;131E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;111E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;2;89E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;2;95E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;2;95E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;2;95E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;115E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;112E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;111E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;2;95E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;2;95E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;113E;E;D;K;6;$classD;K;6;CP$UIDd;2;38E;K;26;CPTabViewItemIdentifierKeyD;K;6;CP$UIDd;3;135E;K;21;CPTabViewItemLabelKeyD;K;6;CP$UIDd;3;136E;K;21;CPTabViewItemImageKeyD;K;6;CP$UIDd;1;0E;K;20;CPTabViewItemViewKeyD;K;6;CP$UIDd;2;51E;K;23;CPTabViewItemAuxViewKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;89E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;103E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;104E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;137E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;92E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;93E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;94E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;94E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;95E;E;D;K;6;$classD;K;6;CP$UIDd;2;41E;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;2;89E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;138E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;139E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;51E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;108E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;110E;K;11;$aalignmentD;K;6;CP$UIDd;3;111E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;112E;K;6;$afontD;K;6;CP$UIDd;3;101E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;94E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;94E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;95E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;113E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;136E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;111E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;2;89E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;2;95E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;2;95E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;2;95E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;115E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;112E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;111E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;2;95E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;2;95E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;113E;E;D;K;6;$classD;K;6;CP$UIDd;2;38E;K;26;CPTabViewItemIdentifierKeyD;K;6;CP$UIDd;1;0E;K;21;CPTabViewItemLabelKeyD;K;6;CP$UIDd;3;140E;K;21;CPTabViewItemImageKeyD;K;6;CP$UIDd;3;142E;K;20;CPTabViewItemViewKeyD;K;6;CP$UIDd;2;54E;K;23;CPTabViewItemAuxViewKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;46E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;89E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;103E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;104E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;143E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;92E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;93E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;94E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;94E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;95E;E;D;K;6;$classD;K;6;CP$UIDd;2;41E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;54E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;89E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;144E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;145E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;54E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;108E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;110E;K;11;$aalignmentD;K;6;CP$UIDd;3;111E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;112E;K;6;$afontD;K;6;CP$UIDd;3;101E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;94E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;94E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;95E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;113E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;140E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;111E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;2;89E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;2;95E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;2;95E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;2;95E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;115E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;112E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;111E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;2;95E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;2;95E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;113E;E;D;K;6;$classD;K;6;CP$UIDd;2;44E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;35E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;89E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;146E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;147E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;35E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;108E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;122E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;123E;K;11;$aalignmentD;K;6;CP$UIDd;3;112E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;89E;K;6;$afontD;K;6;CP$UIDd;3;101E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;94E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;94E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;95E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;89E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;111E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;2;89E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;148E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;125E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;2;95E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;126E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;2;89E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;113E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;112E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;89E;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;44E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;35E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;89E;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;35E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;108E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;122E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;123E;K;11;$aalignmentD;K;6;CP$UIDd;3;112E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;89E;K;6;$afontD;K;6;CP$UIDd;3;101E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;94E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;94E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;95E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;89E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;111E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;2;89E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;151E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;125E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;2;95E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;126E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;2;89E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;113E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;112E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;89E;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;41E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;35E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;89E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;152E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;153E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;35E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;108E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;110E;K;11;$aalignmentD;K;6;CP$UIDd;3;112E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;112E;K;6;$afontD;K;6;CP$UIDd;3;101E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;94E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;94E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;95E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;113E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;154E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;111E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;2;89E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;2;95E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;2;95E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;2;95E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;115E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;112E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;112E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;2;95E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;2;95E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;113E;E;D;K;10;$classnameS;9;CPStepperK;8;$classesA;S;9;CPStepperS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;59E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;35E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;89E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;155E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;156E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;35E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;108E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;157E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;110E;K;11;$aalignmentD;K;6;CP$UIDd;2;89E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;89E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;94E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;94E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;95E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;89E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;158E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;2;89E;K;18;CPStepperIncrementD;K;6;CP$UIDd;3;159E;K;17;CPStepperMaxValueD;K;6;CP$UIDd;3;160E;K;19;CPStepperAutorepeatD;K;6;CP$UIDd;3;113E;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;61E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;35E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;89E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;161E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;162E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;35E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;108E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;163E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;110E;K;11;$aalignmentD;K;6;CP$UIDd;3;111E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;89E;K;6;$afontD;K;6;CP$UIDd;3;101E;K;16;$aimage-positionD;K;6;CP$UIDd;3;112E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;94E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;94E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;95E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;89E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;111E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;2;89E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;164E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;125E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;2;95E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;159E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;159E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;113E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;112E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;89E;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;41E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;35E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;89E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;165E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;166E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;35E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;108E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;110E;K;11;$aalignmentD;K;6;CP$UIDd;3;112E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;112E;K;6;$afontD;K;6;CP$UIDd;3;101E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;94E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;94E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;95E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;113E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;154E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;111E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;2;89E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;2;95E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;2;95E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;2;95E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;115E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;112E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;112E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;2;95E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;2;95E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;113E;E;D;K;6;$classD;K;6;CP$UIDd;2;59E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;35E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;89E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;167E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;156E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;35E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;108E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;157E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;110E;K;11;$aalignmentD;K;6;CP$UIDd;2;89E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;89E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;94E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;94E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;95E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;89E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;158E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;2;89E;K;18;CPStepperIncrementD;K;6;CP$UIDd;3;159E;K;17;CPStepperMaxValueD;K;6;CP$UIDd;3;160E;K;19;CPStepperAutorepeatD;K;6;CP$UIDd;3;113E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;168E;E;D;K;10;$classnameS;16;CPViewControllerK;8;$classesA;S;16;CPViewControllerS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;66E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;23;CPViewControllerViewKeyD;K;6;CP$UIDd;1;0E;K;24;CPViewControllerTitleKeyD;K;6;CP$UIDd;3;169E;K;26;CPViewControllerCibNameKeyD;K;6;CP$UIDd;3;170E;K;25;CPViewControllerBundleKeyD;K;6;CP$UIDd;1;0E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;33E;E;E;S;8;delegateS;21;initialFirstResponderS;18;fromViewControllerS;13;insertStepperS;10;nibTabViewS;15;nibTabViewEmptyS;13;removeStepperS;14;viewControllerS;11;changeView:S;17;takeIntValueFrom:S;18;insertTabViewItem:S;18;removeTabViewItem:S;32;{10000000000000, 10000000000000}S;8;CPWindowd;10;1946157056S;23;{{110, 20}, {950, 440}}S;22;{{0, 0}, {1680, 1027}}d;2;15S;6;Windowd;1;0S;20;{{0, 0}, {950, 440}}D;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;2;37E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;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;60E;D;K;6;CP$UIDd;2;62E;E;E;d;2;18S;6;normalS;6;{1, 1}F;S;23;{{478, 48}, {454, 345}}S;20;{{0, 0}, {454, 345}}d;2;51D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;39E;E;E;D;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;100E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;171E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;118E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;95E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;2;95E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;2;95E;E;S;6;Item 0S;22;{{10, 33}, {434, 299}}S;20;{{0, 0}, {434, 299}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;42E;E;E;S;22;{{200, 133}, {39, 17}}S;18;{{0, 0}, {39, 17}}d;2;36S;9;textfieldS;18;controlSizeRegulard;1;4d;1;2T;D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;114E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;172E;E;S;23;{{596, 409}, {218, 17}}S;19;{{0, 0}, {218, 17}}d;2;13S;33;A Tab View Item Sould be SelectedS;23;{{159, 408}, {162, 25}}S;19;{{0, 0}, {162, 25}}S;6;buttonS;27;bordered+controlSizeRegularS;20;Replace Current ViewS;0;d;2;14S;22;{{13, 48}, {454, 345}}d;2;54D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;50E;E;E;S;1;1S;3;TabD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;49E;E;E;S;22;{{200, 133}, {22, 17}}S;18;{{0, 0}, {22, 17}}S;12;unselectableS;14;Not SelectableD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;52E;E;E;S;22;{{172, 133}, {91, 17}}S;18;{{0, 0}, {91, 17}}S;4;ViewD;K;10;$classnameS;20;_CPCibCustomResourceK;8;$classesA;S;20;_CPCibCustomResourceS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;141E;K;32;_CPCibCustomResourceClassNameKeyD;K;6;CP$UIDd;3;173E;K;35;_CPCibCustomResourceResourceNameKeyD;K;6;CP$UIDd;3;174E;K;33;_CPCibCustomResourcePropertiesKeyD;K;6;CP$UIDd;3;176E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;55E;E;E;S;22;{{200, 133}, {29, 17}}S;18;{{0, 0}, {29, 17}}S;21;{{20, 11}, {182, 25}}S;19;{{0, 0}, {182, 25}}S;25;InsertTabViewItemAtIndex:S;22;{{460, 11}, {192, 25}}S;19;{{0, 0}, {192, 25}}S;25;removeTabViewItemAtIndex:S;21;{{655, 12}, {27, 20}}S;18;{{0, 0}, {27, 20}}S;1;0S;18;{{685, 9}, {0, 0}}S;16;{{0, 0}, {0, 0}}S;7;stepperd;5;65540d;1;1d;3;100S;22;{{285, 13}, {159, 21}}S;19;{{0, 0}, {159, 21}}S;9;check-boxS;20;From View controllerS;21;{{200, 13}, {27, 19}}S;18;{{0, 0}, {27, 19}}S;19;{{226, 10}, {0, 0}}S;13;AppControllerS;15;VIEW CONTROLLERS;11;TabViewItemS;29;.Helvetica Neue DeskInterfaceD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;177E;D;K;6;CP$UIDd;3;177E;D;K;6;CP$UIDd;3;177E;D;K;6;CP$UIDd;3;159E;E;E;S;7;CPImageS;13;CPAddTemplateD;K;10;$classnameS;12;CPDictionaryK;8;$classesA;S;12;CPDictionaryS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;175E;K;10;CP.objectsD;K;4;sizeD;K;6;CP$UIDd;3;179E;K;16;bundleIdentifierD;K;6;CP$UIDd;3;125E;K;9;frameworkD;K;6;CP$UIDd;3;125E;E;E;f;18;0.6862745098039216D;K;10;$classnameS;21;_CPKeyedArchiverValueK;8;$classesA;S;21;_CPKeyedArchiverValueS;7;CPValueS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;178E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;180E;E;S;22;{"width":0,"height":0}E;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;0E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;0E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;4E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;0E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;1;7E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;1;9E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;11E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;13E;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;15E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;17E;D;K;6;CP$UIDd;2;18E;D;K;6;CP$UIDd;2;19E;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;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;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;30E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;1;0E;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;1;0E;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;1;0E;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;1;0E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;1;0E;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;1;0E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;62E;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;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;37E;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;37E;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;35E;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;35E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;62E;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;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;63E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;12E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;2;64E;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;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;31E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;65E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;33E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;37E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;66E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;31E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;61E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;67E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;31E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;37E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;68E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;31E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;49E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;69E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;31E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;62E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;70E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;37E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;31E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;65E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;49E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;31E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;65E;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;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;54E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;31E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;71E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;61E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;55E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;72E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;56E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;31E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;73E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;57E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;31E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;74E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;62E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;58E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;72E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;59E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;31E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;75E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;63E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;76E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;32E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;2;77E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;2;78E;K;30;_CPCibWindowTemplateWTFlagsKeyD;K;6;CP$UIDd;2;79E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;2;80E;K;33;_CPCibWindowTemplateScreenRectKeyD;K;6;CP$UIDd;2;81E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;2;82E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;2;83E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;35E;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;34E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;84E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;85E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;85E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;86E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;87E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;88E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;89E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;89E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;90E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;2;91E;E;D;K;10;$classnameS;9;CPTabViewK;8;$classesA;S;9;CPTabViewS;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;35E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;84E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;92E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;93E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;35E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;94E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;88E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;89E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;89E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;90E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;2;95E;K;17;CPTabViewItemsKeyD;K;6;CP$UIDd;2;96E;K;24;CPTabViewSelectedItemKeyD;K;6;CP$UIDd;2;39E;K;16;CPTabViewTypeKeyD;K;6;CP$UIDd;2;84E;K;16;CPTabViewFontKeyD;K;6;CP$UIDd;2;98E;K;20;CPTabViewDelegateKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;13;CPTabViewItemK;8;$classesA;S;13;CPTabViewItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;38E;K;26;CPTabViewItemIdentifierKeyD;K;6;CP$UIDd;2;99E;K;21;CPTabViewItemLabelKeyD;K;6;CP$UIDd;3;100E;K;21;CPTabViewItemImageKeyD;K;6;CP$UIDd;1;0E;K;20;CPTabViewItemViewKeyD;K;6;CP$UIDd;2;40E;K;23;CPTabViewItemAuxViewKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;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;2;84E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;101E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;102E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;103E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;87E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;88E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;89E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;89E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;90E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;104E;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;41E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;40E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;84E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;105E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;106E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;40E;K;22;CPViewAutoresizingMaskD;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;6;$afontD;K;6;CP$UIDd;2;98E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;110E;K;11;$aalignmentD;K;6;CP$UIDd;3;111E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;89E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;89E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;90E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;112E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;113E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;100E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;111E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;2;84E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;3;114E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;2;90E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;2;90E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;2;90E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;116E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;110E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;111E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;2;90E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;2;90E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;113E;E;D;K;6;$classD;K;6;CP$UIDd;2;38E;K;26;CPTabViewItemIdentifierKeyD;K;6;CP$UIDd;1;0E;K;21;CPTabViewItemLabelKeyD;K;6;CP$UIDd;3;117E;K;21;CPTabViewItemImageKeyD;K;6;CP$UIDd;3;119E;K;20;CPTabViewItemViewKeyD;K;6;CP$UIDd;2;44E;K;23;CPTabViewItemAuxViewKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;84E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;101E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;102E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;120E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;87E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;88E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;89E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;89E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;90E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;121E;E;D;K;6;$classD;K;6;CP$UIDd;2;41E;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;2;84E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;122E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;123E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;44E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;124E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;108E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;109E;K;6;$afontD;K;6;CP$UIDd;2;98E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;110E;K;11;$aalignmentD;K;6;CP$UIDd;3;111E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;89E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;89E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;90E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;125E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;113E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;117E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;111E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;2;84E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;3;114E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;2;90E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;2;90E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;2;90E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;116E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;110E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;111E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;2;90E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;2;90E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;113E;E;D;K;6;$classD;K;6;CP$UIDd;2;38E;K;26;CPTabViewItemIdentifierKeyD;K;6;CP$UIDd;3;126E;K;21;CPTabViewItemLabelKeyD;K;6;CP$UIDd;3;127E;K;21;CPTabViewItemImageKeyD;K;6;CP$UIDd;1;0E;K;20;CPTabViewItemViewKeyD;K;6;CP$UIDd;2;47E;K;23;CPTabViewItemAuxViewKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;84E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;101E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;102E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;128E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;87E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;88E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;89E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;89E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;90E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;129E;E;D;K;6;$classD;K;6;CP$UIDd;2;41E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;47E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;84E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;130E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;131E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;47E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;124E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;108E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;109E;K;6;$afontD;K;6;CP$UIDd;2;98E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;110E;K;11;$aalignmentD;K;6;CP$UIDd;3;111E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;89E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;89E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;90E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;132E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;113E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;127E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;111E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;2;84E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;3;114E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;2;90E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;2;90E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;2;90E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;116E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;110E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;111E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;2;90E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;2;90E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;113E;E;D;K;6;$classD;K;6;CP$UIDd;2;36E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;35E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;84E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;133E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;134E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;35E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;135E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;88E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;89E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;89E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;90E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;136E;K;17;CPTabViewItemsKeyD;K;6;CP$UIDd;3;137E;K;24;CPTabViewSelectedItemKeyD;K;6;CP$UIDd;2;50E;K;16;CPTabViewTypeKeyD;K;6;CP$UIDd;2;84E;K;16;CPTabViewFontKeyD;K;6;CP$UIDd;2;98E;K;20;CPTabViewDelegateKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;38E;K;26;CPTabViewItemIdentifierKeyD;K;6;CP$UIDd;1;0E;K;21;CPTabViewItemLabelKeyD;K;6;CP$UIDd;3;138E;K;21;CPTabViewItemImageKeyD;K;6;CP$UIDd;1;0E;K;20;CPTabViewItemViewKeyD;K;6;CP$UIDd;2;51E;K;23;CPTabViewItemAuxViewKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;49E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;84E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;139E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;140E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;141E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;87E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;88E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;89E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;89E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;90E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;142E;E;D;K;6;$classD;K;6;CP$UIDd;2;41E;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;2;84E;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;51E;K;22;CPViewAutoresizingMaskD;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;6;$afontD;K;6;CP$UIDd;2;98E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;110E;K;11;$aalignmentD;K;6;CP$UIDd;3;111E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;89E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;89E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;90E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;145E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;113E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;146E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;111E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;2;84E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;3;114E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;2;90E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;2;90E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;2;90E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;116E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;110E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;111E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;2;90E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;2;90E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;113E;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;53E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;35E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;84E;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;35E;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;15;$aimage-scalingD;K;6;CP$UIDd;2;84E;K;6;$afontD;K;6;CP$UIDd;3;152E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;84E;K;11;$aalignmentD;K;6;CP$UIDd;3;110E;K;7;$aimageD;K;6;CP$UIDd;3;154E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;89E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;89E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;90E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;155E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;84E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;111E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;2;84E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;3;114E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;156E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;157E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;2;90E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;158E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;2;84E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;113E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;110E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;84E;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;41E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;35E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;84E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;159E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;160E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;35E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;124E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;108E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;109E;K;6;$afontD;K;6;CP$UIDd;3;161E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;110E;K;11;$aalignmentD;K;6;CP$UIDd;3;110E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;89E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;89E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;90E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;162E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;113E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;163E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;111E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;2;84E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;3;114E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;2;90E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;2;90E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;2;90E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;116E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;110E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;110E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;2;90E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;2;90E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;113E;E;D;K;6;$classD;K;6;CP$UIDd;2;53E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;35E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;84E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;164E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;165E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;35E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;124E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;150E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;151E;K;15;$aimage-scalingD;K;6;CP$UIDd;2;84E;K;6;$afontD;K;6;CP$UIDd;3;152E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;84E;K;11;$aalignmentD;K;6;CP$UIDd;3;110E;K;7;$aimageD;K;6;CP$UIDd;3;166E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;89E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;89E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;90E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;167E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;84E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;111E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;2;84E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;3;114E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;168E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;157E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;2;90E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;158E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;2;84E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;113E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;110E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;84E;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;53E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;35E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;84E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;169E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;170E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;35E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;124E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;150E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;151E;K;15;$aimage-scalingD;K;6;CP$UIDd;2;84E;K;6;$afontD;K;6;CP$UIDd;3;152E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;84E;K;11;$aalignmentD;K;6;CP$UIDd;3;110E;K;7;$aimageD;K;6;CP$UIDd;3;171E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;89E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;89E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;90E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;172E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;84E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;111E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;2;84E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;3;114E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;173E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;157E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;2;90E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;158E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;2;84E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;113E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;110E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;84E;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;41E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;35E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;84E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;174E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;175E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;35E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;124E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;108E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;109E;K;6;$afontD;K;6;CP$UIDd;3;176E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;110E;K;11;$aalignmentD;K;6;CP$UIDd;3;110E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;89E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;89E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;90E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;177E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;113E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;163E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;111E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;2;84E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;3;114E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;2;90E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;2;90E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;2;90E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;116E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;110E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;110E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;2;90E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;2;90E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;3;113E;E;D;K;6;$classD;K;6;CP$UIDd;2;53E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;35E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;84E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;178E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;179E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;35E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;124E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;150E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;151E;K;15;$aimage-scalingD;K;6;CP$UIDd;2;84E;K;6;$afontD;K;6;CP$UIDd;3;152E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;84E;K;11;$aalignmentD;K;6;CP$UIDd;3;110E;K;7;$aimageD;K;6;CP$UIDd;3;180E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;89E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;89E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;90E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;181E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;84E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;111E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;2;84E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;3;114E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;182E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;157E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;2;90E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;158E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;2;84E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;113E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;110E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;84E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;9;CPStepperK;8;$classesA;S;9;CPStepperS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;60E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;35E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;84E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;183E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;184E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;35E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;124E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;185E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;109E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;84E;K;11;$aalignmentD;K;6;CP$UIDd;2;84E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;89E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;89E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;90E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;186E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;84E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;187E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;2;84E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;3;114E;K;18;CPStepperIncrementD;K;6;CP$UIDd;3;188E;K;17;CPStepperMaxValueD;K;6;CP$UIDd;3;189E;K;19;CPStepperAutorepeatD;K;6;CP$UIDd;3;113E;E;D;K;6;$classD;K;6;CP$UIDd;2;60E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;35E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;84E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;190E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;184E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;35E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;124E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;185E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;109E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;84E;K;11;$aalignmentD;K;6;CP$UIDd;2;84E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;89E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;89E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;90E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;3;191E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;84E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;187E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;2;84E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;3;114E;K;18;CPStepperIncrementD;K;6;CP$UIDd;3;188E;K;17;CPStepperMaxValueD;K;6;CP$UIDd;3;189E;K;19;CPStepperAutorepeatD;K;6;CP$UIDd;3;113E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;33E;E;E;S;8;delegateS;21;initialFirstResponderS;13;insertStepperS;10;nibTabViewS;15;nibTabViewEmptyS;13;removeStepperS;11;changeView:S;17;takeIntValueFrom:S;18;insertTabViewItem:S;18;removeTabViewItem:S;32;insertViewControllerTabViewItem:S;13;AppControllerS;32;{10000000000000, 10000000000000}S;8;CPWindowd;10;1879048192S;24;{{110, -3}, {1105, 463}}S;22;{{0, 0}, {1680, 1027}}d;2;15S;6;Windowd;1;0S;21;{{0, 0}, {1105, 463}}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;49E;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;61E;D;K;6;CP$UIDd;2;62E;E;E;d;2;18S;6;normalS;6;{1, 1}F;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;23;{{257, 14}, {582, 434}}S;20;{{0, 0}, {582, 434}}d;2;54D;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;39E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;46E;E;E;D;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;97E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;192E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;114E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;90E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;2;90E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;113E;E;S;1;1S;3;TabS;22;{{10, 33}, {562, 388}}S;20;{{0, 0}, {562, 388}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;42E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;22;{{270, 179}, {22, 17}}S;18;{{0, 0}, {22, 17}}d;2;45S;9;textfieldS;18;controlSizeRegulard;1;2d;1;4D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;T;d;2;-1D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;115E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;193E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;194E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;88E;E;S;4;ViewD;K;10;$classnameS;20;_CPCibCustomResourceK;8;$classesA;S;20;_CPCibCustomResourceS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;118E;K;32;_CPCibCustomResourceClassNameKeyD;K;6;CP$UIDd;3;195E;K;35;_CPCibCustomResourceResourceNameKeyD;K;6;CP$UIDd;3;196E;K;33;_CPCibCustomResourcePropertiesKeyD;K;6;CP$UIDd;3;198E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;45E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;22;{{200, 133}, {29, 17}}S;18;{{0, 0}, {29, 17}}d;2;36D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;12;unselectableS;14;Not SelectableD;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;E;E;S;22;{{172, 133}, {91, 17}}S;18;{{0, 0}, {91, 17}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;23;{{846, 14}, {242, 434}}S;20;{{0, 0}, {242, 434}}d;2;51D;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;E;E;S;6;Item 0S;22;{{10, 33}, {222, 388}}S;20;{{0, 0}, {222, 388}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;52E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;21;{{2, 166}, {218, 17}}S;19;{{0, 0}, {218, 17}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;33;A Tab View Item Sould be SelectedS;22;{{21, 156}, {222, 25}}S;19;{{0, 0}, {222, 25}}d;2;13S;6;buttonS;27;bordered+controlSizeRegularD;K;6;$classD;K;6;CP$UIDd;2;97E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;192E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;114E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;113E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;2;90E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;113E;E;D;K;10;$classnameS;17;_CPThemeAttributeK;8;$classesA;S;17;_CPThemeAttributeS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;153E;K;4;nameD;K;6;CP$UIDd;3;199E;K;12;defaultValueD;K;6;CP$UIDd;3;201E;K;5;stateD;K;6;CP$UIDd;3;202E;K;5;valueD;K;6;CP$UIDd;3;203E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;20;Replace Current ViewS;0;d;2;14S;21;{{202, 35}, {23, 19}}S;18;{{0, 0}, {23, 19}}D;K;6;$classD;K;6;CP$UIDd;2;97E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;192E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;204E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;90E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;2;90E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;113E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;1;0S;21;{{21, 33}, {182, 25}}S;19;{{0, 0}, {182, 25}}D;K;6;$classD;K;6;CP$UIDd;3;153E;K;4;nameD;K;6;CP$UIDd;3;199E;K;12;defaultValueD;K;6;CP$UIDd;3;201E;K;5;stateD;K;6;CP$UIDd;3;202E;K;5;valueD;K;6;CP$UIDd;3;203E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;25;InsertTabViewItemAtIndex:S;22;{{20, 118}, {187, 25}}S;19;{{0, 0}, {187, 25}}D;K;6;$classD;K;6;CP$UIDd;3;153E;K;4;nameD;K;6;CP$UIDd;3;199E;K;12;defaultValueD;K;6;CP$UIDd;3;201E;K;5;stateD;K;6;CP$UIDd;3;202E;K;5;valueD;K;6;CP$UIDd;3;203E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;25;removeTabViewItemAtIndex:S;22;{{207, 121}, {16, 20}}S;18;{{0, 0}, {16, 20}}D;K;6;$classD;K;6;CP$UIDd;2;97E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;192E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;204E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;90E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;2;90E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;113E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;21;{{20, 74}, {221, 25}}S;19;{{0, 0}, {221, 25}}D;K;6;$classD;K;6;CP$UIDd;3;153E;K;4;nameD;K;6;CP$UIDd;3;199E;K;12;defaultValueD;K;6;CP$UIDd;3;201E;K;5;stateD;K;6;CP$UIDd;3;202E;K;5;valueD;K;6;CP$UIDd;3;203E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;29;Insert CPViewController basedS;19;{{221, 31}, {0, 0}}S;16;{{0, 0}, {0, 0}}S;7;stepperD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;d;5;65540d;1;1d;3;100S;20;{{223, 116}, {0, 0}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;28;_CPFontSystemFacePlaceholderD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;205E;D;K;6;CP$UIDd;3;205E;D;K;6;CP$UIDd;3;205E;D;K;6;CP$UIDd;3;188E;E;E;S;5;colorS;7;CPImageS;13;CPAddTemplateD;K;10;$classnameS;12;CPDictionaryK;8;$classesA;S;12;CPDictionaryS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;197E;K;10;CP.objectsD;K;9;frameworkD;K;6;CP$UIDd;3;157E;K;16;bundleIdentifierD;K;6;CP$UIDd;3;157E;K;4;sizeD;K;6;CP$UIDd;3;207E;E;E;S;5;imageD;K;10;$classnameS;6;CPNullK;8;$classesA;S;6;CPNullS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;200E;E;S;11;highlightedD;K;6;$classD;K;6;CP$UIDd;2;97E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;208E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;149E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;90E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;2;90E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;2;90E;E;d;2;16f;18;0.6862745098039216D;K;10;$classnameS;21;_CPKeyedArchiverValueK;8;$classesA;S;21;_CPKeyedArchiverValueS;7;CPValueS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;206E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;209E;E;S;18;.AppleSystemUIFontS;22;{"width":0,"height":0}E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/CPTabViewNib/Resources/MainMenu.xib b/Tests/Manual/CPTabViewNib/Resources/MainMenu.xib index a7ab1ba3b..4f4f2581e 100644 --- a/Tests/Manual/CPTabViewNib/Resources/MainMenu.xib +++ b/Tests/Manual/CPTabViewNib/Resources/MainMenu.xib @@ -1,1078 +1,209 @@ - - - - 1050 - 14C109 - 6751 - 1344.72 - 757.30 - - com.apple.InterfaceBuilder.CocoaPlugin - 6751 - - - NSButton - NSButtonCell - NSCustomObject - NSStepper - NSStepperCell - NSTabView - NSTabViewItem - NSTextField - NSTextFieldCell - NSView - NSViewController - NSWindowTemplate - - - com.apple.InterfaceBuilder.CocoaPlugin - - - PluginDependencyRecalculationVersion - - - - - NSApplication - - - FirstResponder - - - NSApplication - - - 15 - 2 - {{110, 567}, {950, 440}} - 1946157056 - Window - NSWindow - - - - - 274 - - - - 286 - {{13, 47}, {454, 345}} - - - - - 1 - - - 274 - - - - 268 - {{198, 149}, {26, 17}} - - - _NS:526 - {251, 750} - YES - - 68157504 - 272630784 - Tab - - YES - 13 - 1044 - - _NS:526 - - - 6 - System - controlColor - - 3 - MC42NjY2NjY2NjY3AA - - - - 6 - System - labelColor - - 3 - MAA - - - - NO - 1 - - - {{10, 33}, {434, 299}} - - - Tab - - - - - - - 274 - - - - 268 - {{198, 149}, {33, 17}} - - - - _NS:526 - {251, 750} - YES - - 68157504 - 272630784 - View - - _NS:526 - - - - - NO - 1 - - - {{10, 33}, {434, 299}} - - - - - View - - - - NSImage - NSAddTemplate - - - - unselectable - - - 274 - - - - 268 - {{170, 149}, {95, 17}} - - _NS:526 - {251, 750} - YES - - 68157504 - 272630784 - Not Selectable - - _NS:526 - - - - - NO - 1 - - - {{10, 33}, {434, 299}} - - - Not Selectable - - - - - - - 0 - YES - YES - - - - - - - 283 - {{478, 47}, {454, 345}} - - - - - - - 274 - - - - 268 - {{198, 149}, {43, 17}} - - - - _NS:526 - {251, 750} - YES - - 68157504 - 272630784 - Item 0 - - _NS:526 - - - - - NO - 1 - - - {{10, 33}, {434, 299}} - - - - - Item 0 - - - - - - - 0 - YES - YES - - - - - - - 293 - {{594, 14}, {222, 17}} - - - _NS:3944 - YES - - 68157504 - 272630784 - A Tab View Item Sould be Selected - - _NS:3944 - - - - 6 - System - controlTextColor - - - - NO - 1 - - - - 293 - {{153, 4}, {174, 32}} - - - - _NS:687 - YES - - 67108864 - 134217728 - Replace Current View - - _NS:687 - - -2038284288 - 129 - - - 200 - 25 - - NO - - - - 268 - {{198, 408}, {31, 19}} - - - - _NS:526 - {251, 750} - YES - - 68157504 - 138413056 - 0 - - _NS:526 - - - - - NO - 1 - - - - 268 - {{223, 405}, {19, 27}} - - - - _NS:1592 - YES - - 786464 - 0 - _NS:1592 - - 100 - 1 - YES - - NO - - - - 268 - {{14, 401}, {194, 32}} - - - - _NS:9 - YES - - 67108864 - 134217728 - InsertTabViewItemAtIndex: - - _NS:9 - - -2038284288 - 129 - - - 200 - 25 - - NO - - - - 268 - {{454, 401}, {204, 32}} - - - - _NS:9 - YES - - 67108864 - 134217728 - removeTabViewItemAtIndex: - - _NS:9 - - -2038284288 - 129 - - - 200 - 25 - - NO - - - - 268 - {{653, 408}, {31, 20}} - - - - _NS:526 - {251, 750} - YES - - 68157504 - 138413056 - 0 - - _NS:526 - - - - - NO - 1 - - - - 268 - {{682, 406}, {19, 27}} - - - - _NS:1592 - YES - - 786464 - 0 - _NS:1592 - - 100 - 1 - YES - - NO - - - - 268 - {{286, 408}, {149, 18}} - - - - _NS:9 - YES - - 67108864 - 268435456 - From View controller - - _NS:9 - - 1211912448 - 2 - - NSImage - NSSwitch - - - NSSwitch - - - - 200 - 25 - - NO - - - {950, 440} - - - - - {{0, 0}, {1680, 1027}} - {10000000000000, 10000000000000} - YES - - - AppController - - - TabViewItem - VIEW CONTROLLER - 0 - - - - - - - delegate - - - - 451 - - - - initialFirstResponder - - - - 492 - - - - changeView: - - - - 481 - - - - nibTabView - - - - 482 - - - - nibTabViewEmpty - - - - 486 - - - - viewController - - - - 494 - - - - insertStepper - - - - 513 - - - - insertTabViewItem: - - - - 514 - - - - removeTabViewItem: - - - - 523 - - - - removeStepper - - - - 524 - - - - fromViewController - - - - 527 - - - - delegate - - - - 477 - - - - delegate - - - - 487 - - - - takeIntValueFrom: - - - - 512 - - - - takeIntValueFrom: - - - - 522 - - - - - - 0 - - - - - - -2 - - - File's Owner - - - -1 - - - First Responder - - - -3 - - - Application - - - 371 - - - - - - - - 372 - - - - - - - - - - - - - - - - - - 450 - - - - - 460 - - - - - - - - - - 461 - - - - - - - - 462 - - - - - - - - 463 - - - - - - - - 464 - - - - - - - - 465 - - - - - - - - 475 - - - - - - - - 476 - - - - - 479 - - - - - - - - 480 - - - - - 488 - - - - - - - - 489 - - - - - - - - 490 - - - - - - - - 491 - - - - - - - - 493 - - - - - 495 - - - - - - - - 496 - - - - - 497 - - - - - - - - 498 - - - - - 499 - - - - - - - - 500 - - - - - 502 - - - - - - - - 503 - - - - - 506 - - - - - - - - 507 - - - - - 508 - - - - - - - - 509 - - - - - 510 - - - - - - - - 511 - - - - - 515 - - - - - - - - 516 - - - - - 518 - - - - - - - - 519 - - - - - - - - 520 - - - - - 521 - - - - - 525 - - - - - - - - 526 - - - - - - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {458, 371} - com.apple.InterfaceBuilder.CocoaPlugin - {{209, 447}, {480, 360}} - - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - - - - - 527 - - - - - AppController - NSObject - - id - id - id - - - - changeView: - id - - - insertTabViewItem: - id - - - removeTabViewItem: - id - - - - NSButton - NSStepper - NSTabView - NSTabView - NSStepper - NSViewController - - - - fromViewController - NSButton - - - insertStepper - NSStepper - - - nibTabView - NSTabView - - - nibTabViewEmpty - NSTabView - - - removeStepper - NSStepper - - - viewController - NSViewController - - - - IBProjectSource - ../.XcodeSupport/AppController.h - - - - - 0 - IBCocoaFramework - NO - - com.apple.InterfaceBuilder.CocoaPlugin.macosx - - - - com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 - - - YES - 3 - - {11, 11} - {15, 15} - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/Manual/CPTabViewNib/Resources/TabViewItem.cib b/Tests/Manual/CPTabViewNib/Resources/TabViewItem.cib index 722b30f60..7eefa00a3 100644 --- a/Tests/Manual/CPTabViewNib/Resources/TabViewItem.cib +++ b/Tests/Manual/CPTabViewNib/Resources/TabViewItem.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;0E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;0E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;4E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;0E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;1;7E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;1;9E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;11E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;13E;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;15E;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;16E;D;K;6;CP$UIDd;2;18E;D;K;6;CP$UIDd;2;20E;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;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;18E;D;K;6;CP$UIDd;2;20E;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;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;21E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;12E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;2;22E;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;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;18E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;23E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;24E;E;D;K;10;$classnameS;18;_CPCibClassSwapperK;8;$classesA;S;18;_CPCibClassSwapperS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;25E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;26E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;26E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;27E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;28E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;29E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;30E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;30E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;31E;K;30;_CPCibClassSwapperClassNameKeyD;K;6;CP$UIDd;2;32E;K;38;_CPCibClassSwapperOriginalClassNameKeyD;K;6;CP$UIDd;2;32E;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;19E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;18E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;25E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;33E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;34E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;18E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;35E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;36E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;37E;K;11;$aalignmentD;K;6;CP$UIDd;2;38E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;38E;K;6;$afontD;K;6;CP$UIDd;2;40E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;30E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;30E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;31E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;2;41E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;42E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;43E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;2;25E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;2;31E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;2;31E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;2;31E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;2;45E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;2;38E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;2;38E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;2;31E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;2;31E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;2;41E;E;S;16;CPViewControllerD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;4;viewS;13;CPApplicationd;1;0S;20;{{0, 0}, {406, 263}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;20E;E;E;d;2;18S;6;normalS;6;{1, 1}F;S;6;CPViewS;22;{{93, 118}, {220, 22}}S;19;{{0, 0}, {220, 22}}d;2;36S;9;textfieldS;26;bezeled+controlSizeRegulard;1;2D;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;39E;K;13;CPFontNameKeyD;K;6;CP$UIDd;2;46E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;2;47E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;31E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;2;31E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;2;31E;E;T;S;28;CPViewController TabViewItemd;1;4D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;44E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;2;48E;E;S;29;.Helvetica Neue DeskInterfaced;2;13D;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;49E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;49E;E;E;d;1;1E;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;0E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;0E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;4E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;0E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;1;7E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;1;9E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;11E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;13E;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;15E;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;16E;D;K;6;CP$UIDd;2;18E;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;1;0E;D;K;6;CP$UIDd;2;26E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;18E;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;11E;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;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;27E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;12E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;2;28E;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;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;18E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;29E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;30E;E;D;K;10;$classnameS;18;_CPCibClassSwapperK;8;$classesA;S;18;_CPCibClassSwapperS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;31E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;32E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;32E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;33E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;34E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;35E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;36E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;36E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;37E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;2;38E;K;30;_CPCibClassSwapperClassNameKeyD;K;6;CP$UIDd;2;39E;K;38;_CPCibClassSwapperOriginalClassNameKeyD;K;6;CP$UIDd;2;39E;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;2;19E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;18E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;31E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;32E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;32E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;40E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;18E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;41E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;42E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;35E;K;16;$acontent-marginD;K;6;CP$UIDd;2;44E;K;15;$acorner-radiusD;K;6;CP$UIDd;2;45E;K;14;$aborder-widthD;K;6;CP$UIDd;2;31E;K;18;$abackground-colorD;K;6;CP$UIDd;2;47E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;36E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;36E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;37E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;2;48E;K;12;CPBoxTypeKeyD;K;6;CP$UIDd;2;45E;K;18;CPBoxBorderTypeKeyD;K;6;CP$UIDd;2;49E;K;10;CPBoxTitleD;K;6;CP$UIDd;2;50E;K;18;CPBoxTitlePositionD;K;6;CP$UIDd;2;31E;K;14;CPBoxTitleViewD;K;6;CP$UIDd;1;0E;K;16;CPBoxContentViewD;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;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;31E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;51E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;52E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;53E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;20E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;41E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;35E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;36E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;36E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;37E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;2;54E;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;23E;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;31E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;55E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;56E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;22E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;57E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;58E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;59E;K;6;$afontD;K;6;CP$UIDd;2;61E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;62E;K;11;$aalignmentD;K;6;CP$UIDd;2;45E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;36E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;36E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;37E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;2;63E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;2;64E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;65E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;45E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;2;31E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;2;66E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;2;37E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;2;37E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;2;37E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;2;67E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;2;62E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;2;45E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;2;37E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;2;37E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;2;64E;E;D;K;10;$classnameS;20;CPCollectionViewItemK;8;$classesA;S;20;CPCollectionViewItemS;16;CPViewControllerS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;23;CPViewControllerViewKeyD;K;6;CP$UIDd;1;0E;K;24;CPViewControllerTitleKeyD;K;6;CP$UIDd;1;0E;K;26;CPViewControllerCibNameKeyD;K;6;CP$UIDd;2;68E;K;25;CPViewControllerBundleKeyD;K;6;CP$UIDd;1;0E;E;S;17;TabViewControllerD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;4;viewS;13;CPApplicationd;1;0S;20;{{0, 0}, {279, 203}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;20E;E;E;d;2;12S;6;normalS;6;{1, 1}F;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;6;CPViewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;22E;E;E;d;2;18S;3;boxD;K;10;$classnameS;21;_CPKeyedArchiverValueK;8;$classesA;S;21;_CPKeyedArchiverValueS;7;CPValueS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;43E;K;15;CPValueValueKeyD;K;6;CP$UIDd;2;69E;E;d;1;4D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;2;70E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;71E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;35E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;d;1;3S;3;BoxS;20;{{1, 1}, {277, 201}}S;20;{{0, 0}, {277, 201}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;24E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;21;{{20, 92}, {237, 17}}S;19;{{0, 0}, {237, 17}}d;2;45S;9;textfieldS;18;controlSizeRegularD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;60E;K;13;CPFontNameKeyD;K;6;CP$UIDd;2;72E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;2;66E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;37E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;2;37E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;2;64E;E;d;1;2D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;T;S;35;This view was loaded asynchronouslyd;2;-1D;K;6;$classD;K;6;CP$UIDd;2;46E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;2;73E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;71E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;35E;E;S;18;CollectionViewItemS;22;{"width":0,"height":0}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;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;E;E;S;5;colorS;28;_CPFontSystemFacePlaceholderD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;77E;E;E;f;12;0.2857067953f;12;0.5533504614f;12;0.7232067953d;1;1f;18;0.6862745098039216E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/CPTabViewNib/Resources/TabViewItem.xib b/Tests/Manual/CPTabViewNib/Resources/TabViewItem.xib index 529e412f1..161a087ba 100644 --- a/Tests/Manual/CPTabViewNib/Resources/TabViewItem.xib +++ b/Tests/Manual/CPTabViewNib/Resources/TabViewItem.xib @@ -1,31 +1,44 @@ - + - + + - + - + - - - + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + + diff --git a/Tests/Manual/CPTabViewNib/TabViewController.j b/Tests/Manual/CPTabViewNib/TabViewController.j new file mode 100644 index 000000000..a4285bbc1 --- /dev/null +++ b/Tests/Manual/CPTabViewNib/TabViewController.j @@ -0,0 +1,13 @@ +@implementation TabViewController : CPViewController +{ +} + +- (void)viewDidAppear +{ + CPLog.debug(_cmd); + var view = [self view]; + + [view setFrameSize:[[view superview] frameSize]]; +} + +@end diff --git a/Tools/XcodeCapp/XcodeCapp.xcodeproj/project.pbxproj b/Tools/XcodeCapp/XcodeCapp.xcodeproj/project.pbxproj index 350946963..59d960f67 100644 --- a/Tools/XcodeCapp/XcodeCapp.xcodeproj/project.pbxproj +++ b/Tools/XcodeCapp/XcodeCapp.xcodeproj/project.pbxproj @@ -31,8 +31,6 @@ 6841F2461AF98CE600CFE60E /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6841F2451AF98CE600CFE60E /* Images.xcassets */; }; 6841F26C1AF98DDD00CFE60E /* mod_pbxproj.py in Resources */ = {isa = PBXBuildFile; fileRef = 6841F2691AF98DDD00CFE60E /* mod_pbxproj.py */; }; 6841F26E1AF98DDD00CFE60E /* pbxprojModifier.py in Resources */ = {isa = PBXBuildFile; fileRef = 6841F26B1AF98DDD00CFE60E /* pbxprojModifier.py */; }; - 6841F27C1AF990C300CFE60E /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 6841F27A1AF990C300CFE60E /* Debug.xcconfig */; }; - 6841F27D1AF990C300CFE60E /* Release.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 6841F27B1AF990C300CFE60E /* Release.xcconfig */; }; 6841F2A51AF9932300CFE60E /* project.pbxproj in Resources */ = {isa = PBXBuildFile; fileRef = 6841F28A1AF9932300CFE60E /* project.pbxproj */; }; 6841F2B71AFA83D500CFE60E /* XCCUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 6841F2B61AFA83D500CFE60E /* XCCUserDefaults.m */; }; 6841F2BF1AFA965300CFE60E /* XCCTaskLauncher.m in Sources */ = {isa = PBXBuildFile; fileRef = 6841F2BE1AFA965300CFE60E /* XCCTaskLauncher.m */; }; @@ -324,7 +322,7 @@ 6841F2331AF98CE600CFE60E /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0630; + LastUpgradeCheck = 0800; ORGANIZATIONNAME = "cappuccino-project"; TargetAttributes = { 6841F23A1AF98CE600CFE60E = { @@ -364,10 +362,8 @@ 021B94671B20D1F800F12DDA /* OperationsView.xib in Resources */, 021B94711B20E31F00F12DDA /* SettingsView.xib in Resources */, 0258004B1B1E67090000EB7D /* supawhich in Resources */, - 6841F27C1AF990C300CFE60E /* Debug.xcconfig in Resources */, 6841F26E1AF98DDD00CFE60E /* pbxprojModifier.py in Resources */, 6841F2A51AF9932300CFE60E /* project.pbxproj in Resources */, - 6841F27D1AF990C300CFE60E /* Release.xcconfig in Resources */, 0257A65B1B3A2B0000015C1F /* MainMenu.xib in Resources */, 6841F26C1AF98DDD00CFE60E /* mod_pbxproj.py in Resources */, 021B94691B20D6FC00F12DDA /* ErrorsView.xib in Resources */, @@ -437,8 +433,10 @@ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "-"; @@ -447,6 +445,7 @@ DEPLOYMENT_LOCATION = YES; DSTROOT = /; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; @@ -462,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.7; + MACOSX_DEPLOYMENT_TARGET = 10.8; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -483,8 +482,10 @@ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "-"; @@ -502,7 +503,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.7; + MACOSX_DEPLOYMENT_TARGET = 10.8; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; }; @@ -518,6 +519,7 @@ INFOPLIST_FILE = XcodeCapp/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; MACOSX_DEPLOYMENT_TARGET = 10.7; + PRODUCT_BUNDLE_IDENTIFIER = org.cappuccino.xcodecapp; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; @@ -532,6 +534,7 @@ INFOPLIST_FILE = XcodeCapp/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; MACOSX_DEPLOYMENT_TARGET = 10.7; + PRODUCT_BUNDLE_IDENTIFIER = org.cappuccino.xcodecapp; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; diff --git a/Tools/XcodeCapp/XcodeCapp/AppDelegate.h b/Tools/XcodeCapp/XcodeCapp/AppDelegate.h index 0681f4678..cc9a28653 100644 --- a/Tools/XcodeCapp/XcodeCapp/AppDelegate.h +++ b/Tools/XcodeCapp/XcodeCapp/AppDelegate.h @@ -32,4 +32,4 @@ - (IBAction)openAbout:(id)aSender; - (IBAction)openPreferences:(id)aSender; -@end \ No newline at end of file +@end