make stats window wider; clean up the port code

This commit is contained in:
Mitchell Livingston 2007-12-18 20:59:55 +00:00
parent 9bac10d4a3
commit d2e57f4b54
3 changed files with 304 additions and 297 deletions

View File

@ -28,13 +28,13 @@
<object class="NSWindowTemplate" id="1005">
<int key="NSWindowStyleMask">7</int>
<int key="NSWindowBacking">2</int>
<string key="NSWindowRect">{{248, 575}, {269, 182}}</string>
<string key="NSWindowRect">{{104, 750}, {289, 182}}</string>
<int key="NSWTFlags">536870912</int>
<string key="NSWindowTitle">Statistics</string>
<string key="NSWindowClass">NSPanel</string>
<nil key="NSViewClass"/>
<string key="NSWindowContentMaxSize">{269, 182}</string>
<string key="NSWindowContentMinSize">{269, 182}</string>
<string key="NSWindowContentMaxSize">{289, 182}</string>
<string key="NSWindowContentMinSize">{289, 182}</string>
<object class="NSView" key="NSWindowView" id="1006">
<reference key="NSNextResponder"/>
<int key="NSvFlags">256</int>
@ -59,7 +59,7 @@
<reference key="NSControlView" ref="848189093"/>
<object class="NSColor" key="NSBackgroundColor" id="1062686007">
<int key="NSColorSpace">6</int>
<string key="NSCatalogName" id="3942744">System</string>
<string key="NSCatalogName" id="166075801">System</string>
<string key="NSColorName">controlColor</string>
<object class="NSColor" key="NSColor">
<int key="NSColorSpace">3</int>
@ -68,7 +68,7 @@
</object>
<object class="NSColor" key="NSTextColor" id="561189490">
<int key="NSColorSpace">6</int>
<reference key="NSCatalogName" ref="3942744"/>
<reference key="NSCatalogName" ref="166075801"/>
<string key="NSColorName">controlTextColor</string>
<object class="NSColor" key="NSColor">
<int key="NSColorSpace">3</int>
@ -131,7 +131,7 @@
<object class="NSTextField" id="703685169">
<reference key="NSNextResponder" ref="1006"/>
<int key="NSvFlags">298</int>
<string key="NSFrame">{{115, 148}, {134, 14}}</string>
<string key="NSFrame">{{115, 148}, {154, 14}}</string>
<reference key="NSSuperview" ref="1006"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
@ -148,7 +148,7 @@
<object class="NSTextField" id="253460222">
<reference key="NSNextResponder" ref="1006"/>
<int key="NSvFlags">298</int>
<string key="NSFrame">{{115, 116}, {134, 14}}</string>
<string key="NSFrame">{{115, 116}, {154, 14}}</string>
<reference key="NSSuperview" ref="1006"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
@ -165,7 +165,7 @@
<object class="NSTextField" id="536006120">
<reference key="NSNextResponder" ref="1006"/>
<int key="NSvFlags">298</int>
<string key="NSFrame">{{115, 84}, {134, 14}}</string>
<string key="NSFrame">{{115, 84}, {154, 14}}</string>
<reference key="NSSuperview" ref="1006"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
@ -182,7 +182,7 @@
<object class="NSTextField" id="941353735">
<reference key="NSNextResponder" ref="1006"/>
<int key="NSvFlags">298</int>
<string key="NSFrame">{{115, 52}, {134, 14}}</string>
<string key="NSFrame">{{115, 52}, {154, 14}}</string>
<reference key="NSSuperview" ref="1006"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
@ -216,7 +216,7 @@
<object class="NSTextField" id="857281737">
<reference key="NSNextResponder" ref="1006"/>
<int key="NSvFlags">298</int>
<string key="NSFrame">{{115, 20}, {134, 14}}</string>
<string key="NSFrame">{{115, 20}, {154, 14}}</string>
<reference key="NSSuperview" ref="1006"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
@ -233,7 +233,7 @@
<object class="NSTextField" id="431969193">
<reference key="NSNextResponder" ref="1006"/>
<int key="NSvFlags">298</int>
<string key="NSFrame">{{115, 132}, {134, 14}}</string>
<string key="NSFrame">{{115, 132}, {154, 14}}</string>
<reference key="NSSuperview" ref="1006"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
@ -250,7 +250,7 @@
<object class="NSTextField" id="550850235">
<reference key="NSNextResponder" ref="1006"/>
<int key="NSvFlags">298</int>
<string key="NSFrame">{{115, 100}, {134, 14}}</string>
<string key="NSFrame">{{115, 100}, {154, 14}}</string>
<reference key="NSSuperview" ref="1006"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
@ -267,7 +267,7 @@
<object class="NSTextField" id="892058372">
<reference key="NSNextResponder" ref="1006"/>
<int key="NSvFlags">298</int>
<string key="NSFrame">{{115, 68}, {134, 14}}</string>
<string key="NSFrame">{{115, 68}, {154, 14}}</string>
<reference key="NSSuperview" ref="1006"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
@ -283,15 +283,15 @@
</object>
<object class="NSTextField" id="1005247565">
<reference key="NSNextResponder" ref="1006"/>
<int key="NSvFlags">298</int>
<string key="NSFrame">{{115, 36}, {134, 14}}</string>
<int key="NSvFlags">300</int>
<string key="NSFrame">{{115, 36}, {154, 14}}</string>
<reference key="NSSuperview" ref="1006"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="29319324">
<int key="NSCellFlags">67239488</int>
<int key="NSCellFlags2">272631808</int>
<reference key="NSContents" ref="703543752"/>
<string key="NSContents">999 days 59 hr 59 min total</string>
<reference key="NSSupport" ref="920848338"/>
<reference key="NSControlView" ref="1005247565"/>
<reference key="NSBackgroundColor" ref="1062686007"/>
@ -299,13 +299,13 @@
</object>
</object>
</object>
<string key="NSFrameSize">{269, 182}</string>
<string key="NSFrameSize">{289, 182}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1680, 1028}}</string>
<string key="NSMinSize">{269, 204}</string>
<string key="NSMaxSize">{269, 204}</string>
<string key="NSMinSize">{289, 204}</string>
<string key="NSMaxSize">{289, 204}</string>
<string key="NSFrameAutosaveName">StatsWindow</string>
</object>
</object>
@ -712,14 +712,14 @@
<reference ref="621197936"/>
<reference ref="621197936"/>
<reference ref="621197936"/>
<string>{{104, 750}, {269, 182}}</string>
<integer value="1" id="9"/>
<string>{{281, 664}, {289, 182}}</string>
<integer value="1"/>
<string>{196, 240}</string>
<string>{{104, 750}, {269, 182}}</string>
<reference ref="9"/>
<reference ref="9"/>
<string id="142067237">{269, 182}</string>
<reference ref="142067237"/>
<string>{{281, 664}, {289, 182}}</string>
<integer value="1" id="5"/>
<reference ref="5"/>
<string>{289, 182}</string>
<string>{289, 182}</string>
<reference ref="621197936"/>
<reference ref="621197936"/>
<reference ref="621197936"/>
@ -776,32 +776,6 @@
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<reference key="className" ref="63895196"/>
<nil key="superclassName"/>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey" id="679799153">IBProjectSource</string>
<string key="minorKey">macosx/NSApplicationAdditions.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSMenu</string>
<nil key="superclassName"/>
@ -824,10 +798,140 @@
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<reference key="majorKey" ref="679799153"/>
<string key="majorKey" id="169764827">IBProjectSource</string>
<string key="minorKey">macosx/NSMenuAdditions.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<reference key="className" ref="63895196"/>
<nil key="superclassName"/>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<reference key="majorKey" ref="169764827"/>
<string key="minorKey">macosx/NSApplicationAdditions.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className" id="963274514">NSObject</string>
<nil key="superclassName"/>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<reference key="majorKey" ref="169764827"/>
<string key="minorKey">macosx/UKKQueue/UKFileWatcher.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<reference key="className" ref="963274514"/>
<nil key="superclassName"/>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<reference key="majorKey" ref="169764827"/>
<string key="minorKey">macosx/UKKQueue/UKKQueue.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<reference key="className" ref="963274514"/>
<nil key="superclassName"/>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<reference key="majorKey" ref="169764827"/>
<string key="minorKey">macosx/IPCController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<reference key="className" ref="963274514"/>
<nil key="superclassName"/>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<reference key="majorKey" ref="169764827"/>
<string key="minorKey">macosx/UKKQueue/UKMainThreadProxy.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">StatsWindowController</string>
<string key="superclassName">NSWindowController</string>
@ -868,114 +972,10 @@
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<reference key="majorKey" ref="679799153"/>
<reference key="majorKey" ref="169764827"/>
<string key="minorKey">macosx/StatsWindowController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className" id="963274514">NSObject</string>
<nil key="superclassName"/>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<reference key="majorKey" ref="679799153"/>
<string key="minorKey">macosx/UKKQueue/UKKQueue.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<reference key="className" ref="963274514"/>
<nil key="superclassName"/>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<reference key="majorKey" ref="679799153"/>
<string key="minorKey">macosx/IPCController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<reference key="className" ref="963274514"/>
<nil key="superclassName"/>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<reference key="majorKey" ref="679799153"/>
<string key="minorKey">macosx/UKKQueue/UKFileWatcher.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<reference key="className" ref="963274514"/>
<nil key="superclassName"/>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<reference key="majorKey" ref="679799153"/>
<string key="minorKey">macosx/UKKQueue/UKMainThreadProxy.h</string>
</object>
</object>
</object>
</object>
<int key="IBDocument.localizationMode">0</int>
@ -983,144 +983,145 @@
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<object class="NSMutableData" key="IBDocument.RunnableNib">
<bytes key="NS.bytes">YnBsaXN0MDDUAAEAAgADAAQABQAGAAkAClgkdmVyc2lvblQkdG9wWSRhcmNoaXZlclgkb2JqZWN0cxIA
AYag0QAHAAhdSUIub2JqZWN0ZGF0YYABXxAPTlNLZXllZEFyY2hpdmVyrxDJAAsADAAxADUANgA8AD0A
AYag0QAHAAhdSUIub2JqZWN0ZGF0YYABXxAPTlNLZXllZEFyY2hpdmVyrxDKAAsADAAxADUANgA8AD0A
QgBgAGEAYgBjAGMAZAALAHIAgwCPAJAAoAChAKkAqgCtALcAuAC5AL4AwADFAMYAyQDNANMA2wDcAOMA
5ADsAO0A9AD1AP0A/gEFAQYBDwEQARcBGAEgASEBKAEwATEBOAFAAUEBSAFQAVEBWAFZAWEBYgFpAXEB
cgF5AYEBggGJAZEBkgGZAaEBogGqAGMACwGuAbABsQGxAbIBswG2AboByAHQAdEB1QHaAdsB4AHhAeYB
5wHsAe0B8gHzAfgB+QH+Af8CBAIFAgoCCwIQAhECMwI2AjcCOQJbAn4CoQKiAqMCpAKlAqYCpwKoAqkC
qgKrAqwCrQKuAq8CsAKxArICswK0ArUCtgK3ArgCuQK6ArsCvAK9Ar4CvwLAAsECxALHAvUDIwMkAyUD
JgMnAygAvAMpAyoDKwMsAy0DLgMvAzADMQMyAzMDNAM1AzYDNwM4AzkDOgM7AzwDPQM+Az8DQANBA0ID
QwNEA0UAXAC0A0YAqANHA0gDSQNKA00DUANTVSRudWxs3xASAA0ADgAPABAAEQASABMAFAAVABYAFwAY
ABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwVk5TUm9vdFYkY2xh
c3NdTlNPYmplY3RzS2V5c18QD05TQ2xhc3Nlc1ZhbHVlc18QGU5TQWNjZXNzaWJpbGl0eU9pZHNWYWx1
ZXNdTlNDb25uZWN0aW9uc1tOU05hbWVzS2V5c1tOU0ZyYW1ld29ya11OU0NsYXNzZXNLZXlzWk5TT2lk
c0tleXNdTlNOYW1lc1ZhbHVlc18QGU5TQWNjZXNzaWJpbGl0eUNvbm5lY3RvcnNdTlNGb250TWFuYWdl
cl8QEE5TVmlzaWJsZVdpbmRvd3NfEA9OU09iamVjdHNWYWx1ZXNfEBdOU0FjY2Vzc2liaWxpdHlPaWRz
S2V5c1lOU05leHRPaWRcTlNPaWRzVmFsdWVzgAKAyIBvgJeAx4BXgHSABYCWgJiAdYDFgACABoBzgMYQ
NYCZ0gAOADIAMwA0W05TQ2xhc3NOYW1lgASAA18QFVN0YXRzV2luZG93Q29udHJvbGxlctIANwA4ADkA
OlgkY2xhc3Nlc1okY2xhc3NuYW1logA6ADteTlNDdXN0b21PYmplY3RYTlNPYmplY3RfEBBJQkNvY29h
RnJhbWV3b3Jr0gAOAD4APwBAWk5TLm9iamVjdHOAVqEAQYAH3xAPAEMADgBEAEUARgBHAEgASQBKAEsA
TABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgArXE5TV2luZG93Vmlld18QFk5TV2lu
ZG93Q29udGVudE1heFNpemVcTlNTY3JlZW5SZWN0XxATTlNGcmFtZUF1dG9zYXZlTmFtZV1OU1dpbmRv
d1RpdGxlWU5TV1RGbGFnc11OU1dpbmRvd0NsYXNzXxAWTlNXaW5kb3dDb250ZW50TWluU2l6ZVxOU1dp
bmRvd1JlY3RZTlNNYXhTaXplXxAPTlNXaW5kb3dCYWNraW5nXxARTlNXaW5kb3dTdHlsZU1hc2tZTlNN
aW5TaXplW05TVmlld0NsYXNzgA2AVYALgFGAVIAJEiAAAACACoAMgAiAUxACEAeAUoAAXxAYe3syNDgs
IDU3NX0sIHsyNjksIDE4Mn19WlN0YXRpc3RpY3NXTlNQYW5lbFp7MjY5LCAxODJ91wBlAA4AZgBnAGgA
aQBqAGsAbABtAG4AbwBrAHFfEA9OU05leHRSZXNwb25kZXJaTlNTdWJ2aWV3c1hOU3ZGbGFnc1tOU0Zy
YW1lU2l6ZVhOU1dpbmRvd1tOU1N1cGVydmlld4AOgFCADxEBAIBOgA6AT9IADgA+AHMAdIBNrgB1AHYA
dwB4AHkAegB7AHwAfQB+AH8AgACBAIKAEIAhgCWAKYAtgDGANIA3gDqAPoBBgESAR4BK2ABlAA4AhACF
AGcAhgBpAGoAUQCIAIkAigCLAIwAawBRV05TRnJhbWVWTlNDZWxsWU5TRW5hYmxlZIANgCCAEYASEQEM
CYAOgA1fEBV7ezU1LCAxNDh9LCB7NTksIDE0fX3YAJEADgCSAJMAlACVAJYAlwCYAJkAmgCbAJwAdQCe
AJ9bTlNDZWxsRmxhZ3NfEBFOU0JhY2tncm91bmRDb2xvclpOU0NvbnRlbnRzWU5TU3VwcG9ydF1OU0Nv
bnRyb2xWaWV3XE5TQ2VsbEZsYWdzMltOU1RleHRDb2xvchIEAf5AgB+AF4ATgBSAEBIQQAQAgBxZVXBs
b2FkZWQ61AAOAKIAowCkAKUApgCnAKhWTlNTaXplVk5TTmFtZVhOU2ZGbGFnc4AWI0AmAAAAAAAAgBUQ
EFxMdWNpZGFHcmFuZGXSADcAOACrAKyiAKwAO1ZOU0ZvbnTVAA4ArgCvALAAsQCyALMAtAC1ALZXTlND
b2xvclxOU0NvbG9yU3BhY2VbTlNDb2xvck5hbWVdTlNDYXRhbG9nTmFtZYAbgBoQBoAZgBhWU3lzdGVt
XGNvbnRyb2xDb2xvctMADgCvALoAsgC8AL1XTlNXaGl0ZYAbEANLMC42NjY2NjY2OQDSADcAOAC/AK6i
AK4AO9UADgCuAK8AsACxALIAwgC0AMMAtoAbgB6AHYAYXxAQY29udHJvbFRleHRDb2xvctMADgCvALoA
sgC8AMiAG0IwANIANwA4AMoAy6QAywDMAIUAO18QD05TVGV4dEZpZWxkQ2VsbFxOU0FjdGlvbkNlbGzS
ADcAOADOAM+lAM8A0ADRANIAO1tOU1RleHRGaWVsZFlOU0NvbnRyb2xWTlNWaWV3W05TUmVzcG9uZGVy
2ABlAA4AhACFAGcAhgBpAGoAUQCIANYA1wCLAIwAawBRgA2AIIAigCMJgA6ADV8QFXt7NDAsIDExNn0s
IHs3NCwgMTR9fdgAkQAOAJIAkwCUAJUAlgCXAJgAmQCaAN8AnAB2AJ4An4AfgBeAJIAUgCGAHFtEb3du
bG9hZGVkOtgAZQAOAIQAhQBnAIYAaQBqAFEAiADnAOgAiwCMAGsAUYANgCCAJoAnCYAOgA1fEBR7ezc5
LCA4NH0sIHszNSwgMTR9fdgAkQAOAJIAkwCUAJUAlgCXAJgAmQCaAPAAnAB3AJ4An4AfgBeAKIAUgCWA
HFZSYXRpbzrYAGUADgCEAIUAZwCGAGkAagBRAIgA+AD5AIsAjABrAFGADYAggCqAKwmADoANXxAUe3sz
MiwgNTJ9LCB7ODIsIDE0fX3YAJEADgCSAJMAlACVAJYAlwCYAJkAmgEBAJwAeACeAJ+AH4AXgCyAFIAp
gBxdUnVubmluZyBUaW1lOtgAZQAOAIQAhQBnAIYAaQBqAFEAiAEJAQoBCwCMAGsAUYANgCCALoAvEQEq
CYAOgA1fEBd7ezExNSwgMTQ4fSwgezEzNCwgMTR9fdgAkQAOAJIAkwCUAJUAlgCXAJgAmQCaARMAnAB5
AJ4An4AfgBeAMIAUgC2AHFVMYWJlbNgAZQAOAIQAhQBnAIYAaQBqAFEAiAEbARwBCwCMAGsAUYANgCCA
MoAzCYAOgA1fEBd7ezExNSwgMTE2fSwgezEzNCwgMTR9fdgAkQAOAJIAkwCUAJUAlgCXAJgAmQCaARMA
nAB6AJ4An4AfgBeAMIAUgDGAHNgAZQAOAIQAhQBnAIYAaQBqAFEAiAErASwBCwCMAGsAUYANgCCANYA2
CYAOgA1fEBZ7ezExNSwgODR9LCB7MTM0LCAxNH192ACRAA4AkgCTAJQAlQCWAJcAmACZAJoBEwCcAHsA
ngCfgB+AF4AwgBSANIAc2ABlAA4AhACFAGcAhgBpAGoAUQCIATsBPAELAIwAawBRgA2AIIA4gDkJgA6A
DV8QFnt7MTE1LCA1Mn0sIHsxMzQsIDE0fX3YAJEADgCSAJMAlACVAJYAlwCYAJkAmgETAJwAfACeAJ+A
H4AXgDCAFIA3gBzYAGUADgCEAIUAZwCGAGkAagBRAIgBSwFMAIsAjABrAFGADYAggDuAPAmADoANXxAU
e3syMCwgMjB9LCB7OTQsIDE0fX3YAJEADgCSAJMAlACVAJYAlwCYAJkAmgFUAJwAfQCeAJ+AH4AXgD2A
FIA6gBxfEBBQcm9ncmFtIFN0YXJ0ZWQ62ABlAA4AhACFAGcAhgBpAGoAUQCIAVwBXQELAIwAawBRgA2A
IIA/gEAJgA6ADV8QFnt7MTE1LCAyMH0sIHsxMzQsIDE0fX3YAJEADgCSAJMAlACVAJYAlwCYAJkAmgET
AJwAfgCeAJ+AH4AXgDCAFIA+gBzYAGUADgCEAIUAZwCGAGkAagBRAIgBbAFtAQsAjABrAFGADYAggEKA
QwmADoANXxAXe3sxMTUsIDEzMn0sIHsxMzQsIDE0fX3YAJEADgCSAJMAlACVAJYAlwCYAJkAmgETAJwA
fwCeAJ+AH4AXgDCAFIBBgBzYAGUADgCEAIUAZwCGAGkAagBRAIgBfAF9AQsAjABrAFGADYAggEWARgmA
DoANXxAXe3sxMTUsIDEwMH0sIHsxMzQsIDE0fX3YAJEADgCSAJMAlACVAJYAlwCYAJkAmgETAJwAgACe
AJ+AH4AXgDCAFIBEgBzYAGUADgCEAIUAZwCGAGkAagBRAIgBjAGNAQsAjABrAFGADYAggEiASQmADoAN
XxAWe3sxMTUsIDY4fSwgezEzNCwgMTR9fdgAkQAOAJIAkwCUAJUAlgCXAJgAmQCaARMAnACBAJ4An4Af
gBeAMIAUgEeAHNgAZQAOAIQAhQBnAIYAaQBqAFEAiAGcAZ0BCwCMAGsAUYANgCCAS4BMCYAOgA1fEBZ7
ezExNSwgMzZ9LCB7MTM0LCAxNH192ACRAA4AkgCTAJQAlQCWAJcAmACZAJoBEwCcAIIBqACfgB+AF4Aw
gBSAShIQQAgAgBzSADcAOAGrAayjAawBrQA7Xk5TTXV0YWJsZUFycmF5V05TQXJyYXnSADcAOAGvANGj
ANEA0gA7XxAWe3swLCAwfSwgezE2ODAsIDEwMjh9fVp7MjY5LCAyMDR9W1N0YXRzV2luZG930gA3ADgB
tAG1ogG1ADtfEBBOU1dpbmRvd1RlbXBsYXRl0gA3ADgBtwG4owG4AbkAO1xOU011dGFibGVTZXRVTlNT
ZXTSAA4APgBzAbyATasBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHgFiAW4BdgF+AYYBjgGWAZ4BpgGuAbdQA
DgHJAcoBywHMAH8AHwHPXU5TRGVzdGluYXRpb25YTlNTb3VyY2VXTlNMYWJlbIBagEGAAoBZXxARZlVw
bG9hZGVkQWxsRmllbGTSADcAOAHSAdOjAdMB1AA7XxAUTlNOaWJPdXRsZXRDb25uZWN0b3JeTlNOaWJD
b25uZWN0b3LUAA4ByQHKAcsBzAB5AB8B2YBagC2AAoBcXmZVcGxvYWRlZEZpZWxk1AAOAckBygHLAcwA
ggAfAd+AWoBKgAKAXl1mVGltZUFsbEZpZWxk1AAOAckBygHLAcwAgAAfAeWAWoBEgAKAYF8QE2ZEb3du
bG9hZGVkQWxsRmllbGTUAA4ByQHKAcsBzAB6AB8B64BagDGAAoBiXxAQZkRvd25sb2FkZWRGaWVsZNQA
DgHJAcoBywHMAHwAHwHxgFqAN4ACgGRaZlRpbWVGaWVsZNQADgHJAcoBywHMAHsAHwH3gFqANIACgGZb
ZlJhdGlvRmllbGTUAA4ByQHKAcsBzABBAB8B/YBagAeAAoBoVndpbmRvd9QADgHJAcoBywHMAIEAHwID
gFqAR4ACgGpeZlJhdGlvQWxsRmllbGTUAA4ByQHKAcsBzAAfAEECCYBagAKAB4BsWGRlbGVnYXRl1AAO
AckBygHLAcwAfgAfAg+AWoA+gAKAbl8QD2ZOdW1PcGVuZWRGaWVsZNIADgA+AhICE4ByrxAfAUwBHAB1
AH4CGADoAX0BPAGdAIoBbQB9AIEA+QCCAHoAewB3AEEAgAB8ASwAdgB4AH8AUQDXAHkBCgFdAY2APIAz
gBCAPoBwgCeARoA5gEyAEoBDgDqAR4ArgEqAMYA0gCWAB4BEgDeANoAhgCmAQYANgCOALYAvgECASdIA
DgAyADMCNYAEgHFdTlNBcHBsaWNhdGlvbtIANwA4AjgBraIBrQA70gAOAD4CEgI7gHKvEB8AfQB6AFEA
UQAfAHcAgAB8AIIAdQB/AFEAUQB4AFEAUQBRAFEAHwBRAFEAewBRAFEAUQBBAHYAUQB5AH4AgYA6gDGA
DYANgAKAJYBEgDeASoAQgEGADYANgCmADYANgA2ADYACgA2ADYA0gA2ADYANgAeAIYANgC2APoBH0gAO
AD4CEgJdgHKvECABTAEcAB8AdQB+AhgBnQDoAX0BPACKAW0AgQB9APkAggB6AHsAdwBBAIAAfAGNAHYA
eAB/AFEBXQB5ASwA1wEKgDyAM4ACgBCAPoBwgEyAJ4BGgDmAEoBDgEeAOoArgEqAMYA0gCWAB4BEgDeA
SYAhgCmAQYANgECALYA2gCOAL9IADgA+AhICgIByrxAgAoECggKDAoQChQKGAocCiAKJAooCiwKMAo0C
jgKPApACkQKSApMClAKVApYClwKYApkCmgKbApwCnQKeAp8CoIB2gHeAeIB5gHqAe4B8gH2AfoB/gICA
gYCCgIOAhICFgIaAh4CIgImAioCLgIyAjYCOgI+AkICRgJKAk4CUgJVfECJUZXh0IEZpZWxkIENlbGwg
KFByb2dyYW0gU3RhcnRlZDopXxAZVGV4dCBGaWVsZCBDZWxsIChMYWJlbCktM1xGaWxlJ3MgT3duZXJf
EBdTdGF0aWMgVGV4dCAoVXBsb2FkZWQ6KV8QE1N0YXRpYyBUZXh0IChMYWJlbClbQXBwbGljYXRpb25f
EBlUZXh0IEZpZWxkIENlbGwgKExhYmVsKS0yXxAYVGV4dCBGaWVsZCBDZWxsIChSYXRpbzopXxAZVGV4
dCBGaWVsZCBDZWxsIChMYWJlbCktNV8QGVRleHQgRmllbGQgQ2VsbCAoTGFiZWwpLTZfEBtUZXh0IEZp
ZWxkIENlbGwgKFVwbG9hZGVkOilfEBlUZXh0IEZpZWxkIENlbGwgKExhYmVsKS03XxAVU3RhdGljIFRl
eHQgKExhYmVsKS0xXxAeU3RhdGljIFRleHQgKFByb2dyYW0gU3RhcnRlZDopXxAfVGV4dCBGaWVsZCBD
ZWxsIChSdW5uaW5nIFRpbWU6KV8QFVN0YXRpYyBUZXh0IChMYWJlbCktMl8QFVN0YXRpYyBUZXh0IChM
YWJlbCktM18QFVN0YXRpYyBUZXh0IChMYWJlbCktNF8QFFN0YXRpYyBUZXh0IChSYXRpbzopXxAPV2lu
ZG93IChXaW5kb3cpXxAVU3RhdGljIFRleHQgKExhYmVsKS01XxAVU3RhdGljIFRleHQgKExhYmVsKS02
XxAZVGV4dCBGaWVsZCBDZWxsIChMYWJlbCktMV8QGVN0YXRpYyBUZXh0IChEb3dubG9hZGVkOilfEBtT
dGF0aWMgVGV4dCAoUnVubmluZyBUaW1lOilfEBVTdGF0aWMgVGV4dCAoTGFiZWwpLTdcQ29udGVudCBW
aWV3XxAXVGV4dCBGaWVsZCBDZWxsIChMYWJlbClfEBVTdGF0aWMgVGV4dCAoTGFiZWwpLThfEBlUZXh0
IEZpZWxkIENlbGwgKExhYmVsKS00XxAdVGV4dCBGaWVsZCBDZWxsIChEb3dubG9hZGVkOilfEBlUZXh0
IEZpZWxkIENlbGwgKExhYmVsKS040gAOAD4CEgLDgHKg0gAOAD4CEgLGgHKg0gAOAD4CEgLJgHKvECsB
TAG+AcEBxwEcAB8AdQB+AhgA6AF9ATwBnQG9Ab8BwACKAW0BwwHEAcUAfQCBAcYA+QCCAHoAewB3AEEA
gAB8ASwAdgB4AH8AUQDXAHkBCgFdAY0BwoA8gFuAYYBtgDOAAoAQgD6AcIAngEaAOYBMgFiAXYBfgBKA
Q4BlgGeAaYA6gEeAa4ArgEqAMYA0gCWAB4BEgDeANoAhgCmAQYANgCOALYAvgECASYBj0gAOAD4CEgL3
gHKvECsC+AL5AvoC+wL8Av0C/gL/AwADAQMCAwMDBAMFAwYDBwMIAwkDCgMLAwwDDQMOAw8DEAMRAxID
EwMUAxUDFgMXAxgDGQMaAxsDHAMdAx4DHwMgAyEDIoCagJuAnICdgJ6An4CggKGAooCjgKSApYCmgKeA
qICpgKqAq4CsgK2AroCvgLCAsYCygLOAtIC1gLaAt4C4gLmAuoC7gLyAvYC+gL+AwIDBgMKAw4DEECYQ
HxAgECcQEhA0ECQT//////////0QDBArEBYQLxAwEDMQMRAEECkQIRAdEDIQIxAsEB4QDhAuEBEQExAL
EAEQKhAVEBQQBRANECgQDxAlEC0QItIADgA+AHMDTIBNoNIADgA+AhIDT4ByoNIADgA+AhIDUoByoNIA
NwA4A1QDVaIDVQA7Xk5TSUJPYmplY3REYXRhAAgAGQAiACcAMQA6AD8ARABSAFQAZgH7AgECTAJTAloC
aAJ6ApYCpAKwArwCygLVAuMC/wMNAyADMgNMA1YDYwNlA2cDaQNrA20DbwNxA3MDdQN3A3kDewN9A38D
gQODA4UDhwOQA5wDngOgA7gDwQPKA9UD2gPpA/IEBQQOBBkEGwQeBCAEXwRsBIUEkgSoBLYEwATOBOcE
9AT+BRAFJAUuBToFPAU+BUAFQgVEBUYFSwVNBU8FUQVTBVUFVwVZBVsFdgWBBYkFlAWxBcMFzgXXBeMF
7AX4BfoF/AX+BgEGAwYFBgcGEAYSBi8GMQYzBjUGNwY5BjsGPQY/BkEGQwZFBkcGSQZLBmwGdAZ7BoUG
hwaJBosGjQaQBpEGkwaVBq0GzgbaBu4G+QcDBxEHHgcqBy8HMQczBzUHNwc5Bz4HQAdKB1sHYgdpB3IH
dAd9B38HgQeOB5cHnAejB7gHwAfNB9kH5wfpB+sH7QfvB/EH+AgFCBIIGggcCB4IKggzCDgITQhPCFEI
UwhVCGgIdQh3CHoIgwiMCJ4Iqwi0CL8IywjVCNwI6AkJCQsJDQkPCREJEgkUCRYJLglPCVEJUwlVCVcJ
WQlbCWcJiAmKCYwJjgmQCZEJkwmVCawJzQnPCdEJ0wnVCdcJ2QngCgEKAwoFCgcKCQoKCgwKDgolCkYK
SApKCkwKTgpQClIKYAqBCoMKhQqHCokKjAqNCo8KkQqrCswKzgrQCtIK1ArWCtgK3gr/CwELAwsFCwcL
CAsKCwwLJgtHC0kLSwtNC08LUQtTC3QLdgt4C3oLfAt9C38LgQuaC7sLvQu/C8ELwwvFC8cL6AvqC+wL
7gvwC/EL8wv1DA4MLwwxDDMMNQw3DDkMOwxcDF4MYAxiDGQMZQxnDGkMgAyhDKMMpQynDKkMqwytDMAM
4QzjDOUM5wzpDOoM7AzuDQcNKA0qDSwNLg0wDTINNA1VDVcNWQ1bDV0NXg1gDWINfA2dDZ8NoQ2jDaUN
pw2pDcoNzA3ODdAN0g3TDdUN1w3xDhIOFA4WDhgOGg4cDh4OPw5BDkMORQ5HDkgOSg5MDmUOhg6IDooO
jA6ODpAOkg6zDrUOtw65DrsOvA6+DsAO2Q76DvwO/g8ADwIPBA8JDwsPFA8bDyoPMg87D0IPWw9mD3IP
ew+AD5MPnA+jD7APtg+/D8EP2A/aD9wP3g/gD+IP5A/mD+gP6g/sD+4P/xANEBYQHhAgECIQJBAmEDoQ
QxBKEGEQcBCBEIMQhRCHEIkQmBCpEKsQrRCvELEQvxDQENIQ1BDWENgQ7hD/EQERAxEFEQcRGhErES0R
LxExETMRPhFPEVERUxFVEVcRYxF0EXYReBF6EXwRgxGUEZYRmBGaEZwRqxG8Eb4RwBHCEcQRzRHeEeAR
4hHkEeYR+BIBEgMSRBJGEkgSShJMEk4SUBJSElQSVhJYEloSXBJeEmASYhJkEmYSaBJqEmwSbhJwEnIS
dBJ2EngSehJ8En4SgBKCEosSjRKPEp0SphKrErQSthL3EvkS+xL9Ev8TARMDEwUTBxMJEwsTDRMPExET
ExMVExcTGRMbEx0THxMhEyMTJRMnEykTKxMtEy8TMRMzEzUTPhNAE4MThROHE4kTixONE48TkROTE5UT
lxOZE5sTnROfE6EToxOlE6cTqROrE60TrxOxE7MTtRO3E7kTuxO9E78TwRPDE8wTzhQRFBMUFRQXFBkU
GxQdFB8UIRQjFCUUJxQpFCsULRQvFDEUMxQ1FDcUORQ7FD0UPxRBFEMURRRHFEkUSxRNFE8UURR2FJIU
nxS5FM8U2xT3FRIVLhVKFWgVhBWcFb0V3xX3Fg8WJxY+FlAWaBaAFpwWuBbWFu4W+xcVFy0XSRdpF4UX
jheQF5EXmhecF50XpheoGAEYAxgFGAcYCRgLGA0YDxgRGBMYFRgXGBkYGxgdGB8YIRgjGCUYJxgpGCsY
LRgvGDEYMxg1GDcYORg7GD0YPxhBGEMYRRhHGEkYSxhNGE8YURhTGFUYVxhgGGIYuxi9GL8YwRjDGMUY
xxjJGMsYzRjPGNEY0xjVGNcY2RjbGN0Y3xjhGOMY5RjnGOkY6xjtGO8Y8RjzGPUY9xj5GPsY/Rj/GQEZ
AxkFGQcZCRkLGQ0ZDxkRGRMZFRkXGRkZGxkdGR8ZKBkqGSwZLhkwGTIZNBk2GTgZOhk8GT4ZQBlCGUQZ
RhlIGUoZTBlOGVAZUhlUGVYZWBlaGVwZXhlgGWIZZBlmGW8ZcRlyGXsZfRl+GYcZiRmKGZMZmAAAAAAA
AAICAAAAAAAAA1YAAAAAAAAAAAAAAAAAABmnA</bytes>
cgF5AYEBggGJAZEBkgGZAaIBowGrAawAYwALAbABsgGzAbMBtAG1AbgBvAHKAdIB0wHXAdwB3QHiAeMB
6AHpAe4B7wH0AfUB+gH7AgACAQIGAgcCDAINAhICEwI1AjgCOQI7Al0CgAKjAqQCpQKmAqcCqAKpAqoC
qwKsAq0CrgKvArACsQKyArMCtAK1ArYCtwK4ArkCugK7ArwCvQK+Ar8CwALBAsICwwLGAskC9wMlAyYD
JwMoAykDKgMrAywAtAMtAy4DLwMwAKgDMQMyAzMDNAM1AzYAXAM3AzgDOQM6AzsDPAM9Az4DPwNAA0EA
vANCA0MDRANFA0YDRwNIA0kDSgNLA0wDTwNSA1VVJG51bGzfEBIADQAOAA8AEAARABIAEwAUABUAFgAX
ABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADBWTlNSb290ViRj
bGFzc11OU09iamVjdHNLZXlzXxAPTlNDbGFzc2VzVmFsdWVzXxAZTlNBY2Nlc3NpYmlsaXR5T2lkc1Zh
bHVlc11OU0Nvbm5lY3Rpb25zW05TTmFtZXNLZXlzW05TRnJhbWV3b3JrXU5TQ2xhc3Nlc0tleXNaTlNP
aWRzS2V5c11OU05hbWVzVmFsdWVzXxAZTlNBY2Nlc3NpYmlsaXR5Q29ubmVjdG9yc11OU0ZvbnRNYW5h
Z2VyXxAQTlNWaXNpYmxlV2luZG93c18QD05TT2JqZWN0c1ZhbHVlc18QF05TQWNjZXNzaWJpbGl0eU9p
ZHNLZXlzWU5TTmV4dE9pZFxOU09pZHNWYWx1ZXOAAoDJgHCAmIDIgFiAdYAFgJeAmYB2gMaAAIAGgHSA
xxA1gJrSAA4AMgAzADRbTlNDbGFzc05hbWWABIADXxAVU3RhdHNXaW5kb3dDb250cm9sbGVy0gA3ADgA
OQA6WCRjbGFzc2VzWiRjbGFzc25hbWWiADoAO15OU0N1c3RvbU9iamVjdFhOU09iamVjdF8QEElCQ29j
b2FGcmFtZXdvcmvSAA4APgA/AEBaTlMub2JqZWN0c4BXoQBBgAffEA8AQwAOAEQARQBGAEcASABJAEoA
SwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeACtcTlNXaW5kb3dWaWV3XxAWTlNX
aW5kb3dDb250ZW50TWF4U2l6ZVxOU1NjcmVlblJlY3RfEBNOU0ZyYW1lQXV0b3NhdmVOYW1lXU5TV2lu
ZG93VGl0bGVZTlNXVEZsYWdzXU5TV2luZG93Q2xhc3NfEBZOU1dpbmRvd0NvbnRlbnRNaW5TaXplXE5T
V2luZG93UmVjdFlOU01heFNpemVfEA9OU1dpbmRvd0JhY2tpbmdfEBFOU1dpbmRvd1N0eWxlTWFza1lO
U01pblNpemVbTlNWaWV3Q2xhc3OADYBWgAuAUoBVgAkSIAAAAIAKgAyACIBUEAIQB4BTgABfEBh7ezEw
NCwgNzUwfSwgezI4OSwgMTgyfX1aU3RhdGlzdGljc1dOU1BhbmVsWnsyODksIDE4Mn3XAGUADgBmAGcA
aABpAGoAawBsAG0AbgBvAGsAcV8QD05TTmV4dFJlc3BvbmRlclpOU1N1YnZpZXdzWE5TdkZsYWdzW05T
RnJhbWVTaXplWE5TV2luZG93W05TU3VwZXJ2aWV3gA6AUYAPEQEAgE+ADoBQ0gAOAD4AcwB0gE6uAHUA
dgB3AHgAeQB6AHsAfAB9AH4AfwCAAIEAgoAQgCGAJYApgC2AMYA0gDeAOoA+gEGARIBHgErYAGUADgCE
AIUAZwCGAGkAagBRAIgAiQCKAIsAjABrAFFXTlNGcmFtZVZOU0NlbGxZTlNFbmFibGVkgA2AIIARgBIR
AQwJgA6ADV8QFXt7NTUsIDE0OH0sIHs1OSwgMTR9fdgAkQAOAJIAkwCUAJUAlgCXAJgAmQCaAJsAnAB1
AJ4An1tOU0NlbGxGbGFnc18QEU5TQmFja2dyb3VuZENvbG9yWk5TQ29udGVudHNZTlNTdXBwb3J0XU5T
Q29udHJvbFZpZXdcTlNDZWxsRmxhZ3MyW05TVGV4dENvbG9yEgQB/kCAH4AXgBOAFIAQEhBABACAHFlV
cGxvYWRlZDrUAA4AogCjAKQApQCmAKcAqFZOU1NpemVWTlNOYW1lWE5TZkZsYWdzgBYjQCYAAAAAAACA
FRAQXEx1Y2lkYUdyYW5kZdIANwA4AKsArKIArAA7Vk5TRm9udNUADgCuAK8AsACxALIAswC0ALUAtldO
U0NvbG9yXE5TQ29sb3JTcGFjZVtOU0NvbG9yTmFtZV1OU0NhdGFsb2dOYW1lgBuAGhAGgBmAGFZTeXN0
ZW1cY29udHJvbENvbG9y0wAOAK8AugCyALwAvVdOU1doaXRlgBsQA0swLjY2NjY2NjY5ANIANwA4AL8A
rqIArgA71QAOAK4ArwCwALEAsgDCALQAwwC2gBuAHoAdgBhfEBBjb250cm9sVGV4dENvbG9y0wAOAK8A
ugCyALwAyIAbQjAA0gA3ADgAygDLpADLAMwAhQA7XxAPTlNUZXh0RmllbGRDZWxsXE5TQWN0aW9uQ2Vs
bNIANwA4AM4Az6UAzwDQANEA0gA7W05TVGV4dEZpZWxkWU5TQ29udHJvbFZOU1ZpZXdbTlNSZXNwb25k
ZXLYAGUADgCEAIUAZwCGAGkAagBRAIgA1gDXAIsAjABrAFGADYAggCKAIwmADoANXxAVe3s0MCwgMTE2
fSwgezc0LCAxNH192ACRAA4AkgCTAJQAlQCWAJcAmACZAJoA3wCcAHYAngCfgB+AF4AkgBSAIYAcW0Rv
d25sb2FkZWQ62ABlAA4AhACFAGcAhgBpAGoAUQCIAOcA6ACLAIwAawBRgA2AIIAmgCcJgA6ADV8QFHt7
NzksIDg0fSwgezM1LCAxNH192ACRAA4AkgCTAJQAlQCWAJcAmACZAJoA8ACcAHcAngCfgB+AF4AogBSA
JYAcVlJhdGlvOtgAZQAOAIQAhQBnAIYAaQBqAFEAiAD4APkAiwCMAGsAUYANgCCAKoArCYAOgA1fEBR7
ezMyLCA1Mn0sIHs4MiwgMTR9fdgAkQAOAJIAkwCUAJUAlgCXAJgAmQCaAQEAnAB4AJ4An4AfgBeALIAU
gCmAHF1SdW5uaW5nIFRpbWU62ABlAA4AhACFAGcAhgBpAGoAUQCIAQkBCgELAIwAawBRgA2AIIAugC8R
ASoJgA6ADV8QF3t7MTE1LCAxNDh9LCB7MTU0LCAxNH192ACRAA4AkgCTAJQAlQCWAJcAmACZAJoBEwCc
AHkAngCfgB+AF4AwgBSALYAcVUxhYmVs2ABlAA4AhACFAGcAhgBpAGoAUQCIARsBHAELAIwAawBRgA2A
IIAygDMJgA6ADV8QF3t7MTE1LCAxMTZ9LCB7MTU0LCAxNH192ACRAA4AkgCTAJQAlQCWAJcAmACZAJoB
EwCcAHoAngCfgB+AF4AwgBSAMYAc2ABlAA4AhACFAGcAhgBpAGoAUQCIASsBLAELAIwAawBRgA2AIIA1
gDYJgA6ADV8QFnt7MTE1LCA4NH0sIHsxNTQsIDE0fX3YAJEADgCSAJMAlACVAJYAlwCYAJkAmgETAJwA
ewCeAJ+AH4AXgDCAFIA0gBzYAGUADgCEAIUAZwCGAGkAagBRAIgBOwE8AQsAjABrAFGADYAggDiAOQmA
DoANXxAWe3sxMTUsIDUyfSwgezE1NCwgMTR9fdgAkQAOAJIAkwCUAJUAlgCXAJgAmQCaARMAnAB8AJ4A
n4AfgBeAMIAUgDeAHNgAZQAOAIQAhQBnAIYAaQBqAFEAiAFLAUwAiwCMAGsAUYANgCCAO4A8CYAOgA1f
EBR7ezIwLCAyMH0sIHs5NCwgMTR9fdgAkQAOAJIAkwCUAJUAlgCXAJgAmQCaAVQAnAB9AJ4An4AfgBeA
PYAUgDqAHF8QEFByb2dyYW0gU3RhcnRlZDrYAGUADgCEAIUAZwCGAGkAagBRAIgBXAFdAQsAjABrAFGA
DYAggD+AQAmADoANXxAWe3sxMTUsIDIwfSwgezE1NCwgMTR9fdgAkQAOAJIAkwCUAJUAlgCXAJgAmQCa
ARMAnAB+AJ4An4AfgBeAMIAUgD6AHNgAZQAOAIQAhQBnAIYAaQBqAFEAiAFsAW0BCwCMAGsAUYANgCCA
QoBDCYAOgA1fEBd7ezExNSwgMTMyfSwgezE1NCwgMTR9fdgAkQAOAJIAkwCUAJUAlgCXAJgAmQCaARMA
nAB/AJ4An4AfgBeAMIAUgEGAHNgAZQAOAIQAhQBnAIYAaQBqAFEAiAF8AX0BCwCMAGsAUYANgCCARYBG
CYAOgA1fEBd7ezExNSwgMTAwfSwgezE1NCwgMTR9fdgAkQAOAJIAkwCUAJUAlgCXAJgAmQCaARMAnACA
AJ4An4AfgBeAMIAUgESAHNgAZQAOAIQAhQBnAIYAaQBqAFEAiAGMAY0BCwCMAGsAUYANgCCASIBJCYAO
gA1fEBZ7ezExNSwgNjh9LCB7MTU0LCAxNH192ACRAA4AkgCTAJQAlQCWAJcAmACZAJoBEwCcAIEAngCf
gB+AF4AwgBSAR4Ac2ABlAA4AhACFAGcAhgBpAGoAUQCIAZwBnQGeAIwAawBRgA2AIIBLgEwRASwJgA6A
DV8QFnt7MTE1LCAzNn0sIHsxNTQsIDE0fX3YAJEADgCSAJMAlACVAJYAlwCYAJkAmgGmAJwAggGpAJ+A
H4AXgE2AFIBKEhBACACAHF8QGzk5OSBkYXlzIDU5IGhyIDU5IG1pbiB0b3RhbNIANwA4Aa0BrqMBrgGv
ADteTlNNdXRhYmxlQXJyYXlXTlNBcnJhedIANwA4AbEA0aMA0QDSADtfEBZ7ezAsIDB9LCB7MTY4MCwg
MTAyOH19WnsyODksIDIwNH1bU3RhdHNXaW5kb3fSADcAOAG2AbeiAbcAO18QEE5TV2luZG93VGVtcGxh
dGXSADcAOAG5AbqjAboBuwA7XE5TTXV0YWJsZVNldFVOU1NldNIADgA+AHMBvoBOqwG/AcABwQHCAcMB
xAHFAcYBxwHIAcmAWYBcgF6AYIBigGSAZoBogGqAbIBu1AAOAcsBzAHNAc4AfAAfAdFdTlNEZXN0aW5h
dGlvblhOU1NvdXJjZVdOU0xhYmVsgFuAN4ACgFpaZlRpbWVGaWVsZNIANwA4AdQB1aMB1QHWADtfEBRO
U05pYk91dGxldENvbm5lY3Rvcl5OU05pYkNvbm5lY3RvctQADgHLAcwBzQHOAHoAHwHbgFuAMYACgF1f
EBBmRG93bmxvYWRlZEZpZWxk1AAOAcsBzAHNAc4AggAfAeGAW4BKgAKAX11mVGltZUFsbEZpZWxk1AAO
AcsBzAHNAc4AHwBBAeeAW4ACgAeAYVhkZWxlZ2F0ZdQADgHLAcwBzQHOAIAAHwHtgFuARIACgGNfEBNm
RG93bmxvYWRlZEFsbEZpZWxk1AAOAcsBzAHNAc4AgQAfAfOAW4BHgAKAZV5mUmF0aW9BbGxGaWVsZNQA
DgHLAcwBzQHOAHkAHwH5gFuALYACgGdeZlVwbG9hZGVkRmllbGTUAA4BywHMAc0BzgBBAB8B/4BbgAeA
AoBpVndpbmRvd9QADgHLAcwBzQHOAHsAHwIFgFuANIACgGtbZlJhdGlvRmllbGTUAA4BywHMAc0BzgB/
AB8CC4BbgEGAAoBtXxARZlVwbG9hZGVkQWxsRmllbGTUAA4BywHMAc0BzgB+AB8CEYBbgD6AAoBvXxAP
Zk51bU9wZW5lZEZpZWxk0gAOAD4CFAIVgHOvEB8BjQF9AHYBnQDoAW0A1wD5AHoBCgB9ASwAeABBAFEB
HAFdAicAgQCCAUwAfgB3AHsBPAB1AIAAfwB8AIoAeYBJgEaAIYBMgCeAQ4AjgCuAMYAvgDqANoApgAeA
DYAzgECAcYBHgEqAPIA+gCWANIA5gBCARIBBgDeAEoAt0gAOADIAMwI3gASAcl1OU0FwcGxpY2F0aW9u
0gA3ADgCOgGvogGvADvSAA4APgIUAj2Ac68QHwCBAIAAUQCCAHcAfwB2AHgAUQB5AFEAewBRAB8AQQB6
AH4AHwBRAFEAfQBRAFEAUQB8AFEAUQBRAFEAdQBRgEeARIANgEqAJYBBgCGAKYANgC2ADYA0gA2AAoAH
gDGAPoACgA2ADYA6gA2ADYANgDeADYANgA2ADYAQgA3SAA4APgIUAl+Ac68QIAGNAX0AdgGdAOgBbQDX
APkAegB9AQoBLAB4AEEAUQEcAV0CJwCBAIIAfgFMAHcAewE8AHUAgAB/AHwAigB5AB+ASYBGgCGATIAn
gEOAI4ArgDGAOoAvgDaAKYAHgA2AM4BAgHGAR4BKgD6APIAlgDSAOYAQgESAQYA3gBKALYAC0gAOAD4C
FAKCgHOvECACgwKEAoUChgKHAogCiQKKAosCjAKNAo4CjwKQApECkgKTApQClQKWApcCmAKZApoCmwKc
Ap0CngKfAqACoQKigHeAeIB5gHqAe4B8gH2AfoB/gICAgYCCgIOAhICFgIaAh4CIgImAioCLgIyAjYCO
gI+AkICRgJKAk4CUgJWAll8QGVRleHQgRmllbGQgQ2VsbCAoTGFiZWwpLTFfEBlUZXh0IEZpZWxkIENl
bGwgKExhYmVsKS00XxAZU3RhdGljIFRleHQgKERvd25sb2FkZWQ6KV8QLVRleHQgRmllbGQgQ2VsbCAo
OTk5IGRheXMgNTkgaHIgNTkgbWluIHRvdGFsKV8QGFRleHQgRmllbGQgQ2VsbCAoUmF0aW86KV8QGVRl
eHQgRmllbGQgQ2VsbCAoTGFiZWwpLTVfEB1UZXh0IEZpZWxkIENlbGwgKERvd25sb2FkZWQ6KV8QH1Rl
eHQgRmllbGQgQ2VsbCAoUnVubmluZyBUaW1lOilfEBNTdGF0aWMgVGV4dCAoTGFiZWwpXxAeU3RhdGlj
IFRleHQgKFByb2dyYW0gU3RhcnRlZDopXxAZVGV4dCBGaWVsZCBDZWxsIChMYWJlbCktN18QGVRleHQg
RmllbGQgQ2VsbCAoTGFiZWwpLTNfEBtTdGF0aWMgVGV4dCAoUnVubmluZyBUaW1lOilfEA9XaW5kb3cg
KFdpbmRvdylcQ29udGVudCBWaWV3XxAXVGV4dCBGaWVsZCBDZWxsIChMYWJlbClfEBlUZXh0IEZpZWxk
IENlbGwgKExhYmVsKS0yW0FwcGxpY2F0aW9uXxAVU3RhdGljIFRleHQgKExhYmVsKS0xXxApU3RhdGlj
IFRleHQgKDk5OSBkYXlzIDU5IGhyIDU5IG1pbiB0b3RhbClfEBVTdGF0aWMgVGV4dCAoTGFiZWwpLTJf
ECJUZXh0IEZpZWxkIENlbGwgKFByb2dyYW0gU3RhcnRlZDopXxAUU3RhdGljIFRleHQgKFJhdGlvOilf
EBVTdGF0aWMgVGV4dCAoTGFiZWwpLTNfEBlUZXh0IEZpZWxkIENlbGwgKExhYmVsKS02XxAXU3RhdGlj
IFRleHQgKFVwbG9hZGVkOilfEBVTdGF0aWMgVGV4dCAoTGFiZWwpLTRfEBVTdGF0aWMgVGV4dCAoTGFi
ZWwpLTVfEBVTdGF0aWMgVGV4dCAoTGFiZWwpLTZfEBtUZXh0IEZpZWxkIENlbGwgKFVwbG9hZGVkOilf
EBVTdGF0aWMgVGV4dCAoTGFiZWwpLTdcRmlsZSdzIE93bmVy0gAOAD4CFALFgHOg0gAOAD4CFALIgHOg
0gAOAD4CFALLgHOvECsBjQF9AHYBxQHCAZ0A6AFtANcA+QHEAccAegEKAH0BLAG/AHgAQQFdAFEBHAIn
AIEBwwCCAUwAfgHAAHcAewE8AHUByACAAH8AfACKAcEAeQHJAcYAH4BJgEaAIYBmgGCATIAngEOAI4Ar
gGSAaoAxgC+AOoA2gFmAKYAHgECADYAzgHGAR4BigEqAPIA+gFyAJYA0gDmAEIBsgESAQYA3gBKAXoAt
gG6AaIAC0gAOAD4CFAL5gHOvECsC+gL7AvwC/QL+Av8DAAMBAwIDAwMEAwUDBgMHAwgDCQMKAwsDDAMN
Aw4DDwMQAxEDEgMTAxQDFQMWAxcDGAMZAxoDGwMcAx0DHgMfAyADIQMiAyMDJICbgJyAnYCegJ+AoICh
gKKAo4CkgKWApoCngKiAqYCqgKuArICtgK6Ar4CwgLGAsoCzgLSAtYC2gLeAuIC5gLqAu4C8gL2AvoC/
gMCAwYDCgMOAxIDFEC0QKxAFEB8QHhAvEAwQKRAOEDIQIRARECMQFBAiEA0QARAlEBIT//////////0Q
LBAxEC4QJhAkECAQCxATEBYQMBAqECgQFRAEEDMQDxAnEB0QNNIADgA+AHMDToBOoNIADgA+AhQDUYBz
oNIADgA+AhQDVIBzoNIANwA4A1YDV6IDVwA7Xk5TSUJPYmplY3REYXRhAAgAGQAiACcAMQA6AD8ARABS
AFQAZgH9AgMCTgJVAlwCagJ8ApgCpgKyAr4CzALXAuUDAQMPAyIDNANOA1gDZQNnA2kDawNtA28DcQNz
A3UDdwN5A3sDfQN/A4EDgwOFA4cDiQOSA54DoAOiA7oDwwPMA9cD3APrA/QEBwQQBBsEHQQgBCIEYQRu
BIcElASqBLgEwgTQBOkE9gUABRIFJgUwBTwFPgVABUIFRAVGBUgFTQVPBVEFUwVVBVcFWQVbBV0FeAWD
BYsFlgWzBcUF0AXZBeUF7gX6BfwF/gYABgMGBQYHBgkGEgYUBjEGMwY1BjcGOQY7Bj0GPwZBBkMGRQZH
BkkGSwZNBm4GdgZ9BocGiQaLBo0GjwaSBpMGlQaXBq8G0AbcBvAG+wcFBxMHIAcsBzEHMwc1BzcHOQc7
B0AHQgdMB10HZAdrB3QHdgd/B4EHgweQB5kHngelB7oHwgfPB9sH6QfrB+0H7wfxB/MH+ggHCBQIHAge
CCAILAg1CDoITwhRCFMIVQhXCGoIdwh5CHwIhQiOCKAIrQi2CMEIzQjXCN4I6gkLCQ0JDwkRCRMJFAkW
CRgJMAlRCVMJVQlXCVkJWwldCWkJigmMCY4JkAmSCZMJlQmXCa4JzwnRCdMJ1QnXCdkJ2wniCgMKBQoH
CgkKCwoMCg4KEAonCkgKSgpMCk4KUApSClQKYgqDCoUKhwqJCosKjgqPCpEKkwqtCs4K0ArSCtQK1grY
CtoK4AsBCwMLBQsHCwkLCgsMCw4LKAtJC0sLTQtPC1ELUwtVC3YLeAt6C3wLfgt/C4ELgwucC70LvwvB
C8MLxQvHC8kL6gvsC+4L8AvyC/ML9Qv3DBAMMQwzDDUMNww5DDsMPQxeDGAMYgxkDGYMZwxpDGsMggyj
DKUMpwypDKsMrQyvDMIM4wzlDOcM6QzrDOwM7gzwDQkNKg0sDS4NMA0yDTQNNg1XDVkNWw1dDV8NYA1i
DWQNfg2fDaENow2lDacNqQ2rDcwNzg3QDdIN1A3VDdcN2Q3zDhQOFg4YDhoOHA4eDiAOQQ5DDkUORw5J
DkoOTA5ODmcOiA6KDowOjg6QDpIOlA61DrcOuQ67Dr0OwA7BDsMOxQ7eDv8PAQ8DDwUPBw8JDw4PEA8u
DzcPPg9ND1UPXg9lD34PiQ+VD54Pow+2D78Pxg/TD9kP4g/kD/sP/Q//EAEQAxAFEAcQCRALEA0QDxAR
ECIQMBA5EEEQQxBFEEcQSRBUEF0QZBB7EIoQmxCdEJ8QoRCjELYQxxDJEMsQzRDPEN0Q7hDwEPIQ9BD2
EP8REBESERQRFhEYES4RPxFBEUMRRRFHEVYRZxFpEWsRbRFvEX4RjxGREZMRlRGXEZ4RrxGxEbMRtRG3
EcMR1BHWEdgR2hHcEfASARIDEgUSBxIJEhsSJBImEmcSaRJrEm0SbxJxEnMSdRJ3EnkSexJ9En8SgRKD
EoUShxKJEosSjRKPEpESkxKVEpcSmRKbEp0SnxKhEqMSpRKuErASshLAEskSzhLXEtkTGhMcEx4TIBMi
EyQTJhMoEyoTLBMuEzATMhM0EzYTOBM6EzwTPhNAE0ITRBNGE0gTShNME04TUBNSE1QTVhNYE2ETYxOm
E6gTqhOsE64TsBOyE7QTthO4E7oTvBO+E8ATwhPEE8YTyBPKE8wTzhPQE9IT1BPWE9gT2hPcE94T4BPi
E+QT5hPvE/EUNBQ2FDgUOhQ8FD4UQBRCFEQURhRIFEoUTBROFFAUUhRUFFYUWBRaFFwUXhRgFGIUZBRm
FGgUahRsFG4UcBRyFHQUkBSsFMgU+BUTFS8VTxVxFYcVqBXEFeAV/hYQFh0WNxZTFl8WdxajFrsW4Bb3
Fw8XKxdFF10XdReNF6sXwxfQF9kX2xfcF+UX5xfoF/EX8xhMGE4YUBhSGFQYVhhYGFoYXBheGGAYYhhk
GGYYaBhqGGwYbhhwGHIYdBh2GHgYehh8GH4YgBiCGIQYhhiIGIoYjBiOGJAYkhiUGJYYmBiaGJwYnhig
GKIYqxitGQYZCBkKGQwZDhkQGRIZFBkWGRgZGhkcGR4ZIBkiGSQZJhkoGSoZLBkuGTAZMhk0GTYZOBk6
GTwZPhlAGUIZRBlGGUgZShlMGU4ZUBlSGVQZVhlYGVoZXBleGWAZYhlkGWYZaBlqGWwZbhlwGXIZdBl2
GXgZehl8GX4ZgBmCGYsZjRmPGZEZkxmVGZcZmRmbGZ0ZnxmhGaMZpRmnGakZqxmtGa8ZsRm6GbwZvRnG
GcgZyRnSGdQZ1RneGeMAAAAAAAACAgAAAAAAAANYAAAAAAAAAAAAAAAAAAAZ8g</bytes>
</object>
</data>
</archive>

View File

@ -52,8 +52,8 @@
- (void) dealloc
{
[fPortProbeData release];
[fConnection release];
[fPortProbeData release];
[super dealloc];
}

View File

@ -92,6 +92,11 @@
{
if (fPortStatusTimer)
[fPortStatusTimer invalidate];
if (fPortChecker)
{
[fPortChecker endProbe];
[fPortChecker release];
}
[super dealloc];
}
@ -223,12 +228,13 @@
- (void) setNat: (id) sender
{
tr_natTraversalEnable(fHandle, [fDefaults boolForKey: @"NatTraversal"]);
fNatStatus = -1;
[self updatePortStatus];
}
- (void) updatePortStatus
{
#warning look into
tr_handle_status * stat = tr_handleStatus(fHandle);
if (fNatStatus != stat->natTraversalStatus || fPublicPort != stat->publicPort)
{
@ -252,7 +258,7 @@
- (void) portCheckerDidFinishProbing: (PortChecker *) portChecker
{
[fPortStatusProgress stopAnimation: self];
switch ([portChecker status])
switch ([fPortChecker status])
{
case PORT_STATUS_OPEN:
[fPortStatusField setStringValue: NSLocalizedString(@"Port is open", "Preferences -> Advanced -> port status")];