From 74fde9e01321647913df983ab09a11b0b10c35c7 Mon Sep 17 00:00:00 2001 From: Jens Hemprich <31758696+jenshemprich@users.noreply.github.com> Date: Tue, 28 Nov 2006 21:09:18 +0000 Subject: [PATCH] More progress on displaying config --- .../English.lproj/MainWindow.nib/classes.nib | 41 +- .../English.lproj/MainWindow.nib/info.nib | 5 +- .../MainWindow.nib/keyedobjects.nib | Bin 33505 -> 35075 bytes .../jens.pbxuser | 519 +++++++++++++++++- .../jens.perspective | 224 +++++--- .../project.pbxproj | 16 +- .../MacGLide Control Panel_Prefix.pch | 2 +- MacGLide Control Panel/MacGLideMainPanel.h | 5 +- MacGLide Control Panel/MacGLideMainPanel.mm | 29 +- MacGLide Control Panel/MacGLidePanel.h | 11 - MacGLide Control Panel/MacGLidePanel.mm | 30 - .../MacGLideSettingsController.h | 64 +++ .../MacGLideSettingsController.mm | 180 ++++++ 13 files changed, 943 insertions(+), 183 deletions(-) delete mode 100644 MacGLide Control Panel/MacGLidePanel.h delete mode 100644 MacGLide Control Panel/MacGLidePanel.mm create mode 100644 MacGLide Control Panel/MacGLideSettingsController.h create mode 100644 MacGLide Control Panel/MacGLideSettingsController.mm diff --git a/MacGLide Control Panel/English.lproj/MainWindow.nib/classes.nib b/MacGLide Control Panel/English.lproj/MainWindow.nib/classes.nib index 496c48e..229c1b5 100644 --- a/MacGLide Control Panel/English.lproj/MainWindow.nib/classes.nib +++ b/MacGLide Control Panel/English.lproj/MainWindow.nib/classes.nib @@ -2,16 +2,49 @@ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { - ACTIONS = {noSplash = id; toggleMipmapping = id; }; CLASS = MacGLideMainPanel; LANGUAGE = ObjC; + OUTLETS = {controller = MacGLideSettingsController; }; SUPERCLASS = NSWindow; }, { - ACTIONS = {toggleTextureSmoothing = id; }; - CLASS = NSWindow; + ACTIONS = { + setAnisotropicFilteringLevel = id; + setAutoEnableGameSpecificSettings = id; + setBoardType = id; + setFramebufferMemory = id; + setFullSceneAnitaliasingLevel = id; + setGammaBias = id; + setMipmapping = id; + setNoSplash = id; + setRefreshRate = id; + setResolution = id; + setSettingsName = id; + setShowShamelessPlug = id; + setTextureMemory = id; + setTextureUnits = id; + setUseApplicationSpecificSettings = id; + }; + CLASS = MacGLideSettingsController; LANGUAGE = ObjC; - SUPERCLASS = NSResponder; + OUTLETS = { + anisotropicFilteringLevel = NSSlider; + autoEnableGameSpecificSettings = NSButton; + boardType = NSPopUpButton; + framebufferMemory = NSPopUpButton; + fullSceneAnitaliasingLevel = NSSlider; + gammaBias = NSSlider; + mipmapping = NSButton; + noSplash = NSButton; + refreshRate = NSPopUpButton; + resolution = NSPopUpButton; + settingsName = NSPopUpButton; + showShamelessPlug = NSButton; + textureMemory = NSPopUpButton; + textureUnits = NSPopUpButton; + useUseApplicationSpecificSettings = NSButton; + }; + SUPERCLASS = NSObject; } ); IBVersion = 1; diff --git a/MacGLide Control Panel/English.lproj/MainWindow.nib/info.nib b/MacGLide Control Panel/English.lproj/MainWindow.nib/info.nib index 36aae56..1131baf 100644 --- a/MacGLide Control Panel/English.lproj/MainWindow.nib/info.nib +++ b/MacGLide Control Panel/English.lproj/MainWindow.nib/info.nib @@ -3,7 +3,7 @@ IBDocumentLocation - 486 10 534 282 0 0 1024 746 + 554 6 413 292 0 0 1024 746 IBEditorPositions 29 @@ -21,9 +21,10 @@ IBOpenObjects + 29 21 IBSystem Version - 8I127 + 8L127 diff --git a/MacGLide Control Panel/English.lproj/MainWindow.nib/keyedobjects.nib b/MacGLide Control Panel/English.lproj/MainWindow.nib/keyedobjects.nib index 05ea4c46c0a8d1cc20bed88a1183af3d1d666785..0afc2bc605d0c4f84f77a305844a950fd1129702 100644 GIT binary patch literal 35075 zcmbS!2Vhji^Z)MKckk+Zxl8Z4^jA|V%Y303edy(j`UEQoYe zq=~42AQn)n0#Z~gSg?SIf>_}{``#tFAo%t7Cz@Q@otd4T-TBPy?A^%v+8S45M#f2m z5r+ukkp>A!iwuKfDjTZC)J$+R42pqYt{P`uSxlp|eo%~aM4eF)>WQjQHFBU)s0NKk zlh8xxVe};0fL=n|(Qb4Y9YG(WQ|JsjkG@1-q3_TS=qGdqT}8j4n;2moj>Abf8K>ex zT!g#fUbr{zgZtxhJP;4UL-251jmN>`Iy@16Pr?*_&%kr=JiG`m#Si1B@G86-ufZGf zt9U1V3m<^@-^B;<2lyj+^fCSlet(UBgx{C(Pxv={lS3Tl^qeo}&qc7;xo9qyOJ=RP zY}T5)n`_S%alN@dTwiV=SH(HFI<5g;cX3VJecWt#G>3Z#elO;pfZtDYPjRccP26Vg zC2l+S3ilefi`&h;$DQC#!YgOEFSzsEm)uv}*W5SU1?~s#B6pqpllzMxLI_U;q9r2n zAz>t(BoZ6RBn6}p-6Wkz4>EuZB=?YNJdilZXflpWfJYOF48JLvK^BlDcr{r{o+N9@ zda^}nx1H=DyU9DyVm~^upUdtPJBk#wD@!_7*@$q~D zpTcK=ST;VB&*9tgg?t~rl6Ua6d=q~kKaHQm&*c~K5Al!l%lH-iv-}4BIesg@jo-=d z;@{v8@bB`+`1kqK{2Bf;{&W5d{#*V#{(Jr>{tEvq|0n+!e^bM0G#XJOX#zDtglZx+ ziJAW|(HU#-XXz)M=cW37UzTN$~rAjjWlcnXh@+Q)bQ6 zn&q06nze*z)@jyjUes*TY|*@;c~$e4<{iyZ&2c=B(y(%@>+)HQ#A|(p=H} zq4`tum*#KH4b4q~6FLdqgg!#4P$moz1_{H2dxX)#7-6j76eb8$gsH-P!u`TbVS%tv zctChacvyH+ct%(uJS(gg)(e}2mxS%YE5hr-+roRoLE(^aR5&4gBz!DraBY+}QJbVq)~0DQwfWitZ98pyZ6|H9 zwuiQ-wvV>IcCdDccBpoQcBHmOd#`q^wocoiovfXvovyuKJ3~81`=EA__95+3?PJ>I z+Gn&Yw5zqxYhTcA)V`?Qs(n@ans%plkM= zv_EKn*8T#Iu4;eN-qa!OSsm7CbS9mslXPA>A6>96L>Hg))=~wEX*S`eMw(EE3_vjD6qXYVP^+)v| z=s(kcqrag4R)1Ollm3eS4|wNK{oe*`;0#8Cx53BYYX~uf8o~@QhFC+IAx}TckY}(P z?lN>WbT{-h3^EMXAA{FM8paxG4UMQ;KMPeGrWqC*9x*&+c-pYsunyi`Z`f$qWY}uh zX4qxeZ770Q-ZAVqylWg}JZ$P{>TK#_>WUYey24M9so2!R)YH_<)CXQKfmixt(Nte0j=+WpRU+ss)ROOO(UUaXHyltUJcJj0p*^i z(WWu*S`9qvX}Z@m)>La6i~fdQaYoZSC}fWNc@0*S3X-8YZ?y}8%<572_Roj z(`4vB1^!Mo-DjGn^eQ#UrWvN0@cJyERc@MXnq!&|bQYKvniiQBo0ga!F+DCiq%0|0 z%8_!VJjpKQO9fIp=`QJRslC)e>L?XToutlE7pbdMBz2RzOT|(T94PgadP%*dK2l$) zpHw3CmrA8FX@FEN4U`5+gQX$TP-&PnTpA%&NcTvU(nzUFs+JtmC~34bMyiqSmBvc7 z(m1J3a!U2mc&R~hNsUsIG(nmuO_C-{Q@CHGsr)ACK53dXUAkYAB`VF3W=gZ9+0qmmo`YxNzY3!NE@XWrA^XiX^XT~+9tguZI@n_c1W*CuS%~;JEdLH zZs~PtkF-~ML)s_3DZM4VExjY{mkvnpO7BSrr9;wT>4T={qz?`d<1$x+q;SLwR+oAjr2!wV0HscWjO{mkr*L?j_EWJVU`jeL+V@t(Xb#(wJoDC|Z=v-UrayeXT>mhwg`_@#u0A{#`_9^XCInJRx z9^R+a-Hg5SPm-*UN?@2upqaP1Pic7#Fs^kBtf{MZPIQ&WR55;xpehF79QI6MrS^hn z?h&ZW0&bDtL%^a2kZ_{2VJ!41a@IBWuB@vZ?PwSb^c<5Kp<#KS(*90oBjp~V69mXZ%B9!0q&l)IafW3nJ43w~GTj)VR)Q5MPuH7G-80?Ha0a8)k6 zm51!WB+b>>P*XP=m>1RquB)nSgwe?Saa4fXp}WxCgVez~Ttn0cbwFb^x*N4e9h8ac z-PBkKswq{d4C+(b@<1KGN~aKYT7^2H4kJL2CRd|#T=SbujxNYvVKx_c>g=p?R<>w^ ziO>z+?T&iDgu0QTYb7d{b@K90P%qRQ^+A16KU9MHqf%6c20-I-G!P9!gV7K)6b(be z(Fjz5?m?AkWQEz%r&OK3(#FZPj^357v5NTWYn>{q#)1++9ldMnN^7P#KppBkWi^ep ztW!pj58ifSuIGkat&C}hl9Ge>ci zY><8~TYC*}4>axm_?6u-X$2eFUY|SXs+ohp$qKnPs z=muv~T{UREY=WY7uuAm-n4d>qmtHo@BK)kUxR)HLm)Dt**_+}%@&miB_T2XboD6)a%dIzTN0F387bPyd<)ZD7!&dyqA1I$?&%#-pM1cmvl zcQ!PFk-^^B=%{OSZrYvbg4M}graI*N{gWbdO7&~bDEodk8T#Rh-a&IZ#wN}(H7*bgB&NDj8}zQcMo zRn=5ic5A2v^Hw*b(`ec%Fx3tpqO<5D^fCGbNS;HVqR-Ih=nGf?&BIduGQvzwHq_Gk z$||-ObcXn});U_)O~d6dvml4c5#^UnXG`8C`IvVO=rzsu>&K357PEC!C&N{_hGGR(Rp2DblJL;Oig4rLo$yAtqJSa5V zwca1(7KLqs+mw( z3yY(|?A@ny03a8}rl`R=jLt_D}4(a8k`gRIbAi1k52Hp3IApl-sot? z-olKIH{}#LSx&Uz#d2qF9ZRXe9+3nao4MyLD+edC)nPXGQ=A1(LUx(|81$Tm({Tp2 z;Y^%`vvCgc$GM0qYL zriLnqvT`$Io16~fDLfVRGAfHMz(o6=%4GW{~ zYt1Z68A~~f@lbj)+R6~!mSCxld0h&re#)PWFFrz0cyuRo9E3RQ9_baxrtgJ@4Rp@d|(uitBZ| z$L;_iqQRipZr;@3u#SU8*f6=k;IZ#!+yBG9yAp43@4GK3atxP;v3+;MXJ(%^`|gYX zbLZWRx4^#Zx%aNXFSqW!up>6Zwqo$WljH=skK7wpa%VjtAqKnt!ydHRy$9`PmV}>F z_MkU`PG7~6dMbNDzveyRZP*j`%O$W6^dDf$wf64RvXq+F&mp#c4&x*EDBdEM%H{H4 zkmwHUM`eA&gYj8lT;{=eKv^a*x%~oAd!O^@{U!7s=+S#nS@!?veZiymCFniGqxaA< zJM?a~L2$JH8~&}rSKT&vU77nz`5tD2BkyE`e*uj3w807huwa9}N}w>ZX%slX+u31e z#(%KG)tpAPLr$m2GG4A{cG&QLwnNUynb4p%cDRzWG}|FqokOlxt!}tn^`EScGpbg{ z1u7G8omm|h4s=E-6EIS-y3uZ{2|&$6Sw&cR|NGkB&|Vpwti{-@QHjYlN_d>!g|p*HxL8Cb^NB z$b>tX2-gFm98VK*L3{%y64a+@+(@tv=O}BVd&6p~t7&wx{R$!$1t;daBbI-KiEFu1 zCJ#4&D_7*1C(qT(56ScY4`#v*WAn^j}ovPa#kxF8o2Z=>MVulBandMoE zr2p1`sYm~1(0{f^|2gHEN`Lp{g9YX)dqk#<8KeD9F~T}-g?sW>DU-iMUd$$c={d|| z1SMRBIKdYi0TP-aW{@CC2<6tIdE9ykya#d5anExva2wG<*c}$aoGyegbAjAs4)X4P zSIJFzk@;OYvBDhU8e3Cut*onaPKHd7)m0BEzA;vplG{1XZ9)FrR&Ez-dT&>5zyl?NMGEdM}R|poDJhDYn1^iT73lc`Y@z47BO}Dl#X#u zw3d#6@VOS!w$^^NO|VxgaGd*4!N!j=Y^)?&xU;CoI_@LxW9}2~9QP^rnf$oCOnyRs zQhrK)T3!zO2un>mto^zaS?eny${yL06sR!U`ZxxaS-V0SsovF8%W_Fph>#i~DOXe9 zXq{k7%lv1baHUUKaZ!Zgdp6x}LipKiDI zQD^yE?z`38cii`=0}FTDX;Vkz0EUnt5`_IZJ0mm2s_xGjkj=?uVKaA$`w_jtUFLp* zP=@7X7NUjR6`1W`xU1YX?pGFQRY5Sx{<6#_%y(g34XksAi-G3an$dOgvwE{eUIj<( zkX7LjLd_HLn=%nA*+dM_>N09lYA@$#XGLaCtSa!|+>JHd4eln(Av9aQf}H^_E7RVR zJs_BHYYEqkm75!@nLD=AXRy>I!vi@s7+7W|WHA*UM1%fbttK2)vu8;x#p-jiSi{`> zY12Mbl5Z?O=1+7ejTnd#5^pcaNZu&_{CG;R^cb51PKjIJc z{n6Vb5V=S&nnOZC{l(P~eb1JVVup%l*5F# zB<(;+w@=zJDp4etEpfDyZ}qWc3^SYFV(@`S?al>8yHmDB%MTX~u+Z(}RbWR-`l9F*TvZRJh*-T!7QPrGg9IYr0w z6)`m;}vEe%gJkGC&+M2K7J?jP#BUu9_-!* zcJF(z`=Bg0qx+QG8-&{XU60;Jq4x=o-Y3iQa=K4xF@xqX?_bRzj(o_>fSe|0l*#!> zKC72Mmp{If8Jr_AZOq^d>}%0O!KBAkT07NLx(eJm28Pu#-Jl)vyqUJ!;WoCD#FK9n zJKRdXQv^6Kf5EKd%TLJ<GO4KJ+W1vP;M9;&n!4)_{c zJS?x{^=o;3vxjBCQ)!@h&8#fuMpUcFX7d9_Keq>qFfYi(d$D=p-r>D@A2dUm8!!2y z9w6Z*`D^_h?1K*?am+sWP)d^YL;rr~ki2gg0FU;vb0=kp003mj+ml&{J^d%z6- zE|kW%=Q{w*xW>*wQz-7?1{!=PH1T=9Gv9^p$`?VK?tC%dgYU`rl7FQ*g5qe3W0ekR z6lYSLNU<-)ke&Us`2>;g%lG3;P%Ymd$$Tka#>2TaU(V;l&tN#aUdRvOhw{Vt;p93G z5i5TWm_jFK1DJveG9jO)VZc81lWKp5NtP z*}!3pKFtamhbFG$>v$($&yVLDc$fT#e1l>*>J}(AQtTxco>t2B4DN>pe@fG$Np~tALgC67m#8s-(VqBdAG`X zaQ?TGw zrmMo7Y3*DIQRiq!b+xlD#adKZ3kRZBh~ZMKy(c%0v6dC}O0kwX$Bnf1uVnkD)n;wo zfp@c0V}5T`Av;fE$HP+i?FRFfdocUe!I;2lQ7pEOB+I6ZB*O;Qs5rmdoSMT(4)YDS zj6{M3z|vw~Z3K+Vyqypy+(MjEg)l2ZSXza!sUG-$3GoTmaPR_n*G2?L$N5a1 z3ad*A(Xz5Zn{awN?N+(i9`%*m_AaokgW`6I?cJsHw}U>IX0oy&mj{Ii)5@m;p$s6? ztRN+T<$vHW@|XA@6|k|8;$VuyC=Q}HP>yChQ|o;FtjyQ7sKN~Qe3?Q$&g}W?{BP>< zIK`n9ho}eSJ}l9AONoN}jGX^lIU~2h8M*rv4PvkK&ah^r*)x=X>`ldqXo!Yiqv6%i z6hd?m>>u%xvT1kL=v9?yOv-KwyP;K4N~9-VQjI^`y@CCQtPA$n`0!m?*QLh4WfOZu zPM|mnyp4M!o26`ILweWLkE^V&hyCmJf);7Qn4oB@#;VR8_^BAhtm1Cpp@$}xp?h*# zlc070XO;jElH#P>u3j`xlgfAX#E=xngGXd09{@QCmlKKx>T9YXreUY?AZW|E72B(F z)bj$SquXLiMcZ98Y81RxldsAIF4wLMBL6?YO3ht-5rdVQ4hpRNMTM2}If|3PZ3CbK zLu3Es&vYIT?)KX0uIcVpCqoag6u{x9Dw3q%zC*F5pIe=!Y6pM^HbtFTcT(pdzI|JD zW&pHc>I^J`l1nu=2`S6Qn#x)L=uDv=HkYR+lKx$vT{V^NQB8{0M2DkWt#C`C%m`$L`h{oTEmm=LcB| zF*PRsU&QX?d$c810N{+N5}YOgQoFK1m7VWDAq>qdzGv&=^h6jG-wk+3O@gLFk`T(a ztfN^9!d366f{as@)loO5vaZT8jul5)E1Q$@m9@2#Z;RQP-6NOgL1mYDN3&S71TZ_p zZ2(-00JKxwjp7b)j0)9~nnwVDYaZ1+rg>bmO!I{1Ns2pCTu5;ziaS%>h2pLZhC@a! zD?bk=LS1qhuyg0!4u`W`qvn}b98PifRv@lf#eg`)#SDp;JL?^Fqif6i!k=!vZh_hw zsAy}3+PxtO{qqo(Y)tRQ0vL6(-Aw$}5I=RZy~XRW5<<;OY~`SxnjNfOkK%ri&!D(O z8Av_|pJ{jFF9t5aas40j51O5tU7q;|)Tnu*HUB_y8O5ba20|%(?Ejx~5SpE84nlK) zh4q>pEC-=EqR<+^0(%gjr6DLTcjqBA$8Z-7)bS3KVXg)Zawn|*aVn%a1*lxJi%E1V zj#f1FiK3~kn$J{C4N=zeP!*`cjA!QOFc)oStMFfz-q%p*>2aP%@h~X(l%t10qPh{b z892bZ-7H;Xytx6I%PQ{?iW{s@wxrB_7WL(;B@%4P*ed%EZV-IRuV_N+O7l3xf#U{> z?_pJ_%7H^Llu_NX&>#|0q*alz8yL5i(JD$&5DGgphlCrTo@}t5AyYG1lG+BK9ufyr zv(g|fZ_jijXMxxrPt*jqfCRis!0!4Wcg?V497Ls!VB4@H1%f7SHs3Aqf<_Pot)LV1 zfO~@3oglr*4$QAMgyO1vw2QC>KJxFv>+x zE|PN5l#8WYJmnH8mrS`-%B54zM!77?mHnN4fE^+&JeTNcYr?gHqCxaf;&?%2`di50oO0fAD4TdV5b9Gi(p?k@f7F`^P;jKasy=NV&2Sh^1;yi)K{)R;h>>j9Xc*W?37ZRwx;)Qt z%fNdE#rG+^C*O(pY~Ve&g*P0UQ#_T;+gM;ziAKYvPb<{x>HlQ>h%)F$f$`%i0IlmY_PJzHdXyEGb`|`Vz0u51V9*FoK;N<(g1Nz z3a_e53S|g8L8RS~80zA1!5*nz`rs&jP!VzdKSkW5h`1M2wNDjs0mTcMsvc;&w%!r; zgN*M|ZYt&GGa2s#jg>UjG+NuLtz^6^@L{NMgkWGClYy-+PZ{3_8IQ{#)e=RjhfXUi zzIDBWOu~n)3k4)v+^jU%@(V|TG2Fsc<@pIyQkardQJPzvIi+={jep$pqlC!b$HxnQ0`qwYXn9j#cLHdEC0bp>&2{0YsT%g z-l`f`QM{TBXAK*UdqHabaTjeMJ0U_jU|(miPeU}t(Pj#9Y7la3?nIiUSYWY zP7Gs!VO$Ht4UFM)jNyQOtlFStf=WGwZEfs@)|IVI2l_UOH!Jiv-idxT(9dn5|01Km ziP10X@2GZ`3{lD7h3o^Mklg7(y#r7O@V;H4zV%Mjy8!i~7V6s=b>%n|&>Fih!+b>v zoH4+Wgtix~Hka}$yy(HGFEA>h_%(&mjyo|b14iX7jNssv;#ZYn41jBKB~w%u!(bS2 z`^Iw^6+pd`;ynuWU3a2h4b(@qP=}*cieFc#cXrlKE~!$f*8=q_cJwDz`zU^sQGbh3Z?>r^U{m)|t`D=RzBS-z>cQ32!VmLrqru%keKyme zthiaW$9IE^iLU0|qS?S_f-taozo!VZ|4za{k(G8qi!cY6Fz+&9Mkv+i*3x=N=7X0n zX{YjB3@)yU)ulJT;W7G$f#IVRA5j<{x)Z}?tqT`Mf4F(!0=#X@(OT)U4t6$K)w721 zM(60!wGIYsYU-MtO)iDM(u3t1n#cSshyd&KxFW)_e~2I`&_cTw#=Kq~Ge8SC8m0IH zHs%4HYn?7f$;9Dqu%$e0p}h%c11LSE&_4MO+U^bGrPkqrARjgluN>}RI2s)TtCc@3 zGeWR5oz{s=BG|PrKo#TeNWo3_B$i53?4^sTOLiUrhx1v++ zVeJvc5|4r+-e-!yfsj`$s|0io38+t*LO%1f$dh1^rzls zolehKC=7mP41Q4=Sb8*#t7oXYg-OZ1fFl^nax}EOR$S-4EL_;&sBAV4of&w0Q~bNa z``3T+2FE9St@8uk0V;2>~jb++wEVs&=bQ-&o2lgu~{ zhP2zb%1+R_g+7VYwO3kgqMV?%8Uj@=?vkk1X3@GXO0zd9r&F5^g^OOS9;QFQ)RuO9 z7hMlkTnKCpZhGTd^6;(gdg}VA?R+U`QrlIS!&&Z6z1YbLhhTG6@`KGY(b5|&*Oe>M zKrk(-od=I(6_9L~Zf&(fH%w_&L^-qCYB)O!fmXe2}l=D{`4ytpODwVXYjn?WKl}7U@ z2MHWEcji!AibYwiXlwgM-4xcI<=(j9<_?ifE(ff450H6h^)>3`76Nck#5fLXP7Sd_ z-WFD{Ugij0`R;7JaKI3Dxipw2Xv@;=w>Q8xtL*{kU8MB3D!pT2dw|{^XCH0tzD?() z&>7OHz&c9l>|0@uVx9lhNZL?XCUhl{3WXS;Aa5E0-8~BaJjeMAG>ul8#<8YvLh3+i z++yQx2t)izVwKi#@-$99H5}S1g+Xj_wQ2dh&=oCLS|+iUeynAuW?OC3atpMCa07-5 z)fMC9BG}2GE!)6aEVfPi9ngNI(jIojaq@5obD_P*9Te4S+w|EDeO4=dGFYGSP@>n$ zL$Td9&EJIPYn0}hta%f&l0I(xZPO53JzA?Y%w`Sesj{#rsErM`>2nnNOi=pdLLW$5 zs?+=LM%;$NNuU7G2{dL`DD+i_Q|iugGE;8T{v$A`E=v0XrF{gmht^ZV*0!io_qpmP zV2RxYD@2BKdp}5ev4f?eng$oMBK7kDl$56KYrSi;`9U;CcR{Gvp5un_4Z4f?sP0GI zWfHIbo%UazvG?(v%9_Ksj!g;4qA=GJK$H8PddRFL;p3(Dq4L6CH1t=BK8}vrL zi?Bg^5UqlmoUw4Xeg%0AA0`Ivc&&|i>4UY`xyfjP*2UN3N+?!biI!+ZeXMpi-(A?v zkJl$@SD|9zJc-n&;}EzEGg6;LV)>r>TzwullxkeJ|lS-pu#VdFxArrQ~USnSKCTLwai;g-YKTE?!&7B?x<<-lrH< zXt!vO=&MODZ6Uc=8>#i;yTTQ?<-!cqh>vIyYSK5rCkk-wDTc{9FHdGwFWeY;Fy#hN zZk&7`pcB*#|0cu!2cWALs}AyEH8g*+G8reuE{e~B)iChT>L3^NDxd_S=OXZCezd`Xv`8mpsp!lLZ3+#;IeXNS39aMD= zmn{^pq+Aol`;`OB`K&631E_OM20!<(3~q4&+$eR(?I}mWl|o?;=b#+BcygTLD{$%n z)dLjo0LLzmm#bwvykZ3*xC1m^Mdnw)}!-`m-)JN_~_2?y_=oS)Zi9Z7=<#W+bnl2DML6$pZN>@K7-7Rg~-4 z4D2aa*pg|}->;W(7yS&%O`zO^41iB8W0xpKxYW)qH+CT+)Xzk4ds} z3dYqk_}g-H>G!p81lt8`*hjfutsHv~Y7UOosdx`6cVYXO&4OcC642$4T&N0k46;P* z0!Q<#9fwcs&>LX)x&}MVD*XU`HS8SSg&B}9XNwJ1?I2}29Rs@sqf}M|1Z`l3E-3lG zHO^DRUHunO8uO(J<>8ZiN&(7qWo$a&Lro@@)ZMAq_t5KNORsX)Yar`2ke#chrKOcP zZ)@r*Pho@pYKx8_(tzz}HsuDl>S)MNM#icphE-ks(K3}T?rDQ}7_ULZ?F?Qm?~=H4=PVxU;AA)n2|Qnpum-t}u;x`L95zg67}Jk_ntt)U3=mFj_{ z+tLliaHCKt(!Q?e*%1`%*=Lw{!OlBzQV!H^i0Gj+T?B(Gq<+yxU#t#SK9&VFSEZuTSFh zb=RQh5@II3pk`wUc^Yp9S}v^@w5it~fwmR;UQqoFm(}2Q=UlCqum`YjKH$&6aB^1< z{{wH3A{ed2!R#@-SFg|FhLESVM>IS6!GK9Y8bHFq`Xtl{^6U}z=q?KNKzRw!0(xi# zpRe_TM~{$bc()#;=%sZ5zd4){q&4b0DP>2+S}(xE^#o8ZyziyEz~_UkY`hhqgFS$S zy%^T)pg_`d011DCCk*j{?^(b;SL+=04EAG4l>Y*%NXxfimVQ3!#07w zifllR?I4WMWX1%ZGbVt%fdo8)|L&LHR9B3P4SZPo6tUj1TX_?i;lGph5+UuwotYo34auFyl(dH5ft|uAW&V zq*TgaK|m}Ay}(3$A&BEf$N-UHo*U&;@-ZdGxd@+O2zb9jE>+@zlPvzKWOdo)5EuOh zQO`o-v*^egyx2 z0{?$%{LJ{d@eAX5GUrQE}mdxUb2QtmOzJx;l0lzW15 zPg3qF$~{dvaI4QKzgH-~pQRjxx3F+lQ*I6A)>3XAxeq9JoN^~9cam}+QtlMxPE+m- z<<2Sse?+;DDfbEGz$ibZ+-H>goN`}K4vhLs%6&z-ua#!sQ0@ZdzNOrEl>44?KTr;U z%_YkHNV&_D`-yU}D1N5gFO<7VxoedBm2%f92b=Nll!KH3q>TQe+~1VDq1X^at)@a` zFM+rft`9K}%07n5#;!|2`c3(ew@lk$<wwu3UEaTsn zmkp>ix5{Ksnn!kv4zr+JYdaeop8KhX2J$_J1+$S7hT);vW|5`?$t<@> z>a5&iLZCiHqb-_elV*b}n9ZWzO4+Sq(_EmOFY{ow%`HJ(=+`W|s)YxTy}vD^StnqD zZHzuwaj>SPdKYXRs<$;g>iJ|D+iMRAv3N5;wl(N+y#^{UGtp|nNBcdR0Ckt=0Z`c> zt?6Qpk?*d%0D!F$Wk6)WgTpO?D$IJ}XA%ubh3^U*sgF>xi^W23Q;@2xGhjeY7vq+6V#LzX~*+Dgb*zfI%*%qBLNbILd9u2 z0n(vp1=N|gN2{QAbe$FwReXDWClaG?fNE4x-xF@~xlof3gtw4;Q6q^I4Dh*G!BD5V zTQKwWXq}Lv4+ek{r7z>VK*Dym?nfb-A1_4cE~8>dqn2>-LL9(Mt6+m5%PGYhV=r=d_u7)i@gA;Z3L(7<#yZPQQIpR zaTj=L7N^xSkO1k}90mpPG5~Qb%L8bmKUA+Wr#~5zwRjp-&N6Jcmti*W$AB*CSbj53 zsdeojx1&(T%1UV=N4k=g(n5tRBrYNBgv2R}1@j@Z3T{NNl-vUKRF>iOWhli7HM9)< zZDnP-tPD0*Nvcj~04N#~yDvl5m;;ClnOP-c2<5oo$h_ogr9Kz14rI6zl@i_MP&vy| zT`)j^(_gS!UZ||aOJzF%4k+E_@&IT+-7N-~1+ETo5J22XGI+7BO2zNv5WX_}16T$y z*9m|kfROq!s5%e834kX+X7iP5VUFc^LG2?HuyvEAb>T+RMwV&=dN-_!K4bn za0(JS#!h&n0qH?jT7;}Llo&%YdN5?S0fx6{@DZHrAcmkq6u8*XyspJj%2F0bi(|wZ z@m_JPSSyYb>qMtmFOC-*M3>koHi;9&iQ*)2vN%PYD&8kf6Q_&!vnvPU3~{D7OPnpv z5$B5Y#QEX^aiREt_@KB*d`Mg@E)kcC4~vh8kBX0pkBiI1C&VYkr^Khl<>E8q3h`NS zrMOC5Ev^yQitEJn;s)_K@p zEuIn2iXVv|i=T++#81V~#LvYq#Pi~p;#cC=;y2<2@mujb@q6(H@uGN1{879t{v=)z ze-?icuZq{iU&ZUN|NLy znI((lE%`{klAq)+1xSHXkQ6M1NTE`g6fQ+bRw+`7lA@&;DOQS;;-v&BQA(1Mr4%Vu zN|Vy149P|be9;I`iG~t^68J=O9VL2743rotF;OB?B2nT+iJ1}$CEk?yP~uC8A0_^j z1W*!4Nf0H$l!Qprj)ug_Lxnq%$R5 zDCtT`5hdLy=}t*8B|RwVNl7nCdQ;MelD?GmqojnA{*;tbQbx%DO3Eo2NXZ~d22(PG zlA)9gqhvTGBPgk$7QDOp9yYD(5nvX+u{l&q&@10~N<@;oIkP_mJd7b)39$!1EnP_mVh zZIrx3$#zO!rep^tuTb(TC9hGklagJO?55;(O7>8)my$Oq*+ zQ1UJ%?@@A)l0%dnrUVfAA`5=Xg1eemSnvP~zT5n?1wUiKFI#Xw^LFzp3l6d1SIkSy z`Q{hR-vi!FGcxx_rj{FS+%xre#G1+OumGWWLN za`P1P{T4jSyxaVl`Cjv3bG*60f;(IAN^_V67h3Qh^JeqM=4Z_>S@2Ht3uYhlQ|6f# zyx)R5nLoGS<>n{Mu@?Ng1s7ZJTnmP`o-}VXgUD}K@N4EXW~T+0Sa6g18}oS!e!zlZ z5W6k7r+JNezj>PlKWo9g%=^p%=3N#%&3wT8m<1m&@3r8L=0G!yaIbl(1>a-AUCak9 z_)QD$Yr(tB)6LJAU$x+gX1fIsGjB5QF)uT}ZNV>E@HX=&=C>?(g!v2eY4fM%g%;f1 zf;*VsFwZk@vB38-;RP1F%G}pH+JcvvsRg^t=ghC0q0JK(yv2OT{HWQ_{Iz+51%m>g zHa}-RV!_)jc)WR_1@|_uw_uPCG`H6Lo&|3;zh-{Yywd!k1#hz8>E>w`{I~^ov*7#8 z^=8n;a0><*E6g*@7c6+S1y8WxBJ-CP++e{VR+;%7^L-ZF!-ChDOU>m9mXm&0QjO~4 zzdWFvbhG&hB>B8JFS5#uD4#Q1+)4d5f-aSfmGG&_K`0ufz?V)Hz;_Ikz&8q1qfzkn zG`{dvGvjp+>Q?BU*X_`~4F~3z^hmGO`{|?gHb?~z)I0P}{RI7F{e5tHI0L>kW}beb zevy8${$cp?m?!j4>sP>6$gI|{({Ipk)xWOatKX+Ts6VMcum4JaN&hQ+U5w5UY=}0b z7;+2+hGIj1gTpY|P;Z!Om~M~_GYl^o4j9fFzBF7h+%%euLB?ofhOxj{WbAJ2VeD<} zYb-IA8q1A?jYEz17^{p9qimdSTy9)ve8KplagXsmdjbKy z9zyw!@MSO#lMB9bWvOYMX^ZJK)4QhkOovQIOvg+gm`<8bnNFL|nm#t2GktD4Z~DRX zqvR=EEGG7UBzx{|;~?Pc^5y}Z0EUOrxaUZGxzUb$ZF zy?S`{^6KL?&}*32crTY%lh;JA$zBh5J>m7V*E3%0y|#G0>2=KOjMvv*SG;bRb!IPf zh&jhxZXRSFVjgB5VXiP&nyX-C>@&X)%iwGCPZq%vXi2izEj=t1mPX4Q%RI{x%fpss zmM1MwTb{A3w5+ylusmmZ!SbSIvt^5Ao8>LbJC*~M_bdl3CoCU&bKYj}81EGCZ148o z#oqnBE4;^e-|Ox4ZuFkuJ;{5D_kG^ey=Cti-Vb>{<-Oc{h4)JD=e&1#zvF$t`#tYN z-Y2}j_WsfPnvc#W)F;s=*(cQ}-KUdJxle^pwa+-8Nj_72X8Jtfv&d($&r+X9d>-@J z>$A`2EuVLM4*0z1bI9k2&oQ45eQx+7U(T2J6?}ER249n}zDs>q`o8S@w(keNpZR|4d(98N-^VZ3ugI^vUk|@t zetrD<`jz;V`ZfAZ@SEf}#qU19>3*``!+tON9rb(P@3`Mdzf*pv{m%M*?4RU+mw$Wz zj{cqeyZ9IRck?gy@9E#$zmNYw|H1xq{O9>E@PEL6k^f@4tOr$V8G#kqXF*+91l1V@L|B|fZqcC z2>2`DMj#600{Os@z?{JHz(IjS0*3{T2&@RK46F*=7PvidN8qc0I|FwIz8<(Ya9`kC zfo}&M2|O0~SKy5x6vPGbK|+u&$Pi=-3JMAd3JZz|N(f2{$_gq7x+|!CP{*K7L1Tl) z1v!Jp2f2cpf+hw{4w@RYCTLyIhM?zzHU@19+7h%aXnWA%pi4oQgRTVq5_B!-*P!2m z{s;~U4hxP5jtq_tjt!0v?i@TUcv|rN!8CYg@a*6@!SjL_1fLE5IQXmJZ-T!K{yz9( z@TK6(!B>KR3BDTqcks=Sl#sNLjF8Nb?2z0Ldq_dZT_MFGJwtkj^bIKwsR*eIxi`cW z(iAc=WOB&VkZB?7LNNrGFEl^2W9Z<}DWUg;P7jqsXN1lSogF$iba&{U&^JQg41GIv zf9SiRM?#NRu$5sihP@iLGi-O* zp0GE<_JzG2wm zj(8{%9FI5|aX#XQh^tm)6|Mf(NNcLK$lBLhZgpB`S?5^iSr=Fzur9Jb zZhgl3taX)jt#!Ti4eJr>Y3pa!FRWi$zqVemerNr`ddd20B*g5I#z-;JE7B6_6X_Qj z5E&F%5P4T*`^b)wogzC&c8%;7SrI8m&WM~9IVW;nuOd zcSatF{5JCY$cvFbM*b9eCGwZZYf&AeIz@GfDvIhJ)g!8BRPU(1Q6*9RqlQKek6IA* zK-8kB#ZgP69*KG^YFX5iQR}0gi+UmI#i*T8Z$-Tmbu{Y3sMAqrqdty07cE5Vq7Bie zXertp?H%nK?H`>O-9Nf4x;%PN^pNOb(IcYoi5?j}K6-xi^U)ilH$`uW-WL5*^vlt& zM4yTNDEgD=PoqDNJ|F#6^e-{KG5#@uF~KpRF<~(gF_AH~F?BKZF%2<|F%x1Y#!QZx z8Z#|sdd%FI`7t|UUX9rqvpZ%_%o{Op#=IS~KjuWthcTyP&c>XN`6}j8%+;7*V}6VI zBj&Hz*x2~k#MtE6)Y$Y`TWnTrPHaJJRjea+bZkxR*w}Hg&e-v>uGmSji(|LOz7+d% z>?^Ua#qNyV9lIy?v)C_Uzl{Al_CoA;u|LFKkF&&O#%0Il#@XWv;@ZXC9oHdlQrv@a zPsMGGI~sR3?u)pKao6KfJQvT$3-Q``bG&zaNPK8~WPDP5O8njNo#MO17sdCB9~?h2 z-WfkBerEgw@oVFc#=jqbJpN?-srb|JXX8JPKNtUL{LKWMKoT?w+5~-qF~OYRn-G?e zl#r5;mXMKghL5O5{@Mt zPdJ%yD&dEOO9__~eonZSa6J(v`XvS=1}BCkS`(ua;}R1SQxek?GZV8D$0bfld?0aI z;;O_giF*>?O+1)*IPqxW`-vwKPbHpB{5bKG#7`5yNc=wWQsU*rD@leVQ<9WqPV!0e zPYO(mOiD}2NXksgNwO!kOKP9gF==>GMN(x_RZ?}*sH8DTa?;C5uOz*ev@7ZLq`gV| zk`5*vPWn9Q@1&c_IGH5#$&jB)j!Z639+W&Jd028qa%FN=vLm@Rd4BT3$NFQ}WNrH&Q}U!crnqqEez$;!+Y)l2f{*I8sKZ)TGp= zI8z!@8dD~xY)aXi@^;Gply_4OrF@(6eagj@%PBvl{G4(vRZ2}ywWVgI=BDPS-j&)u zwO{JERA=h=)W+1N)QPE6QXfv;p1LFT)zn?7ds6qMzLk1B_1iQ}nl??JW=a#&ywbeW z64KJsdZqPE>z_6tZBW{fv=M2}w8pdvX_L~XrY%l;IPI~tWob{QZAp7Q?TxfI(~hN` zOZzPC+q5fb*V6;jgVRIP!_y3&bF?$?zWz`Uba5A5?h0<(Kf+0$u`wC-6q?fvb}6OWjka0$ac>5x$O(vm$q** zBQhg1V>0726Ec%BlQXk3b2Iy9)@L?kHfB!9oSb=I=Jd>&nNMfFp1C)3U*=nx`!nCm zJd}ApDr+n!yJeRp<;?859`*#oji zWKYeWmVJNrjO>}&v$N-Augt!f{bTl(?5o+oX8)G`d-h-1H*;_fmt)Kka|&|q&gq!b zDW^+Lx18dfo;iJThUSdOxhJP8r#7c4XJU?=Gc#vS&b*wpIqP$t%h{OoV$SBAZ8-;X ze#p6$b2;Zq&efdjIlt%fxskcixv{wkxrw>SxoNrGb7}6(+}XKvbLZziko!>XlH7-L zx8xqk{VezUJZ+vi&o3__&z83-Z)@K6yjSve=DnWxM&4U_`}5w*JDhhc?|9yad1vxI z&igd)i@dM$F64cmcPa0uykGKu&HFv?ue_Uf&aScR>_)p}x7dB{0rp^fnB8iRw#V5M z?J4$jd!{|dZnw9yx3?GCyV$$gd)Ry1``JtF<@Uk$VfG69NV~&6+TLiNW|!?V?Q`tw z?a$j^v~RX=vv0TWuph7=v>&k_vmdvAY(HoJ#{QT6M!q&*%8$#>$?ufkHNSg)&-~ha zXMRI|WB!EvN%>RqAIe{r|9t+&{MYh#=kLvbGylu{Z}Pv({~`a!{GalF&c9i}74QYx z0^b7vf{22+f`o#c0((Kbg7yU!1tSX_1)~e@EvPN1E0|p{w_tI>ih`8|n+moTY%h4F z;7q~C1)mmtUhrkX*98{}t`=M``2GLYbl-nYRBao;X@Vd{x*|yL0QohAP9&n%FFYniPP;%e?{<7(&X;L37!a((Dx zTt1iP%69d44RQ^24R}K7ZTXLt}z1-RE z0q()>Vea|vMee2U|EAH#=TXbo<99@B~NLQw-(r?nW z>AG|yx&_^e?o4;39W+I!X`TLvwrHE~Lub>2=ppnddOZC(J&T@8FQ6CGhv_fr<8(fK zl0HqJr7zRh=o|EH`U(Ave(9<1sp)CtY3ga=Y3+%4fQR!WJff$kNAh5g?HS}5>lyEv z;hF83=UM1E=sDu~%5&V4?pXiy^X!i zykT$5oA8R>o?h9jdQ;xs-fVAw?;!6e?-=hw?^^E$?`H2d?~mS}yjQ)~y|=t~ygz#% zcz^f)<16JW>nrbT>uc}p==;F;p|7j2yD#L6_a(okglYCQr(|t32vwfR= zTYZOoM}5b9`MyG5k+0bI!1u`ahwrJsqW=wlTYp!-!%z7=e%=3(ANy^8Uw=RU0RI>M zN&aR2ZT_A9J^uavgZ>l#ul=X|h5kqWl0fOeTY=Vr_W~UPS%J=hct8()6u^Prf$YGf zz~aEtKwe-~U~OP~;8@^9pdfHM@J-;SKvCegz=Ob}z>{F9VD(_FVBKK7V1r<*V7H(% z=ngVLf6xpL3l0yC42}+t4NeX&2`&q+2(AvU3+@RP1WyIe2EPq{A1n<18T>2wBKR^? zCR8odDAXj>Jk%=GHqplqoHG=Z$r02 zcSD7tqEKu};a*`QY=tL>mxPyxSBBSw*M;|nPlnHg&xOy2 zFNE)fpN0PlzX-pKl#W!3G>SBhw1~8hw2gF&L?R%K~vBIv}afD=%_ z1H8Zwf*=9_;6MThpeK-k3erFa1~35zy+L2l9}EIRz%VcZj0B^>SdarIf=OTsm_;>;e100dNQ$1;;=>I0?>xbKpGq0bB%^!Bubr z+yZyN&)_~N0>$7VcnqF^XW%dJ0=#6)u&=Qd*oy2MY*n^8TZ^sB)?*v6jo2n^Gqxq$ zhHb}oV6)iHY**I7x>%a^vVJzmM%W%K%W|&*c_Is0g-x*;7O^Hv*xqb5+n*i84rPb4 zpRk{@W7u(Q4m**Z#7<>rum{)^Yyo?k{f7OPJ@pbWy@h$Of z@g4D9@jdbV@%;F?_;>Nk@oVv$@!Ro|MAJlzM5{!bMB7BWM2AGjL{@@NBok6XNu&~) zgr2YxB$1n#l9-;DnV6H9mspV4kl2(sl{lODHgP_2A@O74QsM?*fv?0@=Bx76`09L3 zzBXTnck>MI=R(NA>er)^1XP2w|K(Oj>*UGg>Et)b%gH;*`^n#76<7_{fVJUUupX=r8^Xr08Egq# z!}nl&_&&^nonaT)4LYC;x}gX9U=T)N56D6e@=$~jDo}%Is6zu<(1v|rKR6H$hC|`U za0DC)N5L_0EX;uuVJ@5kr^A_WHk=0+z(sHgTn1Ob)o>l$2sguRa0lE4_rm?~5Ih3E zg2!P#EP$usS$Gbfhd;oJ@F#c`-hj8@U3d@Phehx=_y9hFPvD=h1pXtHlFGb-ZYxNY zq$*N1sk&54sw>r#>Pro!CQ>u0h16PVE47n4NLf-Rsf*N2a!4+Tmb_9x3Q183NSwq= zqSRB8BvndD83{=rNm%MF4VEQYl~Zyr8Of%MWn1nm_mc<6gXE#|aCxLWS{^Is$P?sT zd9plBo+;0k=gJG@MeL_n1?KXN%dS3lOy`)}IudBDzyK13Yq!z0W z)yL{n^||`D`ma`6E2mY^Drr@;H?^8t9qnzczSdA{qBYlAX>GOkT1Tyu)O|4C>Pi;vZPMu9%P8Fser(ULOq~A@qOt(&VP5aY{bSB*| zJv^P0o}FHjUY5>FZ%FS=?@#Bae@I_X-%Q_5|0n$-Q#;c#^L{2P(<$T1xHIvLk?EKD zER&m=oSB+goLQUMmf4xvojH>EGIKWbW9DM!a^_CvZl*BvP@kwz(x>Rt^_lu?eV)Eh zU!pJ5SLmztb^1nqi@sgorSH-A=?C<~`j`4~{cHV{envm1pVu$w7xl~fHT|Z3TmMLvOM{Us`m%ApFV5~_l#p&F<*s*CEO2B;Bgidvx7=snZ{WueZf zE9#D%$c-4}MQ7)Q- zrlVPCE?R&Vqh)9XT7}l44QMmkhIXReXfHZ|4x^*!7|KT{(HV3OokthYMRXZmLpRZF z^fS7TenrLT0eXb~K+n)~RD%97N*QI1^2Y1N8%9;5x>3uhYt%F98x4&nMsuT;(bi~h zyl-R~osBL=cf)1ShWAx}Xvl~dz~GF8AsWz7jFi#KFbvbchHdmU`Wpj{A;!nXC&nma zj4{s0F(w+h#$;ofG1HiB%r)j4i;N}4a$}{j+E{07G`1MqjRPicCQZpy&9teTADP(f zZDyMT%)#a`bASlum`MO$7gV1=z7R?JFRq6IC*N?E-u!?G;f z>TC7423bR`;nqlNv^Cbsu_juRtf|%vYqmAdT4*h?mRl>WHP(7-leN{_VePi|SqH5n z)>qaEtH3&KePexRU9c`%m#u5oP3w+z&-%ss&3a%xvYuFfS|!#$xD+mn%j1f;GOmVe z;M({t{0@E>H^$9yOWX#x!|&q{@Q1h?c49YXupftT6tg&v1>6(MSi>2Nu!#xogZtru zcnJO&e}YHh&+vFW0q5c=csibi=i&u;Fj0Mn;g4WEA;~j3*OFE}2ZGlIdg?nM>xAg=8^VM)Jr? zvWBc98_8y}mFyt9$X;@Q93n@_F_KRT$SHD$oFm_n3*<*~iCiXE$qjOw+$HzOFXUHJ zOdgQm$sgnyc}_~m3-Zz~W4~rsuq)b??W%TlyQW>+u4~t`8`ur)#&%P?x!uxkW4E(A z*d6Uob{D&w?X)S|WBcr&9kzSetj*a8Td;fDvaQ-_Tem;5Et}YV?0)t@d$2v!9&V4c zN86v-AlMb@MFbHn zs9-^9_J)X}B8noSfPe}}G5TM>n>Tx7>uRbS8WR!@B8&*) z5RU{TA_H<78d6bTIiY&0t$s)d{A#GS*OrGg+Utgd*vC$^RW>$^Ryy@9>tk!NRpqoj z=z{RvRi7avGL7t&8>c^3Rnb_X;;k004w;dJ5>Yplin382DnxxyC8|O;G!9jxDQFsc z06m1BL>tkI=q2S8un~vhC>)JraSkrT zMYtH3;J$bO9)t(uA$S-biL3BrIIhLb@Ov7j@OuuPi|6CT_(A*-UWV7;wRjzV7Qc#j z;yw5sxc@GGAAg3whNExrPw@LVJ_Emh$7k^++)5C^#6;YP2MJ);NiYc|(d=o`l|4-| zNG2&HC8RIuM+TFzq>4-?Q{Z|%X(ZFhJ#cg{Sq#4)AdkcEC&-gz4cS7TBQKB_$;;$b zvXi_<-X#af=Wyjq@;&*193wxHpU83YGx?SLMlO)c?@zc-xv#jR-1poM+)3^#_YY5aju&|o@5H~m?g{>76=as4-1b7D}g+0Pv;S=FA;cMYLJXkm?{2&|`P6?-lKZU=9tHL!= z6b+(LG>J~4S#%cT#jawym@VdrxnhCXODqw~#ew1wafDbYju$70)nbiUCpL@I#1?Ue zsEYH%h2s6= z;t4qVMLa2<5&se|h!@2x24WBm27}RHHgqz07(5ML246#fA@R{KN9DQ#1((s+( zC>(un_{ng}a2k%z7|t91He5DbFqPtbH;7PUB>r~ zpBul0vm?f%#uLV~aCFvq&Ug`38MmM+6EZoQJWZWV0Vb;{(v)P}V(MZ_F{PO@Oqr%4 zQ-4#bX^3g4X_%?PG}csUnrND2sxdW~8cj{6Ste?lZ(3lw&$QU|7_@ub^rUHpX{Bj{ z>1oq8)AObsrrmILk7=LjbJMq`*>HT^v;cmeG5zi|!|Akn6kcK;1OF<_W6hQ3apv*p znt6h`0!#3>+C0%b3GPiY*O(`pYq4y$b8hB3^AvNVxyd{gu1_o>R{&L$%`45T;cSh05|-fa81q_o7e4Et<$Ci5^E2$6?}C@Y`8;T~$-LS8 zocVcaq->I%WV0;Evg|B(k`>t^yU4Dxo9r%o$eyy7>@EAqzOtX}kGa&NhhTr8K!edT^~f4Nj1AeYJI@<4fzJXjtg50!_>!{rh3 zNO_bzS{@@;$YbS7xk|RlfE>R5!Nd z*=uXT7~AW0bDURG(a>OP(4QXGx2#`vRRfslhT(n7`c_P~X~!e`mbE>`?%WEJwb22L z&;hjLR{E9=ss_Y0w!zi4RrcnFK_Qh49|Ne90X_md(@^QH;H<3&Ix^3j=yxEnupTIE zw%1RBHih=u#*&KKit)Dkp#aY|tq~p^)VFMa-QGya0Ls-+@)jj;Q&L9BF3QzXvRgG! z&Q9?pO3Eq0l$)%IDze~3DmeiBPeNT#S73wIbw;2nsN4b69d0F~6hIQ!&{$txJ06hd z)PYY_S~F7wJN)|!q3@h z2vIyyl}0OG)2DYyO^mU2NlBO)W1ZfuTPhrP=`wTXkdlhZqT=c*8}zLGu%x28wtq#f ztwtZ;@hGL7VN>~oXd;?~YJfqLVT##N9dNX)Y3x+Esm~uKX#;Exb@tjSTm4{=Lnf1| zvkGL4Q`hSQQIDF}p$625n$T3W6UF5ekD_?2nsWrTXz=es)6onx6U_olvylqeD4K)r zh9MY@=AwCMKAhc$7NYynBD8q4;sFv@Q)6!~uWzaask2oTSB$mQFcy_H)!FJ9aWD#u zGMGZFAEOm_xM!;YM%${&E5@>Gy&7$kVSccAqYZI>eMNHv8_n_c_NLk@;C%U1jq@Ox z`T>ZbL)!+Es;HnP)u$;gRlQ8=1_dcD6ql(R^gXh6k zSC^_eU%~h={?(voG|p{8OX1&g^c?VP8+snS06i(FWfP65gFIVJ4Ul93SZ*c@HmV`2 z2QYN{^w=&j*2I(~CMt>DyTNht%$c_by#l?ef!>K;(;$VZp(Zt74gU(gf!;*B&|Bzj z=;dy-2kk}sVCdd~{=A3YM;~ZxzRux1dyTyw#;hF1NjnBYVf^as^^G88pdTA;wT*46 zva#M?!v>A1Bj|xPE-+C#j+0bh)v9`_p1`GG7asqET=;B+M&#Nn>Z`1cEp@gur-SHY z^a)V*Df$c@K%b+7zz#Oy;1APoFwEmLxIsDn5mLQX9}Dj`qPVHDx~ih6z5>KsS4dx? znQK5)v%Wxw(bwo3^euoqg1$pX(f8;Fm;mkF(*82Qj84|ovbu^&rVsKUzN@j1*EDKp z)n5@+KQ&-bSxW;5HuP0%@HsjT@IBDa=!6D&@Pz6{Tc3ou?)pzEQaCk0C+b&p zcn#2V15u~YX`LuFNDX8-KvlMZ?_ha5it`LbZUSnD_ZPab4qZSO(WW+C%~}*z+iI#9 z%b`a(l}y>Q6P`XFm3Fvx6Z*?8(24W8`KAEOn| z=^%bxnfP_rMX`H~HL3fZL~$kNbt%UNO%w~&0uxAd5x5lCgmz;mY-XMycE+8s0-W4~ zE$D6Rf_7n7?1tU32lm8X*cs9 zzxI)8P`j(SYVzPgc6*iGp7=TL2{My}d*R-=4-7hpslBPb(x%Pa1T|5O2l6zW8haU( zya~3-Ns}w;Cuy?+_rv|y;{LdlO(GB@-GONb1O0}HapSdilw}O1+J)iJS~A#L7uzJk zGP=%QH?WS4yWZI}9pO+cufa0P(nn@EN*UI#ae}R$sm_Krw+N2{YYg%}23LRyj#g9D zbTw1W`MPZYZ#R7790soj#3a>$nP~&d%F0u_|6B7qhvrkEc@Kx?8Ra?UUGo2}^<56F zRcM{%&^o(qsFL*F-;M8Ci|@hrYTja-cL_pY(E{V7{na0vhovwt( zf=<}4mVzD_Ffg&ZwIsJ=Dz(p_57_+q5PyU}#@o~~b&xs~D7wS^(NTZyfcP*VE_XmY zusjKn+-T&48uO)&mhs3DS zGDWRpa#;U=mP2AD5*l)Y9Ihsob~yy8v#C|O)Qwat|C7`avo3YSOB;ZTOzKEyfHO`T zfU%m?jc=1WV#WC+NSy#uSADa*kucP}mV}cCBB>MA$w0^LWlcv&Vja+R0d$ib(AC^l z%-R}ucWBrH8rC{Av_k-;hX|={>fv7_gmolW7ZFmR4NH^S$V6o79YlomhA78TL>eHz z0TJ=;+cbGBNQZr#wXscMHPu!(HZXk!5sT(0rnW^a|0*WyNg1Pu3?zdzdgiP1OzH#b zg8#di3?;+BnQ>HCYsqK_F=0&ZPZT@d!GPF%hG#g6_G%=}BThzNW_D|KsWO}=p z)Pk7QsWU)KW)A9NEiW0^aEr7wfp#KO$uKgFw5YRy9ID=PCyCK;lbLMb+c4h^m}fg+ zR)^*^LCys-JC(PW9Ua6x2M~(@#2g0@cMnR^DE+tgOC8!j2JP>4Xg_yQqSn4`%t7$F zYpNkBk;!1nokD{RWJTMUuhzzVsk(%X`GZF=3k|d=6~Y5IYz9wIfl$F2f&)LY4$UVU zAl@EAHj-z^CbAj552L*h#&jV>m-neninmM89;L17V&z>maP#Bz3L2Qhn6)9pfQ+@6KE#9|9jghOEU+ zd;~A3uf2Y9MUB=$jjIm>Umt=@#$v`!*Rl!rW^365h?;94V{7eS(*!C~^TNqN%_V+> zxx`w2g?xp2Zy<-s*W?@WEjdEIQy)_wSD#RyRF|nwsmnoqu&kub+CRV0T2}$V_1KPF zz-T40uWd-VwE(h5bq!55EQMr+z^D=Oan*H=)~ShcNw>D?thFicRaj`9+BGiW)(3pr z5cbL|zx5_0pbD!YXoIdb^w&sXjJ{4~-=dq_=%ajs{IZt(LQbMA7Ui^MOl^$=nPUV2 zAgJZ82}v652jZeO5UbfhjO>y>Zdz=yeY|~i zQnyf@;H%`?I&zKt!%_$BlCQbU;3aFr-jOum5Qo=uxZOo=e^^i0F$JH%GM3CG>6Qo` zOG<*|rG|s!(Y3XDo6XFzeBiF1N{+h!H1&#GtJ zvTd9Urj>K%I-z;$GwL5Kj|aKB!<;MU#<>H0544x_L=Bubn#=hD`+HSE&|N*QT1&CF zr2>InTJ{k<>`jo$JEuOao-a+*B$Vrnnl}PsD;LNGalu>&7s`bJ`sdUa)ZOZS^^p3t zdhB)yyt#nS%Ejoe4Hpj}pN2+Tm}|3D8*&)%j$9ou>Grug1|^W|#-=#h$)#veUQnNB zmiWaxSYj@NGu>c`w*k4qBUr>*)5Nj{X->E11R0(nuAq(Do*JIr>f4OkJ^#l<4A+M% zcC@a*g;EFW`m(xRx315rFa0O$%JtE$D>sB07%qibS8kO0vigc#J?nl^cWe zxv}aFu&z5t6u~^T=G(?qG}ScTY-73cOl*p|YHlJB^qTtS9qg-)ovU@g-3Yi}cfkDy z1Y?er1v9ALdQDls9c>$K$VDb{f;8`2>u?V;trN=h(yZ=0md z*G6!^x{pc9J9mv>m)7_>)s|0)Kd+(9M=+#&8uZE(I;51Z8Q)o<=32H$eQH;BPk zpx1(jgGf)Vu;x}*G^Dkq7MQP=)aI*0dN(QYc77YvBw^ffO%9*ue$faxrvAXB+jI9}cqBgVS756AYG9`%#am->Qd6Bw$HX&!%=HT)9@B z8Q#dC9B8I~r}_--X{(uPV~{mV$n(6gju-U26@364Efj6$_jqMheIiA`B zn$_&mg_#juD!Q`qffb+IJBu(bsDXE8<3jfG7TyKT(Z;5edddVY;c4}_=??P2dvT#m zK6u}@4Af6x^MYLz=uKHdT!LmM`Oe_T@d3P*59EXRU_M0sSv{ftqMlTLRexiS9P@Fy z!0M%*5@1w!NxF@XgT2r~J_1zBLfywv&zRITZB7dxqd6_VGpA)pel_#cTN(zJKn5BL z0d!6#@m<#NT~HQ?hQlf!tnyrU27n34d!Gzu598 ztOfRKb2RuI)ch=;%jfa=d;vUD#P{TT@xA#zd@*05UZ7Z@7#4D&>IE9PQS3!AAPA&5 zSiMX!WM{u?UqR&i^QHU%RKu4cl`rQ9@`I2EKbTK}f5Tw?dLciYAHk30M{yT;h*bFs zkcnJ-J;;RaZ9+ax%cr-`1Ms=Db0#q?$3AXcgH2m=D~A=YhPsM+aCm?rZHpGnGlQpc z?b8@E^&&9fPxX>|O}(OCRV1T&iDG@}ov(zoPktEO%lV=s{O|w<Ux-Zuucsl%G|szT|qa&8sx1Dk6H(N^HVet9LP5^%o>AoAgH4la##Q+CB~YpgMn;7 z3Pgs3rUSf$nO}A+OlrO`KaFqU@8YLxdTSxYFjSn{s{W$}vz~QKJ$^P@CFJJ>VxJPjdN3+j#PXHX0yHqQ(+~qvF-rlGv5G$-tKX83OYw z`Mm3)8^7jy2u!gNgjHRvuN^^TphgZWsjiz`QCA1?@9jw};GfYoI{&ObY#`=NpwlUq zZr`96|2%ULxI_F)dIOjX&R~ToR_>%`cJTR*W(casU_!ARk|%^U4R%;=tgEgBw}`Fd z0ihikZ>ILT>6u2xo!govjn8@f?zT?s(`kYk+ga;Gz<;nz{JVSsvrPO4nq@k#TPF1g z#TJ@{HA>uX-=HV|Z5um}>J31z#!jz7DA>}|8<6#Atgfg58_yW(AZ^KdEc);K%;!(H_2R5f6sSL6 ztrvd(g`a=$MYrdt59m+hjcnA7T_Tjiw8c!?JkZJ;ZdJQzd$-oknR6w=XG;QHq zbF8!l=1PVHsvAHMC=Q}Hj^Y@KL)1TEP~(}R4yCvUs7aUn2v(jHtAYdutG=3L?~<%d zJJ9|~3828c+%BP~&A<{Nnn?^9D8%U!lSy%grs`lJ56ZoS1k}6+IFqEIi-O{!J7@ZY zZbEl7Ur6D5gR{_<>EqW3-4K|ANQ%Q5fni`@)WvWPWa{-Z)`|uzC_2z3_0A8;UMB_onD-eep!UlvfT8UK zMPDb#GjD?3-e9xZ>sV0UV4Yl1+f-3g(=t?NA}IMm)0vk&^PBcO9b`J87(&l=qCG-) z0pe<*42MGDcRAUF{h>Yw`W{YkBI|pCOV1RR4`9=K#o2_72p*JV=3;c=I9q}!h|)# zH~~7@jpFVUrydX{0-{L*h@cyEA98Jg1R_dsL$vBbijyf$>1Pq%FDXG$2nk+HZT`y- z2lpI5|MKW9w^+L#7K>$JczF1G(b3UoyLIb!HaIx=JwHFcg(j1!M;q*08aiAM+}+)q z`uFeu{l<+OTfh0{o7TVo{=4<^<;$&KfBkjqrcIk#%gf8Z4+scof;NIfJI6!8+uOUP zsj2DWo;`b7uU@^%3jJ>RIe743>x>yQE{2ANw%i652mL6VIC0|7+qZ9TJ$?Fg>p%be z)A6}>?OJR5=iN4dj9>9BAFTb!%(y-n~}?0H<~!@Yi$Nv}s3n?b_A)$tRz* z9yxNP_19m2ZT8GEzKKtymmsnf)w97`^wr$%k zA3AhMd+w*7eri2=@}$RXK95Zc@%z4+pbmjOncBb?>Sm!D$y8D7>W#s}6P z_BnU%oc5PpWA_-1Km71R>l05raq1>GA+@!&pD-AV4#pS8(+d|aXtKj(h>a6FXE50~ zFuEp9n)C_4Y3~;tBG0(ExQBM{-hG+%gN+Ys>p1r8_{x24$_gRaHF;@^qES4EwNSc8%R*&$K;z$2kV~8C{ItX85dx z&x>szcFeA^d+eDz!GK%Z52KUynLW$Kg2@N_uw!C~ECroK8mCCJdgrGt*Enoq_k!e5F zpKieSu3>dPZIP7F#3HGDh@{#BC}A2dUW+&ra0g9 zFWv|+Za!G!Mc~T8dKva+>yE+_>?b@38B8x`kF%M-wAdv?3%H;-520cGbkh&hTceiQ z+3s2iQBsm_a%cXhRXX8GzWBDG9<0kzoCiU=wlL?TC8-$u!}`bXs587ReDoA5K`h457Ii43dAR+ zq-qs2$&iy`0`h-MVGH|(cVO_Z*PS*BuyCr^ovINO52bhrh(I2=(dDoi^FO7rh5dRO zThNM*gxxHSEgaThX{A3vz6wQ<6c2ApWeeZnd;ucS5o#{QBM0AM%|kfGe7AQPK{>Z$ z)Gr#No)>=888uo9<;Liu$vphjZj4bWEC{=ETsmN!h*YwOsEvHZt>niwKMQ?E}9hcWzJB~VckG-c0c}inmj|lj2-|ZD6Xe?@>f_dC)TS`p_Ewc z#>85LA|+8<#iO{EV!H~FW*rmfgHX{6wf#6(>>+00d@+lXZj>a0NR#eEAS+)z8Dikl z$y!(@=CNHvuCP&LoV|WByIBFnkZ?b(ZSRs;C>E_1i^QIcyATQYtsdJ}vJQXry<-qC z>sR&D_TKb{-hj5Bs&%6APMzq-)@<0k)H>0mt=K>xAfC=;$tf$WIanL*Rw(GM)z==y zL5$)~6;R4rJKol-R=We#wxb;iXopigLqj|5R;ZFImr8F1SvrW)>9cfwr{xEnig zLxmB=D#JYq&{UxD;GS7wCzcJdEkbpGP%kYP??Ne~V2@9K2r!E)TI@}Zh-U)g*%Z&y z5Z`?(Vu%w#VCDegdvwJ2Pz-fN6wh_+^nB>_eUzlIPN#xY^tCm!Dvq|zY*tupsVjy2 z0<6r4i(%7S1JtLmYYq%p3Ut7fxL>1V!L4*WqS5i_^)bJX;)U&FeqC;#5|;xhD=EpK zB#Tj#IV`WnR#9(dWyd-JYnT+cSF)?HWejX@zP++Zv%x^lL2oBkYcF zEp4i9wBE?J(kVK@JD~m?60VaO4QzHf()b3@xJw199@VIN_)BfZU!U(lleqgj(}1E! z+L;D=HD@dc!%bLqobNFv`D;ra+BAWJ`PwSj1f;dlwz%Cy$VWiPCybC~8X=G0mObJD z5$vh>MH_ouU~4KQvYuc(dXn*Icu#OCtXi#oL+J$Y4<^95cIqHa4QY-HI0AT&GQ6ua zyvuKk7bN%?;Qgs%SXMBUD;Y{)y@vEg)(>QeZ@}{#;5p6ktkdwUxf7nVH!yo`JF|yq zC0U@7pi@n?3_2X&(5ZGUbO{iFa^Iw(*>EeGtD2NugYLBI-FcegjjTJ*uJAp?i= z4FV-16E6eoj%X~MrVXsY1bY%I9W{VK5|a$h6mQiKK6?j*1`AF%xOO1i!Vo^k5Dx6m zio!~#>d?KJYGW6!&uoJq!0$})OB(#=?*u;(;0JfWe}Tc*>PpH7*sAQM!*uYGC}kjQ z^RYWXj{)fL><$h3%XfmF2++H9K!>swieF{agGouHQj z^s)}C$(osEI=%?DjyJSxi#7o_ z)B!QzoP4Yi^TC~nX#!%JJBay^5%UovW|X!!$XZqh$#SsrrRh4(nPB27*{-4X8xFl! z0pT2q4`>KKy%WNFuTNa){b%hH7ktPYF|zdaPO0*>e?oIQ-g+I zYXQ`ywfA`ukN~>(OO1qsw~!!eu7%-2=<~yRpTV{Gg7x_j>+`_88c0)@Hjiv`wzSg@ z*vkO+a*DsvU?08}wx%!)tFCts6vo%>-5Ufu zovHW`sQ8#sfre;Q{KBX>$*360K!e?!)>t~e9qK`VdWhoRHK?cV4D~QT{YHa&LW6pm zK|RBuj?|#SX2z-2AV{S}?T~)}$UjmH3qUY!&fOXE&j9%s2H5~n0&wj-gZu}BtiUq1 z2aB+Dbq9+bR&d&_3}30O9nJ56<{ZU;YiKUqGUjbV^Cuv=z>sJtE;1CC7z)^i*Sl$Q z9rL(5kd#gYAA)&Uw)&21y=vQD<&aZvtLPAnYk<3z;(s*US8l;Af((lXj0C3}c^x;% z@KuKUnvUCDvqG?zT4jaYQ{@D!R*qW=DF%yXj&d6M*TCLec5!cJ%qo9)z7;Ws~8x4-?o#)`CH!MVPQvxlh<{bmgjz?&4*`E5bW`FYzI?icEt9 z&|~5!;&4NpF^HQe?n3kUJY%>qLOe}cxMh4#C<$%io-!sF6QRUpE?Q^UWXLoo8(|gF zm}X2T;b=Lm7H>eS4Py*DjCo==LuX^5NDXt0y`XgVRbw${#Xe%OVHEZyW^uN$T!4tr zI2dmw5yoNM4)GB_p9?hfHPoXO#6-PpqPB9*9_>u1|ZWgZ^7aNuv zml&5~C`l(%`69yuhI42%UqXh8&#=r0A?jOJcFY=QV$maBM=l1`L3LFLQSY7@nfR{_Xzlz6jM zNs>rO7;NHkXRGN;)sYl~!ahbxS1k~Ho)RC5Axim_k~AnK{)CcjDEp0}xRK(0uu~I~ z4tG-m1sG8fAyeWHySd;`t_t?yK34AV0>y7p{DB%qNoR_es}+=Rthi{FnnLjj*rZlP zF%UVHl0Zrdp!~QDwtiYvV8JPtU?P3h-4tJef&^9y9So(()8K^}U#o-ELMZBcS%uKN z1=5<^)l8VolvO8zVR)L7J`^9O1bWvScEZh9XK58o2PwY5GG>`77=*>Jve#C`Xk5{@ zL0H=!Y_w@U;Z@`6c7<%*04vq-f(Zy~nt*%_0pG5lDG@q?5#vVVGdSP4nUXw8V7neA z`Q>cO!l(wlamTh;Fzm)>5o}S`XTtMPiDk$H87+rd(AVH>Xf-Tnl5b2jCa}T6Fbu$A zkObf*a0~cxSRZ>BRv6qHiaCvM!B%JJiScbV(P5*rA5Mq#ofh1qIc#mT0gBDEcP~IV z)~lh+1|?M$P;v(Sg2Y~&34VbJGC5Ru{yWIqx4V(4Iw>$04|OmVOf2XfkTmmkR!Zee zi)v1Y@!RYC`5rZ|H@sqa&v3}_Bh#udA5Lfj0>>9RI)7V?V~oFcU<7Ld823}6T*qh` z((dEvLvbGJWDTPX^~}fF2Z9Tde+L9@aSC>Z%`z^##>W{MeY+XbBefDnA<}T5RBmR>JQFa0Fs*FAe{jgxgLr zQEO+cHN~{E&XmYzF4F-4*I8#BQpR4K0`E!cm|>=_rf#rskxWStB_V8v1#8k`O6rgn zQ#xv1rRG3xYBZ}L(E+f8#s6m){?FVW0r*)^YGcT69SY4$HI>0o4Ah6Bg%X&4lti(i zC@-s+YAbEHQ?n7!Y*a_H7}hM7HG>z-G?&)isg(^{jqhj`&srt0R)g6}1+3bX+V9j7 z_6wNmI$9>NmR(rO2@tqcKvJ6J%5pSGDZ4$JH6Qn8VXbu(R(%|2L(HpZj@y)@X%1{2 z6uTHUff+AmHU{h$Gfs_a&M088{%iwdaXCwZ>9cJiEDW$j+}#~>=O*Q#XCEIiX`B35 zzf6$w0jmIMxAf}**kd?jj8#u;>GVBzUC!XOIICHfZ2=QD51{3y1Q?^~<_r?xHFek( zhLPm7qZ>591~2GrygmCgdT(Z5izEBs4NBFu45iM27eHki-Hmpmt8uZhnK=@q0DKB& z8NsHu@7BGMD{UHWq)FeD&bR`v<^p>MWEQrQNl6hX=^C5Pj@{SUu^%*?F#?>hUdE+{ z2f$fNGZq_%iFU{WgG<8vjWjUF6d%-_6!1E-!A}530Q{H^dTyFy|GU?>RWEJ*=w>?F zpfjDF^@w9{|~@3yWy#)VJQuqTJ4z&us04`)oQ2g8O`_89<~8c z013A>ua`Z<+(Bpt2Bxp(-nQtFS^y-ty#QoCyu$-LU+{C`F>oT`(gWaOf^*vfD8cgu z?ApEkZL~fB2#7`^^M#Lr*9*@Aftms50B&D)y_BuDA7fYH61xuz@LES&pfP*K0>7VQ zloqIefH$jw`cs>%FjIA2LC;#WCxKBKJC1<^{3mmK;ZCYH*_~!G$*VQyaaO~R_+#)P zosDT|y`dgrqZJUd>_BrNo(Y1@KNAh-U>uwH48t5l9BLrLjK!!IS`8DX0zGDo;C4X# zQ^`+9f;1Ms?ULouMXAR;AbIhQDNop1BhwDREQ*w zG5(rBOg>@J&;{n;kJ2_SdhbRs$_2H z5H?}JQw)Zf5Mm{^5d)$wrw#!)qX~f1?@ni(&N-cT`orl@r@x#oI9+tQ2n2lzW*~x4+OJ>>ZZ0=-M%oekY+12c3b~k&NJQhQzGgr8-Ps&qwweRYLFQm{h&j|8W)3$;m?O^> zax5j4lvGh-qhuT<<0+Xy2_#x4QZk7Wc;O_BI%ottC3Tccp`@OY21*(!fzWO$C15IH zB*Ea_MagtZW>7Mdl3A3@)(B83q1wS5N?-uMB-~5MTuSCqGM|zKlz{)Rkdpf;SwzWV zNP{@(d-LDA`O2%z!PFJV(h^O14p`_a!e-@**WKQL>#9(6p~m@+u`e zDA`E~NcZcMyrDsc=>b{;0#K~IBMU07nbW{t+LYvQ+{NKof81P!Qc59Wg&TS~ao40o zhlf&N^_k^)wD+kcB_={>dHpmAZaTba$gy4GQ0+!ByuBPk)9X!c0GE^q_u9!!OmH|! zf?dtf7jr#I8IYKu^5BTIzdq91wmxpvvX}3W!}%*_=$p6Gz@g~rJ$&-N^7FKp||k_*}nxFm;; zC3bNjAtU%z3`y3lam2u41q;4T?zo46Tr% z%Qw371(0v-BVHD*d@sW*T$nK(C2)c8R-0i^Y~qa|6KUwnGI)l1Q33DjC}b4j1(;w9 z$D&n`(c1v!DL#;=gxnxnO{RfwwH9)Ou7(}pv3&yBOS|X~o)P38#XznYEaq6qK!%F3 zcnp-jP{?JlJm7G!qn^wbgEt46Nn;Sp3yNXJVm^;Z+^a0_X;=>V&(2~5IMhp^Y{uQ- z%vo91Q1k^G3i(j67+z^HRSYLBWU675u~u~BmSJC(nYJW{W|_a?XT56p~Pr z;Q_G=Y*MZOPjav^5iJF~>@0eKr?3vqH5_93Pw^SZL^c{W3Hw<-Qj7sVGgI^eKXr#O znX48b5gZc<;3&1FFZZh3naR%7vY217BA*nkbO!l6S)6z!i8EKQWS$bC5 zB0VQ2>K1=}l>u^p^Ctv|HLE?UnXP`=xiJ zccu5F_oWY{52cT!kEKtfPo>YK1JdWxLFo(Wko2YWm2_D8TKY!%RyrbmCmof(mwu3r zNk2+INynw1r4!OG(n;x8={M<=bXqzi{VtuA&PnH`KcqjUzoZM&Md_0Cw{%&$B3+fP zN&iT#GLo@OWKQN~K^A2LC3`5@O9_lO$nZOqyi3V@l)&(QK*@)cd_>8|l)%)1y!vO9 zz}S3F$w5lKpyUuGUsCcFC5I{bnv!oQ0TDbx$#;|-rQ~}`exL*<(vOt-zYgn$!SW?Q1Uw^XDK;H$$3itpaiDHUzA*+tTx zbEBL)Kt-2+BoL zE{bx|l#8KUEal=T7f-na$|X`RiE>>i*OhYJDA%2G$&^c>Tq@<#D3?yT9+b92gCY*Rk8;3*c|q@-BzROK5Bo};W%wp;K_zXji|3|3YurOHwZ&QMB}7c9758KHP7uPeutEf$=uP-Tw= z*IDowWsovad0JU*!Lt>hV3e|0*`++Iq$)F%1IlyCGm5LSUx5c3EVx+tSxHk`m37MZ z%8SYpC0v=UY*xNg`dM(HvekmKlmW`47Cgv;eU*1Ccz^|$DX%GWl)IGU7M!b;S@1{; z?qk8zEO>_Uo?=(tRGw0fSa6XAQ{`Kwm*T1XV!=7etI7k)Mhiw3T%dfREVSTzEO?-D zNLgdSB}#8)zOqdDQrV|`Wx)%TkCgGs3gtlyE>%t_J(VAnnHH>SUV;3amIc<2pLcKy ze&rk$qOO>e>%TX0V9P61A_PU%iPod!CMcB*lj>NLmc9;dlZ3!D}@ zEpmFm=|QJQoE~#p<+Rpmz0+Gx?>QZD`q}9>r_)aVK&M{#!CiCdn+xQYXnGxk(<9r{pd9O8$~n3X-CwI4MC& zlKMy`Qa`CwDw76EgTaV2gISmkCSf+1gS){L%mXv95KO=Wpul&6irxe2`5jF)e*{YT zGwE0O5(^o=z`~+^d4&gjaYZV8p~O)5qKI1f(ueu*H4cx#S2!$#uWwi>uZAyd*et&) zzbAhxe<^=2AD2(aC*@P}-_FF@;Oyrd;+)`|;oQf$#JQhysdJh0K<5$8)y`9$XF1>J ze82Nz=f|9%a(>?VMd$6#uQ=~;{?Pfb^S935IiGMo+lh4Q)XA$;Xs5(ZnVoue>ep#_ zr>0Jic6z+ilbxRGw4&3>POCeu?Q}-LilTH@LX`xiP#FT#W}0#z%(9nYg1oDIrhKk^ zrF;!?{2fT)kIFB~N#!@?wDP-hRyl9sEP};gFJouBE@F%2H!#w9K+Busmp4 zY1wGmWZ7zY$?~%0Rm)Dx>y|eyZ&`L*KCygbIbu0#`N4A1a=}G#F}Rpq%r34jp)PSQ z-CTOQjBu%TndCCr#qKi46-1D>zeOc=-Sh@w`;L$U)M6%8LqQjRo6ML_qfh=o$q>|>;0|| zyDoQK=lY`SYp#1;-*Y|S`h)9VZoHetEx;|pt(#k(Td|wXZLZsVxBJ}gcU$cCfZI~H zhumIrd)e((x1DaUyS?f5mfPoUr`?_16?YeRH+K(rPj_#3U-yabGu&sntL}5$?{S~& zKF@uD`$G3c?u*?YbAQ5pzx%uH@4J8K{;~U~?g!itx*u}?(fzpl3HOukzq?;@zwE(z zNFL4}iieAbn}>%-mPd|9o=1U4kw-6&J{~0={XEJ&W_rx_pdNR7-0LyVV}Zv)k3}92 zdc5ZGhQ}_Cw>|cF?DKfX<2{cLJU;a}>FMMtc{+P4o-UrQp6;HWo++Mbo;^G>J+nP? zJ@Y+>dp3DK>iM|mlb%m`uJByxx!QBB=XuXRJui4(^1SSM)$^KXE9`#eym&9!tCLp` zuS~COuUxNuuR^b$UcJ4Fy@q-X_ZsOn+G~Q>M6U*~yS!$2&GJ&c=6G%P+Tyj<>v^vi zy|#P3;sPN+UT3_{dY$+B(_8Y6^^W&W^zP!_&AYpIig%j#aPN`c zqrEG`?;pN@`Cjz>+xLp^HQ!c0-cR&1 z`Z@VU_$B&f_+|O!`1STH^Bdw<>(}fz$8VwEqkdcczViFY?{~j*et-D=<#*BVlHV1- zYksZ%*q`{P`}gwi<6q+6&%e~a%zvQ&VE>{1cK;dvv;0;6IsOa%ANPOK|0(|!{;T}g z_^QRxhiM)z8}5YPAMgL#(mZOl!6^*P3rFwDz?2wia9aTKik4 zSR1TO)@Eyq^)BlS>n!V|)>o`Mtgl($u2CVKJZxJPl4wGF9%)?5`v^4=O87>CCDu(BPc5eI^dGMg%A;D{d*9Six{7mrX;4Q(=1#b&}A^4@>?ZIyb zzZHBs`1jy*!G8q*6?`%H@8B!J*Fu~^q!8y2CB!?#HzXt^IwUqEJ|r=uOUQ_jQ6XbO z#)eddj0>3%GBKnkWJ<`BAy0*@2w4@fCS+a6hLDXRn?kmRyc6JwvNQCxuQ9wTDg#tq*Msof^6|bZ_W^&|kuYFeS_@ zEI2GKEIBMSEIlkEEHkVqtXJ58u(GfrVHIJOVU1xeVbjBAhRq9G681#chOn(+JHz&b zeH$)>8^TTD=5RUOIa~>M33m&35APnH5}p>`BRn%aJ3KeMD7;U2d3Z&5Ww=E@5jS*WSc1C;{@m0jJh_ey@ zL>eQVBBe;@NF~xG(k;>>(ks$C(l@emWO!s$WK3jSWL{)JWKm?V$Uc!Jk(H76M9z(z zAGt7capVJ$OCukS+!XnIfDD6c4= zsD!ADsO+fRsD4o+qee$fh?)}B9QAnAlTlAat%zD3wI*s^)YDOKM_q`z6m>c3YE)}9 ziRPo_=uXi-(dp3{(OJ>C(FM_k(LJO4MAt;uM%P6*L{E)wj&6yb5xqQmW%TOkwb2`* zpNZZay)XJ`42mH!e2gK+DaITl$0#wqV*14NjVX;85HmbxWX!0T@iEmg_r=^Fvp8mH z%)>E{#5@-BWXx+ZZ^Z11*&VYlW`E4PF(1U7ia8T=Hs*ZHUon?rF2}mZ#>e)L9S~a{ zJ2-Y&?C{u;v14MNh+P)DB6fA`n%H%*>tmmb-4^>^?60w>V$Z~$jr}9`LhPm3YjGZN z$#JQ1>2Vox*>QPs1#u6@t%}@rG+&gif#~q8i9B+*GkGIAL$A`s7#z)7;#K*@c z#&?ZRj!%oviqDPDk1vYv6<-lQC;p!Jx$z6)?~h*;|3LhM@yp^@#jlOu5Wg}0Nc{Kl zKgJ)A|0Vvn_|x%c6O0L#1h)i_gph>Tg!qIB3AG7R5*ibxCbT5XNSKvC6P6{cPk1)r zaKg6Ai4W676Of>T0M z!c!tsVp3vL;!~1Rx}|hanUpd)#hx-Hr7@*Br6pxnikfn7%950gDLUs&ZeAC?Ud@38k!oB8l4)KnwZ)(H90jkbwFxE>eSTc)Rxq_sS8pUrY=f-ICWX- zw$v9=UrK!?bw}!JsryquN&PDIuhfgFf2Uqey_VXVM$&xK#-&Y2o0L|YR+m$D?j$J5TFolW~Y?P^+U zI!^DLZcPtL4^0nCk4TSB&r7dLAD2EMePa6L^t$x=^qJ{TrazUwB7JrGn)G$)Pp7|~ zemVVW`aeBT57I;EVeH}5L+TOPBfH0t9+f@R9t(Ob?yT#*Z zl^*|O;0#z(%W%q&Gn5S1437-&48M$kjG&CrjEIcrjJS-%jIJ5U8EF|A8QB?m83h>w zGKOc2%BaYw%D6XUe#XL#MHx#n9?W<+V|~WPjLjKaGPY&x$apPdZ^qXd-)0=oIF-p~ zx@KB4gEPZ2BQtwvmSpzN9FSR_IVf{T=H$$&ne#L6%X}>J$;{=Mt1{ot+?)AM=6jhR zW`3OcY37m4?=z2O9?v|V`Df;}EIv!ja?SF{^3L+h%E-#j%F8Oq>Y3F$t2nDN%a&D} zH8X2=*8N!zWIdSmNY=|)JF;HSdNb?otUX!#vJPZ@k@aQP*I8$?&Szc87P1Z5ZrPsM zKH2`+nb|qn`PqfpJ+pgf7iW*m9+O>}ZOfjJ-H<&a`{C?Iv!Bl1p8ZPp&g?g`-^%_W z`={&^*(bA4WuM7Dn}c)s97B#NN6HDx3CW4gNy$me>625E(?6#yXHZT<&eWWioas3; zb7tqzoX2xk=e(V>C+A?!p`61x-{u_6MY&wAG1r_c=PJ1_xo)}E+@Rd_+~VB6xuv<~ zxr1}3J?6`LE``mj7n{(fnii z$Ma9*|C)a)|4jZL`G4jAQ@|I91+E1i1>OaI1sMg|1$hMp1w9LT7Zewi7L*l?C>UE% zRWPNXv7ou&u7YI+D+*Q@tS#73u(4oM!7Bwj3tlhSRdAr-V8M}s-wVza{8NYv`9ecs zL}7GcTwy|Cm%?s^$%Tc5Jqt?<#}tk&v=`PFHWf}Qe4_BF!j*-q3)dE|FMPUiZ{hL6 z^M!vEUMjp&6jT&a6kZfr6kU{9)TJn=sBckeQF+neqG?6bi)I!5znaebzlvfF znc|z~``nl8o9A2VTkTut+u-}rcgC0H zyXd>@%l75?a(y>_1-^1$h3~mgMR-kkU3f!?6XJ!pgkHiRVTd3I0l^YN!f0W#Fin^t z%oH{Y+k_p$E+I|WCmaw?2${kaAxHRCxFJ>*YlyYQx?%&dk=R6REw&Zo#CWl%*hdVD zuIPzOOcIBQBgB#77vd~2MO-E>7gvf$#0>F-m?@qX&x%>%9r2#Oy1$9Png3<~Km7gu z@A}{O5BB@~qCepG{LKHEf3|XJK1rxv|Fa=Bp$zT?k z1LlDRU=dgfQo+~YTksuN4c37TU?bQJwu0?oC)fk_g8kqSI0}w|li+7?8k_}L-~zY| zu7X@}4cr8`!CmkG>Xd{{mzXUNCpO!=&wE$7I$-%3ZN zv(ig>!}UYhH7K=MYWmwlG**8A%H^#S@2UC@W>BlM5-QTkYYoc^gkOP{0f)c5Fn z_5Jz*{g8e{PuDZ_Gx{a{ihe_Xpg+_L^&-7kFEOeawT&i5Gvj3=))-_AF+>9xmF}RS z8>Rsb&lq8hG{zefj7i31Bh}btq#65-gT`UwsF7iuGK!5-qs;ircxwD@JU3&^DrQ}? zsoBbGYj!X@nO)3oW_J^rwwY)~Olop7$sA^WXpT1jX-+be&2P=`%r)kE^9OU2xz*fm z?lRNN{pKO_h?#E|n7^Av<{xIUSz`WamId1c+Xr6@z8>rv>=x`Ej1Tq;;77sH!G8t6uvS>BthLs9>j!I-wbj~g?X>n-d#(M}LF=%UZXLHWt<%<7>%4W* zx@=vwa;@vuP3x9*$GT@du=1?}>#_BRRcw`5W!6*c8H|C|U`<#D)`JaTBiIBsh0S3s zYzbS#cCaJt47fQ#S~_!V3Rm%|ls6 z33tOZxDOtHhu~3|0guCz@Dw})v*1N|1?IqC;SHDvZ^OIrKFo&&@OM}QpTH7W7K#bw zh3AioLdBtyP+91&P(|n&ia}LT4O9!&LG@5W)EG5I%~33BiCUpHs6Fb4 zI-xG;4HSps(Oak&dK>ja1JFP;82ONh08)^K3}m4Y!pK1cQ4~eP&{+QbO+r-zoCby5EY?fREo+IswCV>xSQ}G;bB5yLQz6- zLTN&ILPf%JTm@IhwQybB05`@>adRAtTjJKZ9qx!bicrKog7vZHi6@P~TXuo8?Vz;nc*=_9(b|<@w-OcW8zioeDYj)V?c9K2J9%oOp7uqZBE%rY9 zn0>*{vkUFN!c{Bthqc0O!ac(M!vn$~91O!S3Wvi<;Zfl+;ZMR-!;8b~!dt@I!rQ|K z!Y9I)!g=BR@S|{HxHMemRCDS(4V}hLtkc5j;KVy`IfI;_ljMwXraJSS6erdB*4gN! zIqA*?C)c^=+;AQ`rOxw8fJxQFdWrQD8zsKtj&w)4W887>XYNFIvOCS4;m&ktyYt)y z?qWB^UFI%#SGud+b?*1>Mt76D#ogv^cXzpI?mqXRd&Et5kGUt^Q|=iz%f0AccC+0a z_gDA2d(*w;-gO_i`R*h4celuW;+D97y5(+#`^IWH9j&Kaq$+bP^;Xf{8;2@dzVHWO(JWZDk*dj3b|s ziDWXFMrM#N$ZRr~%qI)U67m)Knk*+P$!fBetS3K^O=K(iiR>V|NgCNl4w54zgPb5g zlQZNTIZrN;Z1M}aMsAQia);a}`Q#BPB#+4x@^4Z~%E(jlcjSdg)kuviedM)B=SbH`TqHiy&s*Rv_ENlM-g0lHx7u6hZSa2dws=2zJH0*L zKJTD+#LMtbct3k*ye#jccg4%`e)Vp6x4gUF1Mi_%=oNXzUa42^Rd~;76zQn2hzdRNBvZyDmAD@5w&R|jZj9D=x{oc zj-q4fcshYjqEqN}noMWWxpY2VM3>T3`VCz{SJAcfd%BTsrrYQax|{B$2k2p%PLI<} zdYYc27wBbrmFCjxG>_h)_h~*YppWSjT0+a{Q~Hd>uxhL(tHbKEM(joQ5_^TUV69kN z)`4|mU065vCVPwZW_{T^>^(M!4Phb!Okp|;vJk_}VT4f@Wy2~7LX~49m09f1*hDs& zO=C0IOg4vo$ri9hYza$YsqAaEoULHru{CTx+rWNgo7pzDo$X|M*j{#k9b!jV20Otr z*(r90onz){ST4KHZnE3#9{Y_wVuh@TJz*v6Pgc$<*mEAktMQt=Hm}DU^2Yo{ z-i$ZrvAhL;mAB#TcnAI(@65aKZoE5>=RJ8J-k1011NeJ<5dVM++|L1*xyp5Ja*Ky} z0=K!t38$R%BtDFf;3N6Rd^8`+$MH}31U`{Z=2Q9SJekkrbNH8h0bk5hcq;#zFXt=x zD!zuV=RfdGd@KKn@8G-m9=?|!;D`B9p23gvll&Av!_V>a{1VURIXstN=Xv}#zsn!+ zeEx_R^2huSUd&5*8UKq{@MqDOXw_)-Xw7KtXuW8&=u6R;qiv#XqaC8%qH)pqXus%t XmH4PiRjI^%{a5w({_p?)MwR~nZ}2k~ diff --git a/MacGLide Control Panel/MacGLide Control Panel.xcodeproj/jens.pbxuser b/MacGLide Control Panel/MacGLide Control Panel.xcodeproj/jens.pbxuser index 1abbfd1..42b75ba 100644 --- a/MacGLide Control Panel/MacGLide Control Panel.xcodeproj/jens.pbxuser +++ b/MacGLide Control Panel/MacGLide Control Panel.xcodeproj/jens.pbxuser @@ -7,12 +7,64 @@ addToTargets = ( 8D1107260486CEB800E47090 /* MacGLide Control Panel */, ); + breakpoints = ( + B4EC72250AF6164100828538 /* MacGLideSettingsController.mm:66 */, + B4EC72270AF6164200828538 /* MacGLideSettingsController.mm:61 */, + B4EC72290AF6164300828538 /* MacGLideSettingsController.mm:56 */, + B439EE190AF63A5300BAE724 /* MacGLideSettingsController.mm:27 */, + B439EE340AF63A8F00BAE724 /* MacGLideSettingsController.mm:89 */, + B439EE5E0AF63CA600BAE724 /* MacGLideSettingsController.mm:37 */, + ); breakpointsGroup = B4F7C7F909A508AB0001160D /* XCBreakpointsBucket */; codeSenseManager = B4E30D5A09A0BC9A003DD374 /* Code sense */; executables = ( B4E30D4B09A0BC8D003DD374 /* MacGLide Control Panel */, ); perUserDictionary = { + "PBXConfiguration.PBXBreakpointsDataSource.v1:1CA1AED706398EBD00589147" = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXBreakpointsDataSource_BreakpointID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 20, + 291, + 20, + 255, + 125, + 20, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXBreakpointsDataSource_ActionID, + PBXBreakpointsDataSource_TypeID, + PBXBreakpointsDataSource_BreakpointID, + PBXBreakpointsDataSource_UseID, + PBXBreakpointsDataSource_LocationID, + PBXBreakpointsDataSource_ConditionID, + PBXBreakpointsDataSource_ContinueID, + ); + }; + "PBXConfiguration.PBXBreakpointsDataSource.v1:1CA23EDF0692099D00951B8B" = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXBreakpointsDataSource_BreakpointID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 20, + 266, + 20, + 165, + 165, + 20, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXBreakpointsDataSource_ActionID, + PBXBreakpointsDataSource_TypeID, + PBXBreakpointsDataSource_BreakpointID, + PBXBreakpointsDataSource_UseID, + PBXBreakpointsDataSource_LocationID, + PBXBreakpointsDataSource_ConditionID, + PBXBreakpointsDataSource_ContinueID, + ); + }; PBXConfiguration.PBXFileTableDataSource3.PBXErrorsWarningsDataSource = { PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; PBXFileTableDataSourceColumnSortingKey = PBXErrorsWarningsDataSource_LocationID; @@ -46,7 +98,7 @@ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 554, + 482, 20, 48, 43, @@ -85,8 +137,33 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 171316574; - PBXWorkspaceStateSaveDate = 171316574; + PBXPerProjectTemplateStateSaveDate = 186008316; + PBXWorkspaceStateSaveDate = 186008316; + }; + perUserProjectItems = { + B439EE1E0AF63A5500BAE724 /* PBXTextBookmark */ = B439EE1E0AF63A5500BAE724 /* PBXTextBookmark */; + B439EE210AF63A5500BAE724 /* PBXTextBookmark */ = B439EE210AF63A5500BAE724 /* PBXTextBookmark */; + B439EE2B0AF63A5700BAE724 /* PBXTextBookmark */ = B439EE2B0AF63A5700BAE724 /* PBXTextBookmark */; + B439EE670AF6479F00BAE724 /* PBXTextBookmark */ = B439EE670AF6479F00BAE724 /* PBXTextBookmark */; + B47770B00AF38D200083B671 /* PBXTextBookmark */ = B47770B00AF38D200083B671 /* PBXTextBookmark */; + B47770B10AF38D200083B671 /* PBXTextBookmark */ = B47770B10AF38D200083B671 /* PBXTextBookmark */; + B47770FD0AF3927D0083B671 /* PBXTextBookmark */ = B47770FD0AF3927D0083B671 /* PBXTextBookmark */; + B4C6D28F0B1642FB00A4F7AF /* PBXTextBookmark */ = B4C6D28F0B1642FB00A4F7AF /* PBXTextBookmark */; + B4C6D2CC0B16440300A4F7AF /* PBXTextBookmark */ = B4C6D2CC0B16440300A4F7AF /* PBXTextBookmark */; + B4C6D2CD0B16440300A4F7AF /* PBXTextBookmark */ = B4C6D2CD0B16440300A4F7AF /* PBXTextBookmark */; + B4C6D2CE0B16440600A4F7AF /* PBXTextBookmark */ = B4C6D2CE0B16440600A4F7AF /* PBXTextBookmark */; + B4C6D2D50B16445300A4F7AF /* PBXTextBookmark */ = B4C6D2D50B16445300A4F7AF /* PBXTextBookmark */; + B4C6D2D60B16445300A4F7AF /* PBXTextBookmark */ = B4C6D2D60B16445300A4F7AF /* PBXTextBookmark */; + B4EC712B0AF6064100828538 /* PBXTextBookmark */ = B4EC712B0AF6064100828538 /* PBXTextBookmark */; + B4EC712C0AF6064100828538 /* PBXTextBookmark */ = B4EC712C0AF6064100828538 /* PBXTextBookmark */; + B4EC712F0AF6064100828538 /* PBXTextBookmark */ = B4EC712F0AF6064100828538 /* PBXTextBookmark */; + B4EC71300AF6064100828538 /* PBXTextBookmark */ = B4EC71300AF6064100828538 /* PBXTextBookmark */; + B4EC71310AF6064100828538 /* PBXTextBookmark */ = B4EC71310AF6064100828538 /* PBXTextBookmark */; + B4EC71320AF6064100828538 /* PBXTextBookmark */ = B4EC71320AF6064100828538 /* PBXTextBookmark */; + B4EC722D0AF616CE00828538 /* PBXTextBookmark */ = B4EC722D0AF616CE00828538 /* PBXTextBookmark */; + B4EC72310AF616CE00828538 /* PBXTextBookmark */ = B4EC72310AF616CE00828538 /* PBXTextBookmark */; + B4EC72340AF616D100828538 /* PBXTextBookmark */ = B4EC72340AF616D100828538 /* PBXTextBookmark */; + B4EC723B0AF6172A00828538 /* PBXTextBookmark */ = B4EC723B0AF6172A00828538 /* PBXTextBookmark */; }; sourceControlManager = B4E30D5909A0BC9A003DD374 /* Source Control */; userBuildSettings = { @@ -97,13 +174,13 @@ sepNavIntBoundsRect = "{{0, 0}, {723, 322}}"; sepNavSelRange = "{275, 0}"; sepNavVisRect = "{{0, 0}, {723, 322}}"; - sepNavWindowFrame = "{{179, 0}, {762, 451}}"; + sepNavWindowFrame = "{{95, 159}, {762, 451}}"; }; }; 32CA4F630368D1EE00C91783 /* MacGLide Control Panel_Prefix.pch */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {725, 325}}"; - sepNavSelRange = "{256, 0}"; + sepNavSelRange = "{377, 0}"; sepNavVisRect = "{{0, 0}, {725, 325}}"; sepNavWindowFrame = "{{7, 36}, {764, 454}}"; }; @@ -122,12 +199,120 @@ sepNavWindowFrame = "{{216, 83}, {713, 596}}"; }; }; + B427E8DD0A9CFEE100B42C21 /* MacGLideSettingsController.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {640, 910}}"; + sepNavSelRange = "{1435, 0}"; + sepNavVisRect = "{{0, 126}, {640, 463}}"; + sepNavWindowFrame = "{{131, 57}, {640, 689}}"; + }; + }; + B427E8E10A9CFF2B00B42C21 /* MacGLideSettingsController.mm */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {946, 2534}}"; + sepNavSelRange = "{332, 27}"; + sepNavVisRect = "{{0, 396}, {946, 231}}"; + sepNavWindowFrame = "{{235, 0}, {750, 692}}"; + }; + }; + B439EDEE0AF637E700BAE724 /* sdk2_3dfx.h */ = { + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + name = sdk2_3dfx.h; + path = "/Users/jens/Developer/MacGLide/MacGLide Control Panel/../MacGLide/OpenGLide/sdk2_3dfx.h"; + sourceTree = ""; + }; + B439EE190AF63A5300BAE724 /* MacGLideSettingsController.mm:27 */ = { + isa = PBXFileBreakpoint; + actions = ( + ); + breakpointStyle = 0; + continueAfterActions = 0; + delayBeforeContinue = 0; + fileReference = B427E8E10A9CFF2B00B42C21 /* MacGLideSettingsController.mm */; + functionName = "-init"; + hitCount = 1; + lineNumber = 27; + location = MacGLideSettingsController.ob; + modificationTime = 186008435.73781; + state = 2; + }; + B439EE1E0AF63A5500BAE724 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B439EDEE0AF637E700BAE724 /* sdk2_3dfx.h */; + name = "# warning define FX_ENTRY & FX_CALL for your compiler"; + rLen = 55; + rLoc = 2297; + rType = 0; + vrLen = 602; + vrLoc = 1990; + }; + B439EE210AF63A5500BAE724 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B4DC13F30A3AF2660094E754 /* GlideSettings_FSp.cpp */; + name = dupFNErr; + rLen = 8; + rLoc = 4331; + rType = 0; + vrLen = 777; + vrLoc = 4945; + }; + B439EE2B0AF63A5700BAE724 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B439EDEE0AF637E700BAE724 /* sdk2_3dfx.h */; + name = "# warning define FX_ENTRY & FX_CALL for your compiler"; + rLen = 55; + rLoc = 2297; + rType = 0; + vrLen = 798; + vrLoc = 1910; + }; + B439EE340AF63A8F00BAE724 /* MacGLideSettingsController.mm:89 */ = { + isa = PBXFileBreakpoint; + actions = ( + ); + breakpointStyle = 0; + continueAfterActions = 0; + delayBeforeContinue = 0; + fileReference = B427E8E10A9CFF2B00B42C21 /* MacGLideSettingsController.mm */; + functionName = "-saveSettings"; + hitCount = 1; + lineNumber = 89; + location = MacGLideSettingsController.ob; + modificationTime = 186008486.918484; + state = 1; + }; + B439EE5E0AF63CA600BAE724 /* MacGLideSettingsController.mm:37 */ = { + isa = PBXFileBreakpoint; + actions = ( + ); + breakpointStyle = 0; + continueAfterActions = 0; + delayBeforeContinue = 0; + fileReference = B427E8E10A9CFF2B00B42C21 /* MacGLideSettingsController.mm */; + functionName = "-init:"; + hitCount = 32; + lineNumber = 37; + location = MacGLideSettingsController.ob; + modificationTime = 186008620.451515; + state = 1; + }; + B439EE670AF6479F00BAE724 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B43FFB0409FD3D350094A3E3 /* GlideSettings.cpp */; + name = "GlideSettings.cpp: 269"; + rLen = 0; + rLoc = 8938; + rType = 0; + vrLen = 782; + vrLoc = 1927; + }; B43FFB0409FD3D350094A3E3 /* GlideSettings.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {693, 8232}}"; - sepNavSelRange = "{426, 0}"; - sepNavVisRect = "{{0, 0}, {693, 482}}"; - sepNavWindowFrame = "{{36, 21}, {732, 611}}"; + sepNavIntBoundsRect = "{{0, 0}, {782, 8876}}"; + sepNavSelRange = "{8938, 0}"; + sepNavVisRect = "{{0, 631}, {680, 601}}"; + sepNavWindowFrame = "{{248, 17}, {732, 611}}"; }; }; B452D05309F9756E00A4F626 /* GlideSettings_iostream.cpp */ = { @@ -148,42 +333,129 @@ }; B46D4BC60A064796002A428F /* GlideSettings_FSp.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {725, 602}}"; - sepNavSelRange = "{434, 0}"; + sepNavIntBoundsRect = "{{0, 0}, {725, 616}}"; + sepNavSelRange = "{458, 16}"; sepNavVisRect = "{{0, 0}, {725, 325}}"; sepNavWindowFrame = "{{15, 287}, {764, 454}}"; }; }; - B46D4BC70A064796002A428F /* GlideSettings.cpp */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {860, 3388}}"; - sepNavSelRange = "{3812, 0}"; - sepNavVisRect = "{{0, 1615}, {725, 325}}"; - sepNavWindowFrame = "{{38, 266}, {764, 454}}"; - }; + B47770B00AF38D200083B671 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B427E8E10A9CFF2B00B42C21 /* MacGLideSettingsController.mm */; + name = "MacGLideSettingsController.mm: 17"; + rLen = 0; + rLoc = 437; + rType = 0; + vrLen = 409; + vrLoc = 253; + }; + B47770B10AF38D200083B671 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B43FFB0409FD3D350094A3E3 /* GlideSettings.cpp */; + name = "GlideSettings.cpp: 275"; + rLen = 0; + rLoc = 9200; + rType = 0; + vrLen = 181; + vrLoc = 10450; + }; + B47770FD0AF3927D0083B671 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B43FFB0409FD3D350094A3E3 /* GlideSettings.cpp */; + name = "GlideSettings.cpp: 275"; + rLen = 0; + rLoc = 9200; + rType = 0; + vrLen = 0; + vrLoc = 0; }; B483759009F67BFC004826B1 /* GlideSettings.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {674, 2170}}"; - sepNavSelRange = "{2260, 13}"; - sepNavVisRect = "{{0, 881}, {674, 329}}"; + sepNavIntBoundsRect = "{{0, 0}, {674, 2324}}"; + sepNavSelRange = "{3209, 18}"; + sepNavVisRect = "{{0, 1467}, {674, 329}}"; sepNavWindowFrame = "{{272, 31}, {713, 458}}"; }; }; + B4C6D28F0B1642FB00A4F7AF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B427E8E10A9CFF2B00B42C21 /* MacGLideSettingsController.mm */; + rLen = 1; + rLoc = 17; + rType = 1; + }; + B4C6D2CC0B16440300A4F7AF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B4DC13F30A3AF2660094E754 /* GlideSettings_FSp.cpp */; + name = retu; + rLen = 4; + rLoc = 1519; + rType = 0; + vrLen = 1327; + vrLoc = 1464; + }; + B4C6D2CD0B16440300A4F7AF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B427E8E10A9CFF2B00B42C21 /* MacGLideSettingsController.mm */; + name = "err = userConfig.load();"; + rLen = 27; + rLoc = 332; + rType = 0; + vrLen = 471; + vrLoc = 39; + }; + B4C6D2CE0B16440600A4F7AF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B4DC13F30A3AF2660094E754 /* GlideSettings_FSp.cpp */; + name = retu; + rLen = 4; + rLoc = 1519; + rType = 0; + vrLen = 1008; + vrLoc = 1464; + }; + B4C6D2D50B16445300A4F7AF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B427E8E10A9CFF2B00B42C21 /* MacGLideSettingsController.mm */; + name = "err = userConfig.load();"; + rLen = 27; + rLoc = 332; + rType = 0; + vrLen = 511; + vrLoc = 40; + }; + B4C6D2D60B16445300A4F7AF /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B427E8E10A9CFF2B00B42C21 /* MacGLideSettingsController.mm */; + name = "err = userConfig.load();"; + rLen = 27; + rLoc = 332; + rType = 0; + vrLen = 534; + vrLoc = 39; + }; + B4DC13F30A3AF2660094E754 /* GlideSettings_FSp.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {848, 3598}}"; + sepNavSelRange = "{1519, 4}"; + sepNavVisRect = "{{0, 616}, {640, 463}}"; + sepNavWindowFrame = "{{15, 19}, {781, 722}}"; + }; + }; B4DE41C90A18BF99002BD718 /* MacGLideMainPanel.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {725, 325}}"; - sepNavSelRange = "{89, 0}"; - sepNavVisRect = "{{0, 0}, {725, 325}}"; - sepNavWindowFrame = "{{191, 105}, {764, 454}}"; + sepNavIntBoundsRect = "{{0, 0}, {926, 386}}"; + sepNavSelRange = "{88, 0}"; + sepNavVisRect = "{{0, 0}, {640, 386}}"; + sepNavWindowFrame = "{{167, 66}, {764, 454}}"; }; }; B4DE41CA0A18BF99002BD718 /* MacGLideMainPanel.mm */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {725, 325}}"; - sepNavSelRange = "{126, 0}"; - sepNavVisRect = "{{0, 0}, {725, 325}}"; - sepNavWindowFrame = "{{61, 245}, {764, 454}}"; + sepNavIntBoundsRect = "{{0, 0}, {902, 392}}"; + sepNavSelRange = "{57, 0}"; + sepNavVisRect = "{{0, 0}, {640, 386}}"; + sepNavWindowFrame = "{{51, 105}, {734, 574}}"; }; }; B4E30D4B09A0BC8D003DD374 /* MacGLide Control Panel */ = { @@ -211,6 +483,42 @@ }; sourceDirectories = ( ); + variableFormatDictionary = { + $v0 = 1; + $v1 = 1; + $v10 = 1; + $v11 = 1; + $v12 = 1; + $v13 = 1; + $v14 = 1; + $v15 = 1; + $v16 = 1; + $v17 = 1; + $v18 = 1; + $v19 = 1; + $v2 = 1; + $v20 = 1; + $v21 = 1; + $v22 = 1; + $v23 = 1; + $v24 = 1; + $v25 = 1; + $v26 = 1; + $v27 = 1; + $v28 = 1; + $v29 = 1; + $v3 = 1; + $v30 = 1; + $v31 = 1; + $v4 = 1; + $v5 = 1; + $v6 = 1; + $v7 = 1; + $v8 = 1; + $v9 = 1; + $vrsave = 1; + $vscr = 1; + }; }; B4E30D5909A0BC9A003DD374 /* Source Control */ = { isa = PBXSourceControlManager; @@ -225,10 +533,161 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; + B4EC712B0AF6064100828538 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B4DE41CA0A18BF99002BD718 /* MacGLideMainPanel.mm */; + name = "MacGLideMainPanel.mm: 3"; + rLen = 0; + rLoc = 57; + rType = 0; + vrLen = 588; + vrLoc = 0; + }; + B4EC712C0AF6064100828538 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B4DE41C90A18BF99002BD718 /* MacGLideMainPanel.h */; + name = "MacGLideMainPanel.h: 5"; + rLen = 0; + rLoc = 88; + rType = 0; + vrLen = 340; + vrLoc = 0; + }; + B4EC712F0AF6064100828538 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B427E8E10A9CFF2B00B42C21 /* MacGLideSettingsController.mm */; + name = "NSString* s = [sender titleOfSelectedItem];"; + rLen = 46; + rLoc = 2763; + rType = 0; + vrLen = 623; + vrLoc = 2391; + }; + B4EC71300AF6064100828538 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B427E8DD0A9CFEE100B42C21 /* MacGLideSettingsController.h */; + name = "MacGLideSettingsController.h: 30"; + rLen = 0; + rLoc = 765; + rType = 0; + vrLen = 1050; + vrLoc = 270; + }; + B4EC71310AF6064100828538 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B4DE41CA0A18BF99002BD718 /* MacGLideMainPanel.mm */; + name = "MacGLideMainPanel.mm: 3"; + rLen = 0; + rLoc = 57; + rType = 0; + vrLen = 588; + vrLoc = 0; + }; + B4EC71320AF6064100828538 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B4DE41C90A18BF99002BD718 /* MacGLideMainPanel.h */; + name = "MacGLideMainPanel.h: 5"; + rLen = 0; + rLoc = 88; + rType = 0; + vrLen = 340; + vrLoc = 0; + }; + B4EC72250AF6164100828538 /* MacGLideSettingsController.mm:66 */ = { + isa = PBXFileBreakpoint; + actions = ( + ); + breakpointStyle = 0; + continueAfterActions = 0; + delayBeforeContinue = 0; + fileReference = B427E8E10A9CFF2B00B42C21 /* MacGLideSettingsController.mm */; + functionName = "-updateButton:floatValue:"; + hitCount = 1; + lineNumber = 66; + location = MacGLideSettingsController.ob; + modificationTime = 186008435.733022; + state = 2; + }; + B4EC72270AF6164200828538 /* MacGLideSettingsController.mm:61 */ = { + isa = PBXFileBreakpoint; + actions = ( + ); + breakpointStyle = 0; + continueAfterActions = 0; + delayBeforeContinue = 0; + fileReference = B427E8E10A9CFF2B00B42C21 /* MacGLideSettingsController.mm */; + functionName = "-updateButton:ulongValue:"; + hitCount = 1; + lineNumber = 61; + location = MacGLideSettingsController.ob; + modificationTime = 186008435.735256; + state = 2; + }; + B4EC72290AF6164300828538 /* MacGLideSettingsController.mm:56 */ = { + isa = PBXFileBreakpoint; + actions = ( + ); + breakpointStyle = 0; + continueAfterActions = 0; + delayBeforeContinue = 0; + fileReference = B427E8E10A9CFF2B00B42C21 /* MacGLideSettingsController.mm */; + functionName = "-updateButton:boolValue:"; + hitCount = 1; + lineNumber = 56; + location = MacGLideSettingsController.ob; + modificationTime = 186008435.736552; + state = 2; + }; + B4EC722D0AF616CE00828538 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 29B97316FDCFA39411CA2CEA /* main.m */; + name = "main.m: 13"; + rLen = 0; + rLoc = 214; + rType = 0; + vrLen = 275; + vrLoc = 0; + }; + B4EC72310AF616CE00828538 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 29B97316FDCFA39411CA2CEA /* main.m */; + name = "main.m: 13"; + rLen = 0; + rLoc = 214; + rType = 0; + vrLen = 275; + vrLoc = 0; + }; + B4EC72340AF616D100828538 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B427E8DD0A9CFEE100B42C21 /* MacGLideSettingsController.h */; + name = "MacGLideSettingsController.h: setRefreshRate:"; + rLen = 0; + rLoc = 1435; + rType = 0; + vrLen = 1373; + vrLoc = 0; + }; + B4EC723B0AF6172A00828538 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B427E8DD0A9CFEE100B42C21 /* MacGLideSettingsController.h */; + name = "MacGLideSettingsController.h: setRefreshRate:"; + rLen = 0; + rLoc = 1435; + rType = 0; + vrLen = 1180; + vrLoc = 193; + }; B4F7C7F909A508AB0001160D /* XCBreakpointsBucket */ = { isa = XCBreakpointsBucket; - name = "Project Breakpoints"; + name = "MacGLide Control Panel"; objects = ( + B4EC72250AF6164100828538 /* MacGLideSettingsController.mm:66 */, + B4EC72270AF6164200828538 /* MacGLideSettingsController.mm:61 */, + B4EC72290AF6164300828538 /* MacGLideSettingsController.mm:56 */, + B439EE190AF63A5300BAE724 /* MacGLideSettingsController.mm:27 */, + B439EE340AF63A8F00BAE724 /* MacGLideSettingsController.mm:89 */, + B439EE5E0AF63CA600BAE724 /* MacGLideSettingsController.mm:37 */, ); }; } diff --git a/MacGLide Control Panel/MacGLide Control Panel.xcodeproj/jens.perspective b/MacGLide Control Panel/MacGLide Control Panel.xcodeproj/jens.perspective index bb2f7bb..119a0bc 100644 --- a/MacGLide Control Panel/MacGLide Control Panel.xcodeproj/jens.perspective +++ b/MacGLide Control Panel/MacGLide Control Panel.xcodeproj/jens.perspective @@ -3,7 +3,7 @@ ActivePerspectiveName - Project + Debug AllowedModules @@ -188,9 +188,9 @@ PerspectiveWidths - 1000 - 1000 - 1000 + 987 + 987 + 987 Perspectives @@ -221,8 +221,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -248,7 +246,7 @@ PBXSmartGroupTreeModuleColumnWidthsKey - 185 + 244 PBXSmartGroupTreeModuleColumnsKey_v4 @@ -260,25 +258,20 @@ PBXSmartGroupTreeModuleOutlineStateExpansionKey 29B97314FDCFA39411CA2CEA - B4E30D5D09A0BD2A003DD374 - B4E30D5E09A0BD2A003DD374 080E96DDFE201D6D7F000001 29B97315FDCFA39411CA2CEA - 29B97317FDCFA39411CA2CEA - 29B97323FDCFA39411CA2CEA - 19C28FACFE9D520D11CA2CBB - 8D1107320486CEB800E47090 + 1C37FBAC04509CD000000102 1C37FAAC04509CD000000102 + 1C77FABC04509CD000000102 PBXSmartGroupTreeModuleOutlineStateSelectionKey - 1 - 0 + 30 PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {185, 367}} + {{0, 0}, {244, 632}} PBXTopSmartGroupGIDs @@ -288,19 +281,17 @@ GeometryConfiguration Frame - {{0, 0}, {202, 385}} + {{0, 0}, {261, 650}} GroupTreeTableConfiguration MainColumn - 185 + 244 - RubberWindowFrame - 4 319 1000 426 0 0 1024 746 Module PBXSmartGroupTreeModule Proportion - 202pt + 261pt Dock @@ -311,7 +302,7 @@ PBXProjectModuleGUID B4DC85D409A27F830099E581 PBXProjectModuleLabel - + MacGLideSettingsController.mm PBXSplitModuleInNavigatorKey Split0 @@ -319,7 +310,33 @@ PBXProjectModuleGUID B4DC85D509A27F830099E581 PBXProjectModuleLabel - + MacGLideSettingsController.mm + _historyCapacity + 0 + bookmark + B4C6D2D50B16445300A4F7AF + history + + B4EC712B0AF6064100828538 + B4EC712C0AF6064100828538 + B4EC722D0AF616CE00828538 + B4EC72340AF616D100828538 + B439EE2B0AF63A5700BAE724 + B439EE670AF6479F00BAE724 + B4C6D2CC0B16440300A4F7AF + B4C6D28F0B1642FB00A4F7AF + + prevStack + + B47770B00AF38D200083B671 + B47770B10AF38D200083B671 + B4EC71300AF6064100828538 + B4EC71310AF6064100828538 + B4EC71320AF6064100828538 + B4EC72310AF616CE00828538 + B439EE1E0AF63A5500BAE724 + B439EE210AF63A5500BAE724 + SplitCount 1 @@ -332,18 +349,16 @@ GeometryConfiguration Frame - {{0, 0}, {793, 0}} - RubberWindowFrame - 4 319 1000 426 0 0 1024 746 + {{0, 0}, {721, 443}} Module PBXNavigatorGroup Proportion - 0pt + 443pt Proportion - 380pt + 190pt Tabs @@ -357,7 +372,7 @@ GeometryConfiguration Frame - {{10, 27}, {793, 353}} + {{10, 27}, {721, 163}} Module XCDetailModule @@ -390,8 +405,6 @@ Frame {{10, 27}, {793, 353}} - RubberWindowFrame - 4 319 1000 426 0 0 1024 746 Module PBXCVSModule @@ -400,7 +413,7 @@ Proportion - 793pt + 721pt Name @@ -418,11 +431,11 @@ TableOfContents - B4840EE10A361AF800ED34FB + B4C6D2B80B1643A900A4F7AF 1CA23ED40692098700951B8B - B4840EE20A361AF800ED34FB + B4C6D2B90B1643A900A4F7AF B4DC85D409A27F830099E581 - B4840EE30A361AF800ED34FB + B4C6D2BA0B1643A900A4F7AF 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -472,7 +485,7 @@ PBXSmartGroupTreeModuleColumnWidthsKey - 260 + 284 PBXSmartGroupTreeModuleColumnsKey_v4 @@ -497,13 +510,13 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 19 - 18 + 7 + 6 0 PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 64}, {260, 367}} + {{0, 0}, {284, 632}} PBXTopSmartGroupGIDs @@ -513,17 +526,17 @@ GeometryConfiguration Frame - {{0, 0}, {277, 385}} + {{0, 0}, {301, 650}} GroupTreeTableConfiguration MainColumn - 260 + 284 Module PBXSmartGroupTreeModule Proportion - 277pt + 301pt Dock @@ -534,7 +547,7 @@ PBXProjectModuleGUID B467E8DA09A6421200625DA6 PBXProjectModuleLabel - + MacGLideSettingsController.mm PBXSplitModuleInNavigatorKey Split0 @@ -542,7 +555,33 @@ PBXProjectModuleGUID B467E8DB09A6421200625DA6 PBXProjectModuleLabel - + MacGLideSettingsController.mm + _historyCapacity + 0 + bookmark + B4C6D2D60B16445300A4F7AF + history + + B4EC712B0AF6064100828538 + B4EC712C0AF6064100828538 + B47770FD0AF3927D0083B671 + B4EC722D0AF616CE00828538 + B4EC723B0AF6172A00828538 + B439EE2B0AF63A5700BAE724 + B4C6D2CE0B16440600A4F7AF + B4C6D2CD0B16440300A4F7AF + + prevStack + + B4EC712F0AF6064100828538 + B4EC71300AF6064100828538 + B4EC71310AF6064100828538 + B4EC71320AF6064100828538 + B47770B10AF38D200083B671 + B4EC72310AF616CE00828538 + B439EE1E0AF63A5500BAE724 + B439EE210AF63A5500BAE724 + SplitCount 1 @@ -555,21 +594,23 @@ GeometryConfiguration Frame - {{0, 0}, {718, 0}} + {{0, 0}, {681, 495}} Module PBXNavigatorGroup Proportion - 0pt + 495pt Proportion - 380pt + 138pt Tabs ContentConfiguration + PBXBuildLogShowsTranscriptDefaultKey + {{0, 5}, {681, 106}} PBXProjectModuleGUID XCMainBuildResultsModuleGUID PBXProjectModuleLabel @@ -582,7 +623,7 @@ GeometryConfiguration Frame - {{10, 27}, {718, 353}} + {{10, 27}, {681, 111}} Module PBXBuildResultsModule @@ -635,7 +676,7 @@ GeometryConfiguration Frame - {{10, 27}, {718, 444}} + {{10, 27}, {681, 111}} Module PBXRunSessionModule @@ -644,7 +685,7 @@ Proportion - 718pt + 681pt Name @@ -662,14 +703,14 @@ TableOfContents - B4840EE40A361AF800ED34FB + B4C6D2BC0B1643A900A4F7AF 1CA23EE50692099D00951B8B - B4840EE50A361AF800ED34FB + B4C6D2BD0B1643A900A4F7AF B467E8DA09A6421200625DA6 - B4840EE60A361AF800ED34FB + B4C6D2BE0B1643A900A4F7AF XCMainBuildResultsModuleGUID 1CA23EE80692099D00951B8B - B4840EE70A361AF800ED34FB + B4C6D2BF0B1643A900A4F7AF ToolbarConfiguration xcode.toolbar.config.buildAndRun @@ -713,12 +754,14 @@ GeometryConfiguration Frame - {{0, 0}, {969, 0}} + {{0, 0}, {987, 102}} + RubberWindowFrame + 0 55 987 691 0 0 1024 746 Module PBXDebugCLIModule Proportion - 0pt + 102pt ContentConfiguration @@ -737,8 +780,8 @@ yes sizes - {{0, 0}, {472, 149}} - {{472, 0}, {497, 149}} + {{0, 0}, {512, 280}} + {{512, 0}, {475, 280}} VerticalSplitView @@ -753,8 +796,8 @@ yes sizes - {{0, 0}, {969, 149}} - {{0, 149}, {969, 160}} + {{0, 0}, {987, 280}} + {{0, 280}, {987, 263}} @@ -776,12 +819,14 @@ DebugSTDIOWindowFrame {{200, 200}, {500, 300}} Frame - {{0, 5}, {969, 309}} + {{0, 107}, {987, 543}} + RubberWindowFrame + 0 55 987 691 0 0 1024 746 Module PBXDebugSessionModule Proportion - 309pt + 543pt Name @@ -800,15 +845,15 @@ TableOfContents - B452D07B09F9789800A4F626 + B4C6D2C00B1643A900A4F7AF 1CCC7628064C1048000F2A68 1CCC7629064C1048000F2A68 - B452D07C09F9789800A4F626 - B452D07D09F9789800A4F626 - B452D07E09F9789800A4F626 - B452D07F09F9789800A4F626 - B452D06609F9763300A4F626 - B452D08009F9789800A4F626 + B4C6D2C10B1643A900A4F7AF + B4C6D2C20B1643A900A4F7AF + B4C6D2C30B1643A900A4F7AF + B4C6D2C40B1643A900A4F7AF + B467E8DA09A6421200625DA6 + B4C6D2C50B1643A900A4F7AF ToolbarConfiguration xcode.toolbar.config.debug @@ -838,10 +883,13 @@ 5 WindowOrderList + B4C6D2C60B1643A900A4F7AF + B4C6D2C70B1643A900A4F7AF + B4C6D2C50B1643A900A4F7AF /Users/jens/Developer/MacGLide/MacGLide Control Panel/MacGLide Control Panel.xcodeproj WindowString - 4 319 1000 426 0 0 1024 746 + 0 55 987 691 0 0 1024 746 WindowTools @@ -1134,18 +1182,18 @@ 743 379 452 308 0 0 1280 1002 + FirstTimeWindowDisplayed + Identifier windowTool.breakpoints IsVertical - 0 + Layout Dock - BecomeActive - 1 ContentConfiguration PBXBottomSmartGroupGIDs @@ -1182,24 +1230,24 @@ PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {168, 350}} + {{0, 0}, {168, 631}} PBXTopSmartGroupGIDs XCIncludePerspectivesSwitch - 0 + GeometryConfiguration Frame - {{0, 0}, {185, 368}} + {{0, 0}, {185, 649}} GroupTreeTableConfiguration MainColumn 168 RubberWindowFrame - 315 424 744 409 0 0 1440 878 + 0 56 986 690 0 0 1024 746 Module PBXSmartGroupTreeModule @@ -1207,6 +1255,8 @@ 185pt + BecomeActive + ContentConfiguration PBXProjectModuleGUID @@ -1217,18 +1267,18 @@ GeometryConfiguration Frame - {{190, 0}, {554, 368}} + {{190, 0}, {796, 649}} RubberWindowFrame - 315 424 744 409 0 0 1440 878 + 0 56 986 690 0 0 1024 746 Module XCDetailModule Proportion - 554pt + 796pt Proportion - 368pt + 649pt MajorVersion @@ -1243,22 +1293,22 @@ XCDetailModule StatusbarIsVisible - 1 + TableOfContents - 1CDDB66807F98D9800BB5817 - 1CDDB66907F98D9800BB5817 + B439EE0F0AF63A0200BAE724 + B439EE100AF63A0200BAE724 1CE0B1FE06471DED0097A5F4 1CA1AED706398EBD00589147 ToolbarConfiguration xcode.toolbar.config.breakpoints WindowString - 315 424 744 409 0 0 1440 878 + 0 56 986 690 0 0 1024 746 WindowToolGUID - 1CDDB66807F98D9800BB5817 + B439EE0F0AF63A0200BAE724 WindowToolIsVisible - 1 + Identifier diff --git a/MacGLide Control Panel/MacGLide Control Panel.xcodeproj/project.pbxproj b/MacGLide Control Panel/MacGLide Control Panel.xcodeproj/project.pbxproj index 98870de..699becf 100644 --- a/MacGLide Control Panel/MacGLide Control Panel.xcodeproj/project.pbxproj +++ b/MacGLide Control Panel/MacGLide Control Panel.xcodeproj/project.pbxproj @@ -11,12 +11,13 @@ 8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; }; 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; B419FB2A0A32251C0070C008 /* Displays.png in Resources */ = {isa = PBXBuildFile; fileRef = B419FB290A32251C0070C008 /* Displays.png */; }; + B427E8E20A9CFF2B00B42C21 /* MacGLideSettingsController.mm in Sources */ = {isa = PBXBuildFile; fileRef = B427E8E10A9CFF2B00B42C21 /* MacGLideSettingsController.mm */; }; B43FFB0509FD3D350094A3E3 /* GlideSettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B43FFB0409FD3D350094A3E3 /* GlideSettings.cpp */; }; B44507C90A250ECA008ACE63 /* opengl.gif in Resources */ = {isa = PBXBuildFile; fileRef = B44507C80A250ECA008ACE63 /* opengl.gif */; }; B452D05509F9756E00A4F626 /* GlideSettings_iostream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B452D05309F9756E00A4F626 /* GlideSettings_iostream.cpp */; }; B467E8CA09A6410500625DA6 /* 3Dfx-Logo_25%.png in Resources */ = {isa = PBXBuildFile; fileRef = B467E8C909A6410500625DA6 /* 3Dfx-Logo_25%.png */; }; B467E92709A65EFD00625DA6 /* 3Dfx-Logo.icns in Resources */ = {isa = PBXBuildFile; fileRef = B467E92609A65EFD00625DA6 /* 3Dfx-Logo.icns */; }; - B46D4BC80A064797002A428F /* GlideSettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B46D4BC70A064796002A428F /* GlideSettings.cpp */; }; + B4DC13F40A3AF2660094E754 /* GlideSettings_FSp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B4DC13F30A3AF2660094E754 /* GlideSettings_FSp.cpp */; }; B4DE41CB0A18BF99002BD718 /* MacGLideMainPanel.mm in Sources */ = {isa = PBXBuildFile; fileRef = B4DE41CA0A18BF99002BD718 /* MacGLideMainPanel.mm */; }; B4E30D5F09A0BD2A003DD374 /* MainWindow.nib in Resources */ = {isa = PBXBuildFile; fileRef = B4E30D5D09A0BD2A003DD374 /* MainWindow.nib */; }; /* End PBXBuildFile section */ @@ -32,6 +33,8 @@ 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; 8D1107320486CEB800E47090 /* MacGLide Control Panel.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "MacGLide Control Panel.app"; sourceTree = BUILT_PRODUCTS_DIR; }; B419FB290A32251C0070C008 /* Displays.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Displays.png; path = images/Displays.png; sourceTree = ""; }; + B427E8DD0A9CFEE100B42C21 /* MacGLideSettingsController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = MacGLideSettingsController.h; sourceTree = ""; }; + B427E8E10A9CFF2B00B42C21 /* MacGLideSettingsController.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = MacGLideSettingsController.mm; sourceTree = ""; }; B43FFB0409FD3D350094A3E3 /* GlideSettings.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GlideSettings.cpp; path = ../MacGLide/OpenGLide/GlideSettings.cpp; sourceTree = SOURCE_ROOT; }; B44507C80A250ECA008ACE63 /* opengl.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; name = opengl.gif; path = images/opengl.gif; sourceTree = ""; }; B452D05309F9756E00A4F626 /* GlideSettings_iostream.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GlideSettings_iostream.cpp; path = ../MacGLide/OpenGLide/GlideSettings_iostream.cpp; sourceTree = SOURCE_ROOT; }; @@ -39,8 +42,8 @@ B467E8C909A6410500625DA6 /* 3Dfx-Logo_25%.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "3Dfx-Logo_25%.png"; path = "images/3Dfx-Logo_25%.png"; sourceTree = ""; }; B467E92609A65EFD00625DA6 /* 3Dfx-Logo.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "3Dfx-Logo.icns"; path = "images/3Dfx-Logo.icns"; sourceTree = ""; }; B46D4BC60A064796002A428F /* GlideSettings_FSp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = GlideSettings_FSp.h; path = ../MacGLide/Mac/GlideSettings_FSp.h; sourceTree = SOURCE_ROOT; }; - B46D4BC70A064796002A428F /* GlideSettings.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GlideSettings.cpp; path = ../MacGLide/Mac/GlideSettings.cpp; sourceTree = SOURCE_ROOT; }; B483759009F67BFC004826B1 /* GlideSettings.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = GlideSettings.h; path = ../MacGLide/OpenGLide/GlideSettings.h; sourceTree = SOURCE_ROOT; }; + B4DC13F30A3AF2660094E754 /* GlideSettings_FSp.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = GlideSettings_FSp.cpp; path = ../MacGLide/Mac/GlideSettings_FSp.cpp; sourceTree = SOURCE_ROOT; }; B4DE41C90A18BF99002BD718 /* MacGLideMainPanel.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = MacGLideMainPanel.h; sourceTree = ""; }; B4DE41CA0A18BF99002BD718 /* MacGLideMainPanel.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = MacGLideMainPanel.mm; sourceTree = ""; }; B4E30D5E09A0BD2A003DD374 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/MainWindow.nib; sourceTree = ""; }; @@ -61,8 +64,10 @@ 080E96DDFE201D6D7F000001 /* Classes */ = { isa = PBXGroup; children = ( + B427E8E10A9CFF2B00B42C21 /* MacGLideSettingsController.mm */, + B427E8DD0A9CFEE100B42C21 /* MacGLideSettingsController.h */, + B4DC13F30A3AF2660094E754 /* GlideSettings_FSp.cpp */, B46D4BC60A064796002A428F /* GlideSettings_FSp.h */, - B46D4BC70A064796002A428F /* GlideSettings.cpp */, B43FFB0409FD3D350094A3E3 /* GlideSettings.cpp */, B452D05309F9756E00A4F626 /* GlideSettings_iostream.cpp */, B452D05409F9756E00A4F626 /* GlideSettings_iostream.h */, @@ -203,8 +208,9 @@ 8D11072D0486CEB800E47090 /* main.m in Sources */, B452D05509F9756E00A4F626 /* GlideSettings_iostream.cpp in Sources */, B43FFB0509FD3D350094A3E3 /* GlideSettings.cpp in Sources */, - B46D4BC80A064797002A428F /* GlideSettings.cpp in Sources */, B4DE41CB0A18BF99002BD718 /* MacGLideMainPanel.mm in Sources */, + B4DC13F40A3AF2660094E754 /* GlideSettings_FSp.cpp in Sources */, + B427E8E20A9CFF2B00B42C21 /* MacGLideSettingsController.mm in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -239,6 +245,7 @@ GCC_MODEL_TUNING = G5; GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_REUSE_STRINGS = NO; INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Applications"; PRODUCT_NAME = "MacGLide Control Panel"; @@ -257,6 +264,7 @@ GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_MODEL_TUNING = G5; GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_REUSE_STRINGS = NO; INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Applications"; PRODUCT_NAME = "MacGLide Control Panel"; diff --git a/MacGLide Control Panel/MacGLide Control Panel_Prefix.pch b/MacGLide Control Panel/MacGLide Control Panel_Prefix.pch index 2be90ab..407775f 100644 --- a/MacGLide Control Panel/MacGLide Control Panel_Prefix.pch +++ b/MacGLide Control Panel/MacGLide Control Panel_Prefix.pch @@ -14,4 +14,4 @@ #include "sdk2_glide.h" const int StringBufferSize = 256; -void GlideMsg(const char *message, ...); +void GlideMsg(const char* message, ...); diff --git a/MacGLide Control Panel/MacGLideMainPanel.h b/MacGLide Control Panel/MacGLideMainPanel.h index fa4c0c0..90f2026 100644 --- a/MacGLide Control Panel/MacGLideMainPanel.h +++ b/MacGLide Control Panel/MacGLideMainPanel.h @@ -1,10 +1,11 @@ /* MacGLideMainPanel */ #import +#import "MacGLideSettingsController.h" @interface MacGLideMainPanel : NSWindow { + IBOutlet MacGLideSettingsController* controller; } -- (IBAction)toggleMipmapping:(id)sender; -- (IBAction)toogleUseGameSpecificOptimisations:(id)sender; +// - (id)initWithContentRect:(NSRect)contentRect styleMask:(unsigned int)styleMask backing:(NSBackingStoreType)bufferingType defer:(BOOL)deferCreation; @end diff --git a/MacGLide Control Panel/MacGLideMainPanel.mm b/MacGLide Control Panel/MacGLideMainPanel.mm index 66e5577..cb8fdee 100644 --- a/MacGLide Control Panel/MacGLideMainPanel.mm +++ b/MacGLide Control Panel/MacGLideMainPanel.mm @@ -1,22 +1,27 @@ #import "MacGLideMainPanel.h" +#include "GlideSettings.h" -#include -#include "GlideSettings_FSp.h" - -GlideSettingsFSp UserConfig; @implementation MacGLideMainPanel -- (IBAction)toggleMipmapping:(id)sender +/* +- (id)initWithContentRect:(NSRect)contentRect styleMask:(unsigned int)styleMask backing:(NSBackingStoreType)bufferingType defer:(BOOL)deferCreation { + [super initWithContentRect:contentRect styleMask:styleMask backing:bufferingType defer:deferCreation]; + // Select default setting file + OSErr err = userConfig.init(NULL); + if (err == noErr) + { + err = userConfig.load(); + if (err == noErr) + { + // init controls +// [updateButton userConfig.Mipmapping]; + } + } + return self; } +*/ -- (IBAction)toggleTextureSmoothing:(id)sender -{ -} - -- (IBAction)toogleUseGameSpecificOptimisations:(id)sender -{ -} @end diff --git a/MacGLide Control Panel/MacGLidePanel.h b/MacGLide Control Panel/MacGLidePanel.h deleted file mode 100644 index 27b939e..0000000 --- a/MacGLide Control Panel/MacGLidePanel.h +++ /dev/null @@ -1,11 +0,0 @@ -/* MacGLidePanel */ - -#import - -@interface MacGLidePanel : NSPanel -{ -} -- (IBAction)toggleTextureSmoothing:(id)sender; -- (IBAction)toggleMipmapping:(id)sender; -- (IBAction)toogleUseGameSpecificOptimisations:(id)sender; -@end diff --git a/MacGLide Control Panel/MacGLidePanel.mm b/MacGLide Control Panel/MacGLidePanel.mm deleted file mode 100644 index b788bcf..0000000 --- a/MacGLide Control Panel/MacGLidePanel.mm +++ /dev/null @@ -1,30 +0,0 @@ -#import "MacGLidePanel.h" - -#include -#include "GlideSettings_iostream.h" - -GlideSettingsIOStream UserConfig; - -void GlideMsg(const char *message, ...) -{ - // Do nothing here as we don't need the logging output -} - -@implementation MacGLidePanel - -- (IBAction)toggleTextureSmoothing:(id)sender -{ - assert(false); -} - -- (IBAction)toggleMipmapping:(id)sender -{ - UserConfig.EnableMipMaps = true; -} - -- (IBAction)toogleUseGameSpecificOptimisations:(id)sender -{ - assert(false); -} - -@end diff --git a/MacGLide Control Panel/MacGLideSettingsController.h b/MacGLide Control Panel/MacGLideSettingsController.h new file mode 100644 index 0000000..2d0463d --- /dev/null +++ b/MacGLide Control Panel/MacGLideSettingsController.h @@ -0,0 +1,64 @@ +/* MacGLideSettingsController */ + +#import + +#include "GlideSettings.h" + +@interface MacGLideSettingsController : NSObject +{ + IBOutlet NSButton *useUseApplicationSpecificSettings; + IBOutlet NSPopUpButton *settingsName; + + IBOutlet NSPopUpButton *resolution; + IBOutlet NSPopUpButton *refreshRate; + IBOutlet NSSlider *gammaBias; + IBOutlet NSSlider *fullSceneAnitaliasingLevel; + + IBOutlet NSSlider *anisotropicFilteringLevel; + IBOutlet NSButton *mipmapping; + IBOutlet NSButton *autoEnableGameSpecificSettings; + + IBOutlet NSPopUpButton *boardType; + IBOutlet NSPopUpButton *framebufferMemory; + IBOutlet NSPopUpButton *textureMemory; + IBOutlet NSPopUpButton *textureUnits; + IBOutlet NSButton *noSplash; + IBOutlet NSButton *showShamelessPlug; +} + +- (void)init; +- (void)init:(const char*)fileName; +- (void) updateButton:(id)source boolValue:(bool) value; +- (void) updateButton:(id)source ulongValue:(unsigned long) value; +- (void) updateButton:(id)source floatValue:(GLfloat) value; +- (void) updateSetting:(id)source boolSetting:(bool&) setting; +- (void) updateSetting:(id)source ulongSetting:(unsigned long&) setting; +- (void) updateSetting:(id)source floatSetting:(GLfloat&) setting; +- (GlideSettings::IOErr)saveSettings; + +// Settings selection +- (IBAction)setUseApplicationSpecificSettings:(id)sender; +- (IBAction)setSettingsName:(id)sender; + +// Appearence / Monitor +- (IBAction)setResolution:(id)sender; +- (IBAction)setRefreshRate:(id)sender; +- (IBAction)setGammaBias:(id)sender; +- (IBAction)setFullSceneAnitaliasingLevel:(id)sender; + +// OpenGL +- (IBAction)setMipmapping:(id)sender; +- (IBAction)setAnisotropicFilteringLevel:(id)sender; +// OpenGL auto adjust features +- (IBAction)setAutoEnableGameSpecificSettings:(id)sender; + +// 3Dfx +- (IBAction)setBoardType:(id)sender; +- (IBAction)setFramebufferMemory:(id)sender; +- (IBAction)setTextureMemory:(id)sender; +- (IBAction)setTextureUnits:(id)sender; +- (IBAction)setShowShamelessPlug:(id)sender; +- (IBAction)setNoSplash:(id)sender; + + +@end diff --git a/MacGLide Control Panel/MacGLideSettingsController.mm b/MacGLide Control Panel/MacGLideSettingsController.mm new file mode 100644 index 0000000..70a0b49 --- /dev/null +++ b/MacGLide Control Panel/MacGLideSettingsController.mm @@ -0,0 +1,180 @@ +#import "MacGLideSettingsController.h" + +#include +#include "GlideSettings_FSp.h" + +GlideSettingsFSp userConfig; + +void GlideMsg(const char* message, ...) +{ + // Don't log anything +} +OSErr loadUserConfig(const char* fileName) +{ + // Select default setting file + OSErr err = userConfig.init(fileName); + if (err == noErr) + { + err = userConfig.load(); + } + return err; +} + +@implementation MacGLideSettingsController + +- (void)init +{ + [self init:"Defaults"]; + return; +} + +- (void)init:(const char*) fileName +{ + OSErr err = loadUserConfig(fileName); + if (err == noErr) + { + // init controls + [self updateButton:useUseApplicationSpecificSettings boolValue:userConfig.UseApplicationSpecificSettings]; + [self updateButton:resolution ulongValue:userConfig.Resolution]; + [self updateButton:refreshRate ulongValue:userConfig.MonitorRefreshRate]; + [self updateButton:gammaBias floatValue:userConfig.GammaBias]; + [self updateButton:fullSceneAnitaliasingLevel ulongValue:userConfig.FullSceneAntiAliasing]; + [self updateButton:anisotropicFilteringLevel ulongValue:userConfig.AnisotropylLevel]; + [self updateButton:mipmapping ulongValue:userConfig.Mipmapping]; + [self updateButton:autoEnableGameSpecificSettings boolValue:userConfig.AutoEnableGameSpecificSettings]; + [self updateButton:boardType ulongValue:userConfig.BoardType]; + [self updateButton:framebufferMemory ulongValue:userConfig.FrameBufferMemorySize]; + [self updateButton:textureMemory ulongValue:userConfig.TextureMemorySize]; + [self updateButton:textureUnits ulongValue:userConfig.GlideTextureUnits]; + [self updateButton:noSplash boolValue:userConfig.NoSplash]; + [self updateButton:showShamelessPlug boolValue:userConfig.ShamelessPlug]; + } +} + +- (void) updateButton:(id) source boolValue:(bool) value +{ + [source setState:(value ? NSOnState : NSOffState)]; +} + +- (void) updateButton:(id) source ulongValue:(unsigned long) value +{ + [source setIntValue: value]; +} + +- (void) updateButton:(id) source floatValue:(GLfloat) value +{ + [source setFloatValue: value]; +} + +- (void) updateSetting:(id) source boolSetting:(bool&)setting; +{ + setting = ([source state] == NSOnState) ? true : false; + [self saveSettings]; +} + +- (void) updateSetting:(id) source ulongSetting:(unsigned long&)setting; +{ + setting = [source intValue]; + [self saveSettings]; +} + +- (void) updateSetting:(id) source floatSetting:(GLfloat&)setting; +{ + setting = [source floatValue]; + [self saveSettings]; +} + +- (GlideSettings::IOErr) saveSettings +{ + GlideSettings::IOErr err = userConfig.save(); + return err; +} + +// Settings selection +- (IBAction)setUseApplicationSpecificSettings:(id)sender +{ + [self updateSetting:sender boolSetting:userConfig.UseApplicationSpecificSettings]; +} + +- (IBAction)setSettingsName:(id)sender +{ + [self saveSettings]; + NSString* s = [sender titleOfSelectedItem]; + [self init:[s UTF8String]]; +} + +// Appearence / Monitor +- (IBAction)setResolution:(id)sender +{ + [self updateSetting:sender ulongSetting:userConfig.Resolution]; +} + +- (IBAction)setRefreshRate:(id)sender +{ + [self updateSetting:sender ulongSetting:userConfig.MonitorRefreshRate]; +} + +- (IBAction)setGammaBias:(id)sender +{ + [self updateSetting:sender floatSetting:userConfig.GammaBias]; +} + +- (IBAction)setFullSceneAnitaliasingLevel:(id)sender +{ + [self updateSetting:sender ulongSetting:userConfig.FullSceneAntiAliasing]; +} + + +// OpenGL +- (IBAction)setMipmapping:(id)sender +{ + [self updateSetting:sender boolSetting:userConfig.Mipmapping]; +} + +- (IBAction)setAnisotropicFilteringLevel:(id)sender +{ + [self updateSetting:sender ulongSetting:userConfig.AnisotropylLevel]; +} + + +- (IBAction)setAutoEnableGameSpecificSettings:(id)sender +{ + [self updateSetting:sender boolSetting:userConfig.AutoEnableGameSpecificSettings]; +} + + +// 3Dfx +- (IBAction)setBoardType:(id)sender +{ + unsigned long bt = userConfig.BoardType; + [self updateSetting:sender ulongSetting:bt]; + userConfig.BoardType = static_cast(bt); +} + +- (IBAction)setFramebufferMemory:(id)sender +{ + [self updateSetting:sender ulongSetting:userConfig.FrameBufferMemorySize]; +} + +- (IBAction)setTextureMemory:(id)sender +{ + [self updateSetting:sender ulongSetting:userConfig.TextureMemorySize]; +} + +- (IBAction)setTextureUnits:(id)sender +{ + [self updateSetting:sender ulongSetting:userConfig.GlideTextureUnits]; +} + +- (IBAction)setShowShamelessPlug:(id)sender +{ + [self updateSetting:sender boolSetting:userConfig.ShamelessPlug]; +} + +- (IBAction)setNoSplash:(id)sender +{ + [self updateSetting:sender boolSetting:userConfig.NoSplash]; +} + + +@end