bplist00<_WebMainResource_WebSubresources_WebSubframeArchives ^WebResourceURL_WebResourceTextEncodingName_WebResourceMIMEType_WebResourceData_WebResourceFrameName_Ihttp://thepre-wrathtribune.blogspot.com/2007/07/timing-two-witnesses.htmlUUTF-8Ytext/htmlOP The Pre-wrath Tribune: Timing the Two Witnesses

Saturday, July 14, 2007

Timing the Two Witnesses



After posting my end times chart a while back, a few people e-mailed me to tell me I was wrong for placing the Two Witnesses’ ministry in the second half of the Week. Here is my explanation for this if you were one of those wondering why I believe as I do. This is a very neat timing issue within Revelation that is connected to other issues within the book that are equally interesting. When put together a bigger picture of how the puzzle pieces fit together is seen. It will help if you follow along in your Bible.

To start, we know that the abomination of desolation takes place at the midpoint of the Seventieth Week. And we know that the sixth seal takes place after the midpoint of the Week because we see the same triple sign in the sun, moon and stars that Jesus said would take place after the abomination that causes desolation (Rev. 6:12-13, Matt. 24:29). And we know that the trumpet judgments can only begin after the seventh seal is opened. It’s impossible for the seals, trumpets and bowls to take place concurrently as some suggest, but I digress.

This brings us to the moment before the fifth trumpet is sounded. Rev 8:13 says:

Then I looked, and I heard an eagle flying in mid-heaven, saying with a loud voice, “Woe, woe, woe to those who dwell on the earth, because of the remaining blasts of the trumpet of the three angels who are about to sound!”

In the above verse the three “woes” are said to be associated with the final three trumpet blasts, and this is exactly what is proven as one reads on. On completion of the fifth trumpet, Revelation 9:12 tells us that:

The first woe is past; behold, two woes are still coming after these things.

Obviously the fifth trumpet is the first “woe,” and the sixth and seventh trumpets will be the second and third “woes.” Chapter nine then continues in consecutive order informing us of what will take place during the time of the sixth trumpet. I won’t include it here, but you should read it to get a clear picture.

Chapter ten takes us to an interlude, and in verse seven we’re informed that, “In the days of the voice of the seventh angel, when he is about to sound, then the mystery of God is finished…”

What is the “seventh angel” “about to sound” that will inform us that “the mystery of God is finished?” The seventh trumpet. The third “woe.”

Now this finally brings us to the chapter in question—chapter eleven. Verses one through fourteen tell us what the Two Witnesses will do and how long they will do it. They will prophesy for 1260 days (Rev 11:3). After their work is completed they will be killed (11:7), they will lay in the street for 3.5 days (11:9), and then they will be brought to life and will be raised to heaven (11:11-12). In that hour there will be an earthquake with thousands of people killed (11:13).

The second woe is past; behold, the third woe is coming quickly. (Rev. 11:14)

The second woe is said to be in the past once the ministry, death and resurrection of the Two Witnesses is completed, and because the second woe is said to be associated with the sixth trumpet it is clear that their death takes place during the period of the sixth trumpet, and that the ministry of the two take place in the last 3.5 years because, as we discussed in the second paragraph, the seals fill up the first half of the Week and continue into the second half only to lead into the trumpet judgments. And in nice, orderly fashion, the very next thing mentioned in Rev. 11:15 is that “the seventh angel sounded…”

This goes to show that it only makes perfect sense that the Witnesses’ period of prophesying was previously recorded in the beginning of chapter eleven as being linked with the time when the holy city will be trampled.

Leave out the court which is outside the temple and do not measure it, for it has been given to the nations; and they will tread under foot the holy city for forty-two months. And I will grant authority to my two witnesses, and they will prophesy for 1260 days clothed in sackcloth. (Rev. 11:2-3)

The holy city will not be trampled during the first half of the seventieth week because this is the period when the covenant is yet to be broken, the temple is undefiled by the beast and the Jewish sacrificial system is in progress. It’s not until the midpoint of the Week when the covenant will be broken by the beast and the Great Tribulation will begin resulting in the city being “tread under foot.”

And if you haven’t figured it out already, the timing of the Two Witnesses also shows us why the seven bowls must take place after the completion of the 70th Week. Visit an earlier post for this explanation.

All this may sound complicated to the individual new to the study of prophecy, but hang in there, there are many rewards that come with the study of end things, even if it is the study of secondary issues such as the timing of events.

0 comments:

 
StatCounter - Free Web Tracker and Counter
P$)-37_WebResourceResponse_9http://www.blogger.com/v-css/3727950723-blog_controls.cssObplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345KLMNOPQRSTUVWXYZ[_`U$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_9http://www.blogger.com/v-css/3727950723-blog_controls.css./01X$classesZ$classname12UNSURLXNSObject#A{[ 6789BWNS.keysZNS.objects:;<=>?@A CDEFGHIJWExpires]Cache-Control_Content-Encoding\Content-TypeVServerTDate^Content-Length]Last-Modified_Tue, 27 Oct 2009 15:42:50 GMTVpublicTgzipXtext/cssWGFE/1.3_Mon, 22 Sep 2008 15:42:50 GMTS420_Fri, 19 Sep 2008 21:48:30 GMT./\]]^2_NSMutableDictionary\NSDictionaryM./abbc2_NSHTTPURLResponse]NSURLResponse)27:PRd FKT_bhqz| )IPU^fdXtext/cssOM /* ----------------------------------------------- Quick Edit and Delete Comment Icons ----------------------------------------------- */ /* Hide it now, show it later with dynamically-generated CSS */ .item-control { display:none; } .item-control a, .item-action a { text-decoration:none !important; } .widget-item-control { float: right; } .icon-action { border-style: none !important; margin: 0 0 -5px 0.5em !important; } .delete-comment-icon { background: url("/img/icon_delete13.gif") no-repeat left; /* makes a 14x14 box */ padding:7px; } /* Mobile video tags shown on handhelds only. All others get regular video tags. */ @media all { .BLOG_mobile_video_class { display:none; } } @media handheld { .BLOG_mobile_video_class { display:inline; } .BLOG_video_class { display:none; } } _2http://www.blogger.com/widgets/1326023001-blog.cssObplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345KLMNOPQRSTUVWXYZ[_`U$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_2http://www.blogger.com/widgets/1326023001-blog.css./01X$classesZ$classname12UNSURLXNSObject#A 6789BWNS.keysZNS.objects:;<=>?@A CDEFGHIJWExpires]Cache-Control_Content-Encoding\Content-TypeVServerTDate^Content-Length]Last-Modified_Wed, 22 Oct 2008 15:42:50 GMTVpublicTgzipXtext/cssWGFE/1.3_Mon, 22 Sep 2008 15:42:50 GMTS718_Fri, 19 Sep 2008 21:48:30 GMT./\]]^2_NSMutableDictionary\NSDictionary./abbc2_NSHTTPURLResponse]NSURLResponse)27:PRd ?DMX[ajsu|"BINW_dO/* backlinks controls */ .backlink-toggle-zippy { padding-right: 11px; margin-right: 0.1em; cursor: pointer; cursor: hand; background: url(http://www.blogger.com/img/triangle_ltr.gif) no-repeat left center; } .expanded-backlink .backlink-toggle-zippy { background-image: url("http://www.blogger.com/img/triangle_open.gif") } .collapsed-backlink .collapseable { display: none; } .status-msg-wrap { font-size: 110%; width: 90%; margin: 10px auto; position: relative; } .status-msg-border { border: 1px solid #000000; filter:alpha(opacity=40); -moz-opacity:.40; opacity:.40; width: 100%; position: relative; } .status-msg-bg { background-color: #cccccc; opacity:.80; filter:alpha(opacity=30); -moz-opacity:.80; width: 100%; position: relative; z-index: 1; } .status-msg-body { text-align: center; padding: .3em 0; width: 100%; position: absolute; z-index: 4; } .status-msg-hidden { visibility: hidden; padding: .3em 0; } .status-msg-wrap a { padding-left: .4em; text-decoration: underline; } /* Reactions -----------------------------*/ .reactions-label { margin: 3px 0 0 0; } /* styling for the iframe */ .reactions-iframe { background: transparent; height: 2.3em; width: 100%; border: 0; } /* Comments -----------------------------*/ #comments .blogger-comment-icon, .blogger-comment-icon { line-height:16px; background:url(/img/b16-rounded.gif) left no-repeat; padding-left:20px; } #comments .openid-comment-icon, .openid-comment-icon { line-height:16px; background:url(/img/openid16-rounded.gif) left no-repeat; padding-left:20px; } #comments .anon-comment-icon, .anon-comment-icon { line-height:16px; background:url(/img/anon16-rounded.gif) left no-repeat; padding-left:20px; } /* Paging Controls for comments -----------------------------*/ .paging-control-container { float: right; margin: 0px 6px 0px 0px; font-size: 80%; } .unneeded-paging-control { visibility: hidden; } _`http://bp2.blogger.com/_8Mu1Z6T9WuQ/Rtt5FYMsWlI/AAAAAAAAARM/0l8Dj5Dz3LY/s1600/PRACTICEHEADER.jpgO4bplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345KLMNOPQRSTUVWXYZ[_`U$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_`http://bp2.blogger.com/_8Mu1Z6T9WuQ/Rtt5FYMsWlI/AAAAAAAAARM/0l8Dj5Dz3LY/s1600/PRACTICEHEADER.jpg./01X$classesZ$classname12UNSURLXNSObject#Aԙ 6789BWNS.keysZNS.objects:;<=>?@A CDEFGHIJWExpires]Cache-Control_Content-Disposition\Content-TypeVServerTDate^Content-LengthTEtag_Tue, 23 Sep 2008 15:42:50 GMT_max-age=86400, no-transform_(attachment;filename="PRACTICEHEADER.jpg"Zimage/jpegTfife_Mon, 22 Sep 2008 15:42:50 GMTU92043V"1130"./\]]^2_NSMutableDictionary\NSDictionaryg./abbc2_NSHTTPURLResponse]NSURLResponse)27:PRd mr{*16EJj!&*>dLZimage/jpegOgJFIFddDuckyPAdobed      w    !1AQa"q2Rғ B#Tv78r3$tws5ubC9S46WcD&V  !1AQaq"2s5BRr46b#3S$CDt%7ғ&c ? @(P @(P @(>ʏ(1>CZ{!|_@=G֯~_#Wx?/rt9}j:>CZ{!|_@=G֯~_#Wx?/rt9}j:>CZ{!|_@=G֯~_#Wx?/rt9}j:>CZ{!|_@=G֯~_#Wx?/rt9}j:>CZ{!|_@=G֯~_#Wx?/rt9}j:>CZ{!|_@=G֯~_#Wx?/rt9}j:>CZ{!|_@=G֯~_#Wx?/rt9}j:>CZ{!|_@=G֯~_#Wx?/rt9}j:>CZ{!|_@=G֯~_#Wx?/rt9}j:>CZ{!|_@=G֯~_#Wx?/rt9}j:>CZ{!|_@=G֯~_#Wx?/rt<is[ŧH7ͣtm~%;6cW#Bdž_!P Oҳ5N]5!2ݖn \fuptMpa*=p/? Off 亟_j ˽O#1KɻS^s;.(SL|Gw>Ẑ~__ԋF+./JR}`}/n39Eꗙ](;dG3!+i^ӌ|$|or^'LQ_: Tyˌmq+G $pjJ:~Ai?Z^1}ԡdE"j̷S>mi)%.:ZBڒ7!@Y[u'wjG>3[ Q"ih]F4bBIn;HHwxxƼ\'wYrb!KE$bBQj+!@`&ŵ+VnfvD屭Ǽa?+?ēC8z|.YGT/XU<@P @(P @(P &RKdWؔn_4 fˏ# B-d6^:PjώRz}}UEe c.ڭ5#US-%RJRBumk=$E\-[^|報DIT>jS /qQU%x&8pݖI|!:hfL3%LKS}-YI.%uYRQY ːQ h_ 6[)6FUrߓ[6:Gmkp: OI ‚ĕSE5N^eϼ4#89w^W^%6G"iBI}ր*#A洑RO{+QQmnZ*IQ`f*S(c%W_l8\|/XZ]PK2T$Cz@QPYtC*U%nI'M[*IRGmn5 #"|pQtj=-K/ cJ>cڕdو!"*۟3-]Rq3w2(o}65|w/utQopd!M\k}U̹{4#Z;KwUڢ+b#-BK%$gU0Io\:X-Q 9B`GmdBXƬ(zp5YNcWQٺ{GݥDZQI-ս)I,{=5~6Fnr_1 u恲TᶯMQ$˖:.X h_6Wp;OAW6_Ze R|v2M~{5ҏƼMw j6'?gYkDrB6yKsO9i^%)MRl /Hh\h?WMc:hJ2HǝO%PSrڼ$n=[m}J^svӳg9 Ob^X0z @(P @(P@$'ț ~X 18P\6CMN,BGnLimgɛ_b~T[zBU43wp R IJxVN^΄sĬr:,û3Fc1!,<1rZqd`nd壂I/[\y#11!POjI<FSlg<,M-l@=TTXE]%im/UGmWcb$J!:CN-d{k2NQEYqbS@@nüzYi )W#=E/)ZNԠR l/KvݿK_%p ԎYNJRGr3zgB'!)/@8IPP$vXW5>TRESGx" elEp$:R*~Ɋ\j%O hT\ALY8 S.=5U WVFHfs]F$5zu$teG_ioXVQ]F+J@'@PHa:%} Q:IMz WN$xt+0G~ )-]\])*DP @(P @(P @(P @(P @(P @(P @(P @(P @(6&n,ŕ.[QXlo\v~O1gbYE g2qz k"q̜%f=û*R 6=NbMn>c+3fBn\!i84IP29zXZ^[#ڰ^KHWj5Xa\):BnTmj˅m5&),\%„>MCSk-,NĐ!!%]#RURayM:& @=L;;ɥwPQR VFK,_1|Vj 'pkory{HTsa0yR,mp=56lFq(L핸q%F#mһl[X?zn @(P @(P.OuU&66/ ;g1؇&y)::IJIZxVlV%݂1vy8.S0NmF7{9 I$ܯ6'7Rmе{ _IV{%.f'/F/Fڤ 98XsR>Omz9]WKd丵[+WTGl[(Gn+wc17mJQЩ[̷5Mm[7#J-Uvܥ!RB ҩ$pub4VU22Cļ%=+.i;SO >~߉zDuhRUːPt(I%GU6ʐ omBIwjTV}P\OmBQ)%"V4 &R&"g9Aԃ_wV-:᠑J9A\P!m;N8J&;ywNޮ5q. C^δS !a@5As,P! DuJKrm!z֏h-aa:=&~9)Jԩ*QS^I?v.TdT|C243i;jb1>Bߕ؎)EZ˖nꚪ%jpP @(P @(P @(P @(P @(P @(P @(P @(P @(Έ0ܝ= t  xN9ؿ^V}=W#]7_فS񔌑q k)~P9)6z]omsKJV3\=ʊu!+TrU'fqԪSU9w7I)᠓T%:=JzxJURw1ي5I:1jRƔ\WƩv*]/EGnK' O$)fA "Qk D+G/㢿jXAqGQEdڳ,<^.yrkIFGb7BlmkW9$];e;21>%뭀Hx&^Eg/{6IeTޘ@5)ւ=N ¥,!G?z]ήzY1![n\U: IU޲ٽj-4"ȪhӍC p0kA]WK<> œIЗPIlo] ;xvն,RAgQ" cjT<ub%QHqpI"EQgên]FQ}vI䪝)̨U_)Z,q7uczvk-(RjE)qm:fm wk&JE))? =BRUOuJ`P@&QR8[[N2 T!{ލL3!m|w*?JٗĹi{p:(ZlamNۣ2m]WQ#VP @(P @(P @(P @(P @(P @(P @(P @(P @(6Ĭ̀py"}^#ݷs5uF!f3i8 spְx (Q M#o JFC  (=ټTзe$N,Ԯb p+D'.#b3዗^lRE_KAp[[ xI\?!G[[g+e7}in4srVmYT BRtRԙ+!}ā#&rov3eIzK%;,[Q #wke w4Bh, N(y}0 BRZs~A=Ԯ`=kqhPJO zճDx-risMhR!G ƒm/FӬJR=܊m:c/:6 $Rn캻$x̒m<)W'PEO1Ij*-4J1hGꁗe'"wʒ)mrJYH(\K{d4Irjz_h.-eܴ~=}Ԩ%g!Fq]Ot@M~[u +8'JĔ^5!6J>S!͇Ͳ$ kBj==U[L께օ}} R3 [jՂ,IV iIKf_^ԯZm|n5(̟-U`I:@ke}2.W,J_RG@C" u "fIQOHW%J (/5BsAc.nEE1 W#C"*%leA!!iE+T]m6YuJBnKYH%.6(QL]QIKNDrY6 fNKH;!ն)@E{lدF-֜"EVךJK.me `kI~Uk%"sj*WOy^Jx!Vk$iI#y39]uT-X܎|5@_^BI /wJPG%0vLg6 d()-:nPӠ)Q5@;U(x*H=%=xU$(d,vcldˬkr@/1Ңu*jdgJ6.4J-+Ne\% 8vKmOs-3%6Lt2"a'ACȵ'~&| mGzy:JijBň5(362RUD:Q@(P @(P @(P @(P @(P @(P @(P @(P @()otW Ra?m* hj[1s/v7mJ I>GU:]݂3cfJ> rNY;-Z9֧ݬ[7ҤѸhq\hh(R.V륖ffiW)mżlx]G29)*zh!?Yϥ:\ov]5az)bE+Mw3Xr{6Gw c_E*fLkf.KH[Fz[Mv#*1aIuA;~YʳfgXJ]JY!?( nŤt'CaG Eʬӄ\f<yiCer6BRDB@&q"VDdބ#G:VC(P6DlRpI#Gᮗr_t.h>Cn!ޗ3^ӬIcVBP @(P RTB@<+9,-G ەuً*K/L~jb%k"öVCix4Bcpt؛َ2J"7C-6?b=:ŞnܦRdL숪xˎ!IO,$!k!j3i%Dj>]+Ǡȭ&[/r1iJaF-FSo8I`=+d2ww|u,n#.BHTIU=zY78WlZnkQ㶧_yA-6r{Xb6aTts$""XW|;Cn2kG&-&g$Fi}eG>FڤUޒdW H4*JƊJH"GihR۪ێyԺCBE^mq=H㎍e[r5wܦjd!F2m J/VU|{M`2mEh1îJQZڵI>x֙㤸I!WRPU@.x GBZujI}qWfnZdС}hPAC̸(klmznmN񐒡~(6qo]m[(/1MTBAboV#-ZP"mE|T{̦U#i$XmTsn)JJA>}uŃ,R@x$YDqn*mTDw8$6_lƔ,/5CqJZ\,ju@ 'UPYfC.CJ]&hp' Ɩ%r}1L·h%CH% =(TsG#6\y`3 /&IsUMWABYgvcX{7"[i)*@iѡW"Ru4n@ B’JUf~M-Z8+24ʥ`3)F)QB8eCCWt) 9~T\#bC3zc >P @(P @(P @(P @(P @(P @(P @(P @(P @(2Kʩn)8%J{x6K=oqyO4fn4xhn*/D{JCh!|B}1$!d'nݲԡ$I=h%\]#=-RN())QH@^:F^II- ctJ{c`l Ʈm!&JZMS~'᫛X-cBeorD[UG )J+'j̦̈A<v"+(e pOi?` ZwRqK:37H ?2H}5ss4fO jund{o^P @(P @( ̩@@"FrQUe&e>}'?r-(F xW$-W̓dw>u+53~r$aD !+Uc:|Y{٤;€Q |=|O'Ӣw3#c9lzk-|$i 6=´3&N(@`H QR~BپnjF3b+1 U]C2[#T,Im92 #;cscBֵk'Rѷ-4A'-f4gZdd!xyꌝr4Z9\ҵq,j.5q}DSkZPj:[h׽ևR%.^yn,@ʸ,`-X7EQDϞBWw5 RJxw{0X+P.eHlJ#ޫpt, !֮h?=\/j_f[(eeoXZ[Qe 4mrOZ,A#RYZTT%͍nMAǐzCIeFEz4D+Tя4bfhZRRxD-A:I㺧۰(p MkҼ/ib5r[N2'Ymv @!Vҡ IB]K%qa:%^R,x؂+pO *YB31NCʵ0R9;B!Kq_./J֤ƬߋMlZ>B۶ctVlK;suˬN'ʛ1P[|>qfڠq E@ljԻ'BBCa}Ugu]cݤ I-nzҡe[kAPb;M؛OOMci,Ceu45=!% vxTc7D 9J1XI.ΣO7#.F1??c8mE|՝)wF>k!%DI''n@(P @(M4ϋeZrr`U=KIAw$Jnkj^JbBPl;dmʆ?wJ){m/? i(Cm4%~I[WnJ7_72oR.'D`yޔ2/Jߔ֢xVrI*"!Um@F欠7E_jT5z"]WpGoo1q9W2 @=)XPMU4Ww Lj3r R63IKA5r@Zn~v$V+@V+ea%ȽP-j2d+Dn'W^tU#<1LxXrr5FM/]Q]SaR9Z#RwyoǗ$6 Qʌڎ!adV$E\SeղHG*z$PJs{64 !#1sIJr9}sHBTʒx6bqT*B8yY,݈Sb-ȱҐ.$--ak):u'6?g*K%8w|v~Rg[=-KZIQФxZʬFck1/zS] IBHՆO5BP @(P @(P @(P @(P @(P @(P @(P @(P @(Xg;zb2\m:n= Ob*c-o1R\vo|켯enָw33 5>>mZU~Myl uvf^>Sn3?׷˿ɖcX'sNlZWxw=gD9.7MZixiIFi~/^ui/\gi/ġN%e{*Ob"?Jm5orgKHfEm改/"9bYKm#\ ˜TT+oYn.hg堜rV%7Wٍ[nMRORԈ-~-Ronk7u\q8徥uq֪ т+OK-*<ؠP @(P b+*}Oi5;pڕ\j],FjZh`nV,_^ i$ n ҠEebtA~,+omJV%dt$Rt%.Ү-Mx+p[ɹb52QP۷oKebyrqi PM߬-\N6ԹpkZL*帚%7<[w 'im m J7iEQX,9eZ9RRU)=j*z Rqi)QC,*OEJq0z :ʭAJۜj,U1'dU(O)UkX\t<Ǎ.3kBCrYE^$).>b@Ua^ *dF.SB\uA. 7ڬH 86R4J{oEXkT.7-V A:Zu]N<AJ s~$gMR@dO9r1L/Lj43u!ATtBQ\UƻY1_J$bjPZRN%>T-8'"O{-YKAkS$!GRi`JUڕpn Ԫ|c/%!jE E_d9C<2̴GJKEdVe7SaVԄZJSף&jbwvd'g$rY"s--kSA{HqXI~U_k.b]{T3k[LP @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(=( UJ.R#ōvs2؂0-zRĭ_2C@zO}p>ޫonT5FP %TڝJ56AGmB"Bi-OJrmWҺ %Rm2,F\)J=QHē 8ܬw"dG<7yk*tr)s'{EIb%Il1&Tz]tPMB Gmeֹ[Bu 儤xEtyI/==يmr\!LtCjrREk*PiԠuv(6OUQ{ EpiJ wZ-!bXoVT~҂#C'a,yjG1r I*RJT Ec{X-/p[M:Bpfr"vVɐcT״UPԓtwo P̔X.Fxݹ}Xq\"V.,?("n/NKmw^VTASXBP'ԔĚɷIetؿ5g o';)scp٬;]1S^[  $bSap|oi^›l+eHu Rz1¶.5$ؑƯo)AKX[ڋZ%qbm=&HUP @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(*xE:}6/ b{0efS|tO^*Gf *ꪃxZU= D#@{)\T`4MP(c>kPCHW,x+MeQIZH!@L$Y"=fۘkq9\9L!cat4#B\8qz=Iw/Jcrb!3Oc6H^t$.Ec]o_#f\]zv ̡IR4o{: O}Zu&b"bjYM¦Rm7U"3픥)\5J@):u,Fn4~`nc6䅌GDm!_1UuժGq t))Zd5Wb[ZVZZl8ʇBR,Wċig.>:/zz$OjB8M PʐQk)m< ĎTP-8o^%+ Zt/{Iq);ǼwpyT 9O(iSMBnycV%"┥(*$&'j4Gɿߪ$ tCn+ mhC(lq,*5&"cr#>u 5H 4WDzj{->, V8H^M&3b{eG\-n՚l 6.*ܵ0d@*? O )8ʸ!=NZ"B(JS^VxeQ/$YLwIQ?p_XĶd~KaQN47JZP_ m-(rש<Gޫ|}]ؙ=ͣԩ͙/TImc%:@OSћém%^Ԟ$s7,cuS4Gp6$<*AR-ؗP(fVc5`e X&hP @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(.<"9h(GYIm˧>ǍT5Vz"$RX".,juHhOXmK)FÀT҇ ZkO5'JuNk V6m*(C)HjJ囇2RBm%S~IZ sl޻TJjV/ѳ8؛ogfB4lIf/PkVo 'ȵw"i-C'KC4Yp3o-e q|?,.k?fJ9Ixm(mWs$17[)Z-$)K4iZuͬ2 \"tiOq !ù@uEM[qNJS(NZx!br˝]Fq8ĕ)B&Ciq[Z,oQZ x-4L@GLqkbFj:tθ]I'M"2He ]u_Dܖ1-pHRBU" y!Ed#cd֗" L2rXpsRBNޭaI y2m[ǹM4WM5 6&8l+ĸd]¤FnHO QHil:JR:I>Z; ]j#}RRHPaPR}uRR\tM`,uj5X>RLʼn q/h7[M{}7I*d=ůoÁ'1iޕ1>.bR.҂bxXR Vm 7&@1G/ ".vCnEJDb1#IR Vsc-3)!}IAq p%I=Im諱 8sRԤv~Y_wF.3HK䤕ܵ)&QO17r\$,Jj-h_Ҽ #%p"fa1̕<$l9ޘә q8tGqZ Ap5ety9q7Ckv6aV&*Ykp,p=Wp!ulR0ʁJHIcg@(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P 늎N(YOcHt" l J@{"ʋ( T>9`ۂ{LTr)-c䥺53+Kyŀ PI6I6*b.y897#f.4'_<)򒂖TG< Q%"^=vzvwI&\)(Ȓ%*m/ rhY)9VRf5ELIiXd{K*t^TɌ]SsJRBn%h$Zu9zB\>};{-շ&6CϦc2u2qҔ|!j)HU~J/"E6W;'3o&|Q28 6pt6n4)nA( yIN }KxV+ q2&;,DթbHZҷYjN]$ʡ Պm+!3[ Zt-+t+JTu!OSƵPuzKfK|2),W2-A7n 9+ΰu8 rN`vpS-Å4u9uMƠ( {@Y@^W7@(al͈G}/@p+'j"e#=:$80:]yʹerMA`0نZw u7qMĴrB*\z.YZŭ=U&*Xg\j.緩GXW'mm-ZE8Gg hʽ䍣cui;3DTDRТSlͧRԦ%@^=vzjM(21~lSa22#>m*BVOoV !87!yA)l/Bu$X߇QՂ1džmr;Rx)R YEΡdžDzwb7.f[]ܒӲgϏ;!Vmt X#w2fgbNz,<[4ܴ*m%UBǥP$ߗq\S{YveȌsuv{< m+ajPS I)ա6znxԕ+Eq*hvA=8$Ql,w_-`36.b\dPx7PJ=(F|>i^=LӉj55/A-(x*] >G1obn; ]۳~%NiP9!1$4gP}Tv״xGƌ|Sf4 Y*2]QTP @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(FV>U f$4^AN+WFFg&JE }TA"i):$^绍U0y*w@y OeÉ廒ڛy͔ce[\Q<M+;=ujeҤldAk57r=77h2e<֣f"tE*b^z9Kн7:ͿҝNWy71.Hw'YZ|7 ֒Uk)V f4ZyHs{uDώvX橩!NR좛FB-%SV;FB;n;u%b&$!Iu%d2Ȼ͡azl{J %<+9ldX}S;&Cygv{o@P&>1+p%.M gkpPZUzIƯIY[R3fr kspd6XYp>ȲH}BP,]EZuV Njud6#uu12L'F񚜃\@=/Ƭ^Jea&ҖXxf 2XbnA(s0b銩 sJ9Zye!IOeJTz"Z,bJl6pZBk"XSC*U%:$3CNS\`)ZB${ՔV 1%k9 yV$%mJFkRTۊwԠEk$1ecTG%J* pm`$^.T.]mo;LF39-B |8T@)I:} 䗲v&Dlv*FEd53,)n7eooReno7/IB.lm1r*(V1D5lSecB5!>ޏh8sѫ݈,­/52V -K_=pjj:d0ot Ĩ{fc9FW g%q\$Ɣa1({zDTZA'*4Ž7)*Rv ֐YJRH<ċߍb <<|Wc )RQdXin$Xj㣻H)RϿe`^22"L,:kiu*#ZA.P-6#8Xq!^X6qz'u$:YK#zlIRI-1IWj4+qE-2zJ%QpňhWS‘-_+V,h%AABb8n;i~s+Z919BTDr)TҕJͅ´5W9"9LjԖ~Cc=Spr~CIaҖ?$ |ys Y[R0>A%Ƨ}RlX"NEP @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @DhjZE^%%fkT02%]2uP{ *1 L[nY؍ mJm -D%J8t*H%Vqx|5@y7&Y QUL8dyazړ4O+A pZOIS/tf庱X)HeK琷|^% 9 ΡKR߇O)(tgmonO፿rt#mYdقJlTBnZrj!x>DS7OzSX-e͎ IҒAvia-j &!]>:3"VrDY ^E+Z,"䋤 e 8l$iRQ{Wx*j&f}vPrrYf#'Lv4T?n0K/6RkPz;R:08c&S?sǖ9-[u!JԶ\(MYY;oC#)#ĊNLDf/]8b(J&A*z͜W/U/vpmDŽç3H msJU$)`$i3)qWY"1a,L aؒIaW_&(ژ*\qN;3&`HnKkrRN{UTk(P%q/1R\#vv;p)r8pcJPdv\ʯP.-ó,1+'/3q?)\J;:ۮ+xh8u Tm[P=n=f(u!ĺ`+CZ $v.Rm Řy-9CRRF֐D/MB+NVR5j,#nI[#"ơMQ(-KҖԞRG%0u`'7sx!͚LfJ$%JH:[ IIͪJtBLc?HYsfB8d!b,+J,^*9Y|qe}8".1D"%kY@ RC+$]pQn +ȜbrKIBWJҒJ5 j#N f";;%a9'Ri)ր$\AX%3 P$) .81uܶե/'b)jyفemu) AHHત!ߓuBF mv~Te*,v/W3råW&Nr`% te{VpX%녶CloK u)Qh ۦ6V-I%>0Ïėប#E6V5j oV\Rc?[1\CJAZ88$VYi|jMmzSPؒrB !ISU͈pIaO}HYѶA8Þʲ<-z/ʀ?&n\IV->C摢{f&G[hV1(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P <` l N#= Ǥ|֐?zIT{U=/SaBEXs#W UuK@=@}Aҫx12nIˆjuiQ^䒫*l<=XQ3lE2CJ yL^X+RV嬼pzןNHΟy[fJN{{:CȾ FFBHbCk.4[C¿U̒Ly/,]E>lI- ȵ[q">h-0V>Voڳofw9E%?':Mogqcoˑ1qJFZPڛѩ) lhfGkۗ$#7=4(!l4kDʂ {7U+]TdǾS3D H8TbE-~"՚")fLv"*IJqPxZAҐZMsd^*n&+9جX.> }⒄;5NE*)6ݭ%&M]ASJqӳ݁*sIe%RSIV_WX▿8.|6UH¹q9&1q KXk Hyd /29P_i?VqP0ټ<^N-JNGoESqG=L Q;Zt6mW xv[ʣmbyNcέjy%cZ5{ I-=,#%aU x-H"CyOsV삓%= -=>(+ۏ~`2ڲ.JllDF82ʝy8=In4ԭؒkR̗Eʌs/?k7 9 #iZۖ6ԵIqi5vr(Њ]N֊>nZfU矇\j#ii%IqKHMҜP0c|eQZZRzFaB=.%$ u~ RnE;8UTI`r<|SB/el8RԕTWpH۪R^6%*d#SKPmW `I{;ꒅ#/>6㡺\l jEezSRʍ#( Sd[!j:e-)l-cp5jl3Ǫ3~!g( ԙ Q*ii)p(vX&UWL{C.i$=n{OMe#I1ҔPR8ǍyI\iQ2T-%Ip'AH65r1r^J!O>Zi %j+X!%7'o{*%>#UZ " <싎z&K(Uf @(P @(P +w4c)϶b".Amui*!))(ۢEc'E2#{i_B2!K/З\Yu΅od6JYJJE>pXi+mJ<*t2VۈKqmwC~"bRRCe$*ǁwU-JRzjB6g((`c,n7!a?d:6M6T-J.M^-|_]2 '. 1`N@z#O>зVMuZvR#O\jvhҨOFw.V[~C33ȑn2t5V'8󴼥abXŵ̛&7GѻIՒ1uIJ@Ju8\*VnBqo'be:huZ2N >]?[pcYmm1XBSQz8m߹GMEx|ĶmBR|M P|uץؗ7BaIL 8,ϓvCmj&Øg#yZ.SN̔Gs5e]/[>k`O*>bw\'IMb%.C;Wbw$d'gwK%зff[ws?ѷ)XE>?cF&_H2[7$ym,ڲrٻ9mٜgX%E{%r./;9;S 7qX.9ȒҒl*IQ5~RQMDI6贙f4Xo{KAvvy{czm[q@KKɰZK֊p,(p5 ꞴX\])\._re fdҞ&Cm@*RTBLA٘̄ ~^YuR@*ҒmfbIJ?!rJS|Qw.YݕpCv#0PRM;6% I)=UUٹ((ie콅z-9B{r-m}$zj*\HYKn @abd)Նm )jQ^VSIr+GNӡsoث @I R ),+ި4U 8LLc3SI2IНG0S#D Z]O3koƾ tg\=˳*y r'7 f1r9K%R=V:sT)PgCsx/g2ՈNىKK,2눘oCGy\_U)j*M~IbˮյrmW$ߕvOR:u3X`Ҳ ~>T斒:+Ml}+UW;-NS} Cwo+U H~Kt%e|amҝѵ%ܼK"*J+Vq)S!;b7*[?i|ߺ^2^^屰S7>6;wZLG"| `tRr[ (LJ&I$F՜{/唔W_+{0mBR|ME֎A] Vh;*l'a*Q<}o%յ dlg#ʺ^(?MyLC Fvd"<8l 뮺6$)Di=_2>k=5[7.P%ǿRe+q o@>k1nv$M4i ;~Z*Lؽ+OS3ӽޮәTa=/%wiP7TޅYEsyJBܮ:E6 u;t" < m:hn=-USMuS˭)?A.Ng\|kb !lĶBH )S%rkP0\0'5n' ="LM6T)DiTfnnU_dv{; |g׿ m*WQZ:˿N3؍} ԇ/KB^b}wN'nﭱ9ܓr,KҫȄ5z%AJ*dEP @(P @(#6yRFzuOA pЌ,dL}U mcPǡn.O?yn* 呏8I-&dU* I5nK%/}n,G[ۙ5 N4xܳe[d8 R.Aciէ˫S^2grmlwq`g3y-.T n)&ќdQjۜ.wdavf3W? c7%trqֶYRWt%+rbZ;ӌ),Qy*"U,2tn~NjfIq/ǚ2u'Yge&굄[*_{>臜b1\GcLnͷ)><γc.XM)2 uq@c`M9. [S<"pke%!,V !J#UTx&XF$-l5Cp\ lP P @(P @(do\w'|lI929"3RӬ,Bū9;Ua4%XىIE:u? ԧ~w|"1nٖZrȗ.HЭ< IeZw5w%,2f3;3FV@\HyTP:ЫiPՙ;=bAƲ{+iKkN#Q{9enĨtJ h1wK$uO}5vO?mOyKPaq~Jmf1w.bN^ſfޥl+(X>5Yƞ-rU>)q*1uanᛍclͻsr9Uqgc4sLS ^+]?${\7Il9П2}hdGC!,Lb W|?6k7 %WhkS<7s/-5Gxi֟!ۮ#Ծ쎧g0بY1;! S}@R"PzmkEۿ+\mY:JIҪZַ>f7%6$ S_!ywW6>_8m5d%bNnQ)r'H@bz[^e-lMeK OIiy{y[V6RXԗ)ӏ=ӪNW s[[s<^<fu w׵SuyuYn}\:/ i2Ucqů0B|/TMfcn =g9K eLң𔰠I[mfjfvo|훹̚<4Oϗz-]ņ瑓VKDˌݒ8He!Vs||-\GYfڎԝv8[mU-L;g3;1:܆ˢ‘M`4wS+Ӝ&{}\Iȕ&^$% :B.0^q]spf]Kӥ$Ԏc?m+YQNXȗ)?<E6OsM/l9{;KZzY2OLڻ[,6k- < % >d--. Rk7?VZ SZ%Muٍ[jROV*]Zq|֎gyDd6=s!Y6k19&OR8߹gxo dl7\k ^6'cՁG}H}m&XYѹ\||y)!Ip{kE\ynez28ZrX<=lzMN+)n2`ZW6=םl?R7U2y H2ԇ'a:aυ=JOî0S@RsF[խJsJN*PK bS5yw۹jqm):?G 5FL#{NdcB .\7Pdś UΥ6$M;'k3  U~k>)FVU9]>rekanLFC;6{fcmT종? 7ÅeojqIe*[OG͹gNH.ՍqL9y6yDm-H*)%5 rKk3=BnMREpǟ%)iobm $7'p$\A֠HE1ɧ2|ms9d#r]) M.dRMk+LS(bsq22ʵp2J5Ƭ-!#Ju+HjeW:<>@U ȫ4"?/TSoҥoe5XTs[ݬ2N^NJ0khesa[.GiהIJ^5\JiԿO!B%Òa67iOw+SIMu䴨) W*)Ma^q38-ŷ^VѼօ*(x)2mmRVRm{wc&PژrY8;o=1 9򙛃 ꠢ(rҝ7H*娑bjSt[QNMȡr)0}Ox)\]Q:ÍrOW4Q b=.s1Yi/>( V OxȵFKZYۮ \F>RzgBe'1 M1Lq!@I4C,viwPKnq"<"ͭ 8H}kv?xVJ«W*H -ƙaH7ȷrQJLn*Tf(8+@Ѩ$i \% _GDR+98Qxw$~+p#:˚[BI mġ*YáSBq,n.mݹ1.d" k+Jҗ[Lt:8I[yI:hMKuFRعRi!T]cP @(P @(P]4uյ5ǻhU|:fߏZ&yx{ouo?Oέ5:Yq~_YGC˹G<~s9t3ZJ:qŶW&b_hy&t=|D3ݻsU5n/g>%|&4'+wO 3ז'/eyqSrs;pM8OܮƖU˛'+iy W]痒q^O9^`.˗29=]mNsAh)K.=Ge'lym!yiq>du{VNtCw?y^޿n1/؂r 㞒wZȠ[ȭ7Ywkn(灥f!/2MLt9I.-VjcOT[0N[嵦nsWïg= /ٌ2ʷ\n+Z)y/en8.7.}xu|V?V^C }_S{+uO;5[\#[ػo\.=?Je.6]gڵbv׎ה8N ꧊m&<8͗du i=[ JGMwÔ%;J[qLc0 nǂzC#WιK2incrkKn:9pSh]f~b+裏*wLV?Lpn-בxkbp[P:'*;tW Qݝh=7?ʎ)m~zM{^?/^'_[U%{~a";W꾴n1F׵<%?J qwk: ~^8qOOYq?rò_hW癮 1L꽡+ƟfAoZnL,{:="7?I֮5_UMpO/cm ~ӝiJݲҔr;^{]wxvImylo{q众ek/ܟבk֑8ivK\?WlRq tK}dvFUHjD9i&i>̧Ey~ MmfGi,d}^䳘z(S{ӇϑIx'$8;J~go~W?k9yfz藒& 4ݝtol RfݾM+fZv\utn^W#_3=a㻏<<:,c;eD6=!M|۸=Ĺk~_yxynkЊڧڷIxהyMB9IBѽ1IZ,A"޿%g"֏/_ssʫ|7_^sHe)jp\?澼|^՗v @(P @(P @(r {@"iVܒ%+((P|{TwYixvLb Y \s)j*"'14r l<~k?%̤rz^=WB J _-\8+Ip6XoVՏ{-+ѷԗ53pDYˎFyS);ӣQRZ $ZrӪ2N&cuJ=pm)Ɯ}Jn!$ϩDntd~Vi͂#:1vkw}NfV#&-|1R2d5նJ A_qY6k&ι:)QƸ>^ٕ}AOޱZfm)c}q Т]ev֧ڤp=bJ2dIn7?eGCqŧu(-Ԡv {3SOtQi.68-RdȰMˑaAJB= !hv6w#~Qf -Yf%H.İs!RE)v.J]UϤf8cӏɍ SV-iPmQm KfRJ6W)'EDᏙrrpQ1q)e`w9%d ,* M5RC2Ƶ%!&Jox\O詽\P[ۋ7jlt2ӎȼc{ q-a)?(!Dw\;)ƒ(˻b`xa OMsVXܶ/.p3SheXWKQdĹlvB23 .jIY-j9qNr+K2!*ļ_Jy(i%m8v_[٥Z-̞=Xkkz1H7SdA+Uzmj.&_x)rCܑDFQe&>[PJ1$QV [pf˲_F5qM%Ē1~JޙNz5жFC+qJHQQRrʱRMbcBLzT9QAtEk{ A8XzM<; u)?-$GxHH66Զ0BvP@@Rc p}'K"Z6:C9 NǚN Rһ%KRIV3${Q9./Z;yE ! p{$pMX_UTfK"dY6ē%[~6"^.8hlmV'uk,f->s p9!bn=Y2HNP @(P @(:hkkv>u&t>ͿsݾMFctkrU7|~6Y[kt1?ƿ$_so2yu:IǮ{rg.뮔tlׁ6MqĿLݦz~ybf?#_wJ?Kȫ}j+'_}KjMwhOB?sV7\?=e!gU,NWye׼t𴂰]~ \IGsf><]/s|Hcol\ԫߎI^{n;o?bz'\[^9H?h w8֛fϏ~ÿf.RzqՌmEÂ݅b =xƯv=VR] Č>ͣLBfbm>ZLnBx)hr/?|c0ا>f0TUMhd~sV/ٹ.zkx>}yXѶz^ϴqf\F =w?pCJn}? ]]W(%`?HA[[U6|tB&Egsk-i\mw_bm  :wb1cFp=-}[/}~?mn˾zڹEeRKo7'{4=h]iCƑGdEʭ>c!f)}og%}bٍ's&O)? \Q;M+;11]SpMs{Z._5O<)RVweb&~b2jIX+ nk#3o:6)Gl_7 ccGf+v5L<=hK}?κ˩3[ٿZ&3;g:7|/+msᄄm:i÷$nc |P=^!F7vz4{P#peO7KCj^/8٭/o#YǧPrXvȵ_o! pfBwg#/1PylςT n~U]_ #c>/gJZ"(O𹯯#=iױe8]BP @(P @(P @]Pԗq- 7q9q$xl*ҕ|%HWwb2[ǿ`f=c_IKeGqM:ˣTHMk(H(JQ q$j@ɸ~6ܗ{Y&#)JN$ۇu*BKeolu&OJvmݲq7qp̕'%w 8Sd/l"ZW[%IJv6 )ɧ):-&GvTD\mrqKTE'tjKZeԗu0/8Ƥn6xMM"$1EN,|$ʰKmGPZYHs%WѠJ#9t{pt/\Pe /K+eyM䶶RenjRҝk)Viu= |quFU7cen|%bf2?q%YJu!*J^ l!)^=u!0PUɯg yZ [j%m%7 RSUÛ΋ʻ|<L%m4 p.\X\ QZ).+M+,6ڣ׫P-(qS'[elFXB /V7rMHNtmFjT(W20;npT&rə=pq k71A)t%$RTT|d{Uʆ[s: իAE2lX :vћ&zFO*F1\ʊ,&qԭhWЛ+Q ɶU$0kec-E{Ԁe.- QocUn{]FU38L5=㉛L4UVL .[J) lYE}Z Kg^5'R\QD 11.YT'')RWֵ4j@q^!y-x׼3;,\6b10d6lm%*:HGpr$Pi+"!NGYZqÊT,~39`b*AH- uMNYږjmj[Уfʁ  vV,CK#(:0 e)L. $X*)Ө+}js^qOeŽKZIvkZDe-F,r,( Q> Vѓ6'%epJ##vck\w qךuZVUƾknn)f2nIGYf`6{#Ë1!ŀ߀&:Ëzc9CQ5#ItUkU5-iiN,™tÅ!-O1quM :AQEBQoQHCO6Z RR$$$)F9J1r̷9QYRRnIV x{*Ru|V00ѺUoHn k)R#0q-(BJ[RN&[z8R\۸rq"K`Ą˟)L-X -JuD tZlԞӓ~$E*N7A86}u)l%8i J]]$,{EJ흧8 39iSVNs4f Cq5\|~ʞ^M%1sN1fYԵ+Ma7Ve%DyP @(P @(٣W=G¬ԙ6}v5Χ?ՏGE {}Tx}fuɂXJҝCΒk$_g?6*]h{Rv.q &ڲGg- ;8[/Gto\wKLY3[#^n)7хF_oy ݷp'+vKkP3s$pHIn&=-À8Gt{22VmV:kgLcZzmEan;w\3utn:6kT^8* N8_TܒpI'S߹g_u/8>^_1}3kee00235UipaMeСYw-\o+ݛwݵ7u*I_E=i=sp^ۜT(kM[)ޠlM7[VwjNsT7y[-dIa]ބgX&*xܷ+rqNu\ ~eyu3W6W/~6ld,=q&G4S.6LqV>CG#385,۸|>SH1yI$!lj*Ox 6Ew\ %sQmQre+P:kӯ?c^]dʛN/(R7Z_<_\|㷚e^JTzVq}du^rv,_XѸ*5/F'waY |Nz&onU57grPԥrmÞd=f|ЏMK ߳KտԆMcv ^cu?՗>=u,+3!{V6:R,/-9sJRJu)'rxOo2svQKGfwҎ͇*](k '^oNWN8[96p cX *DNk[JpRng7O%:cyjtBSM{~v--N&*:v{[6O,#݈YJ[KkVnOD+?N~ck a"܅Eˌ\\u/R]E]f:ůC3Ym-rd XEDzP3{{N}Wxr9/:CN);ſr]:/Z}N+]GM]_P6ڛO%_\xLIy\CnXn5 o̖Ms7qB2ĝ֞z7 ͔^rJ 4lS[FCNo}幷_mJvxLg*B%HNG'h\g7滗_S' *IhoJKA>9- 8)UkKC5/?S0Α^۳e~H2du>}Dp?5]ytrFџkzB˩YFdŌIJVN(n+8!ל0nv~1,S)R4!vw7˖ ;;ڪۉnnc$ܜƢr8i ^ykvϊ5LҷeZl֣j1T\Cp(nSEٮJW%44qũ9-j7*' oOc[qDLeMRn&X2Y1iBi8TK JV=^ýsSM1.oi[)07F)*3s\mqIy W8fas qhsrD5 1-%E76=yQ*k}a7UmHH;f/ʺem.R|- -{!A+!D.W.Uʕd*O7ĝ܌N۬TdDkA:6U$IIW/WcGW1n;Ѿ7{+3`#sK{%0H[ ZrkAӚ+FssV׏?Fmͅ0QӇ2<KmC2>ZRBRT%JϾݶ.B,r\uYo͒oZ_q1yk]H S[QJu)NylGmۜ?zC)ZNvN M<7fRfLÿ75BD-,f pbCBZƅ~(+:[WFO)c~ +6qe HJJ ۻjIk!yS/Ym,,p)P"AVf+[nMqq#R.8+PViIRy&|8 a3ygh$6ӥĩla(z,,Guqۏ)J1.q.TPdl@1D1m`04ֆŵ7ĪJ,Mr-L?;䙓cKIDd\}̾-4TsC&IsӐf.69\\1ugGa%@!@VF^8܃2 jfg{$]Qe!*\X"%766[w7 }.UCS&;TUSO xqۼCUlX,e$2^Dh8Zi< *ZM\i+EUJnVNwmc'efV /嘫eL̹?&LT/C $> #E5qy( n N2DvKo!'+*$G!ҏWJd03me1w07`8⧦lOs\P b(Y|իzIZ eJIP +0pd[j&GC|,j̤չ>WƗy.DY`P @(P @(٣W=G¬ԙ6}v5Χ?ՏGE {}Tx}fu{1勤ϲD{RfrjJ9!$V+:' ILJM:5G5F{} zϻxdu0۬(%hQJUەؗrdo-^5;oC3%剙<)HeHROm#ϊ7|dO=qY8־a^;[unC|GS[Ymj m]R͗[p[Iy_s1rm GGc7OQ1jjk5|2W)<¸6臑WtV5oO,[q/eyj7mO='>\Y NK3&k!M \vX pTL 7~({ MvaV$J koJEK^QS WSlWquf[釜]ܒd?ڸɴ%]|m!QCب/R aÜ=1bq{V%EUI~߿.ݵ6M}}f,rj/'OGl޷Z穿T?tҙ[%k# _ҷuNT~<=ٰ:#Խϲw aqmEc^S[mhq)qP On\rq>W"'Nwgoq$ש "]pS:@N8x)ٱiIeQ6 a) ^ǵ [n)xs37gmNMRZ[,_htvw }ick+jyJv>2du>}Dp?5]p|nܛt䶖pu yca1)tq)!@Vd{wr*Kғ:ݝUMw#7nu,{u?i] F~6c_V1k#l[)]2qGEKadF}d6N!i"@kg^?,ٓ ɧG1_M-#2|6՛k M gRBHvJ%*en+#3qj{9\Ӳ1]o#ovʄ]sorJCs0tYYУj黗zCyfsq*󛟦U]|7_s?/ܷ~ʄeۣ}n垝O2~KܖzY$m Hw8B0J1TKR9lYnԊ @(P @(P @( s(YVv̶djv_,>q:ߧSī́)&ĸ.M8w$^ %*ZiI )VyT 1x8q45'v5Pn q[%8G1a)e):ea>˛㲕w)Jo,6$zk_keIaE\yCq:={cwh(ΥC̃RRP8`|u 7۱$dUAͰP:iHQ&xX|!ziaAЬ/Ik4%im--(*I쯿EQz㟆'&ca+R\-?Jh|N{w9%-޺hi򕌱B}>N vXSM!>җV϶6$mܴ#.4bm };4ưvSr1g2<%J4T}zQVɷrUjKF\Ff [m\F2Pw+9&l DhukR]QS*Im E`ܱ&.('7^CyNajz;-rkLjaKs,AN.p˷}[)*scTo# A;pmh"Bc|x)C8Ĩ:tIBnY/cZ3F2>^>D|3R#0YKV9u9!Xm,9-=>nmeV{i^"g2QQ8pi wUkT޶w#ZcM:'Ve). @f ֕(X MRPr\ ^2V33y,L!mn6ˑ bz 14Lf eiyFmCjr]J9 IH)I<7{"CǶPӥ%jZRRl$36l&Fƿ\a-gk#BPKH<]l]C]is$5EWno+v1`ڲ`e_@)\%j*iE#s(KxM/ m)Іf=9̖AF3,THK.jQqRSiؓTQ1e1  Q*ǰ)eӚ)Rq:> -]8C'3NE\f2*g.·ٷ{։u?yn:-tn[[3~MuΖ`_2uC_koO.C_8N] ֽuҎ}m?Fɮ!ؗZI;_//,LknGyo[_dKYϷ4p -_ r Gwq笷D<껣rٿߵ"'#)6un=~S5S #> эVӈžR=Svݷk8-p29m觖sA7ǰIf{t!?+O3~Uq|C/!F~j?<_W@ݤ~>߻]i>ˑ\w;mHՊFLC2%(kW[^٥}eZWjy~YW{,vZhtCѱ78%cjgUEgj @I1&89thZk0{_aFD{Y+v~֞Z4[Ͷ\6C7hR_W-w*лRnlo' /R bzs+ϷW+b@RX8!^(mg `okvgl-Ysy ' vIO"}E=Bi;~dwE4ߊGך>ߍ<4̦ۙү&g;K8\R"TG})dڹ0226c)˫d٥AC;XϯY>~%.[*K}e7 ·\]ſ}o2: 39/I}FJ(tf\߳VqVreƟ;O4ۇpt{/V:663\x4Ԓڦ"㸪zͬjT-\!JD@qݹBѨeW(JSjފ`ҁ㲹<[%3TpOz{_̹^g'/sBʍtos֯:-ugp _ҷuNTwwOu;ѼznS4SX~_O5.-ߴKL:Egw }ick+jyJv>2du>}Dp?5]dя$3\gc֙{C.WՉr}ivw)n'כclyA;DZ;7br(O \S߹g?_!Ft7}|~]XoݮH#_V1eo򔾷?7lu6h6}vzf/壘yU.=%G[%EM󑊌ߘ)ہ ʰICYOܭd]QWEvoz6tb߂c ?6;vbc_3?Dfr6Lo։e~ N뎮ß }Dx}fDD l7cUee>dv[=/Ytz`{l<1=>\Jͽ H9PYZ?r[=GS Ґ}=rsɮ9owlgE,OVSZ5g3>+P @(P @(P @(HV%V@]^"t/*?iCиˉ)YITui5"E0B$aHiK)J~=!rRQ‰?ЅeRBt6ܥ7;teN\BxVFZkU\yW2L--:СĐ{AnMsE; Sp2qܾz+S~Z]u<íId% y2AҕjH j[Ԕƃzx->P  RnEǨk`[Qn]%(;4UpTC줧U[.e?n#eyijRda)Z8PзQƮY)ZO ;̤G13#/ [On\HaIma)I$)*m#M2.SjJTEsz&l~S>"86qڛ)9AMnM뺓ܒMyx5)u6{Ys#pYc.ᔅ.;*[K jJT8p b*W-F⤕QDX-ŭkqj[QSQRnI=䚙k#""*T)R$GTTTmfsh{ 8qa[ y$h RB{yYJh];Dea%:;q+KM!6"c]m?GE# 9ȯ,~p_1 %(H$<8]8J\1z&cDmNErLvMGx>.ޓkkb ]QGL8aeCɭ6EJjt)  ARTx#cvTe{aBHcS* h\kZUJAОZHcA=8D {5R2^\ĄmXSN=3p;a<4FIO2Pɽ=+XrN j uo_E=e-ThJCd)8䰥Pid7q~H{wnFRԋ4KDyJDtܧGTGĬotR"HсSD4fR t%-taS5irŘM7A)KgNvUJVP"]J/IQ!#jʊ~V*Mp2s1]g>IKw9h|rCrUu$ $\k9M95DvSљZ\{ Ii O)BeN!GCWB,9UƭJ5eRRs^A˃12Nɝ&l19(qqIR56]h}Dq˯N=w;ӗC9u]th[e~Ѳkv%,ևgN3K1ۺQ7^E[VY>s_Wk@~ztA-#:yb~}6o7_;,pn~/:[~_녫|Kw}gցoC۟m/'][~7:[y6+/s3Vfb R#Hv }>Μ[s42FWhony"2R#}el>V&[:0ݛ"=S#UMd~=潞~vNڧ"f7E1-5ކt؈G{@qwp}ʹӹ$ o'4Yme)۔REi~zuk{Xϯ?՗h7m~-cy=To҈os\_<]ol쿳V -.nhey(xWTȿkSmw>O ^wXҕ`^Cӝ[csrX6bLiq^QRM= &Ӫ;ILlnlًɡů$齳7hsq#Vc!̮^TPӺcJfjutZȵ_o-Jy9Q߯=߻U?oҍFTuN/OOkMbk~L:<ZD~/33 2Ucqů4>N)Sp~W_coÎz{ˉwF?`|WumG*@e+G5|zG͚I 7,*swXj;6) 6,_;.o]#~nn.8|w=BwOsLFQqu}#5;i;Yn8mEU~vmS{/,i%.UMz9iUe >~:SՔ7b}xL/)NJ2P @(P @(P @W$Ȏ6J~{gQ0QjZJ6 lDMU˛,Ln25-)#p@TN%A.E,>߅w[w׳xK 2e!ЀԡXv\+u҅*YQn: 踹SN'Tٍt2lĶq%so'IH +],jzK|dG6tIH `EŽuTZh[o79S*,["iY J='ˇd*EP'.TJe,4G0 31.PCA(I>ka ʳ,fBْ[P%f=vqJ-O'AX`Rv+yf޲džK/imNr_Lr*_IW-%`lX'JOZz;Vw6m2o% Ba.9tS/ %$ Iԋ(է%Gݣb/&@TC"is#J2GKh>'M6xEՔNN93Zdml- IRM)Ht>%ѧ_-Eξ$@kzEn g)[͔8VZ-@ J{u IX*3u3mG ?~-;Uƌҟt*yĸTr$I}^:[u+D[c 5on Kz,еj2-AyIBU] Y&xe?cp'{l֝)+)/Rf{rmĜ-,SLH Ǽ-8eICd8orxj/nQZZPTWYF@n;o3q$5Ϗ! p4aI6]T!"sj37,}\ Cf\ܔ$ Tik9v(BTqJZb'3'; }\z!\\JTP zB!εwD+œ25TeۧVwoeo#[s+chYG JBI {J]Gx #VMԌ|ĭ#KdG򸚳 ޕVbٳJmD!go~ڤOSqpb=1>{Jtߖ% 4h_$]ԣFܟQ+|lWtm%]ڴ6wx+ݲ-Õ61rSHSMHZۛW36#:m:s&l,N|ATbRtW5Wa+[QJm]omnM+$!S*;|e[:V݇ʍy8'WE[ OJnD51L<{q[vYm4yHKl)Ө$2c|'L\o5ƞu%;Rm@?ʶTnI(>@9YE q|x=4~?R-y[DܓY|P @(P @(P]4uյ5ǻhU|:fߏZ&yx{ouo?Oέ5:Yq~_YGC˹G<~s9t3ZJ:qŶW&b_hy&t=|D3O.LU?5n/>&ÎHXH8Wx9YO?A=O[pn 臑Wt~V?>NT\7bPD`[V7e??έǿw|P͙(_DFœ*Z;Z3oFԺ,W9WVfUi<yY:ڻR2`|S߹g_ui<9r VZmKj罋*}Hk#Ǒa,95IAﲀs KR+s}p߹oůnkg7jќ_c~m$l,03ܗ pퟻ^L"19K=GhkF1/1_f'pY |)?H z^6r%WܗL=5437i'/GW>lל>%+6DR} _ɟ+̷V=Bc]mBEn9_f~+dt_!T-L Ylw.="Vq\NK:ӏY'cs#TDG];nmF3殺f9^џ.;xoDHKcbUoXv1yv\~xu Z\r[BtosWutZȱ_o-Jy9Q߯=߻U?oҍFTuN/OOkMbk~L:<ZD~/33 2Ucqů4>N)Sp~W_coÎz{ˉwF?`|W,[/4){!n6 v6^UTZhR"X/S1nYگyZ*RáSMdyͶ԰ix߉RqIiqmrZP(3d$\_u87tKuni*IF{MwxqYv}V辬}Nyٙt+~v\W3S痤4_1,fw^ ƭsG J֝]G>6,_;.o]#0}O{J2h;/$9(!w.Z;A~U{|;_yx3?hYR]Ҵƌ't HRB/nkv'\׏yTB*3(HȗP @(P @(P +.i ԡ-R2ҡuJ)u o]P=`{-!<$5*)*Obv\pU ^ BT8{P OW}deƋEx%߃q[eho8)!t.Om^-U1%+ƞ:/'nz/uMd%)H iqy{cih4⃌"6S;(%TO:F,ĂWĢdYtI[m(dKiS7q5sbT%QIBX[$Ӏ))H G@\cAvlN6!gXxR1L :+)RB9`T]8wbED_> r-sZĤrYI{J oQZPԒTv$j+ jݵD|vu]ۏ>v1iIcO8TMޭ+6$)Ҕ֞IBXYx$q'ZХJupGlu@FRԼ>.0Rͫ9Fh1]ŰJa ǐ:̶s X؞әT^+(!|U@. zBJT͹[؏;)Ud @(P @(P @(Yϯ˫)67/VEx^4K @XXn^sc+#c2m-֥&roeE&* Cn9nΤ;F^m%,c)) #O+Yva]4>3~WɶMߞGҭDg"<E  R%]+Щpp\^syvOxo+;䦮IBNJxGL̜v.V$y 3w`͕X3;5qeHV>KrCJZA) -$hbl7[EUƚM\?+ePyxlC*$\JI_vCc3瞉N]sH !ĨWًܹ[iaDyojgy[͠o7pFr$Y҅9Pyqݷgz\[~Uiٜuw!; ҕ=;sbѲ1)Л-BmjSlnIU ǁ{ nrXf`4^\"zur͙>xW(-^cw'{Kۇl1D5O^IRę29>LIR"ݑh9F[x9p<;~Wźa0FV/7P66 Z M)M.tX^UTe4Zu}&YmȶR Fm8k[wd7fNVyy_Ygs3,L}u?ACnOb>pßfi?-m7PrQچHrnPa Kn%%qeI]S1foރUZvf\fTەhbB1e~b@-6b2 m ȫ *9QRp,=kkۃ,w''/IZ3}oyEIEGM*&޶L??&ۻ}9F $,ZuiJ˙ sRX|) (]T;Rx֗}%[s ZkaZ6{e2tjlʵJ+]ADNwk7㧲i q n:4xWsRM#㛎s=~y6u֕fo/,V,[W)s9=G0ֵ-JZVFĒM{ʝ&q?!ڍ*.Xǔ Krq+ RۉP)FiPBk_g9=Y9ZDKEW*^Nn1n.œ+TVt!qns7pΜ&Ӭ ت]"OpH~@})Y%-){:׷t2sٌܓ[sk&Z)L(v9o;,PqQٌjMk]M)WX'[2e;};r{xHSͰ/!J#K+ v!]EEWM"ρ7嘻;&颭ou調gǹZihA@ym֣^J+ QWI\fY*V\ ʗSq$ێzYBv+tLKn<EJְҜKJIxk}r7!(}F_yϹ_O>"uoou1H0 ;͈TAրA۵ɷYYt裡bwy܏ҪMMċL7B+Kˆcͫe+eSVs'f|=}uI[2ƐՒ=w6ܝVr[RǞCo-,k(FR f8s[S^(P @(P @(H @\8 .%đm* gQ3҂Ҷ[K[fƶeȵ%T\1by<4Aa*Gⴂl7 n0멗bꋚݒ v. sheM: ŻEϠ)}(іg0IXRp\YlK$6t!V[:sHgbTjsY'W+dq]j/KV8IKM%l\p#HF EǍU8AaM-e!H|ih&$meGebݵ(zV]d*|EfKk@]$k"²n N_%e- x#J ,-\Eԛ[gҍӡ(bCDT)%):]JlAb;8Un[؋tu³ s*m. !IJk($jiE2{W-=Ԇ(F! HT <+inݸb)%^s>XBh"p?b"Z|$dS}2B6Zq$9hp4 [j]$JaO$Qw un/HKlx[Of`Ѯ7 6؏/&-H)B!`u -]ؓM%V髻Áq$nt7#:YԼ6onIq[QTib )NF1x5B#)ekM{JS@@e+uӻh+veLJ Dr젢y 8UkpUJuJRIzRYW"J5{[mYZ5*sQIű6h ]H7 qnn*=0[!?fzmN})}ʸV2$[-(DFsVd$J, @Fu4)TP1RM=hKΚ}x0Qe//򻅩d199n%-Ɗ6АN@6 #kI[DTxI.GzQ>mdݟ;0s>R$IOmjP @(P @(P @(P @(:?-}l3c,d"d n|I(II(^n%*JH,O/~*VҴde3Wrcvٜ]SOfC&l4l&+k5.CG29*7r;) iJb:Yh6 JVd{vHmݫgJ+PJPTJ+a5;dW7Le&P @(P @(P @(P @(Pqm()ԣUT.(OH }#wػ#`Sz]yg*죴dF]l|FxƗZ}6*_U:2qM:ZG^qp=k#B$K崢zMfJ8"(!H!.R-e.*ˑO9Ϙ<\8EA%>Xe5edP ,$;2FǔDHԳ-/0$:b ;*p%,4"Ľԕ:䈒ޤ ($TMu삅Ez-qQ|3BӍ8ݝ @q7'H" 6uo;vn-I/Iȱ!r)*!ZJGؓptAF.*&DxAIt-JqMqn*,u*\2|g [QT$_#ڶwlX:[m|Z~E8 \8"EQJqRKOvHOoA»o5Jc& &!Ƕ{dIP@@̩cSQmKm'։؃R{'x}ַ0P tKDT,*mN7JֺץL`F[b$sLq HSk )*ȣ-ž28OV7,o%P:wpm[Y{{if6b늢Z.\XWrͽА%@(P @(P @(P @(P @(P @(P @V~/prylcYV;#VO Ը켕zJUĂb mמ-믗zsG7ԜpC. r|J[wqCY~5grY7'ʊmE;#]^ɪZMWIgyOI.nm|#޴18^m-9d;䡝vE6ޢln o{#j.*5bΌ-\ `(?ԒO\:wGˇN3<73@rb]uRe(hm+H@z}jJVP=18##qn^XƚF,t9efkabrGg9_lC7o0V&xx|w~Y-+I'+sxSp=TǼ\XzIsrZ\/:!K+I%JAH][ݟtJ.?8b֌SOQ=ѻlnURN.Ctst+ftmy5dܽGݛfNYZ$rrMy!VEm33g%RԬmQWi:,Zer /t5ҍUsWnlnˇʸ';Bi q,u*6½jTGgU<ٳ_/;ceA[~Vg5y'&LYy̔9bTH׏m3xZNRIz+[MOCr6r{8rg&~]xh0ϙNl=v{gߺY-ӆnEe:%j֧$,8aÅdnm3{8Y 4mCiǔ6d`+:veEсt3ɗNޠZN;&H\rU22NTťMM7^7eeIj֥pN⚡,[WVRͷזoNG)0^^s{~ .<Ͷ6̄-R%R+QIH:S{w7œ:hTщe>'(cǕ+72+e{PzV'X_DUQpoyfG]\9馊j=VkcM)4Sd "AV49YV(2bZJU~O5v[09b(ZѫAn9 /tL| SIJWOv&poޅueຑ#em[w%BoDaKĚ@Q!@%*l~Tti:W(z16ۏ/u[MU6EiQoݳg:]i[Fe4C[۹))%K!5wVro[[%k5k՜ktzbfgtO5c6oln|c9bR5r2=נW}dZ$JMRڹz$}3\q LalmvUkVK-oC)Ԥ%z.*\9nM9R诀'h)IE?J[*5|CB:1d˱:SԷmN2xȱRq&CsR8R4t;vNMᮘcjOB]o:z_Ӯ-Q(m2j}HJ)IH8{f7usn?FMOpﳝv7UTmNKzQXCw[e1v$gRh"Y|Yon3epSuL읬f%*N>~Gt8J4Rmr-rBXw7o'[1O^TI]+2!ٯqcRK];cWr]UZF[=N`w]ܙrX2{XIH\JonKRKy;o[sʷNw6-fϽ=yy,NTrl!zTnMp7p_ܜע8iԍn[=+tb-.wV:.x^1R7WJK^IL2 ŐSr;n@ԥ%ٹ ;nU+SX)В8j nȼ嗄$8_VIю)9^ @(G1QqJT~ҹ->lޓwVJfңһE%-%)'U%ʌEžU1@uTyiF7jj*e sHVHOݒ=-ޢE*:J!h6X[ q-BKmǔW/²T?mƘK5J u4cg$Ǒ!fuVbJuG}jC3nQKs-;Ĥx꿲E_[/1x1^z\/־|ˑys % !!Q7ڊ2xVw !1q$ ~'vi7=%7 1/C$\n* jGŽGm.+6%8MNj\V\I[ O \ &r dZ %حS"M0-*l0~,J:r[T_A[q{#{97sp&->!yET7+[gBһ13w'J.6ݻvV=8x\Ǘ鄸-2 O0Y!ԛV}$ꋭTqddBS8˅-ZBJ :xXY({on|]:K1$7\B])-V<(B5]IAH$c}J'LLJ p$H* LQ{+MRwS0;! *xp-|TjNh.hK;W=σK]Ȳױt?4[)r$1e2i[\X][ PUKJJscĈ::JXU%Em<~qxVtKJJ41L--P[ vX-E7$jI2ߟ*vzk끴,4l#KHKhJR\&,5m"-S!ג +HGx|ʍ J\Z $EE)H*x>jeO7Thl䗐CY=~ MY5 Zbܞܴ`P @(P @(P @(P @(P @(P @(P X݅䣤wn?ef-?Գ̗ \W/=|՘_z[ܾu?b_d=#Yٽ3cogdL{g2 'GV1{~ܳ'wczԊ鏥EԖPjܽGޕW|ězEh[ n!_),*q68s0K[ Kk}YzE3?HLs~kmm;7{a\o#5'r@ip$LjuAN&u Uq}(|)(asȱק;Whl~>ww3W='1?l! [K?bs.a$O_ {W}JA/6.ۙBPӆT\iwp=ttZO!Z[wh٭if?2T:o:iY?UUQr1wPRjIۍ)(j\[mhEN_6QTஂy0X7\/PٜK!).p}9oE3xEkڨ2{HdQĝCp[[o$LjޖK!8ʟi?H<Owu6٘?zO&&soPPIIZy mW<{+[fFmUH:k?nyTWbcwNٻDm˖S#2^3q,,߭[]RԺOK]o:j?3|~mwܺnrt#{9;/oFܐ2XbԴܶҶZR Omח|3c-' i#OzM߷tg`Wtg/6}:+C{pә8NN-b{HD2Mo$ U8_9l佦6+UٗE|ͷ_-yeԶnCTnR4e7?k>п Y<gȏ??turYF/[/m]>y{snt&ZtdzT ȍu4;M+uc%W_ǓUiEON^RD7Oa7!8n9n/985=F2q n'R~jkcYu·05)uSC޺O7S_אg<Ʀy}q> 7:IJduok#ٞy&بGXKG]o!T)-4Jy%Z5{.6ڎ=yL{[VfRh'ԶeF+fyږ;ON^%Myv3,cpA{߷"+9U@Yٖ՟B]RI OMJ6)Ω-e| جtnMѧIɵ ۅ2V}\~kany yd 9ةӜJJZФ^nw I+*YԿXROTT0oBQϑW|~s%I_&1_=*<,B3"j (,n,EU8J =ٕeySNW[JeH%#2_So?( :ǾĻ[w]FJ.i*ZQWro҃4WjN4}wᏸz('q2L)&GRUYDvݫ'ҥ}Fz>C;%aZzɭ<+_ѵZ%ᯒ%[|ݐө^Ji @/)Q幉$ p'O'wڴprTvUcU-Ck-c\sڮf<ӦK8…n&' O'wک-'TVc]Bޑ[qwvJ.yc<]ӕ7ۋ ד\0m Ru+Ԁ4:Ҵ 7ugP4avңR͚hi 巢_պEI[T:/NC"˱ utLݛ3aMmZw+!8iA*zVEVޗJMުT~][QuUJ&,siTݝ~} \O q~Zt)HJ@#])(4[7c?G3^wke6Ӓ ,0j3i i(n[rq;7#8GKƑy8݂7`U.tϬ5O`z&K*!%Wu򐵶*݀_[<~M^C/w]oιyNTwF[m}׷v7g:-5̔<}❎K H7Nqnwʩ);jѥ,[kO99w0M-y+(]]?񸢷 o e-Do6*!!h$kR԰'-V#jMJNIkbK)i=7ʛ)$D;z'1;G܅kqDbc^$)*A<{I%ڷ]Uk\;&rrչCM)M:S]a퍹zqSNseOɭ/]jPsZabVGnoMw)lZ1OGxg-viSz_'؏yyD}r6RZi#N) ? In]o')9b+'-o圞b1R BK_L!ӝıNOUT77C W@-'M+1sM]#LVƺoHr4v)Vv埩;w}ju5ݿFN>G!(NC* \CN8WO\n5{hry6U17fme3VU )S2>QSͷޝF .?-nHRIp (+\i3;w=mnQq%np[;N+hL[snn \^.)¯Y=濤[/2w\ X7.Wj+K[BTT۬ ${U.g#$b74H=T1Z8:Fîu$|uGܞurl, Lda\frW39>qlo! TF$TW&vK5 )<*{sKyfj>.+U <ծyG%KRF1P/19^Qzþ7#a#cx6](q"J )Bq٦/o]ymnMFUns w˶Fson7e6\dJ),O[}l>W_^cS)U%ȼؾCڞRw&Uy.ts! |s!qs\Pt'Mr!ܷoN%Ol緜vlzmEƼcE>y1Bҟ£߁q6TA咔,O{X-r9)5-R+R˻yyfaEi*4J:puϓ҈>^\Tb4o6C%bR#]9e+W-[h97LVrYۯj~!Z+OIX%Co,[0OiZ*+V/#P @(ҵ'P#}T{sDУzeёvӶ >Ñ-,Gv(wYMMUl6z^CM&4%%Z  Jqǰ*29к&eQ幌Ĕs&BKim #-]/CEʋ"\,xY-J\\e$(;oSvj5AZ t)!FX"kW(䨨($$) OAna4BeM-+-NP % ${/qW_k%n]v):-[y-/ۉU%t}qUe[kEŢy&SI[r ]7<~*ȕhxR)@Teo_+wVJ)3"ꈲXISjX/gnBJ`:[_bȷEVn_Ԍn->PW߆;2J㎶)\4w۾Տ] D%1u9 <[QQxp<{V2pQt,jRmRD7N~6y1Z*V-vJe'K`5,B{p-X7\9*`[K:e\9O%hP!I$vjtѼv>ݖ#mo 3J0&FJRQ\vBRL<4ٛr:U"aͷ"bgIy'Ǫ<$=skzc6\_=J*U @iJv۷6*JԤLD1צ*,I l&5l8s}5YYXC }zR}:֥k6WeW)9:61QTD*!@(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(IRnc@\p5-am4hj$6"Օ &2ZuMNDTKyJQ[)IpRS{X/QZ{iR8jt*BRS6MBÅFru4P)*RoYn+.$g3:9zܞ59,5P(ꐥ;Zu!iUUdVau4JR[8m hJyIۨ[|UM]$)i\u&Vj1ѨNyɱWz,7d^MJ$!ZYZP)huI WXTT,z^Fl\m2o:O48! HڱcgU\ *t²)n=I6헝() ((^oMiQ'[S)JT8$a`_tUݖ@g͑JܦdE3덺i -˚ qJ"2 < KQShO6?Y6ZYMBBb Ki{I>Ѭ/W$ƕcY.8V%KY%J=ֶRmՕHM5*y&4xJ^S{qZzI.Z w.ګ'7,YH յH1%}XG\unjԣZIՙ!J@(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(AȽ`jGxw9[,]%d3ry^(''VFI'ixRAiqPP"-IUh/f3X\  Lu\GVf,eH-1 Z"J,{.)UbPuXrt"X@@}'TtLuAm$e! 4++PIWOz'MYa:&^BMO]{OE$htlT N,aDoP"x. Km]yX_*2mE=mF-Vn46 %n!ռۮ]oUTnH>Nr6y%kڏاUcnn¸$[ix*W.[zd>|8.9o(e*AmLNjY"mPaݺ&MZ*y>PFq =9~ЏE|RU,//*4xh(G'}? b]WJ>Ya.mЎ]}?@XAȵ/UbMSQ$̇ȰU;{.@PQA?( +Ǹ۹QV(C!Tc)Le^*FҐg`Yomƭ ='PzAUZz smPJۅ{ R""%Eu]E,%@ 6 ԔS#-I j "ݵog[ċ*^O5 uGh; UUZEOMSJJT,Ul6M5l4ԆtzWuP 2.@m $7? bx ZRT(նTI5@yh p~$RPtc1|c"EO92\;Zbqegr(%%ENV o*-V˂P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(Hu6=8AAKI[o045I@#{k2עX* 9 Cy1ւJǧJrb½rJ5 %Tu'*/C1 h~ }hP PeK)Q@'{zTEH d5Rl4=9pa0[NǵI5TJqժބ[zʓ,NnYZq̈́Yn6JmbR 5_eW({FJcQs!h. %@mrRqu򂭘GH3"c^|%"كnK˟a!^䨥lRGW,V W8-8Tn]QC*5@Gf,eNz*-E݌4̔R=UWgBUB>+_fYCE=˞Ñ 2TK~ùzSd۳hDZԔMSբP @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @("ފt>RSp5zYbyxKQRNq.p}*#k"eVM#{J>񫱽j\Vy,0RNA:]M1M~hR 2Zc*8umJG)^Lh CI)';7>kOZ~J U{)&ϓWv|L.BTR%@!+7-z(\ԇޭrOȥ m$iu :m>o.-ДRavSrЧ!{w7aiDOuWf+L7,3nd^#怑QsS^y8ԡoōDޭmJ95-GeĹ})OgB!>˫"ۍWO!̐mpOk.QC/~TdC*QQ5< @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @(P @( =4|tϏNx|Xt?rӠ>叧@<>?,}:9cϏNx|Xt?rӠ>叧@<>?,}:9cϏNx|Xt?rӠ>叧@<>?,}:9cϏNx|Xt?rӠ>叧@<>?,}:9cϏNx|Xt?rӠ>叧@<>?,}:9cϏNx|Xt?rӠ>叧@<>?,}:9cϏNx|Xt?rӠ>叧@<>?,}:9cϏNx|Xt?rӠ>叧@<>?,}:9cϏNx|Xt?rӠ>叧@<>?,}:9cϏNx|Xt?rӠ>/?ĺ acMTGZq@F^?dtϏNx|Xt?rӠ>叧@Cr# Kd܇YQ4P @(P @(P  !"#_Xhttp://bp0.blogger.com/_8Mu1Z6T9WuQ/RpjeLgCsycI/AAAAAAAAAME/XaKNDiuvm5U/s400/TwoWits.gifO!bplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345KLMNOPQRSTUVWXYZ[_`U$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_Xhttp://bp0.blogger.com/_8Mu1Z6T9WuQ/RpjeLgCsycI/AAAAAAAAAME/XaKNDiuvm5U/s400/TwoWits.gif./01X$classesZ$classname12UNSURLXNSObject#A^n.M 6789BWNS.keysZNS.objects:;<=>?@A CDEFGHIJWExpires]Cache-Control_Content-Disposition\Content-TypeVServerTDate^Content-LengthTEtag_Tue, 23 Sep 2008 15:56:30 GMT_max-age=86400, no-transform_!attachment;filename="TwoWits.png"Yimage/pngTfife_Mon, 22 Sep 2008 15:56:30 GMTU34027U"c10"./\]]^2_NSMutableDictionary\NSDictionary./abbc2_NSHTTPURLResponse]NSURLResponse)27:PRd ejs~").=Bb +d9Yimage/pngOPNG  IHDRV.sBIT|d IDATxw|Ww|F6Y@Ha-BQG]U*8Z*VWDnU .*!a&d~]?|K>G|>ws~ N!B!%vB!B8" !B!B$B!sBB!pNB! !B!1 #E:( `e !N0(ah8g~?kB.#DX.)B0 AC70t ]7"TW@x'PYftI"x*|(RWR FH !N몆( e$:UUz :w=˥stЅ;\&,QuMU]!iAH !N C@$?M%ŇB!`:s {{U%aСhTG8r 4MCMsk.]9x7Ici4CmUHuq!$e [WU|E|}KvZ o@8 ,Q~ΝsS$kK|޳9y@B2!*D9X|(۶\ѹ|;:KunBDAH ! a0c<f? ^7^{ Ӊ뵉4ShM/$!VSP}ռ{]/#9&C^7J@t$T#5B(aie8!!5Ջ#Q>w 2! -K2Uf?~(t(1g^^}> 2h}Y @ rq#N0QY >^?/~<ǽd`xw9YĐO~$U)IcD+5E`# n;b#MaRC60n'.1 @г%<>hU^HPVmۣ%0# .еY#aw:|>ƌCnn.(vO(z.rKr n-3 4mQX$ R@,`~%1 ahk9$sY3 Lz̜91Lo`ĉꪫ:zòg:8* HؑEA۴PDjvұCSzdi$'' 59U/4?^s2",XN7ǬOA6PXj2O !)^ =C#}*, 7_o/rx2xd8L63 ԋ_Wõ]`:P8tTbG\:=6 Yxv>Jx7[^.+ϜlaNCn>1n2Thb tzU 5fc3 Ǔp)/'HA"(~?(2w6}={y84 SUU)S2_ZWiaau3ɢɰhaǡuSXZ1[`Y >g>7%I#%a/p ``{sn-WS)m1<!Id6F Ocg&~o~׋$I\.nfӽZӴz$γr/]{LcN0/h0V")o '`zo@L8tLPRAZKe&f}`R(,3cW,H ؿ?k׎l[B $IBuӉ>#wCAΝؿÆQt({rѧORSS~@aӤIJKKE\]$є,21ǚW! I6+bmJ4MkxSݚa8ohR3֔XՔ45& H>0XoVɐkC%0iW

ΜC: fwיģq ,O`!*,HͲ So|U;XL0u>K`"Jff&xZB(Ȃ 7o$('tӦMҡCXjK/f|GUUgfϞ=P;PUAxl߾Yq|y8.~eu_ RM;g?-pE3$4s~0~gJqb h #C&qݔ^^ &oj48;0N7d߾}6C`7 L,DnlHH ,a<_L40?९&)0Jh 17r2LBѺ)tlr`{˜viДApek7i4M (2_|G6U~***3g=7̠AIIIBpgܭNQAuEQ/tf̯ƽ0^OGw/?ck6!#<[WQ9}l t:B4ΝC=Į]s|wtܙ#G~zW\կ~}߇e @& -v\i@x6,{BƦ71 SU̯M륦螱3ݻq1vO?G̜9p16mDvv6EEEv$I,p8SZtH昬[(^V8 ZIm,FC` LQP^m^g9XB\Uqs #GGqWPXXˉy摝֭[?~-Ir ~zIwݼys7o~B=a`[f|̙3Ν;sNyn7Nw5H ?G8Su$*0pԁ;w&//AѦM\.\yqӮ];:t(%%%18wa͖9`MT#~˽ L71ԵR35⾷L_F10saS1/M++Ͳ½BT8r ƾu䑛Sނ(h_m4 cf}k6 ~opd> #$-y H^JWUնH(~ riL#2(( L:LNʲe~G CH}cy^X%Apy U3 2 F]saЯ_?III$%%иqc⊠ aجC'ʄ05q>Dl!pAͿ}wڽ~ԩS۷/eee|W|,^s:$H¹:w\u^tCC%׍_1%8NDI@S5t]t`،NADxq5lDr{/!697&cSc#yK W#$]7% Yz D\zi``c ;Il7QrP=S F(%o=uS˟3vNÖdY2i$f*:uFDbbb۸eܹ,X0 7pE5]d`Gch`sE[Q."#E * b..s`6T%%.H'f=~?-8t0?6%B,53KΓzFOa9\u.w{[g2u̹ㅱ Zq_/&6SUh? }#~w-jdg˕Z$4]D޽x^$IB[ui*׭aݲ;\R1e{0K].`Hfil<#G"/Q:=Hxž Lyx1f Cxi9w y6SUis 4y/~bĿ>7Q@M<ŴiO1w*qq Xէ4Njb{Gq\ob->¯zhԮ%&6]Q]YH(q m (.9B  D`!CbG%⯮Os6 o%bӶ pP]=} PUf͛*,i)%Ҁ( faA;esN<ūiH Ďݼ߯f˞4b $jTUKRM>K@nݿCt%APq:ԷK躎(=ƣ7GV3LڵS ɧ>NdC<= *yeL<ʪ*"#"|O,H8enq9}pGHWO2(-&Q8x;0bԘ0KMUM`rB[kFlnܟ&M>Ee[=fX/vS~>8 Zze1 XO ?ϦY6x4Pf3 jHFvhl[i WOfVZoE |5m[daJ~&)躀t!"; ^ߞ!2*A굷m3cjD%Y-R!hѮ+q ~/<!I2TEko.6 !, ^! :N(/F᫮wڦ-jԍpf0 G_XylټqQWp"VN_A7o DIV 1q~XIRƯ(v`)a( HYl%CMUAlAD8x*SLM䨭@9 B,a&y-y#i:0 $I[Yɗ/ODyyk*D@E&TNx$̞͊p D'W X=53 9 * QjBD_,O9zj{ݓ@5TUt41VqR$:; ar  RH:NϞ~;$G Ku7 @**z=<R۴ I ( Ԩ} }"$Iqc~W/?εihIϥ;=GLk!;{^EUy)aG,ZjޓV]x@%G`C#$w19 i$ ; C8nN낶du\ggw.u*rXBz,A0!RPHY+s!JNI TE"c=vǎ\.^Ά/AnHJЕD~x=z|:?}y x@8 ׬YCYY>l0\gqpfSJ歽}EQ4Z߿ƍŕW^U{KAr6oLyy9W_}5j,tQ?#,ӳgOTUti{zمDw+L"<2"(k@ݙ_V1h;Dl#?OIjZ+j*7c Vq1hui@d{< "D@~XYYYL4|̙Ð!CEيK<ԺZ2 իWӵkW\.${nyKMFVVw}\ ۷  TLwѯ_?{1/33DrrrϧW^r809Cq\_0f62ŲEO8a.BXѫ/=zիWû\#)j $bh: С 4%" a 2_e˖lْnݺQ\\̺uϧGj*}Y}]n&V^1b8O<֭[)((@uțoI&M(**[n^+]v$''SUU"==lD9z(믧EENN#FoСCr-̙3HrssyHIILEQ0`=oz0 [Byر#]v%++/׏C1bZjuaAEfͷ#V(~?R=guֹt -NΤ޺90v'v"1?,(tiUMC bqhF0];ٝmK'kϥtL;o}NIQ]ŵ#I 6zW^SN?{1wvAϞ=Yd x^{3f Ǐ'##]ի7oo矧޽{n/eeearrrhLdi&Ν?C=Drr2SN婧⫯G57|8=JNNTVVd.4M#<YgVar]#N3)HuU#Y! p0c |M*++ut,X@tt4#F@ezaÆCqƍǁسg٤?e:t\x<Ȳ̒%K콫nݻ7o+V`ĉqF뮻oؽ{77|3{K.2y7x≩s#&L撛[tR)++ѣDGG`ƍWKլY3VX o>x9r "!,/A].sCzlDPTTLtt4UNQ繏?%!!,~6mj+TWW#",t&^#QUG`u0pHAtt } ˾g}Y "2vsuZ[꺎i0Zmp Iݟ[Gp8HLLPXXDfM8*[Zvw&pBԅH\CL/P Y$ ~x|sgPUUEnn.4k Y)))-Z?N6m(,,$""׋$""oKaaaTVVҰaC;fƂ&dBBTTT$Ii֬x<6lh4C( -Zms111(:t ؓZM(,,r!. 5jD^^<^ZJJӦv aJ K@hfFѼu4U=b-?.iӦѳgOnZ ѣG7o \o/~UU9x &L`ڴi9˰k=%,,/m۶1mڴ+{m=ĉ~G׮]Mi0b]ky*Ν;06l@N:t('0;'iH… ԩm<h$ z "2E$_asqG||<&5t]QF4j&PP_xx8`rW:Gxx}$%%ߣlSӦpB٬Y8B3 >~63_0aiii[ӧO˷~KΝIII!++ Avlj*233={66l;"V"==#Gо}{qƍG˖-پ};$ѿEl>SV\IϞ=Fu6mD׮]dǎTVVrWҢE <E$%%Ѿ}{vMYYGk_GeƏϡCt҅ÇSZZJ>}p:dggsn7@DDtޝ;vpqv`ݺujՊ Ν;۷/Nϣ>JZZk֬AٶZliGqL>͛7СLn7111x<{l޼9ܹ 4h)M!-jAIkd[ mqZno]܆`7zމhǨmSkcKx#-- ߏ 7`,[g}+Wr|w};v$ILo`׮]̜9/q۶m̝;Çon:6n޽{Yx1}+V'd͚58N|>}N'ň… Yh-gʔ)l۶͎{>}:SLatڕlOa̘1Mxon|rrrlNJJ }> Q5k7n䷿-nΝ;),,dʕqL< Yn/:R~ܹs9r$DFFRXXIMMeܹ|={8z(%m۶Ν;9|07rmۆydddj;{ݻ g8p8^zoZ*^3oHHHvmA8*,,)&|Ȳ0 *++y'8v74cuVAeVX}9<[ݾ}ھo>oNQQ}Rtýy݈ ֿ7-e܈!j'// ~pa-[F.]kʢcǎ޽;vezAVVׯgEtލRVZݻiݺ5tڵkYx17fLÇ=QoO?Dyy9III<34i҄QF!˖-cԩ=L ʢ[nv{%I"11^ 6oLӦMk5k> {e̘18,Y¾}hѢ,\p4hiժig Az}l)))oA|>4iaܸqJ.]'))∌SN 6vYj[[nѾ}{fI%,SPPEԘ 9v DEEѵkWH~~>eee3i&bccIKKcРAm\4i҄ ZlIFom۶<11ǏDjj*1rH-[G ]wEii)?w}g7oIzz:qqqBtt4iiiDGGHzzz-80ݴ,\JRkp/|"u8/,KcϞ=ٳW^y)S͢E8x #F_`ܹyyyg2d999y7֭p!:uٰacǎ7୷rqF,X=}[ośoI.]=z4nw}~o?|ߟ|t]g֭|TWWv;w./'O$::aÆ{k׮cԨQ>|EQĉ3{I&noKS\u[:廹H~ weW_۶m>`ȑ(BHNN>o凼B8-,vσ>_|Aǎ9r$ѳgOe&--!CpwO͹?>ƍ 99=zpWk.AykTTTJٺu+mڴ!%%i;NS #..޽{8NLyE=F͌3شi/z+~-,Ocٲ:t_|*++)..fɒ% ,_={,S]]M>}֭M/xff}>$0Pq6#o?T4Ѫ;+j",-2}mƱUOp8lUE ZyXe0 ~f>ǒjEngjX-7]K'2>ZӺƲCvؑ :wL\\>Ӊp=V0_* ;p-⩧^#%%/LY|9cǎo;vGUU}L<ŋxb:ٺu+{vilٴi4jԈ Ixx8=zG0 aƲc8@NNwfŊٓ 6+ЧO"##eOxx8W_=f͚ѻwotB&MӰ<ͭJJJ %%%o'''t4hK/İaNٗ uZݞ-Tp8Zhp>X|>EEE7o?oa޼ySUUETTDFF( ]mj8VvJϞ=9|0111DDDx8v111\.:DVsVWWS\\LӦMYt);UXUUU?~d3CZZ%s" A+_%X)Eo-}SO=DUU;OiZq@-˃f IDATSVXap ae-qĊ]8 &7iCDXYd C 񐑑Aff&ӧOwQgYH A(*(*+jm՟TEVZ*jWEŭ@"a7aB@Vg3dE0:59<~3sϽoڴbYl6RSSt\}լ\w_W}Y~_rJRSSٳgO>$#FPw[oQUU_LPP999yd㩬I}X,L0A).G&33S=xg"99@CUU;v젮STTDVVK||TVVm6IIIs^{5[رc;555$$$pB5B$˜4iNjHLL{!77_M,,}g}FRR_~9.)SBJJ cƌQsBCC۹X#5Q)3i$Z-$'eڴijL4 >|8O;t ?r(Z?O(̪JtWm`*墋.FÆ UQ[[KUUXuuuF\QQn*jkk:t(3gdٲe$$$PRRߟ{b6#$$\l6hZZ[[Ո;ݎ$I۷FWWթNoͦ@l0>Srrrx1LTUUFGG׿(,,Dގfʳ.fϞ=hZrssyN***Ԉl>CLss3twwԄ]5ًxȏn݋'ⷿ-F"## Fyy9>|X mnn&??_M$(L&Fѣ$V$I"::.5⪭¡?Ӂ74p&ʹ{Hd2Q^^Θ1ީ&|O27 /8#cP ?U<$g;oij1L 2f5 C PS m%hoN'J2[uoNg.geޞ|ϵeW]1Gg^? eHW~e=c]/IR/M==iT){xṯ}@(4Oz bEg'3{Mû"^xqt:1ͪf٩QJl6p8D[YLݮ JO ~46-twwc6^555twwt:@'r~ss3GկF \.,3j4 BQMN&":^=<9 r~Y^ bܹ,[ lqdl۶W8NC׫᷊0N0q鱢jU&uVdz!V^͚5k8rj22bj TO<`╕lܸ:;;n<@YY,^@|VXA}}=w}TUUaXضmvz8Ν;imm`<ӄa6ٺu+HD]]YYY|AǏ'::e˖jcèQb&'';wqF4 &={ BBBqFټy3Ֆ?! g߷ؚy~*P'j9{GIXTO63I@g-(#bAP]]ŋillDTnn.& ?L}}=/F|Ax饗_RyhiigQ#t:TMRIII/,_?_2|MvW_}ų>͛Ts܎;xٻw/555\.:::$I0LlڴŋϢEhiiQikkU7Yb֭O*@jkkɡ,,Yr/_FPYYɊ+Y|9z_|{qF֬YCff&o&C$ZZZ+SW@PJY:jUKT+^++voٌ墱{czejʏsϞ=Vrm^͊)jkkTK]{U<+bo$''G+|nݻՎq}ziZFr1bG[n`00h سg3f ,,$:&L X,L4 FCqq/:u*֭#,, /aÆq 7lF$LPPAAA())`FɅ^^w=?|yFVu:ٳ'b˷"IfYygtd(3##?cǎGPP>| )(( 55j5/??jѣ)-- ”)SO1cEaa!|e^\\LQQSˣGR^^NqqZѣ$$$z^IXb̜9 =,(--e޽PYYIaa!VOQQQA[[1]vQRRg׮]W"778JJJ(--UR#FСCSVVFSSf__ÇX,GUU9r"ALrS)8[ZZعs'eee̞=]hhh`޽L4rvI]]|嗔?V"::ڝE`` 6lbFEVV$44wyu1~x9r$رBCC(..ʏD>#lC=ִg„ ̙3d!\s |WDFF"I3rHKvv6Gf˖)**";;[O0}t1b]]]|7S رcIIIjIO3@+ &>`MU02d͛GYY2j(l6_~9GL6tZ-'N$99 T6)) Y;v,jkSSjJDGG?Æ ns7MGGSNUyyyU 7nNٴi)))hHKKS7Pa0!66e]FaΝddd⵵ܹs2d d.#44ÇHBBt7ѣ),,$..3gR[[Kxx8!!!DDDhdƌGpp*|OB9wo&iT37]t .3cǎGcҤITUU_ vZ9vȑ(,,ofŬZK.^xOTVVr-[ozիWs]wpB1,Y7,_&6lWo$ȃ>ѣ뮻{UD0|p9t , ??|Ν#<‹/ҥKyٱcYr^}UnF^~ey.V\СC)**b񔗗3zh~_Q^ \wu<ӌ7gڷD8(ڇ,˔OHHׯgj)FO > )--aÆNaa!dddPRRjUk2|pfϾk2i$ Ra$p8(,,]va0HNNf0k,(--TUU?{Oq”}PPAu )%zZ*}(*t(4 |||Q˟Hq5 =J)U[(Q[RPYi}۷|Ypz|~~~(W=6k,ƌ_LJSqm~=m>w@]n'11@FK.;t&OLMM 3`5?11u񄆆Bll,L>#FIKK#44 ƏORR_|1L<4"""5jf I3f̠#GrJllU;={6…^FX]uU$&&Hss3\s 3qhqԩSHOO'..+B[_tE 2DbccILL$<<>ӁX`ѣG~.\ɓ>K.t:!!!;v`t: 2J///'gaذajPvbѢE9rɓ'O?͌30a2ogs 7@vv6'NՕӋ20X IT(_Jέ(| [rrr\ɽPoxyBrϾl=]nWmJ%OBrP)VSQʼNO:ʝwމtvv2h 5b͚5lݺ+Vh裏hkkUJ2k,"""HKK#!!f2e  60uTILL$55IMMP:*>ٳYhQ!C`Z/2e III9rk?ow}7x6nk4^uX~=_||ǀشEFFbZIJJ"998&O @lpy뭷HKKwONVzr٢VN<_qm7du:zo ݾl=WYU][+Q>W}]߳>u(ǔ{{]6X?lP7w}7˖-c޽L<ٌN#44 \IOOgر (RƎKZZja^WWǼy9r$}&IՐX, ͪ QIf3z#F?/3绍‹LAADFFrNss3477L\\EEE2}trrrO>]vq3o<V+sa9rQF_EHH> 7o&**YfѣGsŗxbnWG}T-HEE,]˗裏rtRnV$I[ojdgg3|dY{/G;v0|d25k:t(.'|R5e(-bѣ|$''`x$oK/gv]5smY ߔ9WvZ\3pmGvK޷~jF#l^qqpϳٓ)˸ d6 ŭ@ѪrӊdDN .pB# dYo IDATƅ@ׁ v;ZVձ]N:=Z݆C@zˉ.]UP mVFTiv{hh4N'BjEՖt:tzAHrz.\"\eO/ Ӏ$옜dj ?( l2J>;E<~ :_?$}L3 (M ʫ?!'<6} < ~?:5O>J Р~_Ѻ*\X-Vq8]^5$+B̳nr\ pz֮ͦrAIH䈻ْRݦʔ6Mmut9ZX. QCꡫ:*eZ/Kiqgc<٬b~FB);1NY<'^!^dq.4Z{n}JJKK:t(\.tz=uuu%00B=&&>t:iyɄ,DEE:9v|||0Egg'$1d #eB(AppJKϪ ՊB~׸IN.c繎x^xSѸwJqł,deee?qFۇjá\ Vixbûʕ+X,|TWWSWWG^^v1餻[e8---hXd2zWSv۔ޮl-i[ZZ8x WV/**#77WY`$s1, 6![, CeY] YՖJ|>s-ZĮ]Xf /2h4ws1~qq1VB[[:H/^Laa!K.͆l2s 6q޽,[#GPVVl;N(|hkkp`Zl\.6mĊ+p\fUƎ/nɓ'3e, ޽;þ}eL&Zzoh֮]ˁNBBB?(,(=\L1i:mŀS-+RGN]m-ERTTdf,L>6\.۶mcر|򗿤j&L۩C$V^Mhh(رc`РAp A$rrrhhh.M6;v,$''B\\ Lr999XV9z%%%HDaa! 42pNm a<|WSSSÊ+$zJKK9|0UUUܹsy뭷(**ѣ :,ÇcZ7ߤu-wލEEEYY FAKK = Dzz:!!!L6h '33 ̶mۈxy;?miŀp0;UFjȲO?͒%KhlltŢ/,,$>>Puł$IF4hEEEb0hiiAӉ{.ٳY3gRU]MLL ݴDII \xTVV:A8faaahZ CFi)t:jzdYf& ;N_tBD[U͆^G$fʔvөDu:vlZq  83Ϩ2Ն#Vlv;~~~h2bZYwS\^;iqeuSdyr& k_gGc묬]WgصCi=+|pťjkq2(a6gM-c >箣7׋ w[YTrI<䓪E OV{ҝ'C/SPɼ/ q$ISą.;瑞Ʋ= i]ߋv:3j',GJR9G8-UO Zr‹ y7L /2_Cxt9:/C5a)SO7vWb@Br(^Z dv:<YF:_m*,I..JVm9$ /?%8e$Gq uI50@z*-^ 8FKV/ZQL=iRV:p9&Ѿ}p8]' {cߵwwtiaࡁqdٻyQA\7u:{$ 3ߒǸ:wO!58f;%V3:7.sN ]pT I=G=iQ=8J,10 f vYNpŗg9*R@㙡BCJ,lZ S+]'}7sS:zuuZ;~^ l< 20Bh`fp8>zKj`9aAȫ<~'V;Դ/ʅR1y#`TleB8Ei@id< :!:`vqPCD02Mh:m?2 >;@si~E>vaٯų52> eBedj$F\&hܽ⇀WȡՈ]g xi>| ߖشf+儍7!P*cJR9}w"oUe&ωn+Gކ2`L 7'pVng?(,WN$x |`=[ SXr4}9R3{Lyӡ ~+T[0\\7v z4u b}5tYHSwd.//5YqGsjb+@| > &J> p4G]sߚAb4/k !,wPr ޅ]b܇.j Z-|B$4:-p X (G>ńw"_&qN vYhW'mbeI0#^/1,{t0wWÈX ̅fp~_O7@px{Soê}bpEBxio!@8Yԅ'IBHhB,z,r'S7lxf+z7ds@u_|Nf$ A1Y avL1f Thn0sl+uYciy \bwոC$0ڞpV0H"igZA63ǃ.HI[CM0(Gb ּV7hşQ.Ih4 vNiF뱵+? kV4&U\]%e~xCTe~B3x,LBcyah"JLsqHV _|!=H8Oxn5#*xA|jZtD"^fYO:B^r7\^   &K@9*/ 6HApo)i-oN7uZa_ Xv\5Vwh`:_Is, '!劏_3 ErIDAT%as&̟_ :} <_›sioE;[;o B=")qaW"oUTBaZi׹{)DF䕒.׻<^2EONV!vؚ9`)6dC۠R`;u0y%YbCB6T;9׈{^!rv4yȘPݏAveteS573C?bfy)XNu仢e`.~G]=|\iGS4t|\unfh'<z$t* ='ss;=ܟ*oݕq*ϼ{*ߩs/Ջ^^-[IĻinCҹxDEwEvi28ڋN5NvHw sAl;9%<3{u'dלNr?<ij҉b;R:;|#Bd  @ŏ޾c%:Kn?@ BCDEFGHWExpires]Cache-Control\Content-TypeVServerTDate^Content-Length]Last-Modified_Sun, 17 Jan 2038 19:14:07 GMTVpublicYimage/gifSgws_Mon, 22 Sep 2008 15:42:51 GMTS162_Fri, 09 May 2008 15:04:46 GMT./XYYZ2_NSMutableDictionary\NSDictionary./]^^_2_NSHTTPURLResponse]NSURLResponse)27:PRd<AJUX^gpry&-7;[_`Yimage/gifOGIF89aǻj4TSP% Џ)I5S(3&1#ǻ!,OI`(1 "N(‡!3 wH@ 1憐 ra R/yL `MJ;*+",_5http://img1.blogblog.com/img/icon18_wrench_allbkg.pngObplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345IJKLMNOPQRSTUVW[\U$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_5http://img1.blogblog.com/img/icon18_wrench_allbkg.png./01X$classesZ$classname12UNSURLXNSObject#AV 6789AWNS.keysZNS.objects:;<=>?@ BCDEFGHWExpires]Cache-Control\Content-TypeVServerTDate^Content-Length]Last-Modified_Sun, 17 Jan 2038 19:14:07 GMTVpublicYimage/pngSgws_Mon, 22 Sep 2008 15:42:50 GMTS475_Fri, 09 May 2008 15:04:46 GMT./XYYZ2_NSMutableDictionary\NSDictionary./]^^_2_NSHTTPURLResponse]NSURLResponse)27:PRd@ENY\bktv} *1;?_c`OۉPNG  IHDRa~ePLTE J4eulec{韟Y}T|`v`w̰[qEq__^bYtRNS@fIDATx^MU1 @؁A(33CfqRϣز"@*v&g X="6Xz$/"3;R\Mb((JRpKOY0Qӆqr3rvbΆj+hr<_l}lY݀o%bd,l/ ȂN igKIENDB`./012_3http://www.statcounter.com/counter/counter_xhtml.jsUutf-8Obplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver$ &,-345STUVWXYZ[\]^_`abcdefghijkopU$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1#" '()$+WNS.base[NS.relative_3http://www.statcounter.com/counter/counter_xhtml.js./01X$classesZ$classname12UNSURLXNSObject#A Z 6789FWNS.keysZNS.objects!:;<=>?@ABCDE GHIJKLMNOPQR SP3p]Cache-Control^Content-LengthTVary_Content-EncodingVServer\Content-TypeTX-PxTDateTEtagZConnection]Last-Modified_Ypolicyref="http://www.statcounter.com/w3c/p3p.xml", CP="ADMa OUR COM NAV NID DSP NOI COR"]max-age=43200T1944_Accept-EncodingTgzipZPWS/1.3.26_'application/x-javascript; charset=utf-8^ht jfk-agg-n19_Mon, 22 Sep 2008 15:42:50 GMT_"4941c6-1441-48b847a7"Zkeep-alive_Fri, 29 Aug 2008 19:01:59 GMT./lmmn2_NSMutableDictionary\NSDictionaryA./qrrs2_NSHTTPURLResponse]NSURLResponse)27:PRd HMVadjs|~ $16;@KY#C\gt_application/x-javascriptOAvar sc_width=screen.width;var sc_height=screen.height;var sc_referer=""+document.referrer;try{sc_referer=""+parent.document.referrer}catch(ex){sc_referer=""+document.referrer}var sc_os="";var sc_title="";var sc_url="";var sc_unique=0;var sc_returning=0;var sc_returns=0;var sc_base_dir;var sc_error=0;var sc_remove=0;var sc_http_url="http";var sc_link_back_start="";var sc_link_back_end="";var sc_security_code="";var sc_cls=-1;if(window.sc_click_stat)sc_cls=window.sc_click_stat;if(window.sc_https){if(sc_https==1){sc_doc_loc=''+document.location;myRE=new RegExp("^https","i");if(sc_doc_loc.match(myRE)){sc_http_url="https"}else{sc_http_url="http"}}else sc_http_url="http"}if(window.sc_partition){if(sc_cls==-1&&sc_partition==3){sc_cls=1}var sc_counter="";if(window.sc_partition!=34&&sc_partition<=45){sc_counter=sc_partition+1}sc_base_dir=sc_http_url+"://c"+sc_counter+".statcounter.com/"}else{sc_base_dir=sc_http_url+"://c1.statcounter.com/"}if(window.sc_text){sc_base_dir+="text.php?"}else{sc_base_dir+="t.php?"}if(window.sc_project){sc_base_dir+="sc_project="+sc_project}else if(window.usr){sc_base_dir+="usr="+usr}else{sc_error=1}if(window.sc_remove_link){sc_link_back_start="";sc_link_back_end=""}else{sc_link_back_start="";sc_link_back_end="<\/a>"}sc_date=new Date();sc_time=sc_date.getTime();sc_time_difference=60*60*1000;sc_title=""+document.title;sc_url=""+document.location;sc_referer=sc_referer.substring(0,255);sc_title=sc_title.substring(0,150);sc_url=sc_url.substring(0,150);sc_referer=escape(sc_referer);if(encodeURIComponent){sc_title=encodeURIComponent(sc_title)}else{sc_title=escape(sc_title)}sc_url=escape(sc_url);if(window.sc_security){sc_security_code=sc_security}var sc_tracking_url=sc_base_dir+"&resolution="+sc_width+"&h="+sc_height+"&camefrom="+sc_referer+"&u="+sc_url+"&t="+sc_title+"&java=1&security="+sc_security_code+"&sc_random="+Math.random();var sc_clstr="";var sc_cltext="\" alt=\"StatCounter - Free Web Tracker and Counter\" border=\"0\">";var sc_strout=sc_clstr+sc_link_back_start+"";if(sc_error==1){document.writeln("Code corrupted. Insert fresh copy.")}else if(sc_remove==1){}else if(window.sc_invisible){if(window.sc_invisible==1){if(window.sc_call){sc_call++}else{sc_call=1}eval("var sc_img"+sc_call+" = new Image();sc_img"+sc_call+".src = \""+sc_tracking_url+"\"")}else{document.writeln(sc_strout)}}else if(window.sc_text){document.writeln('')}else{document.writeln(sc_strout)}if(sc_cls>0){if(clickstat_done!=1){var clickstat_done=1;var clickstat_project=window.sc_project;var clickstat_security=window.sc_security_code;var dlext="7z|aac|avi|csv|doc|exe|flv|gif|gz|jpe?g|js|mp(3|4|e?g)|mov|pdf|phps|png|ppt|rar|sit|tar|torrent|txt|wma|wmv|xls|xml|zip";if(typeof(window.sc_download_type)=='string')dlext=window.sc_download_type;var ltype="https?|ftp|telnet|ssh|ssl|mailto";var second="ac|co|gov|ltd|me|mod|net|nic|nhs|org|plc|police|sch";var dl=new RegExp("\\.("+dlext+")$","i");var lnk=new RegExp("^("+ltype+"):","i");var domsec=new RegExp("\^("+second+")$","i");var host_name=location.host.replace(/^www\./i,"");var host_splitted=host_name.split(".");var domain=host_splitted.pop();var host_split=host_splitted.pop();if(domsec.test(host_split)){domain=host_split+"."+domain;host_split=host_splitted.pop()}domain=host_split+"."+domain;var lnklocal_mask="^https?:\/\/(.*)"+domain;var lnklocal=new RegExp(lnklocal_mask,"i");if(document.getElementsByTagName){var anchors=document.getElementsByTagName('a');for(var i=0;i0){var sc_req=sc_http_url+"://c"+sc_counter+".statcounter.com/click.gif?sc_project="+clickstat_project+"&security="+clickstat_security+"&c="+sc_link+"&m="+clickmode+"&rand="+Math.random();var sc_req_image=new Image(1,1);sc_req_image.onload=sc_none;sc_req_image.src=sc_req;var d=typeof(window.sc_delay)!="undefined"?sc_delay:250;var n=new Date();var t=n.getTime()+d;while(n.getTime()?@AB DEFGHIJKL\X-Powered-BySP3pWExpiresZConnectionVServer\Content-TypeTDateZSet-Cookie_Transfer-EncodingYPHP/5.2.6_Ypolicyref="http://www.statcounter.com/w3c/p3p.xml", CP="ADMa OUR COM NAV NID DSP NOI COR"_Mon, 26 Jul 1997 05:00:00 GMTUclose_?g`0N;; f awGr eo {Q`dT0fc P>IENDB`89:;_3http://www.blogger.com/widgets/517042800-widgets.jsObplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345KLMNOPQRSTUVWXYZ[_`U$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_3http://www.blogger.com/widgets/517042800-widgets.js./01X$classesZ$classname12UNSURLXNSObject#A5 6789BWNS.keysZNS.objects:;<=>?@A CDEFGHIJ_Transfer-EncodingWExpires]Cache-Control_Content-Encoding\Content-TypeVServerTDate]Last-ModifiedXIdentity_Wed, 22 Oct 2008 15:42:51 GMTVpublicTgzip_text/javascriptWGFE/1.3_Mon, 22 Sep 2008 15:42:51 GMT_Fri, 19 Sep 2008 21:48:30 GMT./\]]^2_NSMutableDictionary\NSDictionary./abbc2_NSHTTPURLResponse]NSURLResponse)27:PRd @ENY\bktv}(1QX]owd_text/javascriptOvar w_a=false;function w_b(a){try{throw a;}catch(b){w_c(b)}}function w_c(a,b){var c="Javascript exception: "+(b?b:"")+" "+a;if(w_d())c+=" "+a.name+": "+a.message+" ("+a.number+")";var d="";if(typeof a=="string")d=a+"\n";else for(var e in a)try{d+=e+": "+a[e]+"\n"}catch(f){}d+=w_e(w_c.caller);w_aa(c+"\n"+d,1)}var w_ba=/function (\w+)/;function w_ca(a){var b=w_ba.exec(String(a));if(b)return b[1];return""}function w_e(a){try{if(!w_d()&&!(w_f("safari")||w_f("konqueror"))&&w_f("mozilla"))return Error().stack; if(!a)return"";var b="- "+w_ca(a)+"(";for(var c=0;c0)b+=", ";var d=String(a.arguments[c]);if(d.length>40)d=d.substr(0,40)+"...";b+=d}b+=")\n";b+=w_e(a.caller);return b}catch(e){return"[Cannot get stack trace]: "+e+"\n"}}var w_da,w_g=null,w_h=false;function w_ea(){if((w_g==null||w_g.closed)&&!w_h)try{w_h=true;w_g=window.open("","debug","width=700,height=500,toolbar=no,resizable=yes,scrollbars=yes,left=16,top=16,screenx=16,screeny=16");w_g.blur();w_g.document.open();w_h= false;var a="To turn off this debugging window,hit 'D' inside the main caribou window, then close this window.
";w_i(a)}catch(b){}}function w_aa(a,b){if(!w_a){typeof w_j!="undefined"&&w_j(w_k(a));return}try{var c=(new Date).getTime()-w_da,d="["+c+"] "+w_k(a).replace(/\n/g,"
")+"
";if(b==1){d="Error: "+d+"";w_g.focus()}}catch(e){}w_i(d)}function w_i(a){if(!w_a)return;try{w_ea();w_g.document.write(a);w_g.scrollTo(0,1000000)}catch(b){}} ;function w_f(a){if(a in w_l)return w_l[a];return w_l[a]=navigator.userAgent.toLowerCase().indexOf(a)!=-1}var w_l={};function w_d(){return w_f("msie")&&!window.opera}function w_fa(a){if(typeof Error!="undefined")throw new Error(a||"Assertion Failed");else throw a;}function w_ga(a){a=a||"Assertion failed";typeof w_b!="undefined"&&w_b(a+"\n");w_fa(a)}function w_m(a,b){if(!a){b=b||"Assertion failed";w_ga(b)}}function w_ha(a,b){a.style.display=b?"":"none"}function w_ia(a,b){a.style.display=b?"block":"none"} function w_n(a,b){a.style.display=b?"inline":"none"}function w_o(a,b){if(a==null||a.className==null)return false;if(a.className==b)return true;var c=a.className.split(" ");for(var d=0;d/g;function w_k(a){if(!a)return"";return a.replace(w_ka,"&").replace(w_la,"<").replace(w_ma,">").replace(w_na,""")}var w_na=/\"/g;function w_oa(a){return document.getElementById(a)}function w_pa(a){return document.all[a]}var w_qa=document.getElementById?w_oa: w_pa;function w_j(a){try{if(window.parent!=window&&window.parent.log){window.parent.log(window.name+"::"+a);return}}catch(b){}var c=w_qa("log");if(c){var d="

"+new Date+""+a+"

";c.innerHTML=d+c.innerHTML}else window.status=a};function w_s(){}w_s.raise=function(a){if(typeof Error!="undefined")throw new Error(a||"Assertion Failed");else throw a;};w_s.fail=function(a){a=a||"Assertion failed";typeof w_b=="undefined"||w_b(a+"\n");w_s.raise(a)};w_s.isTrue=function(a,b){if(!a){if(b===undefined)b="Assertion failed";w_s.fail(b)}};w_s.equals=function(a,b,c){if(a!=b){if(c===undefined)c="AS_Assert.equals failed: <"+a+"> != <"+b+">";w_s.fail(c)}};w_s.typeOf=function(a,b,c){if(typeof a==b)return;if(a||a=="")try{if(b==w_s.TYPE_MAP[typeof a]|| a instanceof b)return}catch(d){}if(c===undefined){if(typeof b=="function"){var e=b.toString().match(/^\s*function\s+([^\s\{]+)/);if(e)b=e[1]}c="AS_Assert.typeOf failed: <"+a+"> not typeof "+b}w_s.fail(c)};w_s.TYPE_MAP={string:String,number:Number,"boolean":Boolean};w_s.numArgs=function(a,b){var c=w_s.numArgs.caller;if(c&&c.arguments.length!=a){if(b===undefined)b=c.name+" expected "+a+" arguments but received "+c.arguments.length;w_s.fail(b)}};var w_t;function w_ra(){var a=["MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];if(typeof XMLHttpRequest=="undefined"&&typeof ActiveXObject!="undefined"){for(var b=0;b"+c.stack);throw c;}};var w_ua=0,w_u=0;if("undefined"==typeof w_j)w_j=function(){};function w_va(a){var b=-1;try{b=a.status}catch(c){}return b}function w_wa(a){var b=null;try{b=a.statusText}catch(c){}return b}function w_xa(a,b,c,d){if(a.readyState==4)try{var e=true;if(d)try{e=!(false===d(a))}catch(f){w_j("Message ("+b+") handling failed: "+f);throw f;}var g=w_va(a);if(200===g){w_j("Message ("+b+") received after "+((new Date).getTime()-c)+" ms");try{var h=(new Date).getTime();e&&a.responseText.length&&eval(a.responseText); w_j("Message ("+b+") processing took "+((new Date).getTime()-h)+" ms")}catch(f){w_j("Message ("+b+") processing failed: "+f);alert(f+"\n"+f.stack+"\n\n"+a.responseText);throw f;}}else 204==g?w_j("Message ("+b+") received after "+((new Date).getTime()-c)+" ms"):w_j("Message ("+b+") failed with response "+g+" "+w_wa(a)+" after "+((new Date).getTime()-c)+" ms.")}finally{--w_u}}function w_ya(a,b,c){var d="";if(b){var e="";for(var f=0;f=0;)m=m.substring(0,n)+"&"+m.substring(n+1);w_j("Message ("+i+") sent: POST "+m+".");++w_u;w_sa(j,a,d,l)};var w_za=this;if(!Function.prototype.apply)Function.prototype.apply=function(a,b){var c=[],d,e;a||(a=w_za);var f=b||[];for(var g=0;g=0;b--)this[b+a]=this[b];for(var c=0;c"+a.template+"\n",c=this.Eb(b);a.parsedTemplate=this.P(c);return a};w_x.ConfigureWidget=function(a,b){b||(b="config");var c=document.forms[b].widgetId.value,d=document.forms[b].widgetType.value,e=w_A.ProcessForm(document.forms[b],a);e.success&&w_.SaveWidget(e.values,c,d)};function w_(){}w_.Init=function(a,b,c){w_.M={};w_.cc=a;w_.Ka= b;w_.Uc=c;w_.hc=null;if(!w_.cb)w_.cb={}};w_.TrapClicks=function(a){var b=w_.CreateTransparentClickTrappingDiv(a.document);document.body.appendChild(b)};w_._SetupPreview=function(){w_.TrapClicks(window)};w_.NEW_WIDGET_WINDOW_NAME="chooseWidget";w_.CHOOSE_WIDGET_ACTION="chooseWidget";w_.EDIT_WIDGET_ACTION="editWidget";w_.GetCallbackUrl=function(){return w_.Ka};w_.SetPageActionUrl=function(a,b){w_.Wa=a;w_.Mc=b};w_.GetPageActionUrl=function(){return w_.Wa};w_.SetWidgetRefreshUrl=function(a){w_.Rc=a}; w_.GetWidgetRefreshUrl=function(){return w_.Rc};w_._SetDataContext=function(a){w_.hc=a};w_._SetSystemMarkup=function(a){w_.cb=a};w_._RegisterWidget=function(a,b,c){var d=new w_x(b);c||(c=window[a]);var e=new c(d);d.Qb(e);w_.M[b.instanceId]=e;w_.DisplayWidget(e);return e};w_._RegisterNewWidget=function(a,b,c){var d=w_._RegisterWidget(a,b,c),e=d.b();e.Pb(true);return d};w_.DisplayWidget=function(a,b){var c=a.b();if(c.O()==w_w.DISPLAY_MODE_NONE)return;if(b||a.g&&a.g())c.jb();c.O()==w_w.DISPLAY_MODE_FULL&& a.h&&a.h();a.b().Hc=false};w_.GetWidget=function(a){if(w_.M)return w_.M[a];return null};w_._PopupPaneFromParams=function(a,b,c,d,e){var f="";if(d)f="&widgetId="+d;var g=w_.cc+"&action="+a+"§ionId="+b+"&widgetType="+c+f;if(window.name==e){window.location.replace(g);window.focus();return window}var h=window.open(g,e,"width=570,height=600,left=75,top=20,resizable=yes,scrollbars=yes");h.focus();return h};w_._PopupConfig=function(a){var b=a.getAttribute("id"),c=w_.GetWidget(b);if(c){var d=c.b().configWin; if(d!=null&&!d.closed){d.focus();return false}}var e="config"+b,f=w_._PopupPaneFromParams(w_.EDIT_WIDGET_ACTION,a.parentNode.getAttribute("id"),a.getAttribute("widgetType"),b,e);if(c)c.b().configWin=f;return false};w_._PopupToolbox=function(a){w_._PopupPaneFromParams(w_.CHOOSE_WIDGET_ACTION,a.parentNode.getAttribute("id"),a.getAttribute("widgetType"),a.getAttribute("id"),w_.NEW_WIDGET_WINDOW_NAME);return false};w_.DeleteWidgetFromPage=function(a,b){w_.q(b,b.LayoutsMessages.DELETING,w_.STATUS_MESSAGE_PENDING_CLASS); w_.RunPageAction("delete",{},a,b)};w_x.prototype.Ob=function(a,b){w_.q(b,b.LayoutsMessages.SAVING,w_.STATUS_MESSAGE_PENDING_CLASS);this.z("configure",a)};w_.SaveNewWidget=function(a,b,c){var d=document.getElementById("sectionId").value;a.sectionid=d;w_.q(c,c.LayoutsMessages.SAVING,w_.STATUS_MESSAGE_PENDING_CLASS);w_.RunPageAction("addnew",a,"",b)};w_.SaveWidget=function(a,b,c){w_m(c!=null,"no type");var d=_WidgetManager._GetWidget(b);w_m(d!=null,"no widget for "+b);d.b().Bb()?w_.SaveNewWidget(a,c, window):d.a.Ob(a,window)};w_._RunInitialAction=function(a){var b=w_._GetWidget(a);b&&b.b().z("initial")};w_.z=function(a,b,c,d,e){w_.RunAction(w_.Ka,a,b,c,d,e)};w_.RunPageAction=function(a,b,c,d,e){if(!w_.Wa){w_j("RunPageAction error: pageActionUrl_ is undefined. widgetid: "+c+" action: "+a);return}b.pageToken=w_.Mc;w_.RunAction(w_.Wa,a,b,c,d,e)};w_.RunAction=function(a,b,c,d,e,f){var g=["action",b,"widgetId",d,"widgetType",e,"responseType","js"];for(var h in c)if(typeof c[h]=="object")for(var i= 0;i0&&a.substring(0,4)!="http")a="http://"+a;return a};w_.GetFirstElementInElementWithClass=function(a,b){if(w_o(a,b))return a;if(a){var c=a.childNodes.length;for(var d=0;db)return LayoutsMessages.NUMBER_TOO_LARGE+" "+b;return undefined}};function w_z(){this.r=[];for(var a in w_.hc)this.r[this.r.length]=a}w_z.DEFAULT_DICTIONARY_KEY="";w_z.MAX_DICTIONARY_DEPTH=50;w_z.SEPARATOR_CHAR=".";w_z.prototype.N=function(a,b){this.r.length>=w_z.MAX_DICTIONARY_DEPTH&&w_s.raise("Cannot add another dictionary: "+ a);a.indexOf(w_z.SEPARATOR_CHAR)>-1&&w_s.raise("Cannot add dictionary name containing '.': "+a);var c={};c.name=a;c.data=b;this.r[this.r.length]=c};w_z.prototype.za=function(a){var b=this.r[this.r.length-1];b.name!=a&&w_s.raise("Dictionary "+a+" is not the last one, and can't be deleted: "+b.name);this.r.splice(this.r.length-1,1)};w_z.prototype.X=function(a){if(a==null)a=w_z.DEFAULT_DICTIONARY_KEY;for(var b=this.r.length-1;b>=0;--b)if(this.r[b].name==a)return this.r[b].data;return null};w_z.prototype.na= function(){return this.X(w_z.DEFAULT_DICTIONARY_KEY)};w_z.prototype.fb=function(a){this.N(w_z.DEFAULT_DICTIONARY_KEY,a)};w_z.prototype.k=function(a){var b=this.X(a);if(b)return b;var c=a.split(w_z.SEPARATOR_CHAR);if(c.length==1){b=this.na();return b[a]}b=this.X(c[0]);var d=0;if(b)d=1;else b=this.na();for(var e=d;e=500){if(b.responseText.length)document.body.innerHTML=b.responseText;else alert(LayoutsMessages.SERVER_ERROR);return false}return a?a(b):true}};function w_C(a){this.a=a}w_C.WIDGET_TYPE_NAME="AdSense";w_C.prototype.d=function(){return w_C.WIDGET_TYPE_NAME};w_C.prototype.b=function(){return this.a};w_C.prototype.c=function(a,b){this.a.i(b)};var _AdSenseView=w_C;function w_D(a){this.a=a;this.e=a.l()}w_D.WIDGET_TYPE_NAME="BlogArchive";w_D.POST_LIST_CLASS="posts";w_D.INTERVAL_EXPANDED_VALUE="expanded";w_D.INTERVAL_COLLAPSED_VALUE="collapsed";w_D.LOADING_MSG="loading...";w_D.POST_COUNT_CLASS="post-count";w_D.POST_COUNT_LINK_CLASS="post-count-link";w_D.MENU_ROOT_ID="ArchiveMenu";w_D.TOGGLE_OPEN_CLASS="toggle-open";w_D.Gc="▼ ";w_D.dc="► ";w_D.prototype.d=function(){return w_D.WIDGET_TYPE_NAME};w_D.prototype.b=function(){return this.a};w_D.prototype.g= function(){return false};w_D.prototype.c=function(a,b){if(a=="configure")this.a.i(b);else if(a=="getTitles")this.Vb(b);else{this.widgetInfo.data=b;w_.DisplayWidget(this)}};w_D.prototype.h=function(){var a={};a.select=function(i){return i&&w_o(i,"toggle")};var b=this.a.t("ArchiveList");if(!b)return;var c=w_r(this.e.rootElement,a),d;if(c.length>0&&c[0].currentStyle)d=c[0].parentNode.currentStyle.color;for(var e=0;e"+e.title+"";c.appendChild(f)}};w_D.prototype.rb=function(a){var b=this.e.rootElement.getElementsByTagName("A");for(var c in b){var d=b[c];if(d.href==a)return d.parentNode}};w_D.prototype.Cb=function(a){var b=a.getElementsByTagName("UL");if(b.length>0&&!w_o(b[0],"posts"))return;var c=this.tb(a),d=a.getElementsByTagName("LI"),e=d.length;return e-1};w_E.prototype.ta=function(a){a=a||window.event;var b=a.target||a.srcElement;this.a.z("nextposts",{path:b.href}); return false};w_E.prototype.hb=function(a){var b="";if(document.selection)b=document.selection.createRange().text;else if(window.getSelection)b=window.getSelection();else if(document.getSelection)b=document.getSelection();window.open(a+"?t="+encodeURIComponent(b)+"&u="+encodeURIComponent(window.location.href)+"&n="+encodeURIComponent(document.title),"bloggerForm","scrollbars=no,width=475,height=300,top=175,left=75,status=yes,resizable=yes");return false};var _BlogView=w_E;w_F.Id={BLOGS:"blogs",CONTAINER:"container",SHOW_ALL:"show-all",SHOW_N:"show-n"};function w_F(a){this.a=a;this.e=a.l()}w_F.WIDGET_TYPE_NAME="BlogList";w_F.prototype.ia=null;w_F.prototype.T=null;w_F.prototype.d=function(){return w_F.WIDGET_TYPE_NAME};w_F.prototype.b=function(){return this.a};w_F.prototype.g=function(){return false};w_F.prototype.c=function(a,b){a=="configure"&&this.a.i(b)};w_F.prototype.h=function(){var a=this.a.k();this.ia=a.totalItems;this.T=a.numItemsToShow;if(this.T!=0&&this.ia> this.T){var b=this.a.p(w_F.Id.SHOW_ALL);b.onclick=this.db.bind(this);var c=this.a.p(w_F.Id.SHOW_N);c.onclick=this.db.bind(this)}var d=this.ec.bind(this),e=window;if(e.addEventListener)e.addEventListener("load",d,false);else if(e.attachEvent)e.attachEvent("onload",d);else e.onload=d};w_F.prototype.db=function(){var a=this.a.p(w_F.Id.BLOGS),b=a.getElementsByTagName("li");for(var c=this.T;cc){a.height=Math.round(c/a.width*a.height);a.width=c}a.style.visibility="visible"};w_L.prototype.c=function(a,b){a=="configure"&&this.a.i(b)};var _ImageView=w_L;function w_M(a,b,c,d,e,f,g,h){this.o=a;this.$b=b!="null"?b:null;this.mc=c;this.kc=d;this.lc=e;this.xc=f;this.nc=g;this.Nc=h;this.w=-1;this.C=-1;this.D=null;this.s=document.getElementById(this.o+"_picImg");this.ba=document.getElementById(this.o+"_changeImageLink");this.fa=document.getElementById(this.o+"_imageChoiceTable");this.ic=document.getElementById(this.o+"_imgSrcFromPCRadio");this.jc=document.getElementById(this.o+"_imgSrcFromWebRadio");this.j=document.getElementById(this.o+"_imgFileNameInput"); this.S=document.getElementById(this.o+"_imgUrlTextInput");this.Yb=window.frames[this.o+"_asynchronousFileUploadIframe"];this.Pa=0;this.m=new Image;this.m.onload=this.hitch(this,this.uc);this.m.onerror=this.hitch(this,this.tc);this.fc=false;this.Ta=null;this.n=null;this.I=null;this.Xa=false}w_M.prototype.Sa=function(){return this.ic.checked};w_M.prototype.uc=function(){this.Pa=0;w_A.ClearError(this.o+"_imgUrlTextError");w_A.ClearError(this.o+"_imgFileNameError");if(!this.Sa()||this.w==0){this.w=this.m.width; this.C=this.m.height;this.D=this.m.src}var a=1,b=1;if(this.m.width>300)a=300/this.m.width;if(this.m.height>300)b=300/this.m.height;var c=Math.min(a,b);this.s.style.width=Math.round(this.m.width*c)+"px";this.s.style.height=Math.round(this.m.height*c)+"px";this.s.src=this.m.src;this.s.style.display="";this.fa.style.display="none";this.ba.style.display="";this.j.disabled=true;this.mc&&this.mc.call({},this.s.src,this.D,this.w,this.C)};w_M.prototype.K=function(a,b,c,d){if(a){w_A.SetError(this.o+"_imgFileNameError", b);w_A.ClearError(this.o+"_imgUrlTextError")}else{w_A.SetError(this.o+"_imgUrlTextError",b);w_A.ClearError(this.o+"_imgFileNameError")}this.s.style.display="none";this.fa.style.display="";this.ba.style.display="none";this.j.disabled=false;this.kc&&this.kc.call({},c,d)};w_M.prototype.tc=function(){if(this.Pa<2){this.Pa++;var a=this.m.src;this.m.src="";this.F(a)}else this.K(this.Sa(),WidgetMessages.SIV_INVALID_URL,this.s.src)};w_M.prototype.hitch=function(a,b){return function(){b.apply(a,arguments)}}; w_M.prototype.F=function(a){this.ab();this.m.src=a};w_M.prototype.La=function(a){var b=a||window.event;if(window.event){b.returnValue=false;b.cancelBubble=true}else{b.preventDefault();b.stopPropagation()}this.s.style.display="none";this.ba.style.display="none";this.fa.style.display="";this.j.disabled=false;this.S.value="";this.Ya();this.Xa=true;this.lc&&this.lc.call({})};w_M.prototype.Qa=function(){this.ic.checked="true";this.S.value="";this.ab();this.pc();this.fc=true;try{this.n.submit()}catch(a){this.K(true, WidgetMessages.SIV_INVALID_URL,this.n.value)}this.oc()};w_M.prototype.H=function(){var a=this.Yb.document.result;a||this.K(true,WidgetMessages.SIV_INVALID_URL,this.j.value);if(a.hasErrors)a.errors.length>0?this.K(true,a.errors[0].message,this.j.value,a.Ic):this.K(true,WidgetMessages.SIV_INVALID_URL,this.j.value,a.Ic);else{var b=Math.max(a.origWidth,a.origHeight),c=this.Oa();if(this.w!=0&&c!=-1&&b>c){var d=c/b;this.w=Math.round(a.origWidth*d);this.C=Math.round(a.origHeight*d)}else{this.w=a.origWidth; this.C=a.origHeight}this.D=a.mainSrc;this.F(a.thumbSrc)}};w_M.prototype.Ra=function(a){var b=a||window.event;if(b.keyCode==9)return;this.jc.checked="true";this.Ta!=null&&window.clearTimeout(this.Ta);var c=this.hitch(this,function(){if(this.Xa||this.m.src!=this.S.value.toLowerCase()){this.Ya();this.F(this.S.value.toLowerCase())}this.Xa=false});this.Ta=window.setTimeout(c,1000)};w_M.prototype.Ua=function(a){this.jc.checked=true;this.S.value=a;this.F(a)};w_M.prototype.ab=function(){this.s.src="img/icon_inprogress.gif"; this.s.style.width="200px";this.s.style.height="200px";this.s.style.display="";this.fa.style.display="none";this.ba.style.display="none"};w_M.prototype.pc=function(){if(!this.n){this.n=document.createElement("form");this.n.action="imageUpload.do";this.n.method="POST";this.n.target=this.Yb.name;this.n.encoding="multipart/form-data";this.n.style.display="none";if(this.$b){var a=document.createElement("input");a.type="hidden";a.name="blogID";a.value=this.$b;this.n.appendChild(a)}var b=document.createElement("input"); b.type="hidden";b.name="sectionWidth";b.id="sectionWidth";this.n.appendChild(b);var c=document.createElement("input");c.type="hidden";c.name="photoUploadSecurityToken";c.value=this.Nc;this.n.appendChild(c);document.body.appendChild(this.n)}var d=this.Oa();if(d==-1)d=1600;document.getElementById("sectionWidth").value=d;this.I={parent:this.j.parentNode,nextSibling:this.j.nextSibling};this.j.parentNode.removeChild(this.j);this.n.appendChild(this.j)};w_M.prototype.oc=function(){this.n.removeChild(this.j); this.I&&this.I.nextSibling?this.I.parent.insertBefore(this.j,this.I.nextSibling):this.I.parent.appendChild(this.j)};w_M.prototype.Ya=function(){var a=document.createElement("input");a.type="file";a.name=this.j.name;a.id=this.j.id;a.onchange=this.j.onchange;var b=this.j.nextSibling;b==null?this.j.parentNode.appendChild(a):this.j.parentNode.insertBefore(a,b);this.j.parentNode.removeChild(this.j);this.j=a};w_M.prototype.Oa=function(){return this.xc==-1&&this.nc?this.nc():this.xc};function w_N(){this.usiContainers= []}var w_Ga=new w_N;w_N.prototype.Ma=function(a,b,c,d,e,f,g,h){this.usiContainers[a]=new w_M(a,b,eval(c),eval(d),eval(e),f,eval(g),h);return this.usiContainers[a]};w_N.prototype.ea=function(a){return this.usiContainers[a]};w_N.prototype.H=function(a){var b=this.ea(a);b&&b.fc&&b.H()};var _UploadSimpleImage=w_Ga;w_N.prototype._createUsiContainer=w_N.prototype.Ma;w_N.prototype._getUsiContainer=w_N.prototype.ea;w_N.prototype._channelResultArrived=w_N.prototype.H;w_M.prototype._changeImage=w_M.prototype.La; w_M.prototype._imgUrlFileOnChange=w_M.prototype.Qa;w_M.prototype._imgUrlTextOnKeyUp=w_M.prototype.Ra;w_M.prototype._loadInitialUrl=w_M.prototype.Ua;w_M.prototype._loadImageFromUrl=w_M.prototype.F;function _singleImageConfig_successfulUploadCallback(a,b,c,d){window.singleImageConfig_thumbImageUrl=a;window.singleImageConfig_imageUrl=b;window.singleImageConfig_imageWidth=c;window.singleImageConfig_imageHeight=d;var e=document.getElementById("shrinkToFitRow");if(e)e.style.visibility="hidden"}function _singleImageConfig_resetCallback(){window.singleImageConfig_imageUrl=null;var a=document.getElementById("shrinkToFitRow");if(a)a.style.visibility="visible"}function _SIV_getScaledContainerWidth(){return document.getElementById("checkShrink").checked? _SIV_getContainerWidth():-1}function _SIV_getContainerWidth(){var a=document.getElementById("sectionId").value,b=150;if(w_.IsOpenerReachable(window)&&window.opener.document.getElementById(a)&&window.opener.document.getElementById(a).clientWidth>0)b=window.opener.document.getElementById(a).clientWidth;return b}function _SIV_setConfigurationOptions(){if(window.singleImageConfig_imageUrl==null){w_.q(window,WidgetMessages.SIV_NO_IMAGE,w_.STATUS_MESSAGE_BAD_CLASS);return}var a=document.forms.config.widgetId.value, b=_SIV_getContainerWidth(),c=document.getElementById("checkShrink").checked,d=window.singleImageConfig_imageWidth,e=window.singleImageConfig_imageHeight;if(c){var f=1;if(d>b){f=b/d;d=b;e=Math.round(e*f)}}var g={originalUrl:window.singleImageConfig_imageUrl,originalWidth:window.singleImageConfig_imageWidth,originalHeight:window.singleImageConfig_imageHeight,displayUrl:window.singleImageConfig_thumbImageUrl,displayWidth:d,displayHeight:e,sectionWidth:b,shrinkToFit:c,title:document.getElementById("title").value, caption:document.getElementById("imageCaption").value,link:document.getElementById("link").value,securityToken:document.forms.config.securityToken.value};w_.SaveWidget(g,a,w_L.WIDGET_TYPE_NAME)};function w_O(a){this.a=a;this.e=a.l()}w_O.successfulUploadCallback=function(a,b,c,d){w_O.Oc=a;w_O.D=b;w_O.w=c;w_O.C=d;var e=document.getElementById("shrinkToFitRow");if(e)e.style.visibility="hidden";e=document.getElementById("shrinkToFitMessageRow");if(e)e.style.visibility="hidden"};w_O.resetCallback=function(){w_O.D=null;var a=document.getElementById("shrinkToFitRow");if(a)a.style.visibility="visible";a=document.getElementById("shrinkToFitMessageRow");if(a)a.style.visibility="visible"};w_O.getScaledContainerWidth= function(){return document.getElementById("checkShrink").checked?w_O.getContainerWidth():-1};w_O.getContainerWidth=function(){var a=document.getElementById("sectionId").value,b=600;if(w_.IsOpenerReachable(window)&&window.opener.document.getElementById(a))b=window.opener.document.getElementById(a).clientWidth;return b};w_O.WIDGET_TYPE_NAME="Header";w_O.prototype.d=function(){return w_O.WIDGET_TYPE_NAME};w_O.prototype.g=function(){return false};w_O.prototype.b=function(){return this.a};w_O.prototype.c= function(a,b){this.a.i(b)};w_O.FilterMap={title:w_A.GetRequiredStringFilter(),description:null,imagePlacement:null,useImage:null,securityToken:null};w_O.ConfigureWidget=function(){var a=document.forms.config.widgetId.value,b=document.forms.config.widgetType.value,c=w_A.ProcessForm(document.forms.config,w_O.FilterMap),d=w_O.getContainerWidth();if(c.success){if(w_O.D){var e=w_O.w,f=w_O.C,g=document.getElementById("checkShrink").checked;if(g){var h=1;if(e>d){h=d/e;e=d;f=Math.round(f*h)}}c.values.originalUrl= w_O.D;c.values.originalWidth=w_O.w;c.values.originalHeight=w_O.C;c.values.displayUrl=w_O.Oc;c.values.displayWidth=e;c.values.displayHeight=f;c.values.sectionWidth=d;c.values.shrinkToFit=g}c.values.securityToken=document.forms.config.securityToken.value;w_.SaveWidget(c.values,a,b);return true}else return false};w_O.hideImageOptions=function(){document.getElementById("imageOptions").style.display="none";return false};w_O.showImageOptions=function(){document.getElementById("imageOptions").style.display= "";return false};var _HeaderView=w_O;_HeaderView.prototype=w_O.prototype;_HeaderView._ConfigureWidget=_HeaderView.ConfigureWidget;_HeaderView._hideImageOptions=_HeaderView.hideImageOptions;_HeaderView._showImageOptions=_HeaderView.showImageOptions;_HeaderView._successfulUploadCallback=_HeaderView.successfulUploadCallback;_HeaderView._resetCallback=_HeaderView.resetCallback;_HeaderView._getScaledContainerWidth=_HeaderView.getScaledContainerWidth;_HeaderView._getContainerWidth=_HeaderView.getContainerWidth;function w_P(a,b){this.a=a;this.e=a.l();this.Qc=b}w_P.prototype.b=function(){return this.a};w_P.prototype.d=function(){return this.Qc};w_P.prototype.c=function(a,b){a=="configure"&&this.a.i(b)};w_P.ConfigureWidget=function(a){setFormAndSubmit();var b=document.forms.stuffform.widgetId.value,c=document.forms.stuffform.securityToken.value,d=document.getElementById("textarea"),e=document.getElementById("title"),f=d.value;if(a=="Text")f=f.replace(/\n/g,"
");var g={content:f,title:e.value,securityToken:c}; w_.SaveWidget(g,b,a)};function w_Q(a){w_P.call(this,a,"Text")}w_Q.inherits(w_P);w_Q.ConfigureWidget=function(){w_P.ConfigureWidget("Text")};function w_R(a){w_P.call(this,a,"HTML")}w_R.inherits(w_P);w_R.ConfigureWidget=function(){w_P.ConfigureWidget("HTML")};var _TextView=w_Q;_TextView.prototype=w_Q.prototype;_TextView._ConfigureWidget=_TextView.ConfigureWidget;var _HTMLView=w_R;_HTMLView.prototype=w_R.prototype;_HTMLView._ConfigureWidget=_HTMLView.ConfigureWidget;function w_H(a){document.write('
Notify Blogger about objectionable content on this page.
You flagged this blog as having objectionable content.
]navbar-iframeCGKOSW[DEF_9http://www.blogger.com/v-css/navbar/3328360018-navbar.cssObplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345KLMNOPQRSTUVWXYZ[_`U$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_9http://www.blogger.com/v-css/navbar/3328360018-navbar.css./01X$classesZ$classname12UNSURLXNSObject#A Y 6789BWNS.keysZNS.objects:;<=>?@A CDEFGHIJ]Cache-ControlWExpires_Content-Encoding\Content-TypeVServer^Content-LengthTDate]Last-ModifiedVpublic_Mon, 26 Oct 2009 01:54:09 GMTTgzipXtext/cssWGFE/1.3S897_Sun, 21 Sep 2008 01:54:09 GMT_Fri, 19 Sep 2008 21:48:30 GMT./\]]^2_NSMutableDictionary\NSDictionary./abbc2_NSHTTPURLResponse]NSURLResponse)27:PRd FKT_bhqz|)0PU^fjdO/* Copyright 2008 Google, Inc. All rights reserved. */ body { padding:0; margin:0; font-family:"Trebuchet MS",Verdana,Arial,Sans-serif; font-size:100%; white-space:nowrap; } a { text-decoration:none; } #b-navbar { height:29px; border-bottom:1px solid #024; font-size:.85em; line-height:.85em; } #b-navbar #b-logo { position:absolute; top:.15em; left:5px; } #b-navbar #b-logo #navbar-logo { width:24px; height:24px; } /* Hide visually, leave in for screenreaders */ #b-navbar #b-logo span { display:block; position:absolute; left:-9000px; } #b-search { margin:0 0 0 34px; padding:4px 1em 3px .5em; } #b-search td { vertical-align:middle; } #b-query { margin:0 .5em 0 0; } .btn { border-top:1px solid; border-bottom:1px solid; margin:0 .5em 0 1px; padding:0; font-size:.80em; line-height:.85em; text-transform:uppercase; white-space:nowrap; cursor:pointer; cursor:hand; } .btn div { border-left:1px solid; border-right:1px solid; margin:0 -1px; padding:.21em .3em; height:.85em; position:relative; } .btn div img { /* can't leave it in the flow because IE will screw up the line-height */ position:absolute; top:.2em; left:.3em; } #bt-flag-body, #bt-unflag-body { padding-left:1em; } #bt-unflag-body { display:none; } .flagged #bt-flag-body { display:none; } .flagged #bt-unflag-body { display:block; } /* drop down for the flag as objectionable button */ #flagi, #unflagi { display:none; top:3px; color:#000; background-color:#ff9; border:1px solid #333; z-index:300; padding:4px; font-size:.7em; line-height:.8em; } #flagi a, #unflagi a { color:#3366cc; text-decoration:underline; } .b-mobile { display:none; } #b-sms { margin:0 0 0 100px; padding:4px 7px; line-height:1em; font-size:100%; text-align:left; } #b-sms a { margin-right:.5em; line-height:1em; } #b-sms a:hover { text-decoration:underline; } @media handheld { body .b-mobile { display:block; } body #b-search, body #flagi, body #unflagi { display:none; } /* Some phones can't handle the positioning hack, so hide this */ body #b-navbar #b-logo span { display:none; } }HIJ_4http://www.blogger.com/v-css/navbar/1899273448-3.cssObplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345KLMNOPQRSTUVWXYZ[_`U$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_4http://www.blogger.com/v-css/navbar/1899273448-3.css./01X$classesZ$classname12UNSURLXNSObject#AL 6789BWNS.keysZNS.objects:;<=>?@A CDEFGHIJWExpires]Cache-Control_Content-Encoding\Content-TypeVServerTDate^Content-Length]Last-Modified_Tue, 27 Oct 2009 15:42:50 GMTVpublicTgzipXtext/cssWGFE/1.3_Mon, 22 Sep 2008 15:42:50 GMTS282_Fri, 19 Sep 2008 21:48:30 GMT./\]]^2_NSMutableDictionary\NSDictionary./abbc2_NSHTTPURLResponse]NSURLResponse)27:PRd AFOZ]cluw~$DKPYadO/* Copyright 2008 Google, Inc. All rights reserved. */ body { color:#fff; } a, .btn div { color:#ccc; } a:hover { color:#fff; } #navbar-logo { background-image:url("../../img/navbar/3/logobar.png"); } #b-navbar { background-color:#111; border-bottom:1px solid #222; } #b-search { background:#333 url("../../img/navbar/3/corner.gif") no-repeat left bottom; } #b-query { border:1px solid #555; } .btn, .btn div { border-color: #555; } .btn div:hover { background-color: #555; } LM1N_8http://www.blogger.com/v-js/3625575137-cookies.common.jsObplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345KLMNOPQRSTUVWXYZ[_`U$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_8http://www.blogger.com/v-js/3625575137-cookies.common.js./01X$classesZ$classname12UNSURLXNSObject#A n 6789BWNS.keysZNS.objects:;<=>?@A CDEFGHIJ]Cache-ControlWExpires_Content-Encoding\Content-TypeVServer^Content-LengthTDate]Last-ModifiedVpublic_Mon, 26 Oct 2009 01:54:09 GMTTgzip_application/x-javascriptWGFE/1.3S685_Sun, 21 Sep 2008 01:54:09 GMT_Fri, 19 Sep 2008 21:48:30 GMT./\]]^2_NSMutableDictionary\NSDictionary:./abbc2_NSHTTPURLResponse]NSURLResponse)27:PRd EJS^agpy{(/OTow{dO:// Copyright 2005, Google Inc. // // Operations on cookies that are common across our pages. // // Original Author: Pal Takacsi-Nagy (pal@google.com) /** * Sets a Cookie with the given name and value. * * name Name of the cookie * value Value of the cookie * [expires] Expiration date of the cookie (default: end of current session) * [path] Path where the cookie is valid (default: path of calling document) * [domain] Domain where the cookie is valid * (default: domain of calling document) * [secure] Boolean value indicating if the cookie transmission requires a * secure transmission */ function setCookie(name, value, domain, expires, path, secure) { document.cookie = name + "=" + escape(value) + ((expires) ? "; expires=" + expires.toGMTString() : "") + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "") + ((secure) ? "; secure" : ""); } /** * Gets the value of the specified cookie. * * name Name of the desired cookie. * * Returns a string containing value of specified cookie, * or null if cookie does not exist. */ function getCookie(name) { var dc = document.cookie; var prefix = name + "="; var begin = dc.indexOf("; " + prefix); if (begin == -1) { begin = dc.indexOf(prefix); if (begin != 0) return null; } else { begin += 2; } var end = document.cookie.indexOf(";", begin); if (end == -1) { end = dc.length; } return unescape(dc.substring(begin + prefix.length, end)); } PQ1R_9http://www.blogger.com/v-app/scripts/1019856700-common.jsObplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345KLMNOPQRSTUVWXYZ[_`U$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_9http://www.blogger.com/v-app/scripts/1019856700-common.js./01X$classesZ$classname12UNSURLXNSObject#A d| 6789BWNS.keysZNS.objects:;<=>?@A CDEFGHIJ]Last-Modified]Cache-ControlWExpires_Content-Encoding\Content-TypeVServerTDate_Transfer-Encoding_Fri, 19 Sep 2008 21:48:30 GMTVpublic_Mon, 26 Oct 2009 01:54:10 GMTTgzip_application/x-javascriptWGFE/1.3_Sun, 21 Sep 2008 01:54:10 GMTXIdentity./\]]^2_NSMutableDictionary\NSDictionary./abbc2_NSHTTPURLResponse]NSURLResponse)27:PRd FKT_bhqz|.NUuzd O// Copied from .../google3/javascript/common.js //------------------------------------------------------------------------ // This file contains common utilities and basic javascript infrastructure. // // Notes: // * Press 'D' to toggle debug mode. // // Functions: // // - Assertions // DEPRECATED: Use assert.js // AssertTrue(): assert an expression. Throws an exception if false. // Fail(): Throws an exception. (Mark block of code that should be unreachable) // AssertEquals(): assert that two values are equal. // AssertNumArgs(): assert number of arguments for the function // AssertType(): assert that a value has a particular type // // - Cookies // SetCookie(): Sets a cookie. // ExpireCookie(): Expires a cookie. // GetCookie(): Gets a cookie value. // // - Dynamic HTML/DOM utilities // MaybeGetElement(): get an element by its id // GetElement(): get an element by its id // GetParentNode(): Get the parent of an element // GetAttribute(): Get attribute value of a DOM node // SetInnerHTML(): set the inner HTML of a node // GetInnerHTML(): get the inner HTML of a node // ClearInnerHTML(): clear the inner HTML of a node // SetCssStyle(): Sets a CSS property of a node. // GetStyleProperty(): Get CSS property from a style attribute string // ShowElement(): Show/hide element by setting the "display" css property. // ShowBlockElement(): Show/hide block element // SetButtonText(): Set the text of a button element. // AppendNewElement(): Create and append a html element to a parent node. // CreateDIV(): Create a DIV element and append to the document. // CreateIFRAME(): Create an IFRAME and append to the document. // HasClass(): check if element has a given class // AddClass(): add a class to an element // RemoveClass(): remove a class from an element // // - Window/Screen utiltiies // GetPageOffsetLeft(): get the X page offset of an element // GetPageOffsetTop(): get the Y page offset of an element // GetPageOffset(): get the X and Y page offsets of an element // GetPageOffsetRight() : get X page offset of the right side of an element // GetPageOffsetRight() : get Y page offset of the bottom of an element // GetScrollTop(): get the vertical scrolling pos of a window. // GetScrollLeft(): get the horizontal scrolling pos of a window // IsScrollAtEnd(): check if window scrollbar has reached its maximum offset // ScrollTo(): scroll window to a position // ScrollIntoView(): scroll window so that an element is in view. // GetWindowWidth(): get width of a window. // GetWindowHeight(): get height of a window // GetAvailScreenWidth(): get available screen width // GetAvailScreenHeight(): get available screen height // GetNiceWindowHeight(): get a nice height for a new browser window. // Open{External/Internal}Window(): open a separate window // CloseWindow(): close a window // // - DOM walking utilities // AnnotateTerms(): find terms in a node and decorate them with some tag // AnnotateText(): find terms in a text node and decorate them with some tag // // - String utilties // HtmlEscape(): html escapes a string // HtmlUnescape(): remove html-escaping. // QuoteEscape(): escape " quotes. // CollapseWhitespace(): collapse multiple whitespace into one whitespace. // Trim(): trim whitespace on ends of string // IsEmpty(): check if CollapseWhiteSpace(String) == "" // IsLetterOrDigit(): check if a character is a letter or a digit // ConvertEOLToLF(): normalize the new-lines of a string. // HtmlEscapeInsertWbrs(): HtmlEscapes and inserts s (word break tags) // after every n non-space chars and/or after or before certain special chars // // - TextArea utilities // GetCursorPos(): finds the cursor position of a textfield // SetCursorPos(): sets the cursor position in a textfield // // - Array utilities // FindInArray(): do a linear search to find an element value. // DeleteArrayElement(): return a new array with a specific value removed. // CloneObject(): clone an object, copying its values recursively. // CloneEvent(): clone an event; cannot use CloneObject because it // suffers from infinite recursion // // - Formatting utilities // PrintArray(): used to print/generate HTML by combining static text // and dynamic strings. // ImageHtml(): create html for an img tag // FormatJSLink(): formats a link that invokes js code when clicked. // MakeId3(): formats an id that has two id numbers, eg, foo_3_7 // // - Miscellaneous // IsDefined(): returns true if argument is not undefined //------------------------------------------------------------------------ // browser detection var agent = navigator.userAgent.toLowerCase(); var is_ie = (agent.indexOf('msie') != -1); //var is_ie5 = (agent.indexOf('msie 5') != -1 && document.all); var is_konqueror = (agent.indexOf('konqueror') != -1); var is_safari = (agent.indexOf('safari') != -1) || is_konqueror; var is_nav = !is_ie && !is_safari && (agent.indexOf('mozilla') != -1); var is_win = (agent.indexOf('win') != -1); delete agent; var BACKSPACE_KEYCODE = 8; var COMMA_KEYCODE = 188; // ',' key var DEBUG_KEYCODE = 68; // 'D' key var DELETE_KEYCODE = 46; var DOWN_KEYCODE = 40; // DOWN arrow key var ENTER_KEYCODE = 13; // ENTER key var ESC_KEYCODE = 27; // ESC key var LEFT_KEYCODE = 37; // LEFT arrow key var RIGHT_KEYCODE = 39; // RIGHT arrow key var SPACE_KEYCODE = 32; // space bar var TAB_KEYCODE = 9; // TAB key var UP_KEYCODE = 38; // UP arrow key var SHIFT_KEYCODE = 16; // This is a "constant" but has different values depending on the browser var semicolon_keycode = (is_ie ? 186 : 59); var MAX_EMAIL_ADDRESS_LENGTH = 320; // 64 + '@' + 255 var MAX_SIGNATURE_LENGTH = 1000; // 1000 chars of maximum signature //------------------------------------------------------------------------ // Assertions // DEPRECATED: Use assert.js //------------------------------------------------------------------------ /** * DEPRECATED: Use assert.js */ function raise(msg) { if (typeof Error != 'undefined') { throw new Error(msg || 'Assertion Failed'); } else { throw (msg); } } /** * DEPRECATED: Use assert.js * * Fail() is useful for marking logic paths that should * not be reached. For example, if you have a class that uses * ints for enums: * * MyClass.ENUM_FOO = 1; * MyClass.ENUM_BAR = 2; * MyClass.ENUM_BAZ = 3; * * And a switch statement elsewhere in your code that * has cases for each of these enums, then you can * "protect" your code as follows: * * switch(type) { * case MyClass.ENUM_FOO: doFooThing(); break; * case MyClass.ENUM_BAR: doBarThing(); break; * case MyClass.ENUM_BAZ: doBazThing(); break; * default: * Fail("No enum in MyClass with value: " + type); * } * * This way, if someone introduces a new value for this enum * without noticing this switch statement, then the code will * fail if the logic allows it to reach the switch with the * new value, alerting the developer that he should add a * case to the switch to handle the new value he has introduced. * * @param {string} opt_msg to display for failure * DEFAULT: "Assertion failed" */ function Fail(opt_msg) { if (opt_msg === undefined) opt_msg = 'Assertion failed'; if (IsDefined(DumpError)) DumpError(opt_msg + '\n'); raise(opt_msg); } /** * DEPRECATED: Use assert.js * * Asserts that an expression is true (non-zero and non-null). * * Note that it is critical not to pass logic * with side-effects as the expression for AssertTrue * because if the assertions are removed by the * JSCompiler, then the expression will be removed * as well, in which case the side-effects will * be lost. So instead of this: * * AssertTrue( criticalComputation() ); * * Do this: * * var result = criticalComputation(); * AssertTrue(result); * * @param {anything} expression to evaluate * @param {string} opt_msg to display if the assertion fails * */ function AssertTrue(expression, opt_msg) { if (!expression) { if (opt_msg === undefined) opt_msg = 'Assertion failed'; Fail(opt_msg); } } /** * DEPRECATED: Use assert.js * * Asserts that two values are the same. * * @param {anything} val1 * @param {anything} val2 * @param {string} opt_msg to display if the assertion fails */ function AssertEquals(val1, val2, opt_msg) { if (val1 != val2) { if (opt_msg === undefined) { opt_msg = "AssertEquals failed: <" + val1 + "> != <" + val2 + ">"; } Fail(opt_msg); } } /** * DEPRECATED: Use assert.js * * Asserts that a value is of the provided type. * * AssertType(6, Number); * AssertType("ijk", String); * AssertType([], Array); * AssertType({}, Object); * AssertType(ICAL_Date.now(), ICAL_Date); * * @param {anything} value * @param {constructor function} type * @param {string} opt_msg to display if the assertion fails */ function AssertType(value, type, opt_msg) { // for backwards compatability only if (typeof value == type) return; if (value || value == "") { try { if (type == AssertTypeMap[typeof value] || value instanceof type) return; } catch (e) { /* failure, type was an illegal argument to instanceof */ } } if (opt_msg === undefined) { if (typeof type == 'function') { var match = type.toString().match(/^\s*function\s+([^\s\{]+)/); if (match) type = match[1]; } opt_msg = "AssertType failed: <" + value + "> not typeof "+ type; } Fail(opt_msg); } var AssertTypeMap = { 'string' : String, 'number' : Number, 'boolean' : Boolean }; /** * DEPRECATED: Use assert.js * * Asserts that the number of arguments to a * function is num. For example: * * function myFunc(one, two, three) [ * AssertNumArgs(3); * ... * } * * myFunc(1, 2); // assertion fails! * * Note that AssertNumArgs does not take the function * as an argument; it is simply used in the context * of the function. * * @param {int} number of arguments expected * @param {string} opt_msg to display if the assertion fails */ function AssertNumArgs(num, opt_msg) { var caller = AssertNumArgs.caller; // This is not supported in safari 1.0 if (caller && caller.arguments.length != num) { if (opt_msg === undefined) { opt_msg = caller.name + ' expected ' + num + ' arguments ' + ' but received ' + caller.arguments.length; } Fail(opt_msg); } } //------------------------------------------------------------------------ // Cookies //------------------------------------------------------------------------ var ILLEGAL_COOKIE_CHARS_RE = /[\s;]/ /** * Sets a cookie. * The max_age can be -1 to set a session cookie. To expire cookies, use * ExpireCookie() instead. * * @param name The cookie name. * @param value The cookie value. * @param opt_max_age The max age in seconds (from now). Use -1 to set a * session cookie. If not provided, the default is -1 (i.e. set a session * cookie). * @param opt_path The path of the cookie, or null to not specify a path * attribute (browser will use the full request path). If not provided, the * default is '/' (i.e. path=/). * @param opt_domain The domain of the cookie, or null to not specify a domain * attribute (brower will use the full request host name). If not provided, * the default is null (i.e. let browser use full request host name). * @return Void. */ function SetCookie(name, value, opt_max_age, opt_path, opt_domain) { value = '' + value; AssertTrue((typeof name == 'string' && typeof value == 'string' && !name.match(ILLEGAL_COOKIE_CHARS_RE) && !value.match(ILLEGAL_COOKIE_CHARS_RE)), 'trying to set an invalid cookie'); if (!IsDefined(opt_max_age)) opt_max_age = -1; if (!IsDefined(opt_path)) opt_path = '/'; if (!IsDefined(opt_domain)) opt_domain = null; var domain_str = (opt_domain == null) ? '' : ';domain=' + opt_domain; var path_str = (opt_path == null) ? '' : ';path=' + opt_path; var expires_str; // Case 1: Set a session cookie. if (opt_max_age < 0) { expires_str = ''; // Case 2: Expire the cookie. // Note: We don't tell people about this option in the function doc because // we prefer people to use ExpireCookie() to expire cookies. } else if (opt_max_age == 0) { // Note: Don't use Jan 1, 1970 for date because NS 4.76 will try to convert // it to local time, and if the local time is before Jan 1, 1970, then the // browser will ignore the Expires attribute altogether. var pastDate = new Date(1970, 1 /*Feb*/, 1); // Feb 1, 1970 expires_str = ';expires=' + pastDate.toUTCString(); // Case 3: Set a persistent cookie. } else { var futureDate = new Date(Now() + opt_max_age * 1000); expires_str = ';expires=' + futureDate.toUTCString(); } document.cookie = name + '=' + value + domain_str + path_str + expires_str; } var EXPIRED_COOKIE_VALUE = 'EXPIRED'; /** * Expires a cookie. * * @param name The cookie name. * @param opt_path The path of the cookie, or null to expire a cookie set at * the full request path. If not provided, the default is '/' (i.e. path=/). * @param opt_domain The domain of the cookie, or null to expire a cookie set * at the full request host name. If not provided, the default is null (i.e. * cookie at full request host name). * @return Void. */ function ExpireCookie(name, opt_path, opt_domain) { SetCookie(name, EXPIRED_COOKIE_VALUE, 0, opt_path, opt_domain); } /** Returns the value for the first cookie with the given name * @param name : string * @return a string or the empty string if no cookie found. */ function GetCookie(name) { var nameeq = name + "="; var cookie = String(document.cookie); for (var pos = -1; (pos = cookie.indexOf(nameeq, pos + 1)) >= 0;) { var i = pos; // walk back along string skipping whitespace and looking for a ; before // the name to make sure that we don't match cookies whose name contains // the given name as a suffix. while (--i >= 0) { var ch = cookie.charAt(i); if (ch == ';') { i = -1; // indicate success break; } else if (' \t'.indexOf(ch) < 0) { break; } } if (-1 === i) { // first cookie in the string or we found a ; var end = cookie.indexOf(';', pos); if (end < 0) { end = cookie.length; } return cookie.substring(pos + nameeq.length, end); } } return ""; } //------------------------------------------------------------------------ // Time //------------------------------------------------------------------------ function Now() { return (new Date()).getTime(); } //------------------------------------------------------------------------ // Dynamic HTML/DOM utilities //------------------------------------------------------------------------ // Gets a element by its id, may return null function MaybeGetElement(win, id) { return win.document.getElementById(id); } // Same as MaybeGetElement except that it throws an exception if it's null function GetElement(win, id) { var el = win.document.getElementById(id); if (!el) { DumpError("Element " + id + " not found."); } return el; } // Gets elements by its id/name // IE treats getElementsByName as searching over ids, while Moz use names. // so tags must have both id and name as the same string function GetElements(win, id) { return win.document.getElementsByName(id); } // Gets the parent of a html element. function GetParentNode(n) { try { return n.parentNode; } catch (e) { // n.parentNode may throw a permission-denied exception on mozilla // (e.g. on text element), ignore this exception. return n; } } function IsDescendant(parent, child) { do { if (parent === child) return true; child = GetParentNode(child); } while (child && child !== document.body); return false; } // Get attribute value of a DOM node function GetAttribute(node, attribute) { if (!node.getAttribute) { return null; } var attr = node.getAttribute(attribute); if (is_ie && attribute == "style") { return attr.value; } else { return attr; } } // Sets inner html of a html element function SetInnerHTML(win, id, html) { try { GetElement(win, id).innerHTML = html; } catch (ex) { DumpException(ex); } } // Gets inner-html of a html element function GetInnerHTML(win, id) { try { return GetElement(win, id).innerHTML; } catch (ex) { DumpException(ex); return ""; } } // Clears inner html of a html element function ClearInnerHTML(win, id) { try { GetElement(win, id).innerHTML = ""; } catch (ex) { DumpException(ex); } } // Sets a CSS style of an element function SetCssStyle(win, id, name, value) { try { var elem = GetElement(win, id); elem.style[name] = value; } catch (ex) { DumpException(ex); } } // Get CSS property from a style attribute string function GetStyleProperty(style, name) { var i = style.indexOf(name); if (i != -1) { var j = style.indexOf(";", i); if (j == -1) { j = style.length; } // the +1 below is for the colon following the attribute name return CollapseWhitespace(style.substring(i + name.length + 1, j)); } return null; } // Show/hide an element. function ShowElement(el, show) { el.style.display = show ? "" : "none"; } // Show/hide a block element. // ShowElement() doesn't work if object has an initial class with display:none function ShowBlockElement(el, show) { el.style.display = show ? "block" : "none"; } // Show/hide an inline element. // ShowElement() doesn't work when an element starts off display:none. function ShowInlineElement(el, show) { el.style.display = show ? "inline" : "none"; } // Set the text of a button. This is to get around a bug in mozilla, // where we can't set the text of a button by setting innerHTML. function SetButtonText(button, text) { button.childNodes[0].nodeValue = text; } // Append a new HTML element to a HTML node. function AppendNewElement(win, parent, tag) { var e = win.document.createElement(tag); parent.appendChild(e); return e; } // Finds the child with the given ID, or null if there is node. // This does not search the children's children. function FindChildWithID(parent, id) { var el; for (el = parent.firstChild; el && el.id != id; el = el.nextSibling) { // skip } return el; } // Adds a disabled option to the given menu function AddMenuDisabledOption(win, menu, html) { var op = AppendNewElement(win, menu, 'OPTION'); op.disabled = true; op.innerHTML = html; return op; } // Adds a option to the given menu function AddMenuOption(win, menu, value, html) { var op = AppendNewElement(win, menu, 'OPTION'); op.value = value; op.innerHTML = html; return op; } // Create a new DIV (append it to the end of the document) function CreateDIV(win, id) { var div = MaybeGetElement(win, id); if (!div) { div = AppendNewElement(win, win.document.body, "div"); div.id = id; } return div; } // Create a new IFRAME (append it to the end of the document) function CreateIFRAME(win, id, url) { var iframe = MaybeGetElement(win, id); if (!iframe) { // We cannot create an IFRAME directly (IE doesn't allow it), so we // create a DIV and then insert an IFRAME. // We also give the IFRAME a name (same as id) var div = AppendNewElement(win, win.document.body, "div"); div.innerHTML = ""; iframe = GetElement(win, id); } return iframe; } // Create a new TR containing the given td's function Tr(win, tds) { var tr = win.document.createElement("TR"); for (var i = 0; i < tds.length; i++) { tr.appendChild(tds[i]); } return tr; } // Create a new TD, with an optional colspan function Td(win, opt_colspan) { var td = win.document.createElement("TD"); if (opt_colspan) { td.colSpan = opt_colspan; } return td; } // Check if an element has a given class function HasClass(el, cl) { if (el == null || el.className == null) return false; var classes = el.className.split(" "); for (var i = 0; i < classes.length; i++) { if (classes[i] == cl) { return true; } } return false; } // Add a class to element function AddClass(el, cl) { if (HasClass(el, cl)) return; el.className += " " + cl; } // Remove a class from an element function RemoveClass(el, cl) { if (el.className == null) return; var classes = el.className.split(" "); var result = []; var changed = false; for (var i = 0; i < classes.length; i++) { if (classes[i] != cl) { if (classes[i]) { result.push(classes[i]); } } else { changed = true; } } if (changed) { el.className = result.join(" "); } } // Performs an in-order traversal of the tree rooted at the given node // (excluding the root node) and returns an array of nodes that match the // given selector. The selector must implement the method: // // boolean select(node); // // This method is a generalization of the DOM method "getElementsByTagName" // function GetElementsBySelector(root, selector) { var nodes = []; for (var child = root.firstChild; child; child = child.nextSibling) { AddElementBySelector_(child, selector, nodes); } return nodes; } // Recursive helper for GetElemnetsBySelector() function AddElementBySelector_(root, selector, nodes) { // First test the parent if (selector.select(root)) { nodes.push(root); } // Then recurse through the children for (var child = root.firstChild; child; child = child.nextSibling) { AddElementBySelector_(child, selector, nodes); } } //------------------------------------------------------------------------ // Window/screen utilities // TODO: these should be renamed (e.g. GetWindowWidth to GetWindowInnerWidth // and moved to geom.js) //------------------------------------------------------------------------ // Get page offset of an element function GetPageOffsetLeft(el) { var x = el.offsetLeft; if (el.offsetParent != null) x += GetPageOffsetLeft(el.offsetParent); return x; } // Get page offset of an element function GetPageOffsetTop(el) { var y = el.offsetTop; if (el.offsetParent != null) y += GetPageOffsetTop(el.offsetParent); return y; } // Get page offset of an element function GetPageOffset(el) { var x = el.offsetLeft; var y = el.offsetTop; if (el.offsetParent != null) { var pos = GetPageOffset(el.offsetParent); x += pos.x; y += pos.y; } return {x: x, y: y}; } function GetPageOffsetRight(el) { return GetPageOffsetLeft(el) + el.offsetWidth; } function GetPageOffsetBottom(el) { return GetPageOffsetTop(el) + el.offsetHeight; } // Get the y position scroll offset. function GetScrollTop(win) { // all except Explorer if ("pageYOffset" in win) { return win.pageYOffset; } // Explorer 6 Strict Mode else if ("documentElement" in win.document && "scrollTop" in win.document.documentElement) { return win.document.documentElement.scrollTop; } // other Explorers else if ("scrollTop" in win.document.body) { return win.document.body.scrollTop; } return 0; } // Get the x position scroll offset. function GetScrollLeft(win) { // all except Explorer if ("pageXOffset" in win) { return win.pageXOffset; } // Explorer 6 Strict Mode else if ("documentElement" in win.document && "scrollLeft" in win.document.documentElement) { return win.document.documentElement.scrollLeft; } // other Explorers else if ("scrollLeft" in win.document.body) { return win.document.body.scrollLeft; } return 0; } /** * Checks if window scrollbar has reached its maximum offset * * @param win a window object * @param opt_isHoriz true if horizontal bar, false if vertical */ function IsScrollAtEnd(win, opt_isHoriz) { var total = (opt_isHoriz) ? document.body.offsetWidth : document.body.offsetHeight; var inner = (opt_isHoriz) ? GetWindowWidth(win) : GetWindowHeight(win); var offset = (opt_isHoriz) ? GetScrollLeft(win) : GetScrollTop(win); return (inner + offset >= total || total < inner); } // Scroll window to pos // position: 0 = top, 0.5 = middle, 1 = bottom function ScrollTo(win, el, position) { var y = GetPageOffsetTop(el); y -= GetWindowHeight(win) * position; win.scrollTo(0, y); } // Scroll so that as far as possible the entire element is in view. var ALIGN_BOTTOM = 'b'; var ALIGN_MIDDLE = 'm'; var ALIGN_TOP = 't'; function ScrollIntoView(win, el, alignment) { var el_top = GetPageOffsetTop(el); var el_bottom = el_top + el.offsetHeight; var win_top = GetScrollTop(win); var win_height = GetWindowHeight(win); var win_bottom = win_top + win_height; // Out of view? if (el_top < win_top || el_bottom > win_bottom) { var scrollto_y; if (alignment == ALIGN_BOTTOM) { scrollto_y = el_bottom - win_height + 5; } else if (alignment == ALIGN_MIDDLE) { scrollto_y = (el_top + el_bottom) / 2 - win_height/2; } else { scrollto_y = el_top - 5; // ALIGN_TOP } Debug("Scrolling to " + scrollto_y); win.scrollTo(0, scrollto_y); } } function IsElementVisible(win, id) { var el = MaybeGetElement(win, id); if (el == null) { return false; } var el_top = GetPageOffsetTop(el); var el_bottom = el_top + el.offsetHeight; var win_top = GetScrollTop(win); var win_bottom = win_top + GetWindowHeight(win); if (el_top >= win_top && el_bottom <= win_bottom) { return true; } return false; } function GetWindowWidth(win) { // all except Explorer if ("innerWidth" in win) { return win.innerWidth; } // Explorer 6 Strict Mode else if ("documentElement" in win.document && "clientWidth" in win.document.documentElement) { return win.document.documentElement.clientWidth; } // other Explorers else if ("clientWidth" in win.document.body) { return win.document.body.clientWidth; } return 0; } function GetWindowHeight(win) { // all except Explorer if ("innerHeight" in win) { return win.innerHeight; } // Explorer 6 Strict Mode else if ("documentElement" in win.document && "clientHeight" in win.document.documentElement) { return win.document.documentElement.clientHeight; } // other Explorers else if ("clientHeight" in win.document.body) { return win.document.body.clientHeight; } return 0; } function GetAvailScreenWidth(win) { return win.screen.availWidth; } function GetAvailScreenHeight(win) { return win.screen.availHeight; } // Returns a "nice" window height. // Use the screen height. (Or should we use the height of the current window?) function GetNiceWindowHeight(win) { return Math.floor(0.8 * GetAvailScreenHeight(win)); } // Used for horizontally centering a new window of the given width in the // available screen. Set the new window's distance from the left of the screen // equal to this function's return value. // Params: width: the width of the new window // Returns: the distance from the left edge of the screen for the new window to // be horizontally centered function GetCenteringLeft(win, width) { return (win.screen.availWidth - width) >> 1; } // Used for vertically centering a new window of the given height in the // available screen. Set the new window's distance from the top of the screen // equal to this function's return value. // Params: height: the height of the new window // Returns: the distance from the top edge of the screen for the new window to // be vertically aligned. function GetCenteringTop(win, height) { return (win.screen.availHeight - height) >> 1; } /* * Opens a child popup window that has no browser toolbar/decorations. * (Copied from caribou's common.js library with small modifications.) * * @param url the URL for the new window (Note: this will be unique-ified) * @param opt_name the name of the new window * @param opt_width the width of the new window * @param opt_height the height of the new window * @param opt_center if true, the new window is centered in the available screen * @param opt_hide_scrollbars if true, the window hides the scrollbars * @param opt_noresize if true, makes window unresizable * @param opt_blocked_msg message warning that the popup has been blocked * @return a reference to the new child window */ function Popup(url, opt_name, opt_width, opt_height, opt_center, opt_hide_scrollbars, opt_noresize, opt_blocked_msg) { if (!opt_height) { opt_height = Math.floor(GetWindowHeight(window.top) * 0.8); } if (!opt_width) { opt_width = Math.min(GetAvailScreenWidth(window), opt_height); } var features = "resizable=" + (opt_noresize ? "no" : "yes") + "," + "scrollbars=" + (opt_hide_scrollbars ? "no" : "yes") + "," + "width=" + opt_width + ",height=" + opt_height; if (opt_center) { features += ",left=" + GetCenteringLeft(window, opt_width) + "," + "top=" + GetCenteringTop(window, opt_height); } return OpenWindow(window, url, opt_name, features, opt_blocked_msg); } /* * Opens a new window. Returns the new window handle. Tries to open the new * window using top.open() first. If that doesn't work, then tries win.open(). * If that still doesn't work, prints an alert. * (Copied from caribou's common.js library with small modifications.) * * @param win the parent window from which to open the new child window * @param url the URL for the new window (Note: this will be unique-ified) * @param opt_name the name of the new window * @param opt_features the properties of the new window * @param opt_blocked_msg message warning that the popup has been blocked * @return a reference to the new child window */ function OpenWindow(win, url, opt_name, opt_features, opt_blocked_msg) { var newwin = OpenWindowHelper(top, url, opt_name, opt_features); if (!newwin || newwin.closed || !newwin.focus) { newwin = OpenWindowHelper(win, url, opt_name, opt_features); } if (!newwin || newwin.closed || !newwin.focus) { if (opt_blocked_msg) alert(opt_blocked_msg); } else { // Make sure that the window has the focus newwin.focus(); } return newwin; } /* * Helper for OpenWindow(). * (Copied from caribou's common.js library with small modifications.) */ function OpenWindowHelper(win, url, name, features) { var newwin; if (features) { newwin = win.open(url, name, features); } else if (name) { newwin = win.open(url, name); } else { newwin = win.open(url); } return newwin; } //------------------------------------------------------------------------ // DOM walking utilities //------------------------------------------------------------------------ function MaybeEscape(str, escape) { return escape ? HtmlEscape(str) : str; } //------------------------------------------------------------------------ // Window data //------------------------------------------------------------------------ // Gets an array, which can store data for the window. This data // is deleted when the window is unloaded. var windata = []; function GetWindowData(win) { var data = windata[win.name]; if (!data) { windata[win.name] = data = []; } return data; } // Clear js data for a window. function ClearWindowData(win_name) { if (windata[win_name]) { windata[win_name] = null; } } //------------------------------------------------------------------------ // String utilities //------------------------------------------------------------------------ // Do html escaping var amp_re_ = /&/g; var lt_re_ = //g; // Convert text to HTML format. For efficiency, we just convert '&', '<', '>' // characters. // Note: Javascript >= 1.3 supports lambda expression in the replacement // argument. But it's slower on IE. // Note: we can also implement HtmlEscape by setting the value // of a textnode and then reading the 'innerHTML' value, but that // that turns out to be slower. // Params: str: String to be escaped. // Returns: The escaped string. function HtmlEscape(str) { if (!str) return ""; return str.replace(amp_re_, "&").replace(lt_re_, "<"). replace(gt_re_, ">").replace(quote_re_, """); } /** converts html entities to plain text. It covers the most common named * entities and numeric entities. * It does not cover all named entities -- it covers &{lt,gt,amp,quot,nbsp}; but * does not handle some of the more obscure ones like &{ndash,eacute};. */ function HtmlUnescape(str) { if (!str) return ""; return str. replace(/&#(\d+);/g, function (_, n) { return String.fromCharCode(parseInt(n, 10)); }). replace(/&#x([a-f0-9]+);/gi, function (_, n) { return String.fromCharCode(parseInt(n, 16)); }). replace(/&(\w+);/g, function (_, entity) { entity = entity.toLowerCase(); return entity in HtmlUnescape.unesc ? HtmlUnescape.unesc[entity] : '?'; }); } HtmlUnescape.unesc = { lt: '<', gt: '>', quot: '"', nbsp: ' ', amp: '&' }; // Replace multiple spaces with   to retain whitespace formatting // in addition to escaping '&', '<', and '>'. var dbsp_re_ = / /g; var ret_re_ = /\r/g; var nl_re_ = /\n/g; function HtmlWhitespaceEscape(str) { str = HtmlEscape(str); str = str.replace(dbsp_re_, "  "); str = str.replace(ret_re_, ""); str = str.replace(nl_re_, "
"); return str; } // Escape double quote '"' characters in addition to '&', '<', '>' so that a // string can be included in an HTML tag attribute value within double quotes. // Params: str: String to be escaped. // Returns: The escaped string. var quote_re_ = /\"/g; function QuoteEscape(str) { return HtmlEscape(str).replace(quote_re_, """); } var JS_SPECIAL_RE_ = /[\'\\\r\n\b\"<>&]/g; function JSEscOne_(s) { if (!JSEscOne_.js_escs_) { var escapes = {}; escapes['\\'] = '\\\\'; escapes['\''] = '\\047'; escapes['\n'] = '\\n'; escapes['\r'] = '\\r'; escapes['\b'] = '\\b'; escapes['\"'] = '\\042'; escapes['<'] = '\\074'; escapes['>'] = '\\076'; escapes['&'] = '\\046'; JSEscOne_.js_escs_ = escapes; } return JSEscOne_.js_escs_[s]; } /** convert a string to a javascript string literal. This function has the * property that the return value is also already html escaped, so the output * can be embedded in an html handler attribute. */ function ToJSString(s) { return "'" + s.toString().replace(JS_SPECIAL_RE_, JSEscOne_) + "'"; } // converts multiple ws chars to a single space, and strips // leading and trailing ws var spc_re_ = /\s+/g; var beg_spc_re_ = /^ /; var end_spc_re_ = / $/; function CollapseWhitespace(str) { if (!str) return ""; return str.replace(spc_re_, " ").replace(beg_spc_re_, ""). replace(end_spc_re_, ""); } var newline_re_ = /\r?\n/g; var spctab_re_ = /[ \t]+/g; var nbsp_re_ = /\xa0/g; function StripNewlines(str) { if (!str) return ""; return str.replace(newline_re_, " "); } function CanonicalizeNewlines(str) { if (!str) return ""; return str.replace(newline_re_, '\n'); } function HtmlifyNewlines(str) { if (!str) return ""; return str.replace(newline_re_, "
"); } function NormalizeSpaces(str) { if (!str) return ""; return str.replace(spctab_re_, " ").replace(nbsp_re_, " "); } // URL encodes the string. function UrlEncode(str) { return encodeURIComponent(str); } function Trim(str) { if (!str) return ""; return str.replace(/^\s+/, "").replace(/\s+$/, ""); } function EndsWith(str, suffix) { if (!str) return !suffix; return (str.lastIndexOf(suffix) == (str.length - suffix.length)); } // Check if a string is empty function IsEmpty(str) { return CollapseWhitespace(str) == ""; } // Check if a character is a letter function IsLetterOrDigit(ch) { return ((ch >= "a" && ch <= "z") || (ch >= "A" && ch <= "Z") || (ch >= '0' && ch <= '9')); } // Check if a character is a space character function IsSpace(ch) { return (" \t\r\n".indexOf(ch) >= 0); } // Converts any instances of "\r" or "\r\n" style EOLs into "\n" (Line Feed), // and also trim the extra newlines and whitespaces at the end. var eol_re_ = /\r\n?/g; var trailingspc_re_ = /[\n\t ]+$/; function NormalizeText(str) { return str.replace(eol_re_, "\n").replace(trailingspc_re_, ""); } // Inserts s (word break tag) after every n non-space chars and/or // after or before certain special chars. The input string should be plain // text that has not yet been HTML-escaped. // Params: // str: The string to insert s into. // n: The maximum number of consecutive non-space characters to allow before // adding a . To turn off this rule (i.e. if you only want to add // breaks based on special characters), pass in the value -1. // chars_to_break_after: The list of special characters (concatenated into a // string) after which a should be added, if there is no natural // break at that point. To turn off this rule, pass in the empty string. // chars_to_break_before: The list of special characters (concatenated into a // string) before which a should be added, if there is no natural // break at that point. To turn off this rule, pass in the empty string. // Returns: The string str htmlescaped, and with s inserted according to // the rules specified by the other arguments. function HtmlEscapeInsertWbrs(str, n, chars_to_break_after, chars_to_break_before) { AssertNumArgs(4); var out = ''; var strpos = 0; var spc = 0; for (var i = 1; i < str.length; ++i) { var prev_char = str.charAt(i - 1); var next_char = str.charAt(i); if (IsSpace(next_char)) { spc = i; } else if (i - spc == n || chars_to_break_after.indexOf(prev_char) != -1 || chars_to_break_before.indexOf(next_char) != -1) { out += HtmlEscape(str.substring(strpos, i)) + ''; strpos = i; spc = i; } } out += HtmlEscape(str.substr(strpos)); return out; } // Converts a string to its canonicalized label form. var illegal_chars_re_ = /[ \/(){}&|\\\"\000]/g; function CanonicalizeLabel(str, lowercase) { var uppercase = str.replace(illegal_chars_re_, '-'); return lowercase ? uppercase.toLowerCase() : uppercase; } // Case-insensitive string comparator function CompareStringsIgnoreCase(s1, s2) { s1 = s1.toLowerCase(); s2 = s2.toLowerCase(); if (s1 < s2) { return -1; } else if (s1 == s2) { return 0; } else { return 1; } } //------------------------------------------------------------------------ // TextArea utilities //------------------------------------------------------------------------ // Gets the cursor pos in a text area. Returns -1 if the cursor pos cannot // be determined or if the cursor out of the textfield. function GetCursorPos(win, textfield) { try { if (IsDefined(textfield.selectionEnd)) { // Mozilla directly supports this return textfield.selectionEnd; } else if (win.document.selection && win.document.selection.createRange) { // IE doesn't export an accessor for the endpoints of a selection. // Instead, it uses the TextRange object, which has an extremely obtuse // API. Here's what seems to work: // (1) Obtain a textfield from the current selection (cursor) var tr = win.document.selection.createRange(); // Check if the current selection is in the textfield if (tr.parentElement() != textfield) { return -1; } // (2) Make a text range encompassing the textfield var tr2 = tr.duplicate(); tr2.moveToElementText(textfield); // (3) Move the end of the copy to the beginning of the selection tr2.setEndPoint("EndToStart", tr); // (4) The span of the textrange copy is equivalent to the cursor pos var cursor = tr2.text.length; // Finally, perform a sanity check to make sure the cursor is in the // textfield. IE sometimes screws this up when the window is activated if (cursor > textfield.value.length) { return -1; } return cursor; } else { Debug("Unable to get cursor position for: " + navigator.userAgent); // Just return the size of the textfield // TODO: Investigate how to get cursor pos in Safari! return textfield.value.length; } } catch (e) { DumpException(e, "Cannot get cursor pos"); } return -1; } function SetCursorPos(win, textfield, pos) { if (IsDefined(textfield.selectionEnd) && IsDefined(textfield.selectionStart)) { // Mozilla directly supports this textfield.selectionStart = pos; textfield.selectionEnd = pos; } else if (win.document.selection && textfield.createTextRange) { // IE has textranges. A textfield's textrange encompasses the // entire textfield's text by default var sel = textfield.createTextRange(); sel.collapse(true); sel.move("character", pos); sel.select(); } } //------------------------------------------------------------------------ // Array utilities //------------------------------------------------------------------------ // Find an item in an array, returns the key, or -1 if not found function FindInArray(array, x) { for (var i = 0; i < array.length; i++) { if (array[i] == x) { return i; } } return -1; } // Inserts an item into an array, if it's not already in the array function InsertArray(array, x) { if (FindInArray(array, x) == -1) { array[array.length] = x; } } // Delete an element from an array function DeleteArrayElement(array, x) { var i = 0; while (i < array.length && array[i] != x) i++; array.splice(i, 1); } // Copies a flat array function CopyArray(array) { var copy = []; for (var i = 0; i < array.length; i++) { copy[i] = array[i]; } return copy; } // Clone an object (recursively) function CloneObject(x) { if ((typeof x) == "object") { var y = []; for (var i in x) { y[i] = CloneObject(x[i]); } return y; } return x; } /** * Clone an event; cannot use CloneObject(event) * because it suffers from infinite recursion. * Thus, only a subset of the event properties are * cloned -- if you need others, just add them * to this function (just don't remove any!) */ function CloneEvent(ev) { var clone = {}; clone.clientX = ev.clientX; clone.clientY = ev.clientY; clone.pageX = ev.pageX; clone.pageY = ev.pageY; clone.type = ev.type; clone.srcElement = ev.srcElement; clone.target = ev.target; clone.cancelBubble = ev.cancelBubble; clone.explicitOriginalTarget = ev.explicitOriginalTarget; // add more properties here return clone; } function GetEventTarget(/*Event*/ ev) { // Event is not a type in IE; IE uses Object for events // AssertType(ev, Event, 'arg passed to GetEventTarget not an Event'); return ev.srcElement || ev.target; } /** cancels the event */ // from http://www.quirksmode.org/js/events_order.html function CancelEvent(/*Event*/ ev) { if (is_ie) { ev.cancelBubble = true; } else if (ev.stopPropagation) { ev.stopPropagation(); } } //------------------------------------------------------------------------ // Formatting utilities //------------------------------------------------------------------------ // A simple printf type function that takes in a template array, and a data // array. e.g. PrintArray(["a",,"b",,"c"], ["x", "y"]) => axbyc function PrintArray(array, data) { // Check that the argument count is correct. AssertEquals(array.length, data.length * 2 + 1); for (var i = 0, idx = 1; i < data.length; i++, idx += 2) { array[idx] = data[i]; } return array.join(""); } function ImageHtml(url, attributes) { return ""; } // Formats an object id that has two id numbers, eg, foo_3_7 function MakeId3(idprefix, m, n) { return idprefix + m + "_" + n; } //------------------------------------------------------------------------ // Email address parsing //------------------------------------------------------------------------ // Parse an email address of the form "name"
into [name, address] function ParseAddress(addr) { var name = ""; var address = ""; for (var i = 0; i < addr.length;) { var token = GetEmailToken(addr, i); if (token.charAt(0) == '<') { var end = token.indexOf(">"); address = token.substring(1, (end != -1) ? end : token.length); } else if (address == "") { name += token; } i += token.length; } // Check if it's a simple email address of the form "jlim@google.com" if (address == "" && name.indexOf("@") != -1) { address = name; name = ""; } name = CollapseWhitespace(name); name = StripQuotes(name, "'"); name = StripQuotes(name, "\""); address = CollapseWhitespace(address); return [name, address]; } // Given an email address, get the address part function GetAddress(address) { return ParseAddress(address)[1]; } // Get the username part of an email address function GetAddressUsername(address) { address = GetAddress(address); var at = address.indexOf("@"); return (at == -1) ? address : address.substr(0, at); } // Given an email address, get the personal part function GetPersonal(address) { return ParseAddress(address)[0]; } // Given an address, get a short name function GetPersonalElseUsername(address) { var personal = GetPersonal(address); if (personal != "") { return personal; } else { return GetAddressUsername(address); } } // Strip ' or " chars around a string function StripQuotes(str, quotechar) { var len = str.length; if (str.charAt(0) == quotechar && str.charAt(len - 1) == quotechar) { return str.substring(1, len - 1); } return str; } // Convert a string containing list of email addresses into an array // of strings function EmailsToArray(str) { var result = []; var email = ""; var token; for (var i = 0; i < str.length; ) { token = GetEmailToken(str, i); if (token == ",") { AddEmailAddress(result, email); email = ""; i++; continue; } email += token; i += token.length; } // Add last if (email !="" || token == ",") { AddEmailAddress(result, email); } return result; } // Get the next token from a position in an address string var openers_ = "\"<(["; var closers_ = "\">)]"; function GetEmailToken(str, pos) { var ch = str.charAt(pos); var p = openers_.indexOf(ch); if (p == -1) return ch; var end_pos = str.indexOf(closers_.charAt(p), pos + 1); var token = (end_pos >= 0) ? str.substring(pos, end_pos + 1) : str.substr(pos); return token; } // Add an email address to the result array. function AddEmailAddress(result, email) { email = CleanEmailAddress(email); result[result.length] = email; } // Clean up email address: // - remove extra spaces // - Surround name with quotes if it contains special characters // to check if we need " quotes // Note: do not use /g in the regular expression, otherwise the // regular expression cannot be reusable. var specialchars_re_ = /[()<>@,;:\\\".\[\]]/; function CleanEmailAddress(str) { var name_address = ParseAddress(str); var name = name_address[0]; var address = name_address[1]; if (name.indexOf("\"") == -1) { // If there's no " var quote_needed = specialchars_re_.test(name); if (quote_needed) { name = "\"" + name + "\""; } } if (name == "") return address; else if (address == "") return name; else return name + " <" + address + ">"; } //------------------------------------------------------------------------ // Misc //------------------------------------------------------------------------ // Compare long hex strings function CompareID(a, b) { if (a.length != b.length) { return (a.length - b.length); } else { return (a < b) ? -1 : (a > b) ? 1 : 0; } } // Check if a value is defined function IsDefined(value) { return (typeof value) != 'undefined'; } function GetKeyCode(event) { var code; if (event.keyCode) { code = event.keyCode; } else if (event.which) { code = event.which; } return code; } // define a forid function to fetch a DOM node by id. function forid_1(id) { return document.getElementById(id); } function forid_2(id) { return document.all[id]; } /** * Fetch an HtmlElement by id. * DEPRECATED: use $ in dom.js */ var forid = document.getElementById ? forid_1 : forid_2; function log(msg) { /* a top level window is its own parent. Use != or else fails on IE with * infinite loop. */ try { if (window.parent != window && window.parent.log) { window.parent.log(window.name + '::' + msg); return; } } catch (e) { // Error: uncaught exception: Permission denied to get property Window.log } var logPane = forid('log'); if (logPane) { var logText = '

' + new Date() + '' + msg + '

'; logPane.innerHTML = logText + logPane.innerHTML; } else { window.status = msg; } } TU1V_?@A CDEFGHIJ]Cache-ControlWExpires_Content-Encoding\Content-TypeVServer^Content-LengthTDate]Last-ModifiedVpublic_Mon, 26 Oct 2009 01:54:12 GMTTgzip_application/x-javascriptWGFE/1.3T2066_Sun, 21 Sep 2008 01:54:12 GMT_Fri, 19 Sep 2008 21:48:30 GMT./\]]^2_NSMutableDictionary\NSDictionaryV./abbc2_NSHTTPURLResponse]NSURLResponse)27:PRd INWbekt} ,3SXs{ dOV // Commonly-used functions, reduced. function d(s) {return document.getElementById(s);} function dE(o,s) {return o.getElementsByTagName(s);} /** * toggleDisplay() * * Will toggle the display property of the style object for any * DOM element or object that supports style as a property. * * Warning: This'll wreak havoc if applied to elements. Those * babies got different types "table-row" | "block" dependant on * what browser's being used. * * Warning: Written in Texas. Yeehaw. * * Typical usage: * toggleDisplay(document.getElementById("foo")); */ function toggleDisplay(o) { var display = getStyle(o, "display"); if (o.style) o.style.display = (display != "none") ? "none" : getDisplayStyleByTagName(o); } function getDisplayStyleByTagName(o) { var n = o.nodeName.toLowerCase(); return ( n == "span" || n == "img" || n == "a" ) ? "inline" : "block"; } /** * hideElement() * * Hides an element from view. * * Typical usage: * hideElement(getElement("the-id-of-the-element")); */ function hideElement(o) { if (o && o.style) o.style.display = "none"; } /** * showElement() * * Shows an element that was hidden from view. * * Typical usage: * showElement(getElement("the-id-of-the-element")); */ function showElement(o) { if (o && o.style) o.style.display = getDisplayStyleByTagName(o); } /** * getElement() * * Returns an element by its ID or shows an alert if it can't be found. * * Typical usage: * getElement("the-id-of-the-element"); */ function getElement(id) { var e = d(id); if (!e) { alert("Cannot get element: " + id); } return e; } /** * setInnerHTML() * * Sets the innerHTML of an element or shows an alert if can't be set. * * Typical usage: * setInnerHTML("the-id-of-the-element"); */ function setInnerHTML(id, html) { try { getElement(id).innerHTML = html; } catch (ex) { alert("Cannot set inner HTML: " + id); } } /** * setCssStyle() * * Sets the style of an element by its id or shows an alert if can't be set. * * Typical usage: * setCssStyle("the-id-of-the-element", "display", "block"); */ function setCssStyle(id, name, value) { try { getElement(id).style[name] = value; } catch (ex) { alert("Cannot set style: " + id); } } /** * getStyle() * * Gets the computed style of any object. * * WARNING: Produces unexpected results in Safari. To achieve best * results, explicitly set the style property for that browser when the * element is rendered. * * Typical usage: * getStyle(object, "display"); */ function getStyle(el, style) { if (!document.getElementById || !el) return; if (document.defaultView && document.defaultView.getComputedStyle) { return document.defaultView. getComputedStyle(el, "").getPropertyValue(style); } else if (el.currentStyle) { return el.currentStyle[style]; } else { return el.style.display; } } /** * getStyleAttribute() * * Returns the style attribute of the specified node. */ function getStyleAttribute(node) { if (Detect.IE()) { return node.getAttribute('style').value; }else { return node.getAttribute('style'); } } /* * showProps() * * Displays all the properties for a given element */ function showProps(o) { var s=""; for (var p in o) { s+=p+": "+o[p]+"\n
"; } document.write(s); } function setIFrameEvent(iframe, eventName, func) { if (document.all) { eval('getIFrameDocument(iframe).on' + eventName + ' = func;'); } else { iframe.contentWindow.addEventListener(eventName, func, true); } } function setIFrameBody(iframe, strStyle, innerHtml) { if (!innerHtml) innerHtml = ''; if (innerHtml == '' && Detect.IE()) { innerHtml = '
'; } var doc = getIFrameDocument(iframe); doc.open(); doc.write('' + innerHtml + ''); doc.close(); } function getIFrameDocument(iframe) { if (Detect.IE()) { return iframe.document; } else { return iframe.contentDocument; } } function getIFrame(strId) { if (Detect.IE()) { return document.frames[strId]; } else { return document.getElementById(strId); } } function createElementandAppend(nodeName, strId, appendTo) { var el = document.createElement(nodeName); el.setAttribute("id", strId); if (appendTo) { appendTo.appendChild(el); } else { document.body.appendChild(el); } return el; } function createElementandInsertBefore(nodeName, strId, appendTo, sibling) { var el = document.createElement(nodeName); el.setAttribute("id", strId); if (appendTo) { appendTo.insertBefore(el, sibling); } else { document.body.insertBefore(el, sibling); } return el; } /** * getXY() * * Returns the position of any element as an object. * * Typical usage: * var pos = getXY(object); * alert(pos.x + " " +pos.y); */ function getXY(el) { var x = el.offsetLeft; var y = el.offsetTop; if (el.offsetParent != null) { var pos = getXY(el.offsetParent); x += pos.x; y += pos.y; } return {x: x, y: y} } // The following 3 functions are taken from common.js function hasClass(el, cl) { if (el == null || el.className == null) return false; var classes = el.className.split(" "); for (var i = 0; i < classes.length; i++) { if (classes[i] == cl) { return true; } } return false; } // Add a class to element function addClass(el, cl) { if (hasClass(el, cl)) return; el.className += " " + cl; } // Remove a class from an element function removeClass(el, cl) { if (el.className == null) return; var classes = el.className.split(" "); var result = []; var changed = false; for (var i = 0; i < classes.length; i++) { if (classes[i] != cl) { if (classes[i]) { result.push(classes[i]); } } else { changed = true; } } if (changed) { el.className = result.join(" "); } } function toggleClass(el, cl) { if (hasClass(el, cl)) { removeClass(el, cl); } else { addClass(el, cl); } } /* Constants for node types, since IE doesn't support Node.TEXT_NODE */ var TEXT_NODE = 3; var ELEMENT_NODE = 1; XY'Z_,http://www.blogger.com/img/navbar/3/flag.gifObplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-345IJKLMNOPQRSTUVW[\U$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_,http://www.blogger.com/img/navbar/3/flag.gif./01X$classesZ$classname12UNSURLXNSObject#A<` 6789AWNS.keysZNS.objects:;<=>?@ BCDEFGHWExpires]Cache-Control\Content-TypeVServerTDate^Content-Length]Last-Modified_Sun, 17 Jan 2038 19:14:07 GMTVpublicYimage/gifSgws_Mon, 22 Sep 2008 15:42:51 GMTR52_Fri, 09 May 2008 15:04:46 GMT./XYYZ2_NSMutableDictionary\NSDictionary4./]^^_2_NSHTTPURLResponse]NSURLResponse)27:PRd7<EPSYbkmt|!(26VYy~`O4GIF89a!, ˭g ;\]:^_*https://ssl.google-analytics.com/urchin.jsObplist00 X$versionT$topY$archiverX$objects_WebResourceResponse_NSKeyedArchiver &,-3%45IJKLMNOPQRSTUVW[\U$null  !"#$%V$classR$3R$8S$10S$11R$5R$6R$4R$7R$2R$9R$0R$1 '()$+WNS.base[NS.relative_*https://ssl.google-analytics.com/urchin.js./01X$classesZ$classname12UNSURLXNSObject#Ag^ 6789AWNS.keysZNS.objects:;<=>?@ BCDEFGH]Cache-Control_Content-Encoding\Content-TypeVServerTDate^Content-Length]Last-Modified_max-age=604800, publicTgzip_text/javascriptTucfe_Mon, 22 Sep 2008 15:42:52 GMTT6846_Tue, 17 Jun 2008 17:20:41 GMT./XYYZ2_NSMutableDictionary\NSDictionaryXu./]^^_2_NSHTTPURLResponse]NSURLResponse)27:PRd5:CNQW`ikrz #(:?_d`OXu//-- Google Analytics Urchin Module //-- Copyright 2007 Google, All Rights Reserved. //-- Urchin On Demand Settings ONLY var _uacct=""; // set up the Urchin Account var _userv=1; // service mode (0=local,1=remote,2=both) //-- UTM User Settings var _ufsc=1; // set client info flag (1=on|0=off) var _udn="auto"; // (auto|none|domain) set the domain name for cookies var _uhash="on"; // (on|off) unique domain hash for cookies var _utimeout="1800"; // set the inactive session timeout in seconds var _ugifpath="/__utm.gif"; // set the web path to the __utm.gif file var _utsp="|"; // transaction field separator var _uflash=1; // set flash version detect option (1=on|0=off) var _utitle=1; // set the document title detect option (1=on|0=off) var _ulink=0; // enable linker functionality (1=on|0=off) var _uanchor=0; // enable use of anchors for campaign (1=on|0=off) var _utcp="/"; // the cookie path for tracking var _usample=100; // The sampling % of visitors to track (1-100). //-- UTM Campaign Tracking Settings var _uctm=1; // set campaign tracking module (1=on|0=off) var _ucto="15768000"; // set timeout in seconds (6 month default) var _uccn="utm_campaign"; // name var _ucmd="utm_medium"; // medium (cpc|cpm|link|email|organic) var _ucsr="utm_source"; // source var _uctr="utm_term"; // term/keyword var _ucct="utm_content"; // content var _ucid="utm_id"; // id number var _ucno="utm_nooverride"; // don't override //-- Auto/Organic Sources and Keywords var _uOsr=new Array(); var _uOkw=new Array(); _uOsr[0]="google"; _uOkw[0]="q"; _uOsr[1]="yahoo"; _uOkw[1]="p"; _uOsr[2]="msn"; _uOkw[2]="q"; _uOsr[3]="aol"; _uOkw[3]="query"; _uOsr[4]="aol"; _uOkw[4]="encquery"; _uOsr[5]="lycos"; _uOkw[5]="query"; _uOsr[6]="ask"; _uOkw[6]="q"; _uOsr[7]="altavista"; _uOkw[7]="q"; _uOsr[8]="netscape"; _uOkw[8]="query"; _uOsr[9]="cnn"; _uOkw[9]="query"; _uOsr[10]="looksmart"; _uOkw[10]="qt"; _uOsr[11]="about"; _uOkw[11]="terms"; _uOsr[12]="mamma"; _uOkw[12]="query"; _uOsr[13]="alltheweb"; _uOkw[13]="q"; _uOsr[14]="gigablast"; _uOkw[14]="q"; _uOsr[15]="voila"; _uOkw[15]="rdata"; _uOsr[16]="virgilio"; _uOkw[16]="qs"; _uOsr[17]="live"; _uOkw[17]="q"; _uOsr[18]="baidu"; _uOkw[18]="wd"; _uOsr[19]="alice"; _uOkw[19]="qs"; _uOsr[20]="yandex"; _uOkw[20]="text"; _uOsr[21]="najdi"; _uOkw[21]="q"; _uOsr[22]="aol"; _uOkw[22]="q"; _uOsr[23]="club-internet"; _uOkw[23]="query"; _uOsr[24]="mama"; _uOkw[24]="query"; _uOsr[25]="seznam"; _uOkw[25]="q"; _uOsr[26]="search"; _uOkw[26]="q"; _uOsr[27]="wp"; _uOkw[27]="szukaj"; _uOsr[28]="onet"; _uOkw[28]="qt"; _uOsr[29]="netsprint"; _uOkw[29]="q"; _uOsr[30]="google.interia"; _uOkw[30]="q"; _uOsr[31]="szukacz"; _uOkw[31]="q"; _uOsr[32]="yam"; _uOkw[32]="k"; _uOsr[33]="pchome"; _uOkw[33]="q"; _uOsr[34]="kvasir"; _uOkw[34]="searchExpr"; _uOsr[35]="sesam"; _uOkw[35]="q"; _uOsr[36]="ozu"; _uOkw[36]="q"; _uOsr[37]="terra"; _uOkw[37]="query"; _uOsr[38]="nostrum"; _uOkw[38]="query"; _uOsr[39]="mynet"; _uOkw[39]="q"; _uOsr[40]="ekolay"; _uOkw[40]="q"; _uOsr[41]="search.ilse"; _uOkw[41]="search_for"; //-- Auto/Organic Keywords to Ignore var _uOno=new Array(); //_uOno[0]="urchin"; //_uOno[1]="urchin.com"; //_uOno[2]="www.urchin.com"; //-- Referral domains to Ignore var _uRno=new Array(); //_uRno[0]=".urchin.com"; //-- **** Don't modify below this point *** var _uff,_udh,_udt,_ubl=0,_udo="",_uu,_ufns=0,_uns=0,_ur="-",_ufno=0,_ust=0,_ubd=document,_udl=_ubd.location,_udlh="",_uwv="1.3"; var _ugifpath2="http://www.google-analytics.com/__utm.gif"; if (_udl.hash) _udlh=_udl.href.substring(_udl.href.indexOf('#')); if (_udl.protocol=="https:") _ugifpath2="https://ssl.google-analytics.com/__utm.gif"; if (!_utcp || _utcp=="") _utcp="/"; function urchinTracker(page) { if (_udl.protocol=="file:") return; if (_uff && (!page || page=="")) return; var a,b,c,xx,v,z,k,x="",s="",f=0,nv=0; var nx=" expires="+_uNx()+";"; var dc=_ubd.cookie; _udh=_uDomain(); if (!_uVG()) return; _uu=Math.round(Math.random()*2147483647); _udt=new Date(); _ust=Math.round(_udt.getTime()/1000); a=dc.indexOf("__utma="+_udh+"."); b=dc.indexOf("__utmb="+_udh); c=dc.indexOf("__utmc="+_udh); if (_udn && _udn!="") { _udo=" domain="+_udn+";"; } if (_utimeout && _utimeout!="") { x=new Date(_udt.getTime()+(_utimeout*1000)); x=" expires="+x.toGMTString()+";"; } if (_ulink) { if (_uanchor && _udlh && _udlh!="") s=_udlh+"&"; s+=_udl.search; if(s && s!="" && s.indexOf("__utma=")>=0) { if (!(_uIN(a=_uGC(s,"__utma=","&")))) a="-"; if (!(_uIN(b=_uGC(s,"__utmb=","&")))) b="-"; if (!(_uIN(c=_uGC(s,"__utmc=","&")))) c="-"; v=_uGC(s,"__utmv=","&"); z=_uGC(s,"__utmz=","&"); k=_uGC(s,"__utmk=","&"); xx=_uGC(s,"__utmx=","&"); if ((k*1) != ((_uHash(a+b+c+xx+z+v)*1)+(_udh*1))) {_ubl=1;a="-";b="-";c="-";xx="-";z="-";v="-";} if (a!="-" && b!="-" && c!="-") f=1; else if(a!="-") f=2; } } if(f==1) { _ubd.cookie="__utma="+a+"; path="+_utcp+";"+nx+_udo; _ubd.cookie="__utmb="+b+"; path="+_utcp+";"+x+_udo; _ubd.cookie="__utmc="+c+"; path="+_utcp+";"+_udo; } else if (f==2) { a=_uFixA(s,"&",_ust); _ubd.cookie="__utma="+a+"; path="+_utcp+";"+nx+_udo; _ubd.cookie="__utmb="+_udh+"; path="+_utcp+";"+x+_udo; _ubd.cookie="__utmc="+_udh+"; path="+_utcp+";"+_udo; _ufns=1; } else if (a>=0 && b>=0 && c>=0) { b = _uGC(dc,"__utmb="+_udh,";"); b = ("-" == b) ? _udh : b; _ubd.cookie="__utmb="+b+"; path="+_utcp+";"+x+_udo; } else { if (a>=0) a=_uFixA(_ubd.cookie,";",_ust); else { a=_udh+"."+_uu+"."+_ust+"."+_ust+"."+_ust+".1"; nv=1; } _ubd.cookie="__utma="+a+"; path="+_utcp+";"+nx+_udo; _ubd.cookie="__utmb="+_udh+"; path="+_utcp+";"+x+_udo; _ubd.cookie="__utmc="+_udh+"; path="+_utcp+";"+_udo; _ufns=1; } if (_ulink && xx && xx!="" && xx!="-") { xx=_uUES(xx); if (xx.indexOf(";")==-1) _ubd.cookie="__utmx="+xx+"; path="+_utcp+";"+nx+_udo; } if (_ulink && v && v!="" && v!="-") { v=_uUES(v); if (v.indexOf(";")==-1) _ubd.cookie="__utmv="+v+"; path="+_utcp+";"+nx+_udo; } var wc=window; var c=_ubd.cookie; if(wc && wc.gaGlobal && wc.gaGlobal.dh==_udh){ var g=wc.gaGlobal; var ua=c.split("__utma="+_udh+".")[1].split(";")[0].split("."); if(g.sid)ua[3]=g.sid; if(nv>0){ ua[2]=ua[3]; if(g.vid){ var v=g.vid.split("."); ua[0]=v[0]; ua[1]=v[1]; } } _ubd.cookie="__utma="+_udh+"."+ua.join(".")+"; path="+_utcp+";"+nx+_udo; } _uInfo(page); _ufns=0; _ufno=0; if (!page || page=="") _uff=1; } function _uGH() { var hid; var wc=window; if (wc && wc.gaGlobal && wc.gaGlobal.hid) { hid=wc.gaGlobal.hid; } else { hid=Math.round(Math.random()*0x7fffffff); if (!wc.gaGlobal) wc.gaGlobal={}; wc.gaGlobal.hid=hid; } return hid; } function _uInfo(page) { var p,s="",dm="",pg=_udl.pathname+_udl.search; if (page && page!="") pg=_uES(page,1); _ur=_ubd.referrer; if (!_ur || _ur=="") { _ur="-"; } else { dm=_ubd.domain; if(_utcp && _utcp!="/") dm+=_utcp; p=_ur.indexOf(dm); if ((p>=0) && (p<=8)) { _ur="0"; } if (_ur.indexOf("[")==0 && _ur.lastIndexOf("]")==(_ur.length-1)) { _ur="-"; } } s+="&utmn="+_uu; if (_ufsc) s+=_uBInfo(); if (_uctm) s+=_uCInfo(); if (_utitle && _ubd.title && _ubd.title!="") s+="&utmdt="+_uES(_ubd.title); if (_udl.hostname && _udl.hostname!="") s+="&utmhn="+_uES(_udl.hostname); if (_usample && _usample != 100) s+="&utmsp="+_uES(_usample); s+="&utmhid="+_uGH(); s+="&utmr="+_ur; s+="&utmp="+pg; if ((_userv==0 || _userv==2) && _uSP()) { var i=new Image(1,1); i.src=_ugifpath+"?"+"utmwv="+_uwv+s; i.onload=function() { _uVoid(); } } if ((_userv==1 || _userv==2) && _uSP()) { var i2=new Image(1,1); i2.src=_ugifpath2+"?"+"utmwv="+_uwv+s+"&utmac="+_uacct+"&utmcc="+_uGCS(); i2.onload=function() { _uVoid(); } } return; } function _uVoid() { return; } function _uCInfo() { if (!_ucto || _ucto=="") { _ucto="15768000"; } if (!_uVG()) return; var c="",t="-",t2="-",t3="-",o=0,cs=0,cn=0,i=0,z="-",s=""; if (_uanchor && _udlh && _udlh!="") s=_udlh+"&"; s+=_udl.search; var x=new Date(_udt.getTime()+(_ucto*1000)); var dc=_ubd.cookie; x=" expires="+x.toGMTString()+";"; if (_ulink && !_ubl) { z=_uUES(_uGC(s,"__utmz=","&")); if (z!="-" && z.indexOf(";")==-1) { _ubd.cookie="__utmz="+z+"; path="+_utcp+";"+x+_udo; return ""; } } z=dc.indexOf("__utmz="+_udh+"."); if (z>-1) { z=_uGC(dc,"__utmz="+_udh+".",";"); } else { z="-"; } t=_uGC(s,_ucid+"=","&"); t2=_uGC(s,_ucsr+"=","&"); t3=_uGC(s,"gclid=","&"); if ((t!="-" && t!="") || (t2!="-" && t2!="") || (t3!="-" && t3!="")) { if (t!="-" && t!="") c+="utmcid="+_uEC(t); if (t2!="-" && t2!="") { if (c != "") c+="|"; c+="utmcsr="+_uEC(t2); } if (t3!="-" && t3!="") { if (c != "") c+="|"; c+="utmgclid="+_uEC(t3); } t=_uGC(s,_uccn+"=","&"); if (t!="-" && t!="") c+="|utmccn="+_uEC(t); else c+="|utmccn=(not+set)"; t=_uGC(s,_ucmd+"=","&"); if (t!="-" && t!="") c+="|utmcmd="+_uEC(t); else c+="|utmcmd=(not+set)"; t=_uGC(s,_uctr+"=","&"); if (t!="-" && t!="") c+="|utmctr="+_uEC(t); else { t=_uOrg(1); if (t!="-" && t!="") c+="|utmctr="+_uEC(t); } t=_uGC(s,_ucct+"=","&"); if (t!="-" && t!="") c+="|utmcct="+_uEC(t); t=_uGC(s,_ucno+"=","&"); if (t=="1") o=1; if (z!="-" && o==1) return ""; } if (c=="-" || c=="") { c=_uOrg(); if (z!="-" && _ufno==1) return ""; } if (c=="-" || c=="") { if (_ufns==1) c=_uRef(); if (z!="-" && _ufno==1) return ""; } if (c=="-" || c=="") { if (z=="-" && _ufns==1) { c="utmccn=(direct)|utmcsr=(direct)|utmcmd=(none)"; } if (c=="-" || c=="") return ""; } if (z!="-") { i=z.indexOf("."); if (i>-1) i=z.indexOf(".",i+1); if (i>-1) i=z.indexOf(".",i+1); if (i>-1) i=z.indexOf(".",i+1); t=z.substring(i+1,z.length); if (t.toLowerCase()==c.toLowerCase()) cs=1; t=z.substring(0,i); if ((i=t.lastIndexOf(".")) > -1) { t=t.substring(i+1,t.length); cn=(t*1); } } if (cs==0 || _ufns==1) { t=_uGC(dc,"__utma="+_udh+".",";"); if ((i=t.lastIndexOf(".")) > 9) { _uns=t.substring(i+1,t.length); _uns=(_uns*1); } cn++; if (_uns==0) _uns=1; _ubd.cookie="__utmz="+_udh+"."+_ust+"."+_uns+"."+cn+"."+c+"; path="+_utcp+"; "+x+_udo; } if (cs==0 || _ufns==1) return "&utmcn=1"; else return "&utmcr=1"; } function _uRef() { if (_ur=="0" || _ur=="" || _ur=="-") return ""; var i=0,h,k,n; if ((i=_ur.indexOf("://"))<0 || _uGCse()) return ""; h=_ur.substring(i+3,_ur.length); if (h.indexOf("/") > -1) { k=h.substring(h.indexOf("/"),h.length); if (k.indexOf("?") > -1) k=k.substring(0,k.indexOf("?")); h=h.substring(0,h.indexOf("/")); } h=h.toLowerCase(); n=h; if ((i=n.indexOf(":")) > -1) n=n.substring(0,i); for (var ii=0;ii<_uRno.length;ii++) { if ((i=n.indexOf(_uRno[ii].toLowerCase())) > -1 && n.length==(i+_uRno[ii].length)) { _ufno=1; break; } } if (h.indexOf("www.")==0) h=h.substring(4,h.length); return "utmccn=(referral)|utmcsr="+_uEC(h)+"|"+"utmcct="+_uEC(k)+"|utmcmd=referral"; } function _uOrg(t) { if (_ur=="0" || _ur=="" || _ur=="-") return ""; var i=0,h,k; if ((i=_ur.indexOf("://"))<0 || _uGCse()) return ""; h=_ur.substring(i+3,_ur.length); if (h.indexOf("/") > -1) { h=h.substring(0,h.indexOf("/")); } for (var ii=0;ii<_uOsr.length;ii++) { if (h.toLowerCase().indexOf(_uOsr[ii].toLowerCase()) > -1) { if ((i=_ur.indexOf("?"+_uOkw[ii]+"=")) > -1 || (i=_ur.indexOf("&"+_uOkw[ii]+"=")) > -1) { k=_ur.substring(i+_uOkw[ii].length+2,_ur.length); if ((i=k.indexOf("&")) > -1) k=k.substring(0,i); for (var yy=0;yy<_uOno.length;yy++) { if (_uOno[yy].toLowerCase()==k.toLowerCase()) { _ufno=1; break; } } if (t) return _uEC(k); else return "utmccn=(organic)|utmcsr="+_uEC(_uOsr[ii])+"|"+"utmctr="+_uEC(k)+"|utmcmd=organic"; } } } return ""; } function _uGCse() { var h,p; h=p=_ur.split("://")[1]; if(h.indexOf("/")>-1) { h=h.split("/")[0]; p=p.substring(p.indexOf("/")+1,p.length); } if(p.indexOf("?")>-1) { p=p.split("?")[0]; } if(h.toLowerCase().indexOf("google")>-1) { if(_ur.indexOf("?q=")>-1 || _ur.indexOf("&q=")>-1) { if (p.toLowerCase().indexOf("cse")>-1) { return true; } } } } function _uBInfo() { var sr="-",sc="-",ul="-",fl="-",cs="-",je=1; var n=navigator; if (self.screen) { sr=screen.width+"x"+screen.height; sc=screen.colorDepth+"-bit"; } else if (self.java) { var j=java.awt.Toolkit.getDefaultToolkit(); var s=j.getScreenSize(); sr=s.width+"x"+s.height; } if (n.language) { ul=n.language.toLowerCase(); } else if (n.browserLanguage) { ul=n.browserLanguage.toLowerCase(); } je=n.javaEnabled()?1:0; if (_uflash) fl=_uFlash(); if (_ubd.characterSet) cs=_uES(_ubd.characterSet); else if (_ubd.charset) cs=_uES(_ubd.charset); return "&utmcs="+cs+"&utmsr="+sr+"&utmsc="+sc+"&utmul="+ul+"&utmje="+je+"&utmfl="+fl; } function __utmSetTrans() { var e; if (_ubd.getElementById) e=_ubd.getElementById("utmtrans"); else if (_ubd.utmform && _ubd.utmform.utmtrans) e=_ubd.utmform.utmtrans; if (!e) return; var l=e.value.split("UTM:"); var i,i2,c; if (_userv==0 || _userv==2) i=new Array(); if (_userv==1 || _userv==2) { i2=new Array(); c=_uGCS(); } for (var ii=0;ii -1) { i2=l.indexOf(s,i); if (i2 < 0) { i2=l.length; } c=l.substring((i+i3),i2); } return c; } function _uDomain() { if (!_udn || _udn=="" || _udn=="none") { _udn=""; return 1; } if (_udn=="auto") { var d=_ubd.domain; if (d.substring(0,4)=="www.") { d=d.substring(4,d.length); } _udn=d; } _udn = _udn.toLowerCase(); if (_uhash=="off") return 1; return _uHash(_udn); } function _uHash(d) { if (!d || d=="") return 1; var h=0,g=0; for (var i=d.length-1;i>=0;i--) { var c=parseInt(d.charCodeAt(i)); h=((h << 6) & 0xfffffff) + c + (c << 14); if ((g=h & 0xfe00000)!=0) h=(h ^ (g >> 21)); } return h; } function _uFixA(c,s,t) { if (!c || c=="" || !s || s=="" || !t || t=="") return "-"; var a=_uGC(c,"__utma="+_udh+".",s); var lt=0,i=0; if ((i=a.lastIndexOf(".")) > 9) { _uns=a.substring(i+1,a.length); _uns=(_uns*1)+1; a=a.substring(0,i); if ((i=a.lastIndexOf(".")) > 7) { lt=a.substring(i+1,a.length); a=a.substring(0,i); } if ((i=a.lastIndexOf(".")) > 5) { a=a.substring(0,i); } a+="."+lt+"."+t+"."+_uns; } return a; } function _uTrim(s) { if (!s || s=="") return ""; while ((s.charAt(0)==' ') || (s.charAt(0)=='\n') || (s.charAt(0,1)=='\r')) s=s.substring(1,s.length); while ((s.charAt(s.length-1)==' ') || (s.charAt(s.length-1)=='\n') || (s.charAt(s.length-1)=='\r')) s=s.substring(0,s.length-1); return s; } function _uEC(s) { var n=""; if (!s || s=="") return ""; for (var i=0;i0) r=a.substring(i+1,i2); else return ""; if ((i=a.indexOf(".",i2+1))>0) t=a.substring(i2+1,i); else return ""; if (f) { return r; } else { var c=new Array('A','B','C','D','E','F','G','H','J','K','L','M','N','P','R','S','T','U','V','W','X','Y','Z','1','2','3','4','5','6','7','8','9'); return c[r>>28&m]+c[r>>23&m]+c[r>>18&m]+c[r>>13&m]+"-"+c[r>>8&m]+c[r>>3&m]+c[((r&7)<<2)+(t>>30&3)]+c[t>>25&m]+c[t>>20&m]+"-"+c[t>>15&m]+c[t>>10&m]+c[t>>5&m]+c[t&m]; } } function _uIN(n) { if (!n) return false; for (var i=0;i"9") && (c!=".")) return false; } return true; } function _uES(s,u) { if (typeof(encodeURIComponent) == 'function') { if (u) return encodeURI(s); else return encodeURIComponent(s); } else { return escape(s); } } function _uUES(s) { if (typeof(decodeURIComponent) == 'function') { return decodeURIComponent(s); } else { return unescape(s); } } function _uVG() { if((_udn.indexOf("www.google.") == 0 || _udn.indexOf(".google.") == 0 || _udn.indexOf("google.") == 0) && _utcp=='/' && _udn.indexOf("google.org")==-1) { return false; } return true; } function _uSP() { var s=100; if (_usample) s=_usample; if(s>=100 || s<=0) return true; return ((__utmVisitorCode(1)%10000)<(s*100)); } function urchinPathCopy(p){ var d=document,nx,tx,sx,i,c,cs,t,h,o; cs=new Array("a","b","c","v","x","z"); h=_uDomain(); if (_udn && _udn!="") o=" domain="+_udn+";"; nx=_uNx()+";"; tx=new Date(); tx.setTime(tx.getTime()+(_utimeout*1000)); tx=tx.toGMTString()+";"; sx=new Date(); sx.setTime(sx.getTime()+(_ucto*1000)); sx=sx.toGMTString()+";"; for (i=0;i<6;i++){ t=" expires="; if (i==1) t+=tx; else if (i==2) t=""; else if (i==5) t+=sx; else t+=nx; c=_uGC(d.cookie,"__utm"+cs[i]+"="+h,";"); if (c!="-") d.cookie="__utm"+cs[i]+"="+c+"; path="+p+";"+t+o; } } function _uCO() { if (!_utk || _utk=="" || _utk.length<10) return; var d='www.google.com'; if (_utk.charAt(0)=='!') d='analytics.corp.google.com'; _ubd.cookie="GASO="+_utk+"; path="+_utcp+";"+_udo; var sc=document.createElement('script'); sc.type='text/javascript'; sc.id="_gasojs"; sc.src='https://'+d+'/analytics/reporting/overlay_js?gaso='+_utk+'&'+Math.random(); document.getElementsByTagName('head')[0].appendChild(sc); } function _uGT() { var h=location.hash, a; if (h && h!="" && h.indexOf("#gaso=")==0) { a=_uGC(h,"gaso=","&"); } else { a=_uGC(_ubd.cookie,"GASO=",";"); } return a; } var _utk=_uGT(); if (_utk && _utk!="" && _utk.length>10 && _utk.indexOf("=")==-1) { if (window.addEventListener) { window.addEventListener('load', _uCO, false); } else if (window.attachEvent) { window.attachEvent('onload', _uCO); } } function _uNx() { return (new Date((new Date()).getTime()+63072000000)).toGMTString(); } !3ITc pq{ )^G )-`-i-11kvƟƺ$2@HQ}(?(H(,j.l.u.28894=@'fl!"_{\