From 279124cc19f2eb535d34723d5dfe720d6f033984 Mon Sep 17 00:00:00 2001 From: lyuba Date: Sun, 22 May 2011 01:32:34 +0200 Subject: [PATCH 01/56] font styles in the @font-face --- .../stylesheets/compass/css3/_font-face.scss | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/frameworks/compass/stylesheets/compass/css3/_font-face.scss b/frameworks/compass/stylesheets/compass/css3/_font-face.scss index b110d25a..cd2529e1 100644 --- a/frameworks/compass/stylesheets/compass/css3/_font-face.scss +++ b/frameworks/compass/stylesheets/compass/css3/_font-face.scss @@ -6,6 +6,8 @@ // * $font-files is required using font-files('relative/location', 'format'). // for best results use this order: woff, opentype/truetype, svg // * $eot is required by IE, and is a relative location of the eot file. +// * $weight shows if the font is bold, defaults to normal +// * $style defaults to normal, might be also italic // * For android 2.2 Compatiblity, please ensure that your web page has // a meta viewport tag. // * To support iOS < 4.2, an SVG file must be provided @@ -13,10 +15,19 @@ // If you need to generate other formats check out the Font Squirrel // [font generator](http://www.fontsquirrel.com/fontface/generator) +// In order to refer to a specific style of the font in your stylesheets as +// e.g. "font-style: italic;", you may add a couple of @font-face includes +// containing the respective font files for each style and specying +// respective the $style parameter. + +// Order of the includes matters, and it is: normal, bold, italic, bold+italic. + @mixin font-face( $name, $font-files, - $eot: false + $eot: false, + $weight: normal, + $style: normal ) { $iefont: unquote("#{$eot}?iefix"); @font-face { @@ -25,12 +36,14 @@ src: font-url($eot); $font-files: font-url($iefont) unquote("format('eot')"), $font-files; } - src: $font-files; + src: $font-files; + font-weight: $weight; + font-style: $style; } } // EXAMPLE -// +font-face("this name", font-files("this.woff", "woff", "this.otf", "opentype"), "this.eot") +// +font-face("this name", font-files("this.woff", "woff", "this.otf", "opentype"), "this.eot", bold, italic) // // will generate: // @@ -40,4 +53,6 @@ // src: local("☺"), // url('fonts/this.otf') format('woff'), // url('fonts/this.woff') format('opentype'); +// font-weight: bold; +// font-style: italic; // } From 1d32683b5d9a187507c656028100c639dc535c90 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 12 Jun 2011 00:32:24 -0700 Subject: [PATCH 02/56] Fix compass version in the docs. --- doc-src/lib/default.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc-src/lib/default.rb b/doc-src/lib/default.rb index 9067c5c6..3320748c 100644 --- a/doc-src/lib/default.rb +++ b/doc-src/lib/default.rb @@ -130,7 +130,7 @@ end def compass_version v = Compass.version - "#{v[:major]}.#{v[:minor]}#{"."+v[:state] if v[:state]}.#{v[:build]}" + "#{v[:major]}.#{v[:minor]}#{"."+v[:state] if v[:state]}.#{v[:build] || v[:patch]}" end def long_compass_version From 82d739f4dd5548373bb33ad095d3b6c99f1408b1 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 19 Jun 2011 12:55:21 -0700 Subject: [PATCH 03/56] Fix docs --- doc-src/content/help/tutorials/upgrading/im-scared.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc-src/content/help/tutorials/upgrading/im-scared.markdown b/doc-src/content/help/tutorials/upgrading/im-scared.markdown index 090c7489..2ce8fc5c 100644 --- a/doc-src/content/help/tutorials/upgrading/im-scared.markdown +++ b/doc-src/content/help/tutorials/upgrading/im-scared.markdown @@ -22,7 +22,7 @@ what changed to your stylesheets: 1. $ cd my_compass_project 2. $ compass compile --force 3. $ cp -r stylesheets stylesheets.backup -4. $ gem install compass --pre # you might need to type sudo first if you're on mac or linux. +4. $ gem install compass # you might need to type sudo first if you're on mac or linux. 5. $ compass compile --force 6. Take note of any deprecation warnings printed in red during the compile. 7. If you have textmate and installed the `mate` command line tool:
From 852f03316008afe1ccb2106d602a4288c27cc738 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 19 Jun 2011 12:54:11 -0700 Subject: [PATCH 04/56] Handle pathnames being assigned to the working path of a command. Closes GH-434. --- lib/compass/commands/base.rb | 2 +- lib/compass/compiler.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/compass/commands/base.rb b/lib/compass/commands/base.rb index 91a0850f..046fedb6 100644 --- a/lib/compass/commands/base.rb +++ b/lib/compass/commands/base.rb @@ -10,7 +10,7 @@ module Compass attr_accessor :working_path, :options def initialize(working_path, options) - self.working_path = working_path + self.working_path = working_path.to_s self.options = options end diff --git a/lib/compass/compiler.rb b/lib/compass/compiler.rb index fe00ef66..a10aee99 100644 --- a/lib/compass/compiler.rb +++ b/lib/compass/compiler.rb @@ -6,7 +6,7 @@ module Compass attr_accessor :working_path, :from, :to, :options, :sass_options, :staleness_checker, :importer def initialize(working_path, from, to, options) - self.working_path = working_path + self.working_path = working_path.to_s self.from, self.to = from.gsub('./', ''), to self.logger = options.delete(:logger) sass_opts = options.delete(:sass) || {} From 6170ab119ff2c63c2774f2aa86a4333848b15bd7 Mon Sep 17 00:00:00 2001 From: Sven Fuchs Date: Tue, 21 Jun 2011 16:46:25 +0200 Subject: [PATCH 05/56] Update Gemfile to use rake 0.8.7 rake 0.9.x won't be compatible with Cucumber::Rake::Task::ForkedCucumberRunner which uses the RUBY constant, resulting in 'uninitialized constant Cucumber::Rake::Task::ForkedCucumberRunner::RUBY' --- Gemfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Gemfile b/Gemfile index 8be637a1..c66fc392 100644 --- a/Gemfile +++ b/Gemfile @@ -21,6 +21,8 @@ gem 'mocha' gem 'timecop' gem 'diff-lcs', '~> 1.1.2' +gem 'rake', '0.8.7' + group :mac do gem "rb-fsevent" end From 6d2f7f41e50f6935fa7f26f50645655d0e1f043e Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sat, 25 Jun 2011 12:01:00 -0700 Subject: [PATCH 06/56] In case you want to buy stuff. --- doc-src/assets/images/compass.app.png | Bin 0 -> 51618 bytes doc-src/content/index.haml | 23 ++++++++++++++++++ .../content/stylesheets/partials/_home.scss | 17 +++++++++++++ 3 files changed, 40 insertions(+) create mode 100644 doc-src/assets/images/compass.app.png diff --git a/doc-src/assets/images/compass.app.png b/doc-src/assets/images/compass.app.png new file mode 100644 index 0000000000000000000000000000000000000000..1c761f0227f825848c76a3f7a757e89fda14d670 GIT binary patch literal 51618 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 qa@J zgwflR=W@$7Mol3xbA5H8*n%EMAJ@~9ggG`O_E|7H06P+E$KRCXjI867l}Yc@rS(_9vMJ$3yoPmB9ha5&-%N=XP860H zrR2=g=Yhdb@>K1)hMFFD)F9j(%+bp-#Mzd3Ws?M=0Zz-g=nY7`7jiVp(e6{^a4^B) zUM@ohz^T1TNo}x~%?}k_tshOj_Y}riQO|_mrgw zlgQWfE<@9j^RR(uKd;^Fj0H#KP9q?Q*ep=g9$gCnI_vp(k~)d-bHxIY)$0BbFkIXHVtun;X^;-y5N711UF&e3(^Qp#kGMwKfpk;a&awzNR zLqGy{CO8#Fi5(9%jLz~6*8vBoBZ=xfH3hA;XGJ-$uK_+^qe(x=xO>%-a3q*nW-ZvN zoocV{RZ4o#GER#N3oqp(7ztK_vkt*g*OpK!<-Ik}Y~L8`UDaRjsBE=UbydAoM|*#) zZ*^bq>3!8(HX?nm`YSKxEx0M!axC0*Pg%2{3-O@?olmRo%QtS%fs}1FhOYl}_)md$EQSh-ur0>-S zEUffg<>;^kqxY4BzwxAM_){C~Vfw!MKM&isYUQgzU~jUMUF( zLasWjep{sKY!O@O`)bbwA0bE_Q~B94bWfc~XDihOY#~SQs!l@0cGzgWi~%v-^s@*NXZ2L)!DE2`e9dK`WMJyFO13?^R{O*_1>;Id?GrI5Sz;HA^quT2dS;11 zxD$?q6MbiKTPgo)&#J*!&sDz4)^8mu-`1(x_o}1%lis)Qs(rezwkThlpYH2WKPi8| zybX@}miD4PRI(M)Z(AY#<^yxmJ$cQ^ub6Usa|P`8=B2j)Xh4_0@JFGNW!ZOfiKixv z3yj6*aC5a3wTM72L5Bk_b!5jM(YUj}8NR9O7zd1AX$^D%&2qsDKk~X7kd%~SFo-nA zm5xjkBk;=T(QRxIm8&H{(Q3`f!&cWC66+)elVD_4MkDd~7%-#2DaLUmF`rb1jL%Jb zfP#c3HgeoclevsuoI0WpKZ9o!7#P#dXaEi}gF>2tH)vgUGqOvhs}CDi2I;cN zHO5>)G{R{nH#Ltaok&Dn1-gbg7*pTF-&y+nE67i^L^>luxkyMPe#Ui8b6zf+dHH?xM<9(mI2D@bGdZ;=#=lf0H!bHb4tpe>#N9pql3~k7f|t!C zOQ$7|myRfW?jyk)#vogYTNYljKQa;uSuz$D!2HBSYN-Z+atN?5mWWnFzNJGin-04L z;8e`Ag1iE0aPm8b7}$f3DGVi? zEyxZ*wVL6b$D3s6QWPMPBpDKeK~RZ^Q;H|kjB7@Uc2Je?<0caESQ2%S2Ezbk0L+tV zDXesw(p{mYrE`SCMS7euFM44qz91=^VXk;D#&JJ22N#*ApR2Np)R=;G4Bt)TYAw|u zP!0h@^pfNvWTkTTUH9}%_mu2)`TK8&`si$=A*qLB?=Tm9P_@_8d`5ew^*o9+K3w}#OjrPmh;$IU&}sLNAw(zS$^{wx=JNMh!boI=XQX;5SMBdY7wl8X{H zOWVP7cl`-h{rP1K(CW+y7D`>lgVz+)IFn{DvSeZ|s@}c;osQVPx+X3>qV$%HYGgQ$ z=B8$Z8JR{ZeS(LQ;GSlDKnHP9AVbUZ=;>L;b=+5CkWNt9|bt^8iyvk0HqXC^-X z{b$kSYo|nuG2%)T*PQhkG)*`jYhuF)bFKc!h8PyzdKM;b`yuoWZ^TG`5Dir2b962l zNsLgcX-=GsO2ic^g+J1sdDW7az6LR_{lER%U*m$`-o`!l=x!XM7Z;_ZpT@EArZint z>-^jahz84>ue}(JZBtOk?VlRC3rt&UJElyVjvH>gl|yjaBRCupyq%QVPTDGDyz@{+ zFVZ;a;r*Tsui_Wy{~qhr!LGtWP97ta30Rb&h?dNhu|{^M+98R}2K zq$L5&iPD*qHh;0z-6cS=)nUQq7ACuwd~r z?EU^G(%vBMxNI>Fyow83IL6I#VUCy4bYt9Y+rcO;9*%#L!;GL3;`YYzeq4U#6*%N0 zv#S!l3~1WLCrmBD8zeKK9f7mNob%-zJHtA2+F)F%Ks7ukNll{6=NPAru4*T7eRgMC zCv|(0q)!_nGQcPa-Am_|0*!HkvxX-Mdz7V$?x6EaG0LG2hao=h5G2dLjD7)H`(@47 za7P;)#$w#}gqwmkw@lRxAf2Ar4$gekQVjwY0@_K6(?psVmUo=oX*Ir=N-RPz9qNG6 z2&8Jt5x_DC5&L)@PgId433tyuW}}JIb`LCyqa(B)eG9I^Iyx9=M19B0G*U6}(!jb0 zaT6wC-u#*99DD(f|K!V<*)$jJO`T{9?T5P`T!A5mcj}LO@T=2L!_dlAxb%UuaPUF< z895jfi>~8q2obDD8;R@i zvwwq?IU2J;6w^3`~PwI<&O$GPL{wT>SC*Xyvv= z!Egv4{OUDWvyodH(>kBx;-f}7HKiGCwwthVQY%UMy7BPsSK*L$2IH96j{UyyJ3PKR ziQZ-!HwnEEr!|8aHrsLkHKbw;uIPEM%PuT+kF^(5t(Db|k)h?yvF0Emxzp zu?Z(!^dPqkr@bLV*Jv`U3~?W#9{}SLQB&dGgIur|rNrZJI zuAxErNKC#Yw~`8y5Fhyyj`;YQ2<&?X{&4G!I4*xZ&OQ4f1lzhf)amDv*9my_k@GR{ z(4XOiPyGs4-E%djE&3xqF#ofNwsIDMc7#>0K7%XI;k{3N1z-CngDuXP!llieD&@3g zN;?vncxYt6v~MKSjC0Q!1FolGNQDNj!RJ&eH4!K6DGaS_`UE}Usd{qoar(!%BV z<2f&3Jw4Z6xt6=q9(xaF2OSv5wd1;%9!0jL4I{o)cQ_UoU)sh`;a{zMNFH=m0KX&C>|CAZ=~4xNwuv@pVl?Tw}RdP?neG`6Whd0cea z{W$7~d1y^9!XuYliJ?U#Anpe)m)cm7OE*cZ!z9`X9j*BOowr~$nZV>!Cq{Pu4Ssvm zf$$BlMt|KdaL4I%Q(VRGTCg$7@KW5KC=`+kz6OWCe}A|(YIP#rkhl9Z7Crhc^gVeM zUP-j#{AYfH~vimJ0Jc% z+_p52k4>Q+fkOsYcs71>*Dd(yyxDZO_F|Cn46}@H5T^$rBds9D*+CbXjyK4yxad|J zk27ecryd3Fn(9k%tpTSEb6j4V5mTgtRD@HHaZa12Qw*@-s0}a1OCxXR_ihob)OV#V z5&V`4D=~<-hv1cejH<0WJOz6lzBA&#cnFUz$l<=eR-Cc(bj-}`NO5!}9)IjUEPRxK z5wB{)#^E7MXm?>jbRnL)a4lYV?o#~i`iGg*;YJ1Si~2CJF-gN%Ke}BT86tRqZngDT zlUaeZb61@9frC+;Ldlz4hd~B_m_@!d6kCf8T-f8^<~W@8;d$_I+pSDLX9K9>hUkV{ zEHKCfS!9~(btBbuZyf_0GM-$X%YYZ&x&&uGa2sA58pd+YH^%EyXePn;2bQBbJ(C-D z_AsIe*B8*SsGmd_3N_%o%YJ})bxmBx8sp}V6X-2F3(<`mxJS@|*te_GENF^y*I4&q zM`Cx!575Icjp&_>2G%!U=s^$X_$N|zUvU3AxQ?5Sx&ArWz%8b{oN;i^oCoK<+;*Dn z_oRFAz`Zf7irU-3b-kPkypwfSaE)N94igSO1g&RXgg^dnEncnL0|(IWy>a`!(28^L z+pm5XkBrR44cp|<(%yh&51fPDkN7!e&YO>O&ipbCnB>Lj=QB<`8qvyqzJ@rib$Oj= zr%%1wA!DWHz-`LXsOF~ePM&w94mt*r0K;|gckae%v1OPRZi1(dzVCDrSRCPEn=l=O zxZgozD2$QR5IcASvg`ZsiJkYxzosD#4bBw(H#$=rC~A&f}PzFrQwalz-hCA z1lL4!ZGl&jWavkyz>RYmHq6D4(jNNCZ=ken;5c5Sl_H~w(?aj0cVaR|;~qbW(vCoZ zTS{z?k9HWc9^NmQxPY4P*CLCy=5{RS^8y#FXdz3XH;qm#t?#`7tL;nuoy z`o88E0}ja)HuSH-!oe86bK9*r{d3>M{`2cFi^k54&kkT^gNy8kA+Y_5_RIKjB!m!m z6m?Q{j>m^c{9It9fFoo|8~D4uaUGqG;#8dfj=ttb#-?lMipDmyFI$F(lI^HtaFLXU zdyxC%G^BN)jrIXwEDz3NV)*HWc+K@1hbVq-II{xlAHAERn+7*;6EX~4cIa-v##g&A z_v8=b{k!jk51z0$4&ImWoidFMO?eEl4V+3qgu9;RxqjYF7vMa@Svv;%F+?dHCsT~n zQ_W8;$NJ^mZHTiZF?vDzJzU$pVgr^@8wfLwyPJ5F6H<}PR4%|;Ar~a$sik)p1dJiC z+*nsq-QQ@;v-d2q>ui&rjW>CVevF>*#{okHN(mY@l@XbPRzZzj4=p53$XIkZqi*x1)g zqGKLh`6fx6qD!xv5oWjmltfP=qEk?sJBxB~K}iYhe%Mzq&EJhr?e#URSdzfn?mKbB zL7$}d(uFS^wHJvjM<`KxGUh-(W6%XWlX2KrK8V<3-^STLdKkApcL%<6;tn|NT29lo z^&s813aQ2pobCY&g9T2kClTpgS~e z@Eqs&;;<>RF#D))qrhM$Jw2=N<1ZhJ`8$0O&n|g|?h|1QZhR5P&z+AWKlx3(xQ+~3 z``M8%`lLNk1Ig0Ic!co~YU$kt0kfCgmWaN*n&pH&n&8Wym4EYQemgi|%m*1(GdK~u z9I_*Q)ScL4W-I#r4U}F^?0C%k*eM6_(PQVrIh^KR_l(Z_k<&O9e;EJo<6p(@$NmoI z{P+1dfE#6g=?fX9>XzwVJKq=K0|Bu&`>Y-*={br zdGIXUch)J`Y4;-T3qc}&5wTQyoi`IW-A8q8?om=IzPxqLQ6&`<@10Dx9<~mn&+;A6m|eCB zwLwd4b=I}+DCP9f-}eqPv4b%55`x2#b8rDDp$!4iFB>|)@CvmjEr;8rn;-% zs;?H@sND+4p?X$I@*I@CLU2(K2^(lb_0YGvuivVNt&8sKusE-jf9=`77X(VZbW@wu zIg~7sZMyxgJlQ(xEaK8xow)q0-}c%*Q)8@?k$$VwlWpneTTWsqmWY&zB`oEw@~b5= zCMC~EcIht_X<*n4_c--~$ktXv{jBPe}aE!ogS%G)NDr|YfBU+=1} zO7^=g*lU5p-g`HLr9`-|*Kl;5)gHa0Ljo25_4g001BWNklNj$oy!SS*J4UGzp=izs=Up^*2iAk@9ceDm;biUYv=a{1k9Lzbm!2uj(2k^ zub&9F{8}AaM|nFeaocBVo1RNGc4<4OaU|t!^R;E_Z0}Xe+7fMfoozm&8QPZe(s!fV zXYNG>d*GRJ(JY=V(FpojhEn6s$ipJiAdM>o_SE^kJ%AujCU--j`7&s zCJHwv%PcnEDEndSS9YuR^F0Uwquy8RSlsu@sF}u~#QtsOj_D90V%N8Crh~r+VO(o+ z4Fc~f2y6(IMc?XPO~wDef$Ul>YY-3wDthEu5REq0iAl&hZi&4b z)3Eu}&NT?sAn?Br0VC-pu`4Bw<3-p~2XQX%!vWz>QW5{T?hyDWDC}XoRu!XCcYy0V7!w5GD)5Op(+zG}6Zc*?S zPQ=sr$mvB>S4PLt+JCz8F#nRLn?hN+8Ie{g&#j~b3{s)>>}a2@!j zI^{{kio!ZF!g%Y93+E>hYG)Twc8EbLliUibNTODtOIsIyV(RW@U`a#yB6bqFo@*CZ z5v}r2d4BHyp5exi{KB+J0X7WLZ(?|P2Bg$;F-9eQt9Nu5#>gVHthJoT?K8njdDT)4 z0`DdW7#1sHPzSX{u4_x!TsvIZxa#Q>^ z?e;=>%`jDi-25>_>F!4?&M?glj1v{UBqVaiY_|8+MoHob_nwzG zUM7<=0V~|xKtd60RHlYAE^Z#Ft*W&bobpmUJ4t{2)^lb8)MIGICQvJ5qs;GXKC%tEreb-*U)w5!>`59qV8#5*n1#awEUs92& zuBYe(RL8yJhlUt(mG4CA8ReCANHbWac2bFs3^Tr6oJ7f(^^7>{ZJDCc369@!YyOaGfVuVnZjGCqzHD1 zkz?&3bOTECS;mYIQ*@e&{}2df8>@8H$srlDPD@zsGfdx{+Fd!b-at zz>?F3BybG@wDW6GT7#su$efZoO);;%+%p{Hzuq23YvqOxMFwz8P-8IVQJQP0A;Oj< zFZt!G9@Y!G7 z>v#FJC2o7)*4^H>*Kg&_-H;IASUt&LkdpQhZY=5dbDYfabb>q0xVSx%h^|QDQ$Wrp zZq88P29nVj_faFk7fJ9k;EBi-eU+^!X)C-p*w=&G@3;#++|S*|=ULv1a=&}SP#8{I zgdGk?$RxNo9f?8iR#xoL!?bvPWvFn3*f zdFfJg_w;h}3hsXE3z+v*Z)228Cd}p;$s~7gVS%Awop~;T)pHN`fHzis8vJBnOeWH1 z69;YNAh;wFakCad*D6zyadnofa;XmC@q(xJeGLL{D+J8aS`oa6Ny%EF)nSz+y(q5C zZ@nj?DoOX!SYO05YS?eyeKUVNl(r5T-FTQOHA!`r>!GAo`Cdxigf^LIYvcI2A9vnz z2R7syal{EnBSMWJ7fs^syYI(K%hz$2R&L?c)`DXWJpd8LufO-6yV$k}?!5ahJo&_9 z_~21TVcY4Gv0>d>?lgNFx3JnkV_h94PMUyy_uU)Qr%&U4b3J(Mu}3K76X@vZz#|VY z#FQzM%#O1mhNM35p#8YBOoT?jv|$WaTzNS+k~qdR`Jsm%!d`prh3&T6&W!c7ILX5H z&A_DgZVdwO6a+}aua8r$gcniEIHjXR)UO-!bgkpobb_fH!c>OnTj zJ?httm~r}x2^!_S7XHhH&RG(49{IzRzGzY7A}4fJ8&<&eGfSh+f3@> zUTp1T6;8Ca)40ct9y_<$8FSmG!O=ifyzeF4a`}x|(>;W_2ON!q_M3)8e?M;c(=Avs z!r=oMiD&I%EMDG?`$+t|bxlO)+=-acn8K1*2Cy{CEw9LY8iOvp{NVNIbGDtZ(0#wqRDjhN?R64ezh>EXNDtl|5Rm_|ZtL0Jc``Yuj69UFL z$4GPLDq^>X3bDjZ+rIg22%ai!>3(VaFQzeG9w1dXPGg!n#{kvw8*aFflD!WBe;6rl z?AYZ?Pzm79u2l6?G@yw&Y2MuI7{k5cVp$h=SZ%U2WW?lKa6wco#;JF&ui*2Qhp59T7=)p}A=TuKUY9ShVmJ%-XGm43Dw& zxZBI|Cmn*h%~KJJa5q-^={)`7Q&{@^v)KNC=@{x=kJr{GF=zHnP8+(g%{JTMw9`(b z?ICFV0kly?UOQN-&(~570`C$Cl%~avivG_8Z-|`F6iG+Sz+UStmEJOl@e+M1Bab=F zeLJZ}Ps7n4*o~fXH17Gig;OGrS0DQe)^cyRY%ayIGB>-_5ToGcbX$ljcnYD`$;d2T ziCh14Io0!RvD^GZF>PiS7YF%}<(R)I(u@?_kmQ`bpZnxx2e~60x18>rJ_VU5gMx&D zXzlPJK;{$U_#jh=8kIa8n24@Pli}djQvuEbcqdN5#P+ALa`6j@?==g9E0$t?JcuK9 zm_u6t_t@h$&n<0T-1b^?`&lw7&f9C)QX~3zNq4VRLl7{&_jdeVPS}#BIz-?u8rf{p zJLO5wN&e-x-t=!7;JC-BF@nWh2{gC0(#=)jxj6O3aeZrB0}8KlFLrG}6<&b&@Ea_+v!z39^< z$_T4I$bH@GoBbquANN*I(Q5Cd!H=GQLmuum7s4RN_6_u^^)$9&$L%Lz&D~3}^i}R> z|MDvcwr_{7wk8sHlCur8{&NPx&7q2zii0x+9%Gn%(;%sRP=mlb1_5Kee_dj~uEwiG z-Ir9g#9w}|oI#AYb_o)t42U64ooPGgEZtty>C#?vL3-bbz%_*@1|y5Q3}aH?WmT8Q zT$-g} zBc=25<*#95Z!bLDb~QtX8znEDdUD*K-A&8ApZme5IWstE%0x8#vsm!N<9K!L5N7W* z4?)g3CZoe>Xlg=|S_^ld<_MfN2TuDDdgBF8?fV)8-c|@0^}d{_OOpF_)m_A$r@y+A zWez$U_cq?s`=f-vdH2oyk)+RYE?mT&K$4P@JG%y4BqVN~Oi`_cE}XLG*+b$l5qge0 zsrvk6N@M_kyYWWUPnw7+(O%$nJT zyPsYKU&k~|pVJd-tljiq=bU}PL1Lm`T_!CL zHyXz{9*;ZYM#Xoe@)(H@z!Ra{D_6NKcy1x?dE#jV9XU*HpNM^S-5z18>j{4|wwW;z zkG${#?p*jH_CMuB>^f%$95!5!J0JcV{&vSrTqc)6eM39u&YKVV1tFuE0ZQp?p|qWJ zi1vnpJC88@+$uVPiPKupyl5qwcX&VQBV>ql2@VFmSpMn;^io@hCsOn=psxWPdupEd zZ?-qo-hZbd;OLw@oxyHP&N;R)5xVZ_&~GmtRP41xuHC9y%s^?pTUF;A97j7N2uD|A zwR<}1{W%g$)GTu?W}OHZduTALN2r5-_ru)?dooy&n~W}R8gV{r%=xe}7r+qb$wI{x znmLa5hnmnmJb;FJu8teth#qGbnvz)zbVd*vc@2&J>2%f^#6WBWRNl#Cn&EG9V-5M= zgv>ewi#e>xPvJNp2xU`73kf=d*eEZ*m#)S??tT%oKXD;;n%)op2={3ZmVEG&`DWy3 z6Ub5e`|>eb5y*Hp!O6n+&7Z3c5&pL=h3|Czs^$OYA^Kka!t@py@+7q_u?rv~Xx-Og zmxt=N#?w~9>s(4gN~L4dYh#?;Mf$AMCmvjq{(iF=Yc z8sq{y*mzlX(QW+AcGKTORCz zyK63XZ%ZJU4AXYdK-J%iK@xkAZo>uI8XBq9=NUYd3w4ns(@Ya?1+C?08$2A!1b8jg zzevp_!~0Ht6DXtzh9MN_E$@Lbd0-+|5h0oL!OA;rq>C%G+x&;A z3SS^W?>*KlPPm3h+_VKaxv)p!I|7O#%x_|G`uKBJBu^r(qunA+YroS$-vb&L9b7cz zE^^wBMnM;^WyI8~KV!t?P{T)uA2ByCXD*zax^z)1acO#xF$J9bt)sn!$>#p2^> z`c{1_d>JDt>low^O$JuEF$*@P|FGQz8#P8UBevJ&VN8NVfXx@vvw~x*imJWzHb7wW zJiR4mOWexa-m^rnYkSYWXRpUw7cG{NAo;r5g2BT&80$hBI6IJ_ zJ)uZumZu@m!59HqO7KRm|93Q!C&Wm=oQjkiGHI9uB1b6MIJBxyZpxJWq$VdNzl&Oc zk5b<&?SfJ_P8j<6tzXC-r=VGTW0SRVn!3LC1~4X5xtTndi%b;w(q^wb0%GK_tlCu2laYMHZcG# zca`+Za9U35*24ixHcEA^sEZ9n+0iJ``L3jlM?o(r>GM>tz3haN&M8X1;--iJm^Ud(`e2*En4;7#>tpyYKrnn{p!5vD5cO44G$c4;-gLV9VaRHUPj zhw85sEP3pula$aL%jBr{rl~Es@-!s6sku=4XE|kQ>YJj}3x!JoDN-pC z4OMuTq&X$pP;`Wr@ifAX4Ro~0(+iHOG6_4zF)v@GwCB=W5|TQ;kK^cEmdt^c^zkN1 zcqP?SQeOUB83@xvs7OP)*?$y!%0GjJL}Lu%_Yz2J`sUa22nCC%6#Kr zkfXzppYV6pwV7dqjDPj=)%S+U2vQuUQ=*f}Mn!03t$RP6kzL-sN_yev5 zpp>WPKotU6!cwz@Vlcze#CV%u{d=}aF2{Yn17z4iGHA_GGM<6jMrQ1$l+Wk5@Q5&q zMCe)_nh_+5Zu88;VS z=^zPC%WKD*MCgKnB(2%qXVbD-F#}0{hd;q3ym@r+zN?FV`}tlHXNcB&s{Lu&0jQu; zBWDMv7C>X4Hmr0|dkIkrA~B3!GO7aeaff&e=V-*^6k&m}`vNqilDGw*l4>vMNR^oy zP9i=;sm}nNVQLU{Y=42{ergB~YBpNypQAYSlJceTywfQbqfSFH-qqDkTMHQxwUaD0 z7)3pb)89cc5VD-sba@Amq1&=>k|`2z5-haI)Y88e0#3WwM#WlneKg^#!|Pr-k=u7H z0~k-WRR<9i`v8q^byU{_sG~)F)v7*pc82H;Cu#5I9C#e{t&L{+Y=)|=mr-hcwC=BG zB&|Swfa75i7p1JEJPB1DF~za{c$00bB)l{d)mQl|=^Q0d*Hb$QCf4DFsGo*8N_GytQWvP`a|lBrM{5>tzV-^-v0yz7cO+)S@Yg?HjlVtjD&J!} z>2mDT(1v*_2}W9UM0Y8A7`oxFW4N&4wOBn!dtoEJ4XG|Csoi*J-%y>67Dop2PA5rk zF~D`}HX4Z^3YFGJh(Xpd79q%l+{I?Rvg$@$deJjDNSF>@JCHSco4&p5zil_7BR3Mx8C+Aocg&l zu)42+aD+>GspF_l1!@SIEntnu+x)8EYe*)1X;!1Br;o&)ifPr16}Yl z^LxB?4y35|(Qn;1!g*Uw@48!2xbJi%rk)AcbdI4pJ=IaT4T*tmkfe&A>!ah2tC3DG z6EHFQcP#JO0Zkg;(;8ftpaq!{-y4W>T0Kg&mt$(G-)_zor*bre6@pv{BmaGB3N$Ra zXdvW3fYZpF;^KK@kw&vZ4+Cm4R2RSXkox?T<*^j4;?8v(Z*%C8qUJ%l9HI(a%=pn2 zr8H$6{y$v!cbu@_Zmb85Y(t#d3l1U?+#baMl719eDbSKg0aP zPe!YkYIQt{7w`Bj&iv)|CI9Cr+ zYf6O~V^C^$wufbT5zcAd0ab9q#KA>S-WdBpkwc|0X9lRg%QPuCf$I=_@`1SjY{X}N z7CtUP4urW@g2Rn|!mh>NNDaitzSD=DhT1W-^K8N{fT%H4hT$Ot%g_xv$$bREbfIAP>R2U|6baHq^qi@a?=9R`>@2%vNfoZh#7Qx$OrQ7Ixqrb85 zzm;=Q>*Pmhm|~dgI!_A#cSlL0WKg;AdIV`uDkgjwqy~_q!7c5iZ$3BG@OfzP z>lsE%og2w~8$IdDCZ zxzsn}A3}u2!ORHNej2?J;WkbMlDOQR$TPOUu!bz`mk8ygJ_BjiF1d{5+O?66fOU&86z+>!bn8*tyn_~sNA3j*ODc$ZjB97 zNuXR=lzol&$pp9-BA6olTmy)aA$P|jRMpc6rUyA&P=^t+!~pAf<+XR>!zUjCZ%c%X zlSWKV#dZ4Q7$Bj#T`V`)f`&Yel;j&J5?xc86R@rp`YW>Sj(WyM97NL5guW!TCOTeq z5_Y~Q87#*^ZH_nwb5S}!G2X()5yFbRhr^?O3JH*qle8nm2p2TdMABE!8Ix%=pc3Ei z0nUn~z|Y`{G$GF6o_szur5PkX^3)bRn_?fnm45qw^_$J=eK~QDCh*bfz21F0iQYl+ z9^&*=LgA>{`5pZa;j+hbIPU1#@Nqsn$$%FcJ4?PO6-lgS>WiIA<6MMRqbK1+Q*I9W z7Ttl59X|sTnuD0oHV5Ck^Z~l&vP0AE*U^*1d4D(wbrWV|w!a?VJO3}-J%@6K+Rkv| zCH&$uN8lH~x)HIH}6(|Nk>} zXSP>%m)-@%E*ceMN5yUsHO45$uF^)_>wJJiLaPom=MK=RT*O^Ev1LSyj+f2k~}4(#wYrBH7jsQy`>8&i@7l zK6Talbmi33HEO_m8qgh*auwHeQDv;GyDeA~17oVmX5#3Phb zkgx4V?x)x1%vDo^IoE<}YYuxXD(^uPD=&n~c@G_Zk!~pwt;nC=@M) zf|0zj4|M&9j>eB4V?jzxDi~L^O7GwCn1+qmMmdE;blBu$H4n^#5I!4wc2Q~=auT(A z^|iOOQF$5l62%&}-DE9;_oh1=$WfT1e_S&~M_lk%y)*MxjUF+Q=Q&CjJTzTRtxI*o z?+(z$eFrM5a-^PKgabI1rBWD~HAcGh){E4yETH~H12ty-9rVfze}g%3U%7yvA~cfB zfgh%sK})dA&;PdZRmje}@!kY)-}Pn&-rwH7KNjJqFc}J2$lXZSb_k~RqnT>Y+f^G4 zKyCc;p@d0*$ua_GmSK7Cw0s5ztZTUAuyw;vg)eUMnO*js^kZMo1x+R?ymmG#th=R zFhuoTN2%)HyItGuw6hLB`Y4@#+L3zT<}3B^-~Op6wE;=u=mh&nqA5~OJAQz?FVx=V z(?75Kvu?TJRh@nQDH^ls09|qNfqLMnMZ#alLQSEblED~i(#%I^D*uQhl?5I^fE460 zqeo~1o1h_O`qjP%=vUkCs2*~WI~L8-wHIHky(S)~ea^pB#~(LQ&;MbPM$sYY$~iGz ze&toD_;2d;Q(i(cCU6k8sk1&yFU-7MyNx?k!?zx%%Pv1lo%84Dz&$2t-inl#Q1H}+ zU!sg+sQR~WR;GBO_9(BAZ(%|uNah7|uGN+&Pg8o^9X0*gS?ZtPp!4sBiK6wC7nG_F zgrt_)cWUPe$7}1Ou|M}f001BWNkl(&M+=LI*GjseIoRwwiS-f0Mt%gEmiRAnG zZ0-^z_Bmc-cbTBR8#S>I`e`v*#E_-8Ve7W*yo;~ZfqReEkO_C;BpjwoZhu!79=wVC z;Z~#+YUd{Bf|a+2M&)j;WNuQ+XWf9h*rSRKMrzzvyDNX#FVx~IM1oR_578{c6J6Z4 z0Ownm_I!O?Bs=#)W*t-n!$R68vUUBFk7@GuyD8B*U-NF9q4p+hP4NCQWERHEhk?4< zlWm1R0}0nhk|b@y@|J7G)ZV0v^S%!B@AdU{5Wj+wEc zihuyiYR=Yx(R=7O;{%!*I7BB-+C^Qc@BU=H3LBTnDL7cSKmDkFwapkg@879QZhlUi zA9S)_xNE9%eDn%fbf>1iJA^y}Qk=WnlpjWlQ}HuhTB;7irVIF42O; zjyBzXAmAfS8UXWs`jzJuJ>ni$qskwMH0^29!x#NkIqMy!Hy`|~O8hD9wapMcIV7rs z{~n_^0gQzd-1~33QGA#vX#e%g z6az4dc{yN29e@W+Dxlr5x?s{Eu;clvQs6X^Z47;`(jofTUO=Mj>_=lr3eA8WY`$sK8xT`bNiBAE?C(gpg&mYqa{Zdhh~`2hY7asWtAM#A|-QkA0yXy*;E-`iqZ9>dEYEz#kp9;>2`27DMz+Gh9|HTEoW z)1Nc^Mkc)&dv`l+H-0+>T9T;aMSzQ9kmDS9ZN_Utv7%UsFlq8ry?lFI$L=*$`8i=# zwJ%VO6W6EjVKNOH?1m=uL(Ph32C8q=V))JK$x13e*{G+UY}V4HUug5bsN1<^+H~Tv zOj1CtpMS3G&MLPQCvU6cHEF#eY9oaEnLnz6;!2${X_5w&$JOp@)~KPwxxTpSh@iy! zmcX`K^t=7`z(10!rc}AYG(SCg|IPI2hd3R{+;YsE!p)IQMr1tE2?O}y(H(D1{#@Q& zN$(M_N7#1p-govMV8yPo>sNihYTGJi@T1%)s(YjjlFsofHW#RBXAAv#BUCUfu^znG z#)~b=5JJLRXBmgMx8>?*f|lwDkx_=*jV;&JRjmEazeAsleN|_kf0{13XkSfz>?|#O z?SIrvOgPtHt6v;(s}A12PiWxJCht7(obo3eq793|@9PYpaa5@Dy5cuFo}c|IyO^iVrP60?d(L2ggSRX(Jj+Np@_!J6yl+1A4dq9pqC?^&U? z)*7|u_hG&O9c}M)=igGVi*bminy6`HEp-<08%;}`<7QH{@#+__A{dQm_qO4zVGKa5)fEQH6}Y%`_2o} zs6Dhrx!GE)V&h&Iu?r9GiWMtdSnM$9I;Prx^2sN7y1}l8kOsx_K&>rN@lMC;y3b>} z^PCCF{b-h!#?u->@lGesFn`4$?Y8H>+I^>kwfDArXqR1w5FBE`kv7_h8t;Vg0>=sW z;Alo{;13w6qLOX2=g}wX%`a}$cE#1Y?YTFVsqw2E!VYxD^vad9wehbv)P}74JVI5$ zc%#CJLi`ADqF9}>K=ciuR(9j?Gw~H?Va8qI?1TAmm+4}*Bkg=uWEi3-;IQjyqB%F- z{f?FudgeXq^83SJl4SG|QD}>OrWrTBrcDo@C|@E#Sg=dQXk%&Y+Lq8_MV$4iL|my3 zh$s&gpa`y+!hu#pI5OZ+Mr@E?WC3vFFddSAC_iqm<=PPB22++5f%#;c`C$b>t?CHV zJcP+8>)?PkzqZ?V12qIFa^m+sd-+)<$4%6>g~i+$CQTbq=DvLOVJ>FB@xJOY+v44M zL}eV!{NPnZtU8b|T3axtUymE5);fSivHSO)xW6|3<^Gzu|6y8xs1;b%QaX%7l!hkx zFrsdv88M2f%oHMuiSv*oERvA?Ddw0mTIYVE^!x|)auqROYUhWd_NE35 z(P^jtLT^slN4K1Hsg}n-)m!hqsav0_V={hI_&%hbk?+M z^u?zuRKH-DW_9<|;M`JGvDQ@5rj8Zw>S9#a$vbVVW&}o$uS3k;;#uvWFMynTzLXzlrN%&tnoqs))eAEb@kE+y#fL&p*%9 zMdw|kId9C?t`mmnf=9`>AO?^4R&~yH+V;%7V2n3w!o(Bw!aEBTZC$KuZ=a^u>2r{q z2&o1F&dxNd1&yqN5ML%$3^Ro(Vvbd#6=rdrT@)ROwC8YMUq$+Fr~lbAtQXGTTrWTN zmKr{7(bd;X)rDwmQ%=rh{{q6ag|NW@`462cbjo4EQ2&3~aMgPwc5n2S^7fsp-s3H| zeO9UX9$ePHqV0Icf1mdr%4i2>6NdWaaoq#*%5|} zOt}QF`ZK!e=38~q_2;3c;_=?_x0-a&MM`!0Twu!(>T?{EAschTBw_1fpDw-XQeAz? zX}Eu+k(-Ryv~zx^kqgYg!zNGCl#>ooO>zkhK%`r5e^^_N z1skBYRk;NPT0Hk33zmMl&2`>|mJW=m{QKQRlxLPwV zZ`OwYGgY@ucu!}~1aO3TAKki8O?&@YFFY_p+x~u<_8-49h(^TK^ZmMT!`-FL2djAS z2Fm-io&+ec1Te%CKJqwnixh9HqVWk#j<9PIpGSUax0>qEM6w6!>c2jso+(%8kb`$5 zotxT5>iRFg>rw49VP||hh$tAG2`+Fmbc(~)`k$)Y*+pPr& zbC~pZiJpi0#TQ>-zM)=ysUfWW_L=21j1DTxD#JNEZvHVuBYoK&EdxnIQ z6h#_^MI=>FywcS{Q%M#;YgavXaiK~}hT>GCGOwFL4oW!Fsink^BU)LH^otg&u#^&3 z)VV}YH4QC_5XE^kvupy%hC&_+b#n4b0n=dQ3cc_Al#@vn- zbmiGdrDW4Zxi){-GIiCJDm|nK;=$2LE`%a!E$FD!dL>EKH6@kz#SO~Y=6Su{^rXg8 z4Y#zhR?%TYRDxfjgG|Fv!l&A2uhDvw=j*eYzhP6iqN(9?!7hrmHK`((S^~_kl?e7O z3Z#au*G~x;V|#mv%Cgd!av9td^GIIWSXD5|B+m{EBeL-*S1#*|*3+%_nva-^v6wI& z0F;0Tl&V(?wGH`|6+8%3{8|`PxL#GoqcMF@`)OzzCe6|ubUZqu3q2|+tR%OAkT5j> zu{JISN1l~vTiG@Iju+-F-~BfY7x#W`H|*K(-n(n#o7d(?8d*q@)}~rjy-}xvLv~js z9`4#cebu+tQF9JH^&-+Vfurh<=eUv%b5mKwxw8xTj>T4*L?k1v{HT`7pe2y0H()3T zm&C!_NLO_;$g(TY1hA#Cs|%>!3zDYVLE9;Vr=oHl#zLBBMOgiiQgIwTSx9>-V*$qq zskG2+$UYDh*!GrP)>TS@O`e*o=IG_w&D!fvTd**flHtX|%qmxq#GJb3b~#9;0wAz@ zP|ryLqs$jIzAQ(5P*KB$R-s2aDhsfG2!=`&qK53bf|3$)(`lMfQmA|?)BM3am~I>= zRSZ>@Zn_u*e}B1A2mKxcJlP*}q*)~#6XQM|u(v}!t6F4RB3}OiWXyG;4G`w*N4-he_1ArN?C~ znhrlD_ zf{Zvg5C5BnuVTOu5Q|pD!HuZ@g|NR2)mia|x6K+jELyb4bR*Zs_x4}&q^()fTS%@b z2eobGXKENa+7RmG)KF8N-G<5*RdWib4g_D6Qv#tR-QpZS+Cd7OwE*^bb_Xh>nw3|~ z;*YKB99z;SMCMi#YBP2#X`S6j;VhuH%z@QIu6b4#`Z?-u4Z^H(aLhGR zYY>I#BQ)ITOj6lK2r3aQM5WQ3C|&Y0)(!*iA3a3cWW4VJ{GAUx-LBSS(pTA7=j;Q z(3I0mX>qBWkQ42~fyO<>fcB1ZY;$}ugjP&=EutJl9irqm%tCMLARQSGc-jv^1o|n1 zwD%X$)+^qwvIxK5Ob1`=rdICJM_Q^AEKn4%jx^>?fIR)449d_sfTF@%r7GP z_l2k>Xzx)z5ra%Ss6?b7FDE?Nr*Wl%#r>%TAlV2N-CB;(@0aU<2}0n87tje8D&qJ= z7xDHYAkCTqB_$G208Km!ZEKwVw-CQ)p0F{~<*0WusC4(iYMhwF6 z%t>q@AOB4wkeyd>f!(-AyxzMj&0WWx0U#hYz8prrC!c&W1n+(GZQj?sb1q!D39g%y zr0HaSE#ag9>K@WIhqTHV$C4-#rii7B1s}=+cmfqQiMu`bX!$|o!cij812K{5pW zoFf^DDj$j5nGLR62NIiney6~ia}bK^K#I{K$D~)x%HZg|mnP%Phw2y!ko`q{dkjyt z4+&$aK1s6~a6AOllq|k`_W9Sy_b&~2J=Q+J8pxpvU^Js!|z4|iI6OmMAHcprfRNB zs<4EtJ}VePnlnQ#p_rnSMw_rGLs8{=+J1*|><1reCe%<6Trn-xk;S#JAfX}bLl!(XqmKogL^1|h zfL)zP72>lYq^O(o4MbFeuperHvdL@D5cA1Ej4*p3v5Di7A=d`_PJ#!W#?zf5bcGcy zrvt|wZLR8Bz_^1TeP|vlTIhBYDrS+8_m7J1@9M%&MtwV~ewbKyHo5P9q@0gRJXRxh z{f1O)#K~g9|KY<+o&=u`91Ntq4<^w;+Y8b65gY?NK2RsGyX@KcOC`xg% zD9pjT9dBlsL?^7!lM-27*;`drhyy;uxKqh!hL1XSYn(zgoDq(NZSd86;pwiL1RhB zsS3;@#E1G#Y65eLKcWmq*R}|Aq5z@>1sLXNUUk<{=F&)W=P@wXFx(J?2WO%(lI4b$ zRZ!WVNC94Xm{0_CprAh&RHP)&vknv_GWOUv3x*hi8FbmXqZH(Hb&$^=M3W&~5PZaT z7)h9BBnE`qhNQNpBZ24IiLag&;&x@np+vR!+ivL zIkA6?wfu89hfDMx0ejNjd-uNg;^cNi_MPX&|FLecn+IaWs-bkXy2AaGONy$(*zurF z7%}^N)@=rDg9q!Usw{v;5C(QR-x|?D42d+BF6EiF2tb#^+l#e^>K{Vdnsf_6Y~4MW z3}lEzX`AK8UbOBrQSkNBgu5av%s31o7X%uI1#eh$ks^EoU10v3G>)>+5=BVGq#6=c zIK~3XM}=)qFXdXT5-kr^n?eo%HUcm())Qs9Y3l5)Xty3)llV1^1S^S5F(ek!-5Opc zOv1q+_(aGlUoCNLWz=*lbu9=ZrQ^iM^NX-MxlRa&4&L$?(xNNfSJkM?<)HyMH_YSc zQ&BPKIV7pXNpcC1>1UaWDdsOj=*tfS@Q1O9funYi?v~vcAYmqH42It~DVdFy5+sYL zwS}k%ws9JUMln2+ntp$1R|&$Nja1kb($p`ZFGzmDXAsRHB1x$*rLIXd4MY7kqVJ*< zI79=IFa(+5Tz<@s5Sf47S;a6&60RWNHs)+_aTw<)+#LpOCP8rlaA(-t_&Cw*g33m7 z=^}@qn>>pwRE8v_vQa7&8xj2h!m2$u?7}=#6frm9CLJTo5usquIY`EpVJ!ym1;z1= z^uXLwFj#&F=4e=jt6H&JvDJUu@Rj!;{8h6HkJ!CQ@QB`QdT;o7kY>{x1d>NLAxV&o(r+|t4pz%|m{|8;%x`Wrvz;~JfH%@Po+#9_K&^{Z%dO#a) z(hgF}mGtmSGXrdUZ}Y%A&yV@u`K2bJhcwcY;qh|H7Fh7I@C_%cZcQg;d7_VM=nYM<3UtZn;hyMK>AQS;Y0*0z0( z2eWZ)$FFVs+Rndj`??wU|8EAqvEZinB^c3~RCgVE*oBswn;~>&65d|D9e=%#`?jAw zCi89gU$@`78CW+1-+u;NNpEVqCynjh`|J^;_qXk5(8|`{sfVhkud?*kVv~Evf8WdW zuH&1J|EX>6pZfgYd}r&nteb%!dj{N$JddcpjySz-_HHke>ekpGo6IK9tMA(SKj6x~ z?st2i&bx-*-~H?7pPDFt>hu5W-K_g--3n?9Rdy;;$h7xpi2KQv_bQ=k7|E_U4?>t^65oq?|$c^U#rkm=9oWM6u?3Fo-GZ_Xaz0^Txg3wW11ZjRY)(djdmTu_O*Fm9Xll z>}&v(o7zaS`QMP^*ZW-^d~*)vCM#0D-Uv2{NSj{)`9d`aBcMawO@EY&R>mu?{v_ zWF=Y>UJu1BS)>xD4f2c>UV|{V($>V6`R`2pn(v;};WR}*K8kUI;W~v^$#TLw=IWyuhi>{;70ws#X)YkR(HzBt?ZLxswkf5FzGh0RU)n$~R{ne9I8erztk ztI+)yz15TKb_qrRYa6}yU)#QG+HQDpM(`mDAnXQRGlJi@hK*U&Xotw9hn`$tf@N%3 zuQr3tYNI%%m`<@jbl3v5dod&)`)%v^YTvEuy0d12x8L@YLvCsHNg^5!3@|}5lfBZE zkA}(cBd3sjaB>SF{2&jhhs6#IF>3`z%055$VHs{dijk7mMw@KHY_j=ssF_bw21Np( zJGWnzZ^a-_Mod44Vb|VmGO5lCqdIS$p7Z8>`Lr1x6s zW|R&xwy?XbYYz{|KHJNW7GRReTYzDR;O9OJ;KBi~&}s|P6v4ngt^9$yg&66-VC^B{ zZJk(ETZWsrW)t>q!>Sh7HnOOuBgdDN>NapQ3uy}uu|^Bg6eye_1$k}5q`Jp+yyxmM z8+#`I>BFwsuG5I!n3t_ji=cfIO|I>J-2U{olRcEx3E2D2JGuAn?Z38@f7|U*S~HvF zU<<(1z+4(wnwsomVVI=srZ6T*)tP}9np)pQ@l9)MGx_336v|J3=r9$@?$x-y5xz~T z-K$M-?|c5n-$8PxP~B5hqWP&(OHiN_C$wo5WJN`Eu{Di_O1KQ?G?g}q7SKhTrG(X= zo5cT_k8HZ@SiPHD5)We*x%^fL69CQ|Y!J7`!EUjeJo_a1?;%=PWzo{w2+zuI*EV8Q z`9vuS%A*b<1{3Y1Ccyuzje~z?H=9C*3s|`& zg(__w05ecHQ4As3!?K6gMgO)RI_x~A+MBIp1n&{M*-)NDSkrHWco0D(PSh%GQ1K%a zidfZ|Nwy}?ZlQAbJjMj9tx}ZYngU8cjoHKjzxcV2E~@FeK*r^Ek-PwJz|(%`VNqvQeLm`egu(F}r0eO-;(4f>gmD#eBn(`B}e zX(rb3hKe)*FMf<+<)&uK+pv4~2;Zc`+J+BeH+9Q8(dHm|!aStq%a*8?R#VMXoTX7` z4b&lrdT$59H>j-`3pffky&<&z+(!=B{UKUwoB5TZem{Z)R=Sa{JupHl;E<`Vqz&TJ zK0{d!Oj1AoSknPe9;dD5j(&U;ljlWgYVC z12k;-Kn)r^K%+;mr~ZS6X^XMjXes^b^YZDV#=XNOv2p%+wsY<_e0{m@}(D-S;Spq_sE z>8}=nO{OhKTNrB_26Rz`7E-<7bNzbaL|uIG<=Scc9rX6R5A@2sdAi~H>#^;N+y|8) zWYvZJ@2Qpn+AaUwhuPZ}U`Zz1050KfOq-#VR%upWU2*L-`qLlJ(40AQbmEC8>fuKo z!?p)xxc?TzdyXChsHv&Z%P+sI zJMX;nTO9rG-NmH3UB3}|Q&W>}zWHW7`skx-1{=_%{&yX&r1uVVCC`^m4pV)Mpgk4B zKHJL(!TW4K=1t~z{o&sGM|<$_f+q9&RVS#WtCY^9Z)%^z{;0~bLE3QhL7H;racWxj znaU~vhY;9jpw-6cQkw~V4lX`UF~AafK*?#Ozj`XZ1dt0Ls(@9h2i2wvq?B%a0=aFq zpydLDY3L~d`~_g;b0L_Zn8dG zF-QCCJX+bn_~hW-?xrPE7wW!&Y1A1eA0Dq&fsURG5ox-9j(DUwJ96kUe+t?N+s*s!c6rX~1 zXm3-v2Siwos|S<6Cqg&)hHT(RRw|AMzLR^4WC7RBb#;+L5C}DZHrvB*)I+1$08?O- zgQ}C{++85sI;i#;Un^Mu6{6P=4P*oA7hI(3ZBNx9haax9PQP3=&rekW=G*ht!(H5u zyoNSFJYe1l07J9Gs^&LyBa3ND72*C`^#y3Ux%8Xw1}vqEUiQu5F2FT{+IQE#XleU& z4b3GI5C=@Gh!87ydEE)@e%6HpqDB|@5D$M&has*tY+aDrz_{o7!@#M7dDs#q)*mTX z{HlHQho=kF1Aj|h}B(Fh9>IyfS&ufVD}yfOc8di7q-KmKR4-OcA^v}kl` z+Q~cbyrb(8CLet8flH6}t45bbj~>n1clLSp;ffiLaP1&(nDqBF0Pnlr?`zxMd*8Kv zPGvfjsd`V>z6>V&))RH?4#U(RQ@5MeOv1CDvCb}GddJi4w5ef{&OYK0-FeR}T`=uz zFwckRrZ+#NQ!2LpeHUxgCI`tsD4>e1P6p*BpgtYT077ln3-3Lz-)uGuNYw2>ODp+mED(dm~e0IXJf zdp?LUpxuDl)0NJ5TQdVMqlYhlfHqN^>w+_nRc=0LI>2BX40NB?PeE#;ktVoyey%eI z`0b}}{;MjCftC!?wxf2_GaoNdbqK8dlDOhaGrDU3-|32{9@fKG{y{?ued@RV5Iy(a zr)oy~*?u@M+8f9BEjhn;v>dC8VUSpGN6kO-&+L(MyUk2?Y{dTsFl^_;9gZKj#j>KBJb=)xSzX;eNC-tSJoUI*@fn&vI*P%igW+_7A9XHV6ZgUU6!c$9{XJ5948;H<8p zKw*8Z7>GX4Ja)B;%ed#<0g4s}H0=i9(B3>tXTHYDeCIk%m@q+?&>eUA@*13kz=fgy z8?o5?f5I?=_XM&Lz0s?go+kB8;@^Aky>8bhyJq{|Gy~IA?Q?IM_U^^ajPSUDXJ2{5 z-uvApa`VN0$qYR9VBh!R72bKj(|aO9Czj3yfFVl9PC7}^vM>Zvr-A-*LOytc>D}Jh z0P%;aR7|+%jpts|tFJ88;Gt=qIOPoOQ87|0-qqUIT>Px<3?5kKgB{mKH`_K4Vh7<&B1}c!y}CDO&bZ0Z z+HM1&xntI>5#Y!yJjcLV<>K4x<6+Te|C*KWgss33}k=LzVn!p{fR~uew;f`alRXZ@)|zUj3F% zxaAh@*)Lx!Kgv}eoj4M)0-(mg7zEGHaxK!})fpU?B}o<+&?pmoyeBWL&)=V`j{zMW z8>c%C$u%?P-l{j>xl04fcG9gEOxF6jL-obXt2F9Ye^hY$1NHK`XKC52b9K^j`>Elh zXLQk(^u=SX#cDs&yR$$k&bH8>RQ=*L+G6ru+V{9yb;cI;I`wy#>ga6~dhyd6)xXuR zS!WE^uWxJCfc*~EZNHr?XTcn`!uZ=EjFE`E6~l&Wuf4X{fPVd5C~+eaBQQ5hlT1pZ zjR3^+?;IxSZ5YAZFoHJi+)O0%i+ud?$EvET(yqJis*N|^*d=r$eB0(R4EMk<|8wug zIESaUdxY*u|K2Bo&iGI>p)8MR^fl1#& zm&!n38QyUu%qDy2?~fj%q5U>cu(eIsopGs3H@Q~lpD|e@`{rrqjxSVl{9XEZ$=TYg z@C#is>tmW$( zStB5}X3-0-5jg7*1n+BJsqC89bk3cxYNz9_)|F>Z#yqLjO?SVj>XDo4jz`|n37ZtD zKmF=*c)sC1#%uNs7ib7At2ax(sK38ATW4Q(n@%`*UsUCpy5XYfTG4>E0{(k;3ymZA zr-^6l!>fArK`L(k}-U60V1VY}MQCS&(e$yn}-dk7TZOTh>a&}5`7JXio(tyK58zVym#!gQ+S zS^*Y^xU(S2d@$_Nxad)6u&2(_#+=7>?Nx88z`wip|J4{3m;M7ZU+@BVpQ0JJ zoug3&9r}<498cc%h(ZOw(X5AW*T}r2Hs0(8g=tK3=#4khgZ?3oqb~s1f4N{P8hUUe zU2>kh={}Hq&(+m`I$T2{wR+&;i5743Sup1AWOjVS<&apeYJ z_R&qL=ybik@5P$cvYSpg;mB1gJw#>F)36g)wL?$2((?PR>mTbl(>RPiElg*0XM}9; z-ru&Zt*uRuKmNFCYiqUBPCL2arzYvm0ch{NhpXQA{=zt2Z-V|h^`Q6uKgMTE#EF2@ zjY12+er3NZVEE+-KBJLJ5>9z2Kc6^V1ptJ3`eUJDxHu*9&W>u)AcoXfs2VU8K zz9G6x(HW;l184-XJ*}HJiZ;`rlU(s`Y}?E*?YGy?^pnS#)kZ_hLK2o}?zpsdrE)4O zRfVm;*On7B8jg{`gWi!{paXWyQBGAG?XZ_Bgv9-1*0VbKFPG_rUmv1NW^h3v8f$co zG0&PdK4FyFXFsN27H+DuAG#L%9w5qA`t9Lt9I@&C*x&QD%YYmmdh&UiO9--g}6D=NT4H+JQ9MRqtnhk5x>Sg8rlbDP+NxOo~^OF@2ZjtOo3#P z29>nx<>zK=%+oe#1xjZwOL>gY>=&xMAjufB+u zxa?ewDIvisXA5n<_YEKghc)N5xJJ+-yAhLix7~lELD_UA0s+~VTdc*UB?{Cpv4;V$ zDcOS%lU=h7^N!og`+IeQad-L;`_BaQ*S(C6d(*Oa*)9v{P1s+zlecs4ckh^QyMOOv zSO1(eTzJAb^sv;&Ps~;9(rs}f0sGvNyJ}%mbdyRJU`x^nvNfvOcHoVP)MV%yn;oI^ z3ka^|StZKeXiMF8`tF2xz&uB~W;f-iWY>tQeDic#zkM{l2-W=5Gj-P<`_YGfGVPFQ z+JF{O(2=E%P)tc0US@FO_>eLMEvpb~cR%h@9kvUqEDbN5&LXwZA3Y0%*A!Unh#VY4 zKylM#A(y80z9RI^cOFx9%|04gQ9-8~XbMMIJdmfH_9coGf_NLl90Dn}7Np(w+zPtZ z0(Tu;p&(91(K{AO!z>Su%WsOP*UoPkKz zL1jf+w!9j9b&R6bv*|;5B)IbJg4LlVr4&o%qt!%p$HfzL)TK*w{E64-wA0qt%@@wp zy&9lIAq_t2N_5KgA8ON$Z_y=J|53M|dYbOPYK1x*9xdbMT!IOuPq7L`h3SxHtxE(eBzFU=DT8Z`p8g6z<6+WQM z!Qk(p(S{Z3r07%MN>jdGBCp>^s1}|YfT8DLO3`^$ z1*K%@*vU+=ycnsC9!;FAZsZ zoQG{R7O^#)B&uT2yy|P_nVVnJtM`81=kNQTVN#<*H`PQW>a6Q8 z*WW*zPX`$DBzjzWDLG_2*;uQTbM5v~hR27Pl@(IzX7&B+;;x z@`e*bC!;LY+@?=NA&P1&2%VhCAwtE3VL+4_>0Y?6hXgVa|C* zC}Q*>SXI=Lq3FipdE%2J;^6=#-Uqa$Ms;JNls3>R8W|twSOmP@kI^Oz))dTl)Ks3* zrepEoKh>m2d5-FeVdk9$dKKS>!rN)Y5T0WT-gmn2_`^j+C%TdP5pBOa5Aef*+H$Ai znl$ckZNJ}S?Y---wQ*sMd_!8*klU^Y{&Aapt@QK@RiFjLG_t8qb%{P&4xLdL&}aJ1*b{WerT1xR zVx{JM^p0-3?OK{oj#5?AavWR5^kk#0G`%Qu@%pCek(Nf?J^Z(q(IV+?_1WiYt$6!G zH7{SNr=Ge_A1$ndsw>-dh5wrg}SR1^A~G4p_zxLzo}Q| zybkt$i5g0_($wSfX-v6`uD#)Q)iybLZuYBsefqonCdCd^lcmWBOX0yzl3)|>_G!;! z571UL+PwPgi#6r!b4eiigj|DV`t-#|wMXA#-S8sGD=f^Z+xhj(l;d>oKNhRLu|-$? zX@5N)F4j>ej8_iMu0*7-N|9>)V)V01q6?%~&^!k(yXePpKYOSRh1sN@=to!3G1>W%hbPgEDALdioZRmS3Yjg6E~c!Q=W-S z_!;6~3|GDX6_ z)P;tCv(MR9la4)5oy*VD;TJus!ex0{^3v}$;et0bc$Y)*zOPhS7@T`TgDr&ToE&2& zBQ^Qx@rb~`sQ;mt>YYVPRQGXOPrvZ6-kL{lf5l`ydobbP8JFqE%g)jKc^!J;u@`mS zC#@j-ub0wn@mJz=z{cW8YXZ<%1lk7&^=E$?_Gp1z3Y&{Go zO`4=5jyM8ys?goXn1T_!UAITe|L5|pmtEz+q3+8*+sm-pf6to`J2yu2ROxj z%AJ;uPNyTb>P5#GhZNKw^lI&lJKdcfjuUTj-kmYsIbeq^h@fMt^CInvSI{~7_>-K5 z>PDwwag8&gVu*9eh0~k_6)d%#ola}4#Yx56oaY|7+v#WPf#X8fxglKa-1F)@r=|K6 zXX>FFI{oZ?p)%*lb1rp`Ies4}t03r1_|rp<)4s@g^!}R-3(QeYv2)ww|Dfqj(rKw% zxnE|qv7yyTwYNEmSkmciZE@1c7H8>_xz0%^9^%li z(!GBAyTC<@oej3z&3X3Sc}|?;YL_o}PM>_ZL$3~pf;@h=$eDKQ?T*vb;oirR1s^*b zR19?feEp41Tc_jHr)!+&uDRC<2l_al*S9&%T@6mW>I-M*%JrNRrd{VGn-Wfa>?voW zU1#<%XFw#+Ap*y}4s}kw`$>lc7AMi(>O6A$4NhK&d-R8#jkev{Is2l&IMM8&6OHcc zv@C0PHm{)PBgaLv`g6ZyoSPqg&8dwwIGNTOXX=zwos!(Jr9wG@tZe7#lg@CKw{$z0 zDNcPCYoML?hIe^}Nhem<v^dS(+*)hQ>0+*&M5nW2{)f)!5yPGH z{(Q01(&ISI?J*~viaR}RE1i38n(7pj4uKNt&f9*6pW`g8;CPEPHRZvsF3C{OaeF6>sdUSQdBU+)sOZitTZyvAMx%k2SNlV{3W+u=T$- z`iaH3kCqk(r<_AJo^!?-XE->Ts_&&!>vdujQz#6@v$O$7b#j&K{%_Geru@ieflVX8rdfoRh5L7rZy_$DERTy%{4&+O#yk| zv39sAPQ^m9(RxxLyw|O6i|V{WS|Zars{s!q&8)Cl@!S`p+S9DDnAIGkYfK4hxy@UE1uZxMa#1Y_w{+LGs~xO>khQc5RjD*qPNad3t~ff&q3C2Y%{kk{ zsvp=#6}53Sy)z)W+}fcm`U6_Q3}ufhq~T_3 zo0ZfOvcuL62dil4xvKihiFB%|1ulZmCB;3I6_WPKJtyf=my3jIAj7h_k_Z5P&2$gF z2m#87&xz zrmEX8LbuPo-@nVrzVE(i?7=W?iV|jHAs_RK`#{7HE^+QO3*A~vS(a1}{oZ;yA;tlf zit*k-7GHibZJ%HUKEiJuJm9=S2$P3xJ=pq}6%!XvtDY>l-0Z3f%GqX}g<3pdK5BZr@iJ!>D$ZD4{hJ47jxaekXN*HM0}0FQSE%r2Mq zQmHhkD5f5e%(7z15)J4(R2^g+24E0bpvJ^#yA>vC5uz(^yrq?SAv>|6SpIec=lph00D;!W@>g>TZFd=I0lyh|aPO&&pKIE*y$oR1oIyIgRteh=ihO6f;_V z(_Sm!BRm#iALcQSW}qD%=D4HCi1g_M&#tVjOfBs+1%*Jfsk95gk-BhL=ELwxOZvgw z0&WDrP?wchsH2a$Qlqx`h3>uhZmqZ72`VV0i*CGHdCYYWYa)_nSK$uYe&zKaq5}FTmX*^Y90wxC2!RY5qw+jV7ItI4 z*g5{4!_<3A8Zwn0ssB|1e9B$2&XXbJbrWLd$h(kkcx!C3jwn1OYvWh*twh7W4$;Y!R zL86h;8(1qKkx(fkYHTha3(N0EvY`xTs2_JMRK)d$ z@f;g$RuDpI@1o%(3){!}ZCv81tMv+~TrNb(T`nZt8%xZec#We7Gl|F&Kt;2s3=s#|BcB(cc=sm)F* z7Y2>AwyMKU9HLH(TLx|A&}p7agc8{xDq;r?s8yYIiINl=mV%|1;zWbtr{RvURHQmt zb=fcjQgEaGPQCu(Cz|o*=R(od%rpL zYQt9TPdALPjm~V|?cH8p;>|ZX>(+ENZZA78)5mtS6ZU?$&qnAj@&82XeHsEu;{Y;; zkWISXoF56#T7ii0R`M`xai$GSgNJ9=V(&eKS?qyik*b?Q)hF+g{g9X}toont0RR9I z%1J~)R0t0=4L7&k_7n{eQ+|+IR zhVK>(;w43;jj(tu1ZLOQg`~IReGtE&#cqqn2;cAm?fU%o`w)psD8&EGyKVLKE>spo zVQreNthR@1w7!ZaF*8tU4AaIkty*BGZl=vP;il?UBk}x0`j)9Rx&~V&2gZbF}8e>Z5;Jktf zW}%YwPy-M|+WOEqG7z3)U>~&VHG(meA0P8~Ik=RwV46nem-sGM? z>?cf@-K_Rz%p$mlp&doIZ$mn=XO~T8rL~Q=Mv`H}&ttMf%(*du5YjsB5I@Jc+Qak7 zLhaA<4;3tUc?`-i$4m!oEu*>WzCk5NrwtV=9#c6Us)aW>K({gn$jqG6MtZfw4HKCIReP z(-5rHbT=U+R-U_<3?U|lwqRNaYm1@}q$R}V;~Yl(?m!KCBg66TVfORHwCt#M@ys(LP}ep&@2ncz@W0{?-JWE?+jq_a@t3us*(;&{{u zBw-%PD$;?{ASjQo@BqVT@F*}xo$Ny{0K{hIiZRqUAxIzoPm4xidc%MrLTU_>5Rc{5 z+nF-_wyAk(SBt@b$UPBKO|C?|;hoARIl(15TKM$1ns{dvL5oBrC|D z5P}h*-KaT~jMGI}yfy(b7QPX17~3uZXAaP|x`4!$6bm}ZgHM`Nrt&I5d>r9MRvNBh zY~&E<3WDxpWt)g=7BMQONo{t@uq}f9=l&*=*pG^feh8akvGXa(0=D0F(OEe*WQ4*3 zPog^7wFNoPs)u7adN337|D!SFVjD)-7KcgsI0wH*KXuw{V`B!;yL%v-2$*sS^7>7S z2_j{)NFeHh2u;)Jmq#yn7@bwr`6($ir%o8vKL_(611f9}5)o?_2R7&Ad?AR>hZ8CT ze3y^w3YeOnWKpw{126#x36e6CfeB~*Gml&w3?qPflAljY=q8+wCB-B#!K`3XE>mPq zP4Z+QbO*xe=66y^$|%}N9HtmE--k&grZr<&2Rz#Vzimv?jyKJs8(Vr+C=5ox^W-a+ zVZ>p+J~v~>id}HX@w;h~ta^~P;ZUcm4G?!!rUA2sxkv&+63T1m8qnI9=>mKuWKw>~zb8Kp6PR$}{LPE}W&sb{I|%`&oN)V;n&=5|$0uVj3C~V)tk!9&_~X z945_eU3u?Dn~?de9%oqe z4ieBX)XdH_Nn(|2w)l;pTHCF58%Y7D^CNvtYUZ%0Q#hCmM=i}_Y_~!MBLKv05cn#{ z(p{v+U`(Y8rLF%ub~K)PL+S}}yh-y`q^C)(01rQ8YA))btATJ0aZ}@oAlUg#`lpc~ zM(l=f8RA;)+HIJ+pCY@=B$(Om0SMmgR(o(U3Q~L!5j-3F!3tDx(s4e6(rO1)CyInh zz=RBP%V4uJTnj7^#sRY+H^AYZf<`>tUk@sHw&m({v0%e&qc?j3JJ=*(hDbyX!B4a2 zjS!3xc3U33*{i7bwrC8uFNxF*|w_R&xM4 z%(=~-jS$BZ!f`b#UkFv3Im}@5hf_#uwzb0WlYX-7P{}hq3quxe1`LI(b0uIqzJmbQ z8)p7`aG>%~c|L}bV0JMKmgnv8yv@1Tfo&g+kYvTP;&R;MSE#f$?+PC?# zYjf$uF7`VPU*AE)c!sN-10I2Ugy(&4jKMw|H?<#JxNsp+)Ky_T+c(3aSktftwx*Gr z>`+sbocVS<^hG#-y6}2;)Mtf!`|jPj8A(CS=p~?Lq-yJwAt9pb)yMR1rd3ssOxJvvKtAepEuakLgyvGg808kyAYUE`D0s55 z58I+`s*X^WhkKS{T+})0a;umS5-kej#LtOgJJe8ToFYZjNPTM5oj{Rd6o2HCIAUH} z)EH%=#P+fG0e=X9_ZynXHP21x)hW~T*Ec?N=ft!f&lIwEBX*k$o7i<@-3XlNitg zdtd!z-}moDZGa@Tkx^Gcf<$709+`Rk+AAIgkph-{!TQftVU52}XnS1P?&NAIzhDt9weA_;oYzO*3G`YlLrf zXXUh}VVbsSlHb02`|Y=N*IjqH(%c@4bEg zu?OiFsz)LRniuJbsjn#aq${;qcs+F-vWvBUj&yXKp7w^T1=;q#Rp)>@L6{y`uA{Kd1K=@1njS z&Xggs+i-dWK};>c@z;ZAv< z?QeS+JtX6-8|!A^rC|)bWB=)S#LJiREM)2PAEj&|De~!%0x60YB>?#OI?ftE&m1OPV-j zQAFa+gK<`yK+nFn_jQu~TR-J>JATg@FbAFyu&qNQdi!h=-2S#TX*Rs=Vqnue^4=^dz-dqK>7nS~VOuPv)2*&{GG1gOJRS)o*Ft z-|J@JN1FjpVta&crlqO;Chd)|jaDt`X~!KwMA~|5_j{vPV*)0Wj8XI+uB10Y_lVs# z+DU9jV+eL)V*)npJKJV2Z}k4`efM48%fO%OS@E*2e?mIy+6VOhr=RKLdLWHHt<@Lr z{Y^VL5k35;=~@XwOi|%r#nA_v3+h!(Oumpzu5<%bPIlFhvHjg#@GUl@rSI$*h&W{O z`ANwo5dZu?-&Z;^P-Dr}k7eh{hljt2W(@&CgN_r`qKEF#0}*1Ip%P%7fNTm;vWu#p z0CPS=C0sWtrCnrw`Ef3~sk+P=!2vSF))D-7ectQ#|86s2L~eGvnUY46#suu$q_`3G z$dMy;)KN!imtA&oY1J5k(X0{t*X8E>O_KK}WZT&za_@WZZzKBExyE<9{IB0T?QhoN zryf^b)|T31!cHn3yq;S~lb@ffVS_f%5l7O&yB&9sdgk4%DOW$CdChb5)<1615r2L~;XM!0#zXr8Owp|h zfG|4WeMnEg@`3LB>s8w84*`%&MbHOOIZBa+coyV7{v<(0Yc#7Z{`^ zi<7PiJ8&z`zW%P(eY;sX^73+*30Pd-=+^c( z>HoDMJ3E2xV4TB~=$`bq&mIHly^rl@-~Z52OUt6yZ=0d~iKlC;5RZrfp zBgxTE6k!YD_h^gu)6w_;NzN;0Yme=B)(r6Ve5UnSDJJ{b+?WcLP2$kHv2F%_>KQN^ zwU;^cZ0&8f*=9QFq?26qTl?GS&=`TejFxR}dK$s%*Y^Jb1rwBNe|tCO00000NkvXX Hu0mjf4&57- literal 0 HcmV?d00001 diff --git a/doc-src/content/index.haml b/doc-src/content/index.haml index 365aa750..eb169338 100644 --- a/doc-src/content/index.haml +++ b/doc-src/content/index.haml @@ -69,3 +69,26 @@ layout: homepage %img(src="/images/sites/busyconf.jpg") %span.title BusyConf %span.url http://busyconf.com + +%section.book + %h3 Save 37% on the Book: (Currently In Beta) + + %p + %a(href="http://www.manning.com/netherland/") + %img(src="http://www.manning.com/netherland/netherland_cover150.jpg" alt="Sass & Compass in Action") + Compliments of Manning.com is a standing 37% discount on + Sass and Compass in Action. + Use promo code sasscomp37 at manning.com on the MEAP, eBook and pBook of Sass and + Compass in Action. All pBook purchases include free eFormats (PDF, ePub, and Kindle) + as soon as available. + +%section.gui + %h3 Hate the Command Line? + + %a(href="http://compass.handlino.com/") + %img(src="/images/compass.app.png") + %p + Buy Compass.app for just $7. + %p.note + Note: Compass.app is a product of Handlino, Inc but + 30% of all proceeds go to Compass's charity of choice: UMDF.org. diff --git a/doc-src/content/stylesheets/partials/_home.scss b/doc-src/content/stylesheets/partials/_home.scss index 62f2dbc4..e322c02e 100644 --- a/doc-src/content/stylesheets/partials/_home.scss +++ b/doc-src/content/stylesheets/partials/_home.scss @@ -79,4 +79,21 @@ ul#featured_sites { .title { bottom: 1.7em; left: 0; z-index: 103; text-decoration: none; padding: 0 11px; color: #fff; } } } +section.book, section.gui { + width: 48%; + float: left; + @extend .group; + h3 { margin-bottom: 1em; height: 2em; text-align: left; } +} +section.book { + margin-right: 2%; + img { float: left; margin-right: 1em; margin-bottom: 1em; } +} +section.gui { + text-align: center; + .note { + font-size: smaller; + } +} + html.light body#home { h1#logo { background-position: bottom;} } \ No newline at end of file From 461a589a61cd8e489299e053e061fcf5a218cfba Mon Sep 17 00:00:00 2001 From: Divya Manian Date: Tue, 28 Jun 2011 22:19:39 -0700 Subject: [PATCH 07/56] Removing -ms-filter as it drives IE9+ crazy. plus existing filter works anyway for IE9- --- frameworks/compass/stylesheets/compass/css3/_images.scss | 5 +---- frameworks/compass/stylesheets/compass/css3/_opacity.scss | 5 +---- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/frameworks/compass/stylesheets/compass/css3/_images.scss b/frameworks/compass/stylesheets/compass/css3/_images.scss index c71e4346..b92ec6bd 100644 --- a/frameworks/compass/stylesheets/compass/css3/_images.scss +++ b/frameworks/compass/stylesheets/compass/css3/_images.scss @@ -83,10 +83,7 @@ @mixin filter-gradient($start-color, $end-color, $orientation: vertical) { @include has-layout; $gradient-type: if($orientation == vertical, 0, 1); - @if $legacy-support-for-ie8 { - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(gradientType=#{$gradient-type}, startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}')"; - } - @if $legacy-support-for-ie6 or $legacy-support-for-ie7 { + @if $legacy-support-for-ie6 or $legacy-support-for-ie7 or $legacy-support-for-ie8 { filter: progid:DXImageTransform.Microsoft.gradient(gradientType=#{$gradient-type}, startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}'); } } diff --git a/frameworks/compass/stylesheets/compass/css3/_opacity.scss b/frameworks/compass/stylesheets/compass/css3/_opacity.scss index 1cf0a538..fc497ffe 100644 --- a/frameworks/compass/stylesheets/compass/css3/_opacity.scss +++ b/frameworks/compass/stylesheets/compass/css3/_opacity.scss @@ -6,10 +6,7 @@ // A number between 0 and 1, where 0 is transparent and 1 is opaque. @mixin opacity($opacity) { - @if $legacy-support-for-ie8 { - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=#{round($opacity * 100)})"; - } - @if $legacy-support-for-ie6 or $legacy-support-for-ie7 { + @if $legacy-support-for-ie6 or $legacy-support-for-ie7 or $legacy-support-for-ie8 { filter: unquote("progid:DXImageTransform.Microsoft.Alpha(Opacity=#{round($opacity * 100)})"); } opacity: $opacity; From ff61678572604cfc09530bb87ab20916ae447027 Mon Sep 17 00:00:00 2001 From: Divya Manian Date: Tue, 28 Jun 2011 23:00:56 -0700 Subject: [PATCH 08/56] Adding the generated css files from the msfilter change --- Gemfile.lock | 3 ++- test/fixtures/stylesheets/compass/css/gradients.css | 3 --- test/fixtures/stylesheets/compass/css/opacity.css | 1 - 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 319f703a..dd13d25b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.3.b352e8b) + compass (0.11.3.461a589) chunky_png (~> 1.2) fssm (>= 0.2.7) sass (~> 3.1) @@ -145,6 +145,7 @@ DEPENDENCIES livereload mocha rails (~> 3.0.0.rc) + rake (= 0.8.7) rb-fsevent rcov rspec (~> 2.0.0) diff --git a/test/fixtures/stylesheets/compass/css/gradients.css b/test/fixtures/stylesheets/compass/css/gradients.css index 1bfba05e..384db492 100644 --- a/test/fixtures/stylesheets/compass/css/gradients.css +++ b/test/fixtures/stylesheets/compass/css/gradients.css @@ -565,15 +565,12 @@ .ie-horizontal-filter { *zoom: 1; - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(gradientType=1, startColorstr='#FFFFFFFF', endColorstr='#FF000000')"; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=1, startColorstr='#FFFFFFFF', endColorstr='#FF000000'); } .ie-vertical-filter { *zoom: 1; - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFFFFF', endColorstr='#FF000000')"; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFFFFF', endColorstr='#FF000000'); } .ie-alpha-filter { *zoom: 1; - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFFFFF', endColorstr='#00FFFFFF')"; filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFFFFFFF', endColorstr='#00FFFFFF'); } diff --git a/test/fixtures/stylesheets/compass/css/opacity.css b/test/fixtures/stylesheets/compass/css/opacity.css index ea882d57..4f4385d3 100644 --- a/test/fixtures/stylesheets/compass/css/opacity.css +++ b/test/fixtures/stylesheets/compass/css/opacity.css @@ -1,4 +1,3 @@ div { - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=20)"; filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=20); opacity: 0.2; } From 7e07e55f13c37b8424c8b0ffeaa0613f22cfa153 Mon Sep 17 00:00:00 2001 From: Noah Kantrowitz Date: Thu, 30 Jun 2011 16:35:22 -0700 Subject: [PATCH 09/56] Pass through offset parameters to the :hover, :target, and :active magic sprite selectors. --- .../stylesheets/compass/utilities/sprites/_base.scss | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss b/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss index c346e181..d40740dc 100644 --- a/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss +++ b/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss @@ -30,18 +30,18 @@ $disable-magic-sprite-selectors:false !default; @include sprite-dimensions($map, $sprite); } @if not $disable-magic-sprite-selectors { - @include sprite-selectors($map, $sprite, $sprite); + @include sprite-selectors($map, $sprite, $sprite, $offset-x, $offset-y); } } // Include the selectors for the `$sprite` given the `$map` and the // `$full-sprite-name` // @private -@mixin sprite-selectors($map, $sprite-name, $full-sprite-name) { +@mixin sprite-selectors($map, $sprite-name, $full-sprite-name, $offset-x: 0, $offset-y: 0) { @each $selector in $sprite-selectors { @if sprite_has_selector($map, $sprite-name, $selector) { &:#{$selector}, &.#{$full-sprite-name}_#{$selector}, &.#{$full-sprite-name}-#{$selector} { - @include sprite-background-position($map, "#{$sprite-name}_#{$selector}"); + @include sprite-background-position($map, "#{$sprite-name}_#{$selector}", $offset-x, $offset-y); } } } From 94af47d1ca1f64137bd6532dc3ee244a212de230 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Mon, 27 Jun 2011 00:36:45 -0700 Subject: [PATCH 10/56] Update homepage --- doc-src/content/index.haml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc-src/content/index.haml b/doc-src/content/index.haml index eb169338..7d7d88d0 100644 --- a/doc-src/content/index.haml +++ b/doc-src/content/index.haml @@ -88,7 +88,8 @@ layout: homepage %a(href="http://compass.handlino.com/") %img(src="/images/compass.app.png") %p - Buy Compass.app for just $7. + Buy Compass.app + for Windows and Mac for just $7. %p.note Note: Compass.app is a product of Handlino, Inc but 30% of all proceeds go to Compass's charity of choice: UMDF.org. From c9145a4aca4096d5c88698872b7002b10c684deb Mon Sep 17 00:00:00 2001 From: Noah Kantrowitz Date: Thu, 30 Jun 2011 18:44:19 -0700 Subject: [PATCH 11/56] Add a test for the new sprite offset passing. --- test/integrations/sprites_test.rb | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/test/integrations/sprites_test.rb b/test/integrations/sprites_test.rb index 6f6834bd..99a7d63e 100644 --- a/test/integrations/sprites_test.rb +++ b/test/integrations/sprites_test.rb @@ -518,6 +518,33 @@ class SpritesTest < Test::Unit::TestCase } CSS end + + it "should render corret sprite with css selectors via magic mixin with the correct offsets" do + css = render <<-SCSS + @import "selectors/*.png"; + a { + @include selectors-sprite(ten-by-ten, false, 5, -5) + } + SCSS + assert_correct css, <<-CSS + .selectors-sprite, a { + background: url('/selectors-sedfef809e2.png') no-repeat; + } + + a { + background-position: 5px -5px; + } + a:hover, a.ten-by-ten_hover, a.ten-by-ten-hover { + background-position: 5px -25px; + } + a:target, a.ten-by-ten_target, a.ten-by-ten-target { + background-position: 5px -35px; + } + a:active, a.ten-by-ten_active, a.ten-by-ten-active { + background-position: 5px -15px; + } + CSS + end it "should raise error on filenames that are not valid sass syntax" do assert_raise(Compass::Error) do From 6d2040b86a68e271397da85e143fcf0321d845a8 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Thu, 30 Jun 2011 18:42:43 -0700 Subject: [PATCH 12/56] Support absolute font sizing in the vertical rhythm module --- doc-src/content/CHANGELOG.markdown | 5 ++ .../compass/typography/_vertical_rhythm.scss | 58 +++++++++++++++---- 2 files changed, 52 insertions(+), 11 deletions(-) diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index 588b699b..0d092d36 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -14,6 +14,11 @@ The Documentation for the [latest stable release](http://compass-style.org/docs/ The Documentation for the [latest preview release](http://beta.compass-style.org/) +0.11.4 (UNRELEASED) +------------------- + +* Vertical rhythm now supports absolute units like pixels. Set `$relative-font-sizing` to `false` to enable. + 0.11.3 (06/11/2011) ------------------- diff --git a/frameworks/compass/stylesheets/compass/typography/_vertical_rhythm.scss b/frameworks/compass/stylesheets/compass/typography/_vertical_rhythm.scss index 636ae77e..6d02d3fa 100644 --- a/frameworks/compass/stylesheets/compass/typography/_vertical_rhythm.scss +++ b/frameworks/compass/stylesheets/compass/typography/_vertical_rhythm.scss @@ -10,22 +10,43 @@ $default-rhythm-border-style: solid !default; // The IE font ratio is a fact of life. Deal with it. $ie-font-ratio: 16px / 100%; +// Set to false if you want to use absolute pixes in sizing your typography. +$relative-font-sizing: true !default; + +// $base-font-size but in your output unit of choice. +// Defaults to 1em when `$relative-font-sizing` +$font-unit: if($relative-font-sizing, 1em, $base-font-size) !default; + // The basic unit of font rhythm -$base-rhythm-unit: $base-line-height / $base-font-size * 1em; +$base-rhythm-unit: $base-line-height / $base-font-size * $font-unit; // The leader is the amount of whitespace in a line. // It might be useful in your calculations -$base-leader: ($base-line-height - $base-font-size) * 1em / $base-font-size; +$base-leader: ($base-line-height - $base-font-size) * $font-unit / $base-font-size; // The half-leader is the amount of whitespace above and below a line. // It might be useful in your calculations $base-half-leader: $base-leader / 2; +// True if a number has a relative unit +@function relative-unit($number) { + @return unit($number) == "%" or unit($number) == "em" or unit($number) == "rem" +} + +// True if a number has an absolute unit +@function absolute-unit($number) { + @return not (relative-unit($number) or unitless($number)); +} + +@if $relative-font-sizing and not relative-unit($font-unit) { + @warn "$relative-font-sizing is true but $font-unit is set to #{$font-unit} which is not a relative unit."; +} + // Establishes a font baseline for the given font-size in pixels @mixin establish-baseline($font-size: $base-font-size) { body { font-size: $font-size / $ie-font-ratio; - @include adjust-leading-to(1, $font-size); + @include adjust-leading-to(1, if($relative-font-sizing, $font-size, $base-font-size)); } html>body { font-size: $font-size; @@ -43,12 +64,18 @@ $base-half-leader: $base-leader / 2; // to the smallest integer that is large enough to fit the font. // Use $from_size to adjust from a non-base font-size. @mixin adjust-font-size-to($to-size, $lines: ceil($to-size / $base-line-height), $from-size: $base-font-size) { - font-size: 1em * $to-size / $from-size; - @include adjust-leading-to($lines, $to-size); + @if $relative-font-sizing and $from-size != $base-font-size { + @warn "$relative-font-sizing is false but a relative font size was passed to adjust-font-size-to"; + } + font-size: $font-unit * $to-size / $from-size; + @include adjust-leading-to($lines, if($relative-font-sizing, $to-size, $base-font-size)); } @mixin adjust-leading-to($lines, $font-size: $base-font-size) { - line-height: 1em * $lines * $base-line-height / $font-size; + @if $relative-font-sizing and $font-size != $base-font-size { + @warn "$relative-font-sizing is false but a relative font size was passed to adjust-leading-to"; + } + line-height: $font-unit * $lines * $base-line-height / $font-size; } // Calculate rhythm units @@ -56,7 +83,10 @@ $base-half-leader: $base-leader / 2; $lines: 1, $font-size: $base-font-size ) { - $rhythm: 1em * $lines * $base-line-height / $font-size; + @if $relative-font-sizing and $font-size != $base-font-size { + @warn "$relative-font-sizing is false but a relative font size was passed to the rhythm function"; + } + $rhythm: $font-unit * $lines * $base-line-height / $font-size; @return $rhythm; } @@ -97,19 +127,25 @@ $base-half-leader: $base-leader / 2; // Apply a border width to any side without destroying the vertical rhythm @mixin apply-side-rhythm-border($side, $width: 1px, $lines: 1, $font-size: $base-font-size, $border-style: $default-rhythm-border-style) { + @if $relative-font-sizing and $font-size != $base-font-size { + @warn "$relative-font-sizing is false but a relative font size was passed to apply-side-rhythm-border"; + } border-#{$side}: { style: $border-style; - width: 1em * $width / $font-size; + width: $font-unit * $width / $font-size; }; - padding-#{$side}: 1em / $font-size * ($lines * $base-line-height - $width); + padding-#{$side}: $font-unit / $font-size * ($lines * $base-line-height - $width); } // Aplly rhythm borders equally to all sides @mixin rhythm-borders($width: 1px, $lines: 1, $font-size: $base-font-size, $border-style: $default-rhythm-border-style) { + @if $relative-font-sizing and $font-size != $base-font-size { + @warn "$relative-font-sizing is false but a relative font size was passed to rhythm-borders"; + } border: { style: $border-style; - width: 1em * $width / $font-size; }; - padding: 1em / $font-size * ($lines * $base-line-height - $width); + width: $font-unit * $width / $font-size; }; + padding: $font-unit / $font-size * ($lines * $base-line-height - $width); } // Apply a leading rhythm border From 157c2e0518f3a84223f9930f6b4ad53d0c43751f Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Fri, 1 Jul 2011 21:41:35 -0700 Subject: [PATCH 13/56] Ensure there is a minimum of padding in each line when calculating how many lines are needed. --- .../compass/typography/_vertical_rhythm.scss | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/frameworks/compass/stylesheets/compass/typography/_vertical_rhythm.scss b/frameworks/compass/stylesheets/compass/typography/_vertical_rhythm.scss index 6d02d3fa..96895145 100644 --- a/frameworks/compass/stylesheets/compass/typography/_vertical_rhythm.scss +++ b/frameworks/compass/stylesheets/compass/typography/_vertical_rhythm.scss @@ -13,6 +13,10 @@ $ie-font-ratio: 16px / 100%; // Set to false if you want to use absolute pixes in sizing your typography. $relative-font-sizing: true !default; +// Ensure there is at least this many pixels +// of vertical padding above and below the text. +$min-line-padding: 2px; + // $base-font-size but in your output unit of choice. // Defaults to 1em when `$relative-font-sizing` $font-unit: if($relative-font-sizing, 1em, $base-font-size) !default; @@ -63,7 +67,7 @@ $base-half-leader: $base-leader / 2; // font size should use up. Does not have to be an integer, but it defaults // to the smallest integer that is large enough to fit the font. // Use $from_size to adjust from a non-base font-size. -@mixin adjust-font-size-to($to-size, $lines: ceil($to-size / $base-line-height), $from-size: $base-font-size) { +@mixin adjust-font-size-to($to-size, $lines: lines-for-font-size($to-size), $from-size: $base-font-size) { @if $relative-font-sizing and $from-size != $base-font-size { @warn "$relative-font-sizing is false but a relative font size was passed to adjust-font-size-to"; } @@ -90,6 +94,14 @@ $base-half-leader: $base-leader / 2; @return $rhythm; } +@function lines-for-font-size($font-size) { + $lines: ceil($font-size / $base-line-height); + @if $lines * $base-line-height - $font-size < $min-line-padding * 2 { + $lines: $lines + 1; + } + @return $lines; +} + // Apply leading whitespace @mixin leader($lines: 1, $font-size: $base-font-size, $property: margin) { #{$property}-top: rhythm($lines, $font-size); From 89ad638a1d54854badd2c2d790d4757021984179 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Fri, 1 Jul 2011 21:53:10 -0700 Subject: [PATCH 14/56] When the unit is in pixels, round down in the leader and up in the trailer. --- .../compass/typography/_vertical_rhythm.scss | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/frameworks/compass/stylesheets/compass/typography/_vertical_rhythm.scss b/frameworks/compass/stylesheets/compass/typography/_vertical_rhythm.scss index 96895145..548d1323 100644 --- a/frameworks/compass/stylesheets/compass/typography/_vertical_rhythm.scss +++ b/frameworks/compass/stylesheets/compass/typography/_vertical_rhythm.scss @@ -104,26 +104,38 @@ $base-half-leader: $base-leader / 2; // Apply leading whitespace @mixin leader($lines: 1, $font-size: $base-font-size, $property: margin) { - #{$property}-top: rhythm($lines, $font-size); + $leader: rhythm($lines, $font-size); + @if unit($leader) == px { + $leader: floor($leader) + } + #{$property}-top: $leader; } +// Apply leading whitespace as padding @mixin padding-leader($lines: 1, $font-size: $base-font-size) { @include leader($lines, $font-size, padding); } +// Apply leading whitespace as margin @mixin margin-leader($lines: 1, $font-size: $base-font-size) { @include leader($lines, $font-size, margin); } // Apply trailing whitespace @mixin trailer($lines: 1, $font-size: $base-font-size, $property: margin) { - #{$property}-bottom: rhythm($lines, $font-size); + $leader: rhythm($lines, $font-size); + @if unit($leader) == px { + $leader: ceil($leader) + } + #{$property}-bottom: $leader; } +// Apply trailing whitespace as padding @mixin padding-trailer($lines: 1, $font-size: $base-font-size) { @include trailer($lines, $font-size, padding); } +// Apply trailing whitespace as margin @mixin margin-trailer($lines: 1, $font-size: $base-font-size) { @include trailer($lines, $font-size, margin); } From 7ffe2c3a642ec602ad18bc949492cbeae71881db Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Fri, 1 Jul 2011 22:20:42 -0700 Subject: [PATCH 15/56] Update CHANGELOG --- doc-src/content/CHANGELOG.markdown | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index 0d092d36..30b83893 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -17,7 +17,10 @@ The Documentation for the [latest preview release](http://beta.compass-style.org 0.11.4 (UNRELEASED) ------------------- -* Vertical rhythm now supports absolute units like pixels. Set `$relative-font-sizing` to `false` to enable. +* Vertical rhythm now supports absolute units like pixels. + Set `$relative-font-sizing` to `false` to enable. +* Vertical rhythm now has a minimum padding that defaults to 2px. + This makes some edge cases look better. 0.11.3 (06/11/2011) ------------------- From 87c79bcfb6b727bf25694f6de4cb5a7623e9eed1 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sat, 2 Jul 2011 10:34:02 -0700 Subject: [PATCH 16/56] update the font-face example --- frameworks/compass/stylesheets/compass/css3/_font-face.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frameworks/compass/stylesheets/compass/css3/_font-face.scss b/frameworks/compass/stylesheets/compass/css3/_font-face.scss index 6c7d511c..a4d1921a 100644 --- a/frameworks/compass/stylesheets/compass/css3/_font-face.scss +++ b/frameworks/compass/stylesheets/compass/css3/_font-face.scss @@ -15,7 +15,7 @@ // // Example: // -// +font-face("this name", font-files("this.woff", "woff", "this.otf", "opentype"), "this.eot") +// @include font-face("this name", font-files("this.woff", woff, "this.otf", opentype), "this.eot") @mixin font-face( $name, $font-files, From a08d0319d03409e1619d088cef21c5781063c8b3 Mon Sep 17 00:00:00 2001 From: Caged Date: Sat, 2 Jul 2011 13:27:32 -0700 Subject: [PATCH 17/56] Fixes #449. Accept and honor offsets in selectors --- Gemfile.lock | 2 +- .../compass/utilities/sprites/_base.scss | 10 +++---- .../sass_extensions/functions/sprites.rb | 2 +- lib/compass/sprite_importer.rb | 8 ++--- test/integrations/sprites_test.rb | 30 +++++++++++++++++-- 5 files changed, 39 insertions(+), 13 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index ab6f3cba..5b86ed71 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.3.rails.0.dfb7c70) + compass (0.11.3.rails.0.2124003) chunky_png (~> 1.2) fssm (>= 0.2.7) sass (~> 3.1) diff --git a/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss b/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss index c346e181..1b268a84 100644 --- a/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss +++ b/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss @@ -30,18 +30,18 @@ $disable-magic-sprite-selectors:false !default; @include sprite-dimensions($map, $sprite); } @if not $disable-magic-sprite-selectors { - @include sprite-selectors($map, $sprite, $sprite); + @include sprite-selectors($map, $sprite, $sprite, $offset-x, $offset-y); } } // Include the selectors for the `$sprite` given the `$map` and the // `$full-sprite-name` // @private -@mixin sprite-selectors($map, $sprite-name, $full-sprite-name) { +@mixin sprite-selectors($map, $sprite-name, $full-sprite-name, $offset-x: 0, $offset-y: 0) { @each $selector in $sprite-selectors { @if sprite_has_selector($map, $sprite-name, $selector) { &:#{$selector}, &.#{$full-sprite-name}_#{$selector}, &.#{$full-sprite-name}-#{$selector} { - @include sprite-background-position($map, "#{$sprite-name}_#{$selector}"); + @include sprite-background-position($map, "#{$sprite-name}_#{$selector}", $offset-x, $offset-y); } } } @@ -53,13 +53,13 @@ $disable-magic-sprite-selectors:false !default; // If a base class is provided, then each class will extend it. // // If `$dimensions` is `true`, the sprite dimensions will specified. -@mixin sprites($map, $sprite-names, $base-class: false, $dimensions: false, $prefix: sprite-map-name($map)) { +@mixin sprites($map, $sprite-names, $base-class: false, $dimensions: false, $prefix: sprite-map-name($map), $offset-x: 0, $offset-y: 0) { @each $sprite-name in $sprite-names { @if sprite_does_not_have_parent($map, $sprite-name) { $full-sprite-name: "#{$prefix}-#{$sprite-name}"; .#{$full-sprite-name} { @if $base-class { @extend #{$base-class}; } - @include sprite($map, $sprite-name, $dimensions); + @include sprite($map, $sprite-name, $dimensions, $offset-x, $offset-y); } } } diff --git a/lib/compass/sass_extensions/functions/sprites.rb b/lib/compass/sass_extensions/functions/sprites.rb index 7639f4da..d006d3ee 100644 --- a/lib/compass/sass_extensions/functions/sprites.rb +++ b/lib/compass/sass_extensions/functions/sprites.rb @@ -34,7 +34,7 @@ module Compass::SassExtensions::Functions::Sprites # # background: url('/images/icons.png?12345678') 0 -24px no-repeat; def sprite(map, sprite, offset_x = ZERO, offset_y = ZERO) - sprite = convert_sprite_name(sprite) + sprite = convert_sprite_name(sprite) verify_map(map) unless sprite.is_a?(Sass::Script::String) raise Sass::SyntaxError, %Q(The second argument to sprite() must be a sprite name. See http://beta.compass-style.org/help/tutorials/spriting/ for more information.) diff --git a/lib/compass/sprite_importer.rb b/lib/compass/sprite_importer.rb index d46403d9..1bda1162 100644 --- a/lib/compass/sprite_importer.rb +++ b/lib/compass/sprite_importer.rb @@ -132,13 +132,13 @@ $#{name}-layout:vertical !default; @include sprite($#{name}-sprites, $name, $dimensions, $offset-x, $offset-y) } -@mixin #{name}-sprites($sprite-names, $dimensions: $#{name}-sprite-dimensions, $prefix: sprite-map-name($#{name}-sprites)) { - @include sprites($#{name}-sprites, $sprite-names, $#{name}-sprite-base-class, $dimensions, $prefix) +@mixin #{name}-sprites($sprite-names, $dimensions: $#{name}-sprite-dimensions, $prefix: sprite-map-name($#{name}-sprites), $offset-x: 0, $offset-y: 0) { + @include sprites($#{name}-sprites, $sprite-names, $#{name}-sprite-base-class, $dimensions, $prefix, $offset-x, $offset-y) } // Generates a class for each sprited image. -@mixin all-#{name}-sprites($dimensions: $#{name}-sprite-dimensions, $prefix: sprite-map-name($#{name}-sprites)) { - @include #{name}-sprites(#{sprite_names(uri).join(" ")}, $dimensions, $prefix); +@mixin all-#{name}-sprites($dimensions: $#{name}-sprite-dimensions, $prefix: sprite-map-name($#{name}-sprites), $offset-x: 0, $offset-y: 0) { + @include #{name}-sprites(#{sprite_names(uri).join(" ")}, $dimensions, $prefix, $offset-x, $offset-y); } SCSS end diff --git a/test/integrations/sprites_test.rb b/test/integrations/sprites_test.rb index 6f6834bd..9e69f703 100644 --- a/test/integrations/sprites_test.rb +++ b/test/integrations/sprites_test.rb @@ -448,7 +448,7 @@ class SpritesTest < Test::Unit::TestCase CSS end - it "should render corret sprite with css selectors via issue#248" do + it "should render correct sprite with css selectors via issue#248" do css = render <<-SCSS @import "selectors/*.png"; @include all-selectors-sprites; @@ -472,8 +472,33 @@ class SpritesTest < Test::Unit::TestCase } CSS end + + it "should honor offsets when rendering selectors via issue#449" do + css = render <<-SCSS + @import "selectors/*.png"; + @include all-selectors-sprites($offset-x: 20px, $offset-y: 20px); + SCSS + assert_correct css, <<-CSS + .selectors-sprite, .selectors-ten-by-ten { + background: url('/selectors-sedfef809e2.png') no-repeat; + } + + .selectors-ten-by-ten { + background-position: 20px 20px; + } + .selectors-ten-by-ten:hover, .selectors-ten-by-ten.ten-by-ten_hover, .selectors-ten-by-ten.ten-by-ten-hover { + background-position: 20px 0; + } + .selectors-ten-by-ten:target, .selectors-ten-by-ten.ten-by-ten_target, .selectors-ten-by-ten.ten-by-ten-target { + background-position: 20px -10px; + } + .selectors-ten-by-ten:active, .selectors-ten-by-ten.ten-by-ten_active, .selectors-ten-by-ten.ten-by-ten-active { + background-position: 20px 10px; + } + CSS + end - it "should render corret sprite with css selectors via magic mixin" do + it "should render correct sprite with css selectors via magic mixin" do css = render <<-SCSS @import "selectors/*.png"; a { @@ -499,6 +524,7 @@ class SpritesTest < Test::Unit::TestCase } CSS end + it "should not render corret sprite with css selectors via magic mixin" do css = render <<-SCSS From 239e43b4e04ee28a59edfa4678c87d6076f85d1d Mon Sep 17 00:00:00 2001 From: Glenn McLelland Date: Fri, 25 Mar 2011 17:21:50 -0500 Subject: [PATCH 18/56] Added force-wrap mixin to prevent URLs and long lines of text from breaking layouts. Closes GH-321 --- doc-src/content/CHANGELOG.markdown | 1 + .../compass/typography/text/force-wrap.haml | 15 +++++++++++++++ .../stylesheets/compass/typography/_text.scss | 1 + .../compass/typography/text/_force-wrap.scss | 12 ++++++++++++ .../stylesheets/compass/css/force-wrap.css | 10 ++++++++++ .../stylesheets/compass/sass/force-wrap.scss | 3 +++ 6 files changed, 42 insertions(+) create mode 100644 doc-src/content/reference/compass/typography/text/force-wrap.haml create mode 100644 frameworks/compass/stylesheets/compass/typography/text/_force-wrap.scss create mode 100644 test/fixtures/stylesheets/compass/css/force-wrap.css create mode 100644 test/fixtures/stylesheets/compass/sass/force-wrap.scss diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index 30b83893..1a4876c6 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -21,6 +21,7 @@ The Documentation for the [latest preview release](http://beta.compass-style.org Set `$relative-font-sizing` to `false` to enable. * Vertical rhythm now has a minimum padding that defaults to 2px. This makes some edge cases look better. +* New mixin `force-wrap` prevents URLs and long lines of text from breaking layouts. 0.11.3 (06/11/2011) ------------------- diff --git a/doc-src/content/reference/compass/typography/text/force-wrap.haml b/doc-src/content/reference/compass/typography/text/force-wrap.haml new file mode 100644 index 00000000..01c747d2 --- /dev/null +++ b/doc-src/content/reference/compass/typography/text/force-wrap.haml @@ -0,0 +1,15 @@ +--- +title: Wrapping Long Text and URLs +crumb: Force Wrap +framework: compass +stylesheet: compass/typography/text/_force-wrap.scss +layout: core +meta_description: Wrap URLs and long lines of text. +classnames: + - reference + - core + - typography +--- +- render 'reference' do + %p + This mixin will wrap URLs and long lines of text to prevent text from breaking layouts. diff --git a/frameworks/compass/stylesheets/compass/typography/_text.scss b/frameworks/compass/stylesheets/compass/typography/_text.scss index 9cd3f0a1..885f729d 100644 --- a/frameworks/compass/stylesheets/compass/typography/_text.scss +++ b/frameworks/compass/stylesheets/compass/typography/_text.scss @@ -1,3 +1,4 @@ @import "text/ellipsis"; @import "text/nowrap"; @import "text/replacement"; +@import "text/force-wrap"; diff --git a/frameworks/compass/stylesheets/compass/typography/text/_force-wrap.scss b/frameworks/compass/stylesheets/compass/typography/text/_force-wrap.scss new file mode 100644 index 00000000..8a14e8f4 --- /dev/null +++ b/frameworks/compass/stylesheets/compass/typography/text/_force-wrap.scss @@ -0,0 +1,12 @@ +// Prevent long urls and text from breaking layouts +// [originally from perishablepress.com](http://perishablepress.com/press/2010/06/01/wrapping-content/) +@mixin force-wrap { + white-space: pre; // CSS 2.0 + white-space: pre-wrap; // CSS 2.1 + white-space: pre-line; // CSS 3.0 + white-space: -pre-wrap; // Opera 4-6 + white-space: -o-pre-wrap; // Opera 7 + white-space: -moz-pre-wrap; // Mozilla + white-space: -hp-pre-wrap; // HP Printers + word-wrap: break-word; // IE 5+ +} diff --git a/test/fixtures/stylesheets/compass/css/force-wrap.css b/test/fixtures/stylesheets/compass/css/force-wrap.css new file mode 100644 index 00000000..5eda4c31 --- /dev/null +++ b/test/fixtures/stylesheets/compass/css/force-wrap.css @@ -0,0 +1,10 @@ +pre { + white-space: pre; /* CSS 2.0 */ + white-space: pre-wrap; /* CSS 2.1 */ + white-space: pre-line; /* CSS 3.0 */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: -moz-pre-wrap; /* Mozilla */ + white-space: -hp-pre-wrap; /* HP Printers */ + word-wrap: break-word; /* IE 5+ */ +} diff --git a/test/fixtures/stylesheets/compass/sass/force-wrap.scss b/test/fixtures/stylesheets/compass/sass/force-wrap.scss new file mode 100644 index 00000000..c71f28e6 --- /dev/null +++ b/test/fixtures/stylesheets/compass/sass/force-wrap.scss @@ -0,0 +1,3 @@ +@import "compass/typography/text"; + +pre { @include force-wrap; } From 8837b0a3470be2448a1913694bcf27f907a95dca Mon Sep 17 00:00:00 2001 From: "German M. Bravo" Date: Fri, 22 Apr 2011 12:37:39 -0500 Subject: [PATCH 19/56] Transitions accepting multiple transitions separated by commas --- .../stylesheets/compass/css3/_transition.scss | 36 ++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/frameworks/compass/stylesheets/compass/css3/_transition.scss b/frameworks/compass/stylesheets/compass/css3/_transition.scss index 60487bcc..405a3c26 100644 --- a/frameworks/compass/stylesheets/compass/css3/_transition.scss +++ b/frameworks/compass/stylesheets/compass/css3/_transition.scss @@ -72,7 +72,7 @@ $default-transition-delay: false !default; // Transition all-in-one shorthand -@mixin transition( +@mixin single-transition( $properties: $default-transition-property, $duration: $default-transition-duration, $function: $default-transition-function, @@ -83,3 +83,37 @@ $default-transition-delay: false !default; @if $function { @include transition-timing-function($function); } @if $delay { @include transition-delay($delay); } } + +@mixin transition( + $transition-1 : default, + $transition-2 : false, + $transition-3 : false, + $transition-4 : false, + $transition-5 : false, + $transition-6 : false, + $transition-7 : false, + $transition-8 : false, + $transition-9 : false, + $transition-10: false +) { + $legacy: (type-of($transition-1) == string and type-of(if($transition-2, $transition-2, 0)) == number and type-of(if($transition-3, $transition-3, '')) == string and type-of(if($transition-4, $transition-4, 0)) == number and ($transition-2 or $transition-3 or $transition-4)); + @if $legacy { + @warn "Passing separate arguments for a single transition to transition is deprecated. " + + "Pass the values as a single space-separated list, or use the single-transition mixin."; + @include single-transition( + if($transition-1, $transition-1, $default-transition-property), + if($transition-2, $transition-2, $default-transition-duration), + if($transition-3, $transition-3, $default-transition-funciton), + if($transition-4, $transition-4, $default-transition-delay) + ); + } + @else { + @if $transition-1 == default { + $transition-1 : -compass-space-list(compact($default-transition-property, $default-transition-duration, $default-transition-function, $default-transition-delay)); + } + $transition : compact($transition-1, $transition-2, $transition-3, $transition-4, $transition-5, $transition-6, $transition-7, $transition-8, $transition-9, $transition-10); + @include experimental(transition, $transition, + -moz, -webkit, -o, not -ms, not -khtml, official + ); + } +} From 349e29f7ca7c13f64f393b56f79f0563ad268e4c Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sat, 2 Jul 2011 17:54:38 -0700 Subject: [PATCH 20/56] Fix broken test. --- .../stylesheets/compass/css/force-wrap.css | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/test/fixtures/stylesheets/compass/css/force-wrap.css b/test/fixtures/stylesheets/compass/css/force-wrap.css index 5eda4c31..2fb33551 100644 --- a/test/fixtures/stylesheets/compass/css/force-wrap.css +++ b/test/fixtures/stylesheets/compass/css/force-wrap.css @@ -1,10 +1,9 @@ -pre { - white-space: pre; /* CSS 2.0 */ - white-space: pre-wrap; /* CSS 2.1 */ - white-space: pre-line; /* CSS 3.0 */ - white-space: -pre-wrap; /* Opera 4-6 */ - white-space: -o-pre-wrap; /* Opera 7 */ - white-space: -moz-pre-wrap; /* Mozilla */ - white-space: -hp-pre-wrap; /* HP Printers */ - word-wrap: break-word; /* IE 5+ */ -} +pre { + white-space: pre; + white-space: pre-wrap; + white-space: pre-line; + white-space: -pre-wrap; + white-space: -o-pre-wrap; + white-space: -moz-pre-wrap; + white-space: -hp-pre-wrap; + word-wrap: break-word; } From ab270c1adb0e2f26711bf70c2f37eff62b6ccf23 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sat, 2 Jul 2011 18:05:02 -0700 Subject: [PATCH 21/56] Fix edge case issue when there's no cache location. --- lib/compass/compiler.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/compass/compiler.rb b/lib/compass/compiler.rb index a10aee99..76f59b89 100644 --- a/lib/compass/compiler.rb +++ b/lib/compass/compiler.rb @@ -84,7 +84,7 @@ module Compass def run if new_config? # Wipe out the cache and force compilation if the configuration has changed. - remove options[:cache_location] + remove options[:cache_location] if options[:cache_location] options[:force] = true end From 1c65f4c52b529683b2cda9e3205d83590a1e47fb Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sat, 2 Jul 2011 20:52:54 -0700 Subject: [PATCH 22/56] Fix gem issue --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 9cbf03b4..c398a8c9 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -105,7 +105,7 @@ GEM rake (>= 0.8.7) rdoc (~> 3.4) thor (~> 0.14.4) - rake (0.9.2) + rake (0.8.7) rb-fsevent (0.4.0) rcov (0.9.9) rdoc (3.6.1) From b7e66a765886d09ea15cda27294bceff0612fe5b Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sat, 2 Jul 2011 20:57:24 -0700 Subject: [PATCH 23/56] Fix the mime type returned for svg images. Closes GH-442. --- lib/compass/sass_extensions/functions/inline_image.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/compass/sass_extensions/functions/inline_image.rb b/lib/compass/sass_extensions/functions/inline_image.rb index 9e411751..2c59f765 100644 --- a/lib/compass/sass_extensions/functions/inline_image.rb +++ b/lib/compass/sass_extensions/functions/inline_image.rb @@ -35,6 +35,8 @@ private 'image/jpeg' when /\.gif$/i 'image/gif' + when /\.svg$/i + 'image/svg+xml' when /\.otf$/i 'font/opentype' when /\.ttf$/i From 3b18b72d641aa50aa8d5032fcb9b2357f8aadccc Mon Sep 17 00:00:00 2001 From: Costin Bereveanu Date: Fri, 1 Jul 2011 01:01:50 -0700 Subject: [PATCH 24/56] Fix absolute path detection on Windows. Closes GH-451. --- doc-src/content/CHANGELOG.markdown | 1 + lib/compass/commands/project_base.rb | 4 ++-- lib/compass/configuration/adapters.rb | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index 1a4876c6..b497ee41 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -22,6 +22,7 @@ The Documentation for the [latest preview release](http://beta.compass-style.org * Vertical rhythm now has a minimum padding that defaults to 2px. This makes some edge cases look better. * New mixin `force-wrap` prevents URLs and long lines of text from breaking layouts. +* Fix absolute path detection on windows. 0.11.3 (06/11/2011) ------------------- diff --git a/lib/compass/commands/project_base.rb b/lib/compass/commands/project_base.rb index df1259d1..c4615518 100644 --- a/lib/compass/commands/project_base.rb +++ b/lib/compass/commands/project_base.rb @@ -84,8 +84,8 @@ module Compass end def absolute_path?(path) - # This is only going to work on unix, gonna need a better implementation. - path.index(File::SEPARATOR) == 0 + # Pretty basic implementation + path.index(File::SEPARATOR) == 0 || path.index(':') == 1 end def skip_extension_discovery? diff --git a/lib/compass/configuration/adapters.rb b/lib/compass/configuration/adapters.rb index 352eb3c4..215982fd 100644 --- a/lib/compass/configuration/adapters.rb +++ b/lib/compass/configuration/adapters.rb @@ -38,8 +38,8 @@ module Compass end def absolute_path?(path) - # This is only going to work on unix, gonna need a better implementation. - path.index(File::SEPARATOR) == 0 + # Pretty basic implementation + path.index(File::SEPARATOR) == 0 || path.index(':') == 1 end def to_sass_engine_options From efb484778d59d948a387871a32bfb5418a0a8966 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sat, 2 Jul 2011 21:09:04 -0700 Subject: [PATCH 25/56] update changelog --- doc-src/content/CHANGELOG.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index b497ee41..600a832e 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -23,6 +23,8 @@ The Documentation for the [latest preview release](http://beta.compass-style.org This makes some edge cases look better. * New mixin `force-wrap` prevents URLs and long lines of text from breaking layouts. * Fix absolute path detection on windows. +* Fix the mime type returned for inline svg images. +* Allow multiple transitions in the CSS3 `transition` mixin. 0.11.3 (06/11/2011) ------------------- From d7115caad66e99eee5576d6f18d67b17b1fd4dc5 Mon Sep 17 00:00:00 2001 From: ltackett Date: Fri, 29 Apr 2011 14:57:06 -0700 Subject: [PATCH 26/56] :focus should not use shorthand border property, since it only need to change the border-color Closes GH-367. --- doc-src/content/CHANGELOG.markdown | 1 + frameworks/blueprint/stylesheets/blueprint/_form.scss | 2 +- test/fixtures/stylesheets/blueprint/css/screen.css | 2 +- .../stylesheets/blueprint/css/single-imports/form.css | 2 +- .../stylesheets/blueprint/css/single-imports/reset.css | 8 +------- 5 files changed, 5 insertions(+), 10 deletions(-) diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index 600a832e..05de4694 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -25,6 +25,7 @@ The Documentation for the [latest preview release](http://beta.compass-style.org * Fix absolute path detection on windows. * Fix the mime type returned for inline svg images. * Allow multiple transitions in the CSS3 `transition` mixin. +* The Blueprint `:focus` styles no longer clobbers cascade-based overrides unnecessarily. 0.11.3 (06/11/2011) ------------------- diff --git a/frameworks/blueprint/stylesheets/blueprint/_form.scss b/frameworks/blueprint/stylesheets/blueprint/_form.scss index 39a3398a..25ce4560 100644 --- a/frameworks/blueprint/stylesheets/blueprint/_form.scss +++ b/frameworks/blueprint/stylesheets/blueprint/_form.scss @@ -59,7 +59,7 @@ background-color:#fff; border: 1px solid $unfocused-border-color; &:focus { - border: 1px solid $focus-border-color; + border-color: $focus-border-color; } } select { background-color:#fff; border-width:1px; border-style:solid; } diff --git a/test/fixtures/stylesheets/blueprint/css/screen.css b/test/fixtures/stylesheets/blueprint/css/screen.css index eed89ea9..280eab5d 100644 --- a/test/fixtures/stylesheets/blueprint/css/screen.css +++ b/test/fixtures/stylesheets/blueprint/css/screen.css @@ -759,7 +759,7 @@ textarea { border: 1px solid #bbbbbb; } input.text:focus, input.title:focus, input[type=email]:focus, input[type=text]:focus, input[type=password]:focus, textarea:focus { - border: 1px solid #666666; } + border-color: #666666; } select { background-color: #fff; diff --git a/test/fixtures/stylesheets/blueprint/css/single-imports/form.css b/test/fixtures/stylesheets/blueprint/css/single-imports/form.css index 13c1bd2a..a61ac8f3 100644 --- a/test/fixtures/stylesheets/blueprint/css/single-imports/form.css +++ b/test/fixtures/stylesheets/blueprint/css/single-imports/form.css @@ -30,7 +30,7 @@ form.bp textarea { border: 1px solid #bbbbbb; } form.bp input.text:focus, form.bp input.title:focus, form.bp input[type=email]:focus, form.bp input[type=text]:focus, form.bp input[type=password]:focus, form.bp textarea:focus { - border: 1px solid #666666; } + border-color: #666666; } form.bp select { background-color: #fff; border-width: 1px; diff --git a/test/fixtures/stylesheets/blueprint/css/single-imports/reset.css b/test/fixtures/stylesheets/blueprint/css/single-imports/reset.css index 63bd86a7..357295b2 100644 --- a/test/fixtures/stylesheets/blueprint/css/single-imports/reset.css +++ b/test/fixtures/stylesheets/blueprint/css/single-imports/reset.css @@ -3,13 +3,7 @@ html { padding: 0; border: 0; } -.bp-reset-element, body, h1, h2, h3, h4, h5, h6, article, aside, dialog, figure, footer, header, hgroup, nav, section, blockquote, q, th, td, caption, table, -div, span, object, iframe, p, -pre, a, abbr, acronym, address, -code, del, dfn, em, img, -dl, dt, dd, ol, ul, li, fieldset, -form, label, legend, -caption, tbody, tfoot, thead, tr { +.bp-reset-element, body, h1, h2, h3, h4, h5, h6, article, aside, dialog, figure, footer, header, hgroup, nav, section, blockquote, q, th, td, caption, table, div, span, object, iframe, p, pre, a, abbr, acronym, address, code, del, dfn, em, img, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, caption, tbody, tfoot, thead, tr { margin: 0; padding: 0; border: 0; From 8d8d3eecbc80ee0d55b077ddd3d6d56219b5bef3 Mon Sep 17 00:00:00 2001 From: Lorin Tackett Date: Mon, 13 Jun 2011 12:02:45 -0700 Subject: [PATCH 27/56] grid-background vertical rhythm should be based off of $blueprint-font-size, rather than a static value. Closes GH-429. --- frameworks/blueprint/stylesheets/blueprint/_debug.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frameworks/blueprint/stylesheets/blueprint/_debug.scss b/frameworks/blueprint/stylesheets/blueprint/_debug.scss index 414fa1a5..fbf0837e 100644 --- a/frameworks/blueprint/stylesheets/blueprint/_debug.scss +++ b/frameworks/blueprint/stylesheets/blueprint/_debug.scss @@ -14,7 +14,7 @@ $total : $blueprint-grid-columns, $column : $blueprint-grid-width, $gutter : $blueprint-grid-margin, - $baseline : 20px + $baseline : $blueprint-font-size * 1.5 ); } } From 842e877bc0650653afa5194f9d2e022d6697af33 Mon Sep 17 00:00:00 2001 From: Stafford Brooke Date: Sat, 18 Jun 2011 09:24:51 -0700 Subject: [PATCH 28/56] Broken link fixed to what I think is the correct section of the SASS docs. Closes GH-435. --- doc-src/content/reference/compass/helpers.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc-src/content/reference/compass/helpers.haml b/doc-src/content/reference/compass/helpers.haml index 3a8846ff..f2b75453 100644 --- a/doc-src/content/reference/compass/helpers.haml +++ b/doc-src/content/reference/compass/helpers.haml @@ -15,7 +15,7 @@ layout: core :markdown The compass helpers are functions that augment the [functions provided - by Sass](http://sass-lang.com/yardoc/Sass/Script/Functions.html). + by Sass](http://sass-lang.com/docs/yardoc/Sass/Script/Functions.html). All Helpers: From b2b9d57505b25d83fe05226d02c87d22e04afdaf Mon Sep 17 00:00:00 2001 From: Matt Fawcett Date: Wed, 29 Jun 2011 12:05:26 +0100 Subject: [PATCH 29/56] Include the Compass logger to prevent "uninitialized constant Compass::Logger" Closes GH-438. --- lib/compass.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/compass.rb b/lib/compass.rb index 8990bdfa..2d097fcb 100644 --- a/lib/compass.rb +++ b/lib/compass.rb @@ -1,7 +1,7 @@ module Compass end -%w(dependencies util browser_support sass_extensions version errors quick_cache).each do |lib| +%w(dependencies util browser_support sass_extensions version errors quick_cache logger).each do |lib| require "compass/#{lib}" end From 36f2e56f1cfa1fd72cc9981d998cd88173e1ba65 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sat, 2 Jul 2011 22:08:00 -0700 Subject: [PATCH 30/56] Better docs for the shadow mixins. Closes GH-433. --- frameworks/compass/stylesheets/compass/css3/_box-shadow.scss | 5 ++++- .../compass/stylesheets/compass/css3/_text-shadow.scss | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/frameworks/compass/stylesheets/compass/css3/_box-shadow.scss b/frameworks/compass/stylesheets/compass/css3/_box-shadow.scss index f0eeee61..fca9b2f6 100644 --- a/frameworks/compass/stylesheets/compass/css3/_box-shadow.scss +++ b/frameworks/compass/stylesheets/compass/css3/_box-shadow.scss @@ -24,7 +24,10 @@ $default-box-shadow-spread : false !default; // The default shadow inset: inset or false (for standard shadow). $default-box-shadow-inset : false !default; -// Provides cross-browser for Webkit, Gecko, and CSS3 box shadows when one or more box shadows are needed. +// Provides cross-browser for Webkit, Gecko, and CSS3 box shadows when one or more box +// shadows are needed. +// Each shadow argument should adhere to the standard css3 syntax for the +// box-shadow property. @mixin box-shadow( $shadow-1 : default, $shadow-2 : false, diff --git a/frameworks/compass/stylesheets/compass/css3/_text-shadow.scss b/frameworks/compass/stylesheets/compass/css3/_text-shadow.scss index ab3cb0bc..97ee2c4c 100644 --- a/frameworks/compass/stylesheets/compass/css3/_text-shadow.scss +++ b/frameworks/compass/stylesheets/compass/css3/_text-shadow.scss @@ -9,6 +9,8 @@ $default-text-shadow-v-offset: 0px !default; $default-text-shadow-blur: 1px !default; // Provides cross-browser text shadows when one or more shadows are needed. +// Each shadow argument should adhere to the standard css3 syntax for the +// text-shadow property. @mixin text-shadow( $shadow-1 : default, $shadow-2 : false, From 23d3d341de22862cd59f21affc143f1bedead768 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sat, 2 Jul 2011 22:51:26 -0700 Subject: [PATCH 31/56] Fix test failures. --- frameworks/blueprint/stylesheets/blueprint/_debug.scss | 2 +- test/fixtures/stylesheets/blueprint/css/screen.css | 8 ++++---- .../stylesheets/blueprint/css/single-imports/debug.css | 8 ++++---- .../stylesheets/blueprint/css/single-imports/reset.css | 8 +++++++- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/frameworks/blueprint/stylesheets/blueprint/_debug.scss b/frameworks/blueprint/stylesheets/blueprint/_debug.scss index fbf0837e..01b7d7c5 100644 --- a/frameworks/blueprint/stylesheets/blueprint/_debug.scss +++ b/frameworks/blueprint/stylesheets/blueprint/_debug.scss @@ -1,5 +1,5 @@ @import "compass/layout/grid-background"; -@import "blueprint/grid"; +@import "grid", "typography"; // Shows a background that can be used to check grid alignment. // By default this is a pure css version that only works in browsers diff --git a/test/fixtures/stylesheets/blueprint/css/screen.css b/test/fixtures/stylesheets/blueprint/css/screen.css index 280eab5d..75790950 100644 --- a/test/fixtures/stylesheets/blueprint/css/screen.css +++ b/test/fixtures/stylesheets/blueprint/css/screen.css @@ -672,10 +672,10 @@ input.span-24, textarea.span-24, select.span-24 { background-image: -o-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), -o-linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); background-image: -ms-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), -ms-linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); background-image: linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); - -moz-background-size: 100% 20px, auto; - -webkit-background-size: 100% 20px, auto; - -o-background-size: 100% 20px, auto; - background-size: 100% 20px, auto; + -moz-background-size: 100% 18px, auto; + -webkit-background-size: 100% 18px, auto; + -o-background-size: 100% 18px, auto; + background-size: 100% 18px, auto; background-position: left top; } .feedback, .error, .alert, .notice, .success, .info { diff --git a/test/fixtures/stylesheets/blueprint/css/single-imports/debug.css b/test/fixtures/stylesheets/blueprint/css/single-imports/debug.css index 7b305c81..738b46d3 100644 --- a/test/fixtures/stylesheets/blueprint/css/single-imports/debug.css +++ b/test/fixtures/stylesheets/blueprint/css/single-imports/debug.css @@ -5,8 +5,8 @@ background-image: -o-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), -o-linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); background-image: -ms-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), -ms-linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); background-image: linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); - -moz-background-size: 100% 20px, auto; - -webkit-background-size: 100% 20px, auto; - -o-background-size: 100% 20px, auto; - background-size: 100% 20px, auto; + -moz-background-size: 100% 18px, auto; + -webkit-background-size: 100% 18px, auto; + -o-background-size: 100% 18px, auto; + background-size: 100% 18px, auto; background-position: left top; } diff --git a/test/fixtures/stylesheets/blueprint/css/single-imports/reset.css b/test/fixtures/stylesheets/blueprint/css/single-imports/reset.css index 357295b2..63bd86a7 100644 --- a/test/fixtures/stylesheets/blueprint/css/single-imports/reset.css +++ b/test/fixtures/stylesheets/blueprint/css/single-imports/reset.css @@ -3,7 +3,13 @@ html { padding: 0; border: 0; } -.bp-reset-element, body, h1, h2, h3, h4, h5, h6, article, aside, dialog, figure, footer, header, hgroup, nav, section, blockquote, q, th, td, caption, table, div, span, object, iframe, p, pre, a, abbr, acronym, address, code, del, dfn, em, img, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, caption, tbody, tfoot, thead, tr { +.bp-reset-element, body, h1, h2, h3, h4, h5, h6, article, aside, dialog, figure, footer, header, hgroup, nav, section, blockquote, q, th, td, caption, table, +div, span, object, iframe, p, +pre, a, abbr, acronym, address, +code, del, dfn, em, img, +dl, dt, dd, ol, ul, li, fieldset, +form, label, legend, +caption, tbody, tfoot, thead, tr { margin: 0; padding: 0; border: 0; From b8b6af9d498cea6269be56fe77a8c1ee413af5d3 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 3 Jul 2011 00:18:58 -0700 Subject: [PATCH 32/56] Return a non-zero exit code if there are any stylesheet compilation errors. Closes GH-432. --- features/command_line.feature | 9 +++++++++ features/step_definitions/command_line_steps.rb | 7 +++++++ lib/compass/commands/base.rb | 8 ++++++++ lib/compass/commands/update_project.rb | 3 ++- lib/compass/compiler.rb | 3 +++ lib/compass/exec/sub_command_ui.rb | 7 ++++--- 6 files changed, 33 insertions(+), 4 deletions(-) diff --git a/features/command_line.feature b/features/command_line.feature index 06e0060c..dd529977 100644 --- a/features/command_line.feature +++ b/features/command_line.feature @@ -63,6 +63,15 @@ Feature: Command Line And I am told that I can place stylesheets in the sass subdirectory And I am told how to compile my sass stylesheets + Scenario: Compiling a project with errors + Given I am using the existing project in test/fixtures/stylesheets/compass + And the project has a file named "sass/error.scss" containing: + """ + .broken { + """ + When I run: compass compile + Then the command exits with a non-zero error code + Scenario: Creating a bare project with a framework When I create a project using: compass create bare_project --using blueprint --bare Then an error message is printed out: A bare project cannot be created when a framework is specified. diff --git a/features/step_definitions/command_line_steps.rb b/features/step_definitions/command_line_steps.rb index 5bddd7a7..fd45fdc9 100644 --- a/features/step_definitions/command_line_steps.rb +++ b/features/step_definitions/command_line_steps.rb @@ -53,6 +53,13 @@ Given /^I should clean up the directory: (\w+)$/ do |directory| @cleanup_directories << directory end +Given %r{^the project has a file named "([^"]*)" containing:$} do |arg1, string| + File.open(arg1, "w") do |f| + f << string + end +end + + # When Actions are performed When /^I create a project using: compass create ([^\s]+) ?(.+)?$/ do |dir, args| @cleanup_directories << dir diff --git a/lib/compass/commands/base.rb b/lib/compass/commands/base.rb index 046fedb6..d0149752 100644 --- a/lib/compass/commands/base.rb +++ b/lib/compass/commands/base.rb @@ -22,6 +22,14 @@ module Compass raise StandardError.new("Not Implemented") end + def successful? + !@failed + end + + def failed! + @failed = true + end + protected def framework diff --git a/lib/compass/commands/update_project.rb b/lib/compass/commands/update_project.rb index 30e2654f..3edd6074 100644 --- a/lib/compass/commands/update_project.rb +++ b/lib/compass/commands/update_project.rb @@ -34,7 +34,8 @@ module Compass compiler = new_compiler_instance check_for_sass_files!(compiler) compiler.clean! if compiler.new_config? - compiler.run + error_count = compiler.run + failed! if error_count > 0 end def check_for_sass_files!(compiler) diff --git a/lib/compass/compiler.rb b/lib/compass/compiler.rb index 76f59b89..19b26415 100644 --- a/lib/compass/compiler.rb +++ b/lib/compass/compiler.rb @@ -82,6 +82,7 @@ module Compass end def run + failure_count = 0 if new_config? # Wipe out the cache and force compilation if the configuration has changed. remove options[:cache_location] if options[:cache_location] @@ -97,6 +98,7 @@ module Compass begin compile_if_required sass_filename, css_filename rescue Sass::SyntaxError => e + failure_count += 1 handle_exception(sass_filename, css_filename, e) end end @@ -104,6 +106,7 @@ module Compass if options[:time] puts "Compilation took #{(result.__duration * 1000).round / 1000.0}s" end + return failure_count end def compile_if_required(sass_filename, css_filename) diff --git a/lib/compass/exec/sub_command_ui.rb b/lib/compass/exec/sub_command_ui.rb index 43a5a308..f348298f 100644 --- a/lib/compass/exec/sub_command_ui.rb +++ b/lib/compass/exec/sub_command_ui.rb @@ -12,8 +12,7 @@ module Compass::Exec def run! begin - perform! - return 0 + return perform! rescue Exception => e raise e if e.is_a? SystemExit if e.is_a?(::Compass::Error) || e.is_a?(OptionParser::ParseError) @@ -40,7 +39,9 @@ module Compass::Exec else command_class.parse!(args) end - command_class.new(Dir.getwd, @options).execute + cmd = command_class.new(Dir.getwd, @options) + cmd.execute + cmd.successful? ? 0 : 1 rescue OptionParser::ParseError => e puts "Error: #{e.message}" puts command_class.usage if command_class.respond_to?(:usage) From 27c8dfbee8c4ad0ae793e96443ff34c4f850b898 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 3 Jul 2011 00:32:12 -0700 Subject: [PATCH 33/56] Update changelog --- doc-src/content/CHANGELOG.markdown | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index 05de4694..e6ab0ed9 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -14,7 +14,7 @@ The Documentation for the [latest stable release](http://compass-style.org/docs/ The Documentation for the [latest preview release](http://beta.compass-style.org/) -0.11.4 (UNRELEASED) +0.11.4 (07/03/2011) ------------------- * Vertical rhythm now supports absolute units like pixels. @@ -26,6 +26,8 @@ The Documentation for the [latest preview release](http://beta.compass-style.org * Fix the mime type returned for inline svg images. * Allow multiple transitions in the CSS3 `transition` mixin. * The Blueprint `:focus` styles no longer clobbers cascade-based overrides unnecessarily. +* The Blueprint grid-background vertical rhythm is now based off of $blueprint-font-size, + rather than a static value of 20px 0.11.3 (06/11/2011) ------------------- From 432309d1a729bd3276bc9ed3c22908405bb0bead Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 3 Jul 2011 00:32:59 -0700 Subject: [PATCH 34/56] Version bump. --- VERSION.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION.yml b/VERSION.yml index b9398331..70e78557 100644 --- a/VERSION.yml +++ b/VERSION.yml @@ -1,5 +1,5 @@ --- :major: 0 :minor: 11 -:patch: 3 +:patch: 4 :name: Antares From 539f206e51d34a35bbcec602e7a5d5ae21246a9e Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 3 Jul 2011 10:45:28 -0700 Subject: [PATCH 35/56] Fix issue with parent directory references within the sass_path in the compass compiler. Closes GH-409. --- lib/compass/compiler.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/compass/compiler.rb b/lib/compass/compiler.rb index 19b26415..f5dcbe12 100644 --- a/lib/compass/compiler.rb +++ b/lib/compass/compiler.rb @@ -7,7 +7,7 @@ module Compass def initialize(working_path, from, to, options) self.working_path = working_path.to_s - self.from, self.to = from.gsub('./', ''), to + self.from, self.to = File.expand_path(from), to self.logger = options.delete(:logger) sass_opts = options.delete(:sass) || {} self.options = options From 7a814581e7a2ea146d4414a609018068c2459499 Mon Sep 17 00:00:00 2001 From: Thomas Walpole Date: Sun, 3 Jul 2011 10:48:43 -0700 Subject: [PATCH 36/56] fix typo --- frameworks/compass/stylesheets/compass/css3/_transition.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frameworks/compass/stylesheets/compass/css3/_transition.scss b/frameworks/compass/stylesheets/compass/css3/_transition.scss index 405a3c26..2cab9fd5 100644 --- a/frameworks/compass/stylesheets/compass/css3/_transition.scss +++ b/frameworks/compass/stylesheets/compass/css3/_transition.scss @@ -103,7 +103,7 @@ $default-transition-delay: false !default; @include single-transition( if($transition-1, $transition-1, $default-transition-property), if($transition-2, $transition-2, $default-transition-duration), - if($transition-3, $transition-3, $default-transition-funciton), + if($transition-3, $transition-3, $default-transition-function), if($transition-4, $transition-4, $default-transition-delay) ); } From 10168fe1473c57fd0949f5980e0bd175ef826dc1 Mon Sep 17 00:00:00 2001 From: Dirkjan Bussink Date: Sun, 3 Jul 2011 21:40:04 +0200 Subject: [PATCH 37/56] Gemfile.lock should not be part of a library / gem http://yehudakatz.com/2010/12/16/clarifying-the-roles-of-the-gemspec-and-gemfile/ --- .gitignore | 1 + Gemfile.lock | 155 --------------------------------------------------- 2 files changed, 1 insertion(+), 155 deletions(-) delete mode 100644 Gemfile.lock diff --git a/.gitignore b/.gitignore index 6a991e7e..fbe701a3 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,4 @@ devbin *.rbc vendor/ruby vendor +Gemfile.lock diff --git a/Gemfile.lock b/Gemfile.lock deleted file mode 100644 index dd13d25b..00000000 --- a/Gemfile.lock +++ /dev/null @@ -1,155 +0,0 @@ -GIT - remote: git://github.com/johnbintz/fakefs.git - revision: 005ddaaeb2b2881391c31ac9846a55ce5a42c206 - specs: - fakefs (0.3.1) - -PATH - remote: . - specs: - compass (0.11.3.461a589) - chunky_png (~> 1.2) - fssm (>= 0.2.7) - sass (~> 3.1) - -GEM - remote: http://rubygems.org/ - specs: - ZenTest (4.5.0) - abstract (1.0.0) - actionmailer (3.0.7) - actionpack (= 3.0.7) - mail (~> 2.2.15) - actionpack (3.0.7) - activemodel (= 3.0.7) - activesupport (= 3.0.7) - builder (~> 2.1.2) - erubis (~> 2.6.6) - i18n (~> 0.5.0) - rack (~> 1.2.1) - rack-mount (~> 0.6.14) - rack-test (~> 0.5.7) - tzinfo (~> 0.3.23) - activemodel (3.0.7) - activesupport (= 3.0.7) - builder (~> 2.1.2) - i18n (~> 0.5.0) - activerecord (3.0.7) - activemodel (= 3.0.7) - activesupport (= 3.0.7) - arel (~> 2.0.2) - tzinfo (~> 0.3.23) - activeresource (3.0.7) - activemodel (= 3.0.7) - activesupport (= 3.0.7) - activesupport (3.0.7) - addressable (2.2.5) - arel (2.0.9) - autotest (4.4.6) - ZenTest (>= 4.4.1) - autotest-fsevent (0.2.5) - sys-uname - builder (2.1.2) - chunky_png (1.2.0) - compass-validator (3.0.1) - css_parser (1.0.1) - cucumber (0.9.4) - builder (~> 2.1.2) - diff-lcs (~> 1.1.2) - gherkin (~> 2.2.9) - json (~> 1.4.6) - term-ansicolor (~> 1.0.5) - diff-lcs (1.1.2) - em-dir-watcher (0.9.4) - em-websocket (0.2.1) - addressable (>= 2.1.1) - eventmachine (>= 0.12.9) - erubis (2.6.6) - abstract (>= 1.0.0) - eventmachine (0.12.10) - fssm (0.2.7) - gherkin (2.2.9) - json (~> 1.4.6) - term-ansicolor (~> 1.0.5) - haml (3.1.1) - i18n (0.5.0) - json (1.4.6) - livereload (1.6) - em-dir-watcher (>= 0.1) - em-websocket (>= 0.1.2) - ruby-json (>= 1.1.2) - mail (2.2.17) - activesupport (>= 2.3.6) - i18n (>= 0.4.0) - mime-types (~> 1.16) - treetop (~> 1.4.8) - mime-types (1.16) - mocha (0.9.12) - polyglot (0.3.1) - rack (1.2.2) - rack-mount (0.6.14) - rack (>= 1.0.0) - rack-test (0.5.7) - rack (>= 1.0) - rails (3.0.7) - actionmailer (= 3.0.7) - actionpack (= 3.0.7) - activerecord (= 3.0.7) - activeresource (= 3.0.7) - activesupport (= 3.0.7) - bundler (~> 1.0) - railties (= 3.0.7) - railties (3.0.7) - actionpack (= 3.0.7) - activesupport (= 3.0.7) - rake (>= 0.8.7) - thor (~> 0.14.4) - rake (0.8.7) - rb-fsevent (0.4.0) - rcov (0.9.9) - rspec (2.0.1) - rspec-core (~> 2.0.1) - rspec-expectations (~> 2.0.1) - rspec-mocks (~> 2.0.1) - rspec-core (2.0.1) - rspec-expectations (2.0.1) - diff-lcs (>= 1.1.2) - rspec-mocks (2.0.1) - rspec-core (~> 2.0.1) - rspec-expectations (~> 2.0.1) - ruby-json (1.1.2) - ruby-prof (0.10.5) - rubyzip (0.9.4) - sass (3.1.1) - sys-uname (0.8.5) - term-ansicolor (1.0.5) - thor (0.14.6) - timecop (0.3.5) - treetop (1.4.9) - polyglot (>= 0.3.1) - tzinfo (0.3.26) - -PLATFORMS - ruby - -DEPENDENCIES - autotest - autotest-fsevent - compass! - compass-validator (= 3.0.1) - css_parser (~> 1.0.1) - cucumber (~> 0.9.2) - diff-lcs (~> 1.1.2) - fakefs! - haml (~> 3.1) - livereload - mocha - rails (~> 3.0.0.rc) - rake (= 0.8.7) - rb-fsevent - rcov - rspec (~> 2.0.0) - ruby-prof - rubyzip - sass (~> 3.1) - timecop From 42bb5563292d17a0ae36e70af29e155c38d8f618 Mon Sep 17 00:00:00 2001 From: Dirkjan Bussink Date: Sun, 3 Jul 2011 21:46:46 +0200 Subject: [PATCH 38/56] Fix failing test when updating to latest SASS This makes rake test green on Rubinius, 1.8.7 and 1.9.2. Removed the Gemfile.lock in the previous version so everything can be updated. Closes GH-456. --- test/units/configuration_test.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/units/configuration_test.rb b/test/units/configuration_test.rb index 792df86d..5be7b3c2 100644 --- a/test/units/configuration_test.rb +++ b/test/units/configuration_test.rb @@ -101,7 +101,7 @@ class ConfigurationTest < Test::Unit::TestCase plugin_opts = Compass.configuration.to_sass_plugin_options - assert load_paths.include?("/home/chris/my_compass_project/../foo") + assert load_paths.include?("/home/chris/foo") assert load_paths.include?("/path/to/my/framework"), load_paths.inspect assert_equal "/home/chris/my_compass_project/css/framework", plugin_opts[:template_location].find{|s,c| s == "/path/to/my/framework"}[1] assert_equal "/home/chris/my_compass_project/css/foo", plugin_opts[:template_location].find{|s,c| s == "/home/chris/my_compass_project/../foo"}[1] @@ -141,7 +141,7 @@ EXPECTED load_paths = load_paths_as_strings(Compass.configuration.to_sass_engine_options[:load_paths]) - assert load_paths.include?("/home/chris/my_compass_project/../foo") + assert load_paths.include?("/home/chris/foo") assert load_paths.include?("/path/to/my/framework"), load_paths.inspect assert_equal "/home/chris/my_compass_project/css/framework", Compass.configuration.to_sass_plugin_options[:template_location].find{|s,c| s == "/path/to/my/framework"}[1] assert_equal "/home/chris/my_compass_project/css/foo", Compass.configuration.to_sass_plugin_options[:template_location].find{|s,c| s == "/home/chris/my_compass_project/../foo"}[1] From a4b35e7515cf540cdb0f567a4ef1ad2851318f62 Mon Sep 17 00:00:00 2001 From: Eric Meyer Date: Sat, 9 Jul 2011 14:17:30 -0600 Subject: [PATCH 39/56] fix warning logic in vertical-rhythms module --- .../compass/typography/_vertical_rhythm.scss | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/frameworks/compass/stylesheets/compass/typography/_vertical_rhythm.scss b/frameworks/compass/stylesheets/compass/typography/_vertical_rhythm.scss index 548d1323..ba733b26 100644 --- a/frameworks/compass/stylesheets/compass/typography/_vertical_rhythm.scss +++ b/frameworks/compass/stylesheets/compass/typography/_vertical_rhythm.scss @@ -68,7 +68,7 @@ $base-half-leader: $base-leader / 2; // to the smallest integer that is large enough to fit the font. // Use $from_size to adjust from a non-base font-size. @mixin adjust-font-size-to($to-size, $lines: lines-for-font-size($to-size), $from-size: $base-font-size) { - @if $relative-font-sizing and $from-size != $base-font-size { + @if not $relative-font-sizing and $from-size != $base-font-size { @warn "$relative-font-sizing is false but a relative font size was passed to adjust-font-size-to"; } font-size: $font-unit * $to-size / $from-size; @@ -76,7 +76,7 @@ $base-half-leader: $base-leader / 2; } @mixin adjust-leading-to($lines, $font-size: $base-font-size) { - @if $relative-font-sizing and $font-size != $base-font-size { + @if not $relative-font-sizing and $font-size != $base-font-size { @warn "$relative-font-sizing is false but a relative font size was passed to adjust-leading-to"; } line-height: $font-unit * $lines * $base-line-height / $font-size; @@ -87,7 +87,7 @@ $base-half-leader: $base-leader / 2; $lines: 1, $font-size: $base-font-size ) { - @if $relative-font-sizing and $font-size != $base-font-size { + @if not $relative-font-sizing and $font-size != $base-font-size { @warn "$relative-font-sizing is false but a relative font size was passed to the rhythm function"; } $rhythm: $font-unit * $lines * $base-line-height / $font-size; @@ -151,7 +151,7 @@ $base-half-leader: $base-leader / 2; // Apply a border width to any side without destroying the vertical rhythm @mixin apply-side-rhythm-border($side, $width: 1px, $lines: 1, $font-size: $base-font-size, $border-style: $default-rhythm-border-style) { - @if $relative-font-sizing and $font-size != $base-font-size { + @if not $relative-font-sizing and $font-size != $base-font-size { @warn "$relative-font-sizing is false but a relative font size was passed to apply-side-rhythm-border"; } border-#{$side}: { @@ -163,7 +163,7 @@ $base-half-leader: $base-leader / 2; // Aplly rhythm borders equally to all sides @mixin rhythm-borders($width: 1px, $lines: 1, $font-size: $base-font-size, $border-style: $default-rhythm-border-style) { - @if $relative-font-sizing and $font-size != $base-font-size { + @if not $relative-font-sizing and $font-size != $base-font-size { @warn "$relative-font-sizing is false but a relative font size was passed to rhythm-borders"; } border: { From 07819ccfbdcf3055d53877aa93187ce5f50df8ff Mon Sep 17 00:00:00 2001 From: Irina Dumitrascu Date: Thu, 7 Jul 2011 00:20:35 +0300 Subject: [PATCH 40/56] Reset only the block HTML elements #339 - used elements-of-type(html5-block) in all the reset stylesheets (instead of duplicate tag enumerations) - removed dialog - canvas is inline, not block Closes GH-339, GH-462. --- .../blueprint/reset/_utilities.scss | 2 +- .../compass/reset/_utilities-legacy.scss | 2 +- .../stylesheets/compass/reset/_utilities.scss | 5 ++--- .../sass_extensions/functions/display.rb | 21 ++++++++++--------- .../stylesheets/blueprint/css/screen.css | 3 +-- .../css/single-imports/reset-utilities.css | 8 +++---- .../blueprint/css/single-imports/reset.css | 4 ++-- .../stylesheets/compass/css/print.css | 4 ++-- .../stylesheets/compass/css/reset.css | 12 +++++------ 9 files changed, 30 insertions(+), 31 deletions(-) diff --git a/frameworks/blueprint/stylesheets/blueprint/reset/_utilities.scss b/frameworks/blueprint/stylesheets/blueprint/reset/_utilities.scss index f904153e..2754b476 100644 --- a/frameworks/blueprint/stylesheets/blueprint/reset/_utilities.scss +++ b/frameworks/blueprint/stylesheets/blueprint/reset/_utilities.scss @@ -17,7 +17,7 @@ form, label, legend, caption, tbody, tfoot, thead, tr { @include blueprint-basic-reset; } #{headers(all)} { @include blueprint-basic-reset(bp-reset-element); } - #{elements-of-type(html5)} { @include blueprint-reset-html5-element(bp-reset-element); } + #{elements-of-type(html5-block)} { @include blueprint-reset-html5-element(bp-reset-element); } blockquote, q { @include blueprint-reset-quotation(bp-reset-element); } th, td, caption { @include blueprint-reset-table-cell(bp-reset-element); } table { @include blueprint-reset-table(bp-reset-element); } diff --git a/frameworks/compass/stylesheets/compass/reset/_utilities-legacy.scss b/frameworks/compass/stylesheets/compass/reset/_utilities-legacy.scss index 268e0f9f..8273ca33 100644 --- a/frameworks/compass/stylesheets/compass/reset/_utilities-legacy.scss +++ b/frameworks/compass/stylesheets/compass/reset/_utilities-legacy.scss @@ -105,7 +105,7 @@ // so they are rendered correctly in browsers that don't recognize them // and reset in browsers that have default styles for them. @mixin reset-html5 { - article, aside, canvas, details, figcaption, figure, footer, header, hgroup, menu, nav, section, summary { + #{elements-of-type(html5-block)} { @include reset-box-model; display: block; } } diff --git a/frameworks/compass/stylesheets/compass/reset/_utilities.scss b/frameworks/compass/stylesheets/compass/reset/_utilities.scss index cd593cfa..41d5add8 100644 --- a/frameworks/compass/stylesheets/compass/reset/_utilities.scss +++ b/frameworks/compass/stylesheets/compass/reset/_utilities.scss @@ -107,12 +107,11 @@ border: none; } // Unrecognized elements are displayed inline. -// This reset provides a basic reset for html5 elements +// This reset provides a basic reset for block html5 elements // so they are rendered correctly in browsers that don't recognize them // and reset in browsers that have default styles for them. @mixin reset-html5 { - article, aside, details, figcaption, figure, - footer, header, hgroup, menu, nav, section { + #{elements-of-type(html5-block)} { display: block; } } // Resets the display of inline and block elements to their default display diff --git a/lib/compass/sass_extensions/functions/display.rb b/lib/compass/sass_extensions/functions/display.rb index 24363143..48f95ec9 100644 --- a/lib/compass/sass_extensions/functions/display.rb +++ b/lib/compass/sass_extensions/functions/display.rb @@ -1,12 +1,12 @@ module Compass::SassExtensions::Functions::Display DEFAULT_DISPLAY = { - :block => %w{address blockquote center dir div dd dl dt fieldset form - frameset h1 h2 h3 h4 h5 h6 hr isindex menu noframes - noscript ol p pre ul - article aside dialog figure footer header hgroup nav section}, - :inline => %w{a abbr acronym b basefont bdo big br cite code dfn em - font i img input kbd label q s samp select small span - strike strong sub sup textarea tt u var}, + :block => %w{address article aside blockquote center dir div dd details dl dt fieldset + figcaption figure form footer frameset h1 h2 h3 h4 h5 h6 hr header hgroup + isindex menu nav noframes noscript ol p pre section summary ul}, + :inline => %w{a abbr acronym audio b basefont bdo big br canvas cite code command + datalist dfn em embed font i img input keygen kbd label mark meter output + progress q rp rt ruby s samp select small span strike strong sub + sup textarea time tt u var video wbr}, :table => %w{table}, :"list-item" => %w{li}, :"table-row-group" => %w{tbody}, @@ -14,12 +14,13 @@ module Compass::SassExtensions::Functions::Display :"table-footer-group" => %w{tfoot}, :"table-row" => %w{tr}, :"table-cell" => %w{th td}, - :html5 => %w{article aside dialog figure footer header hgroup nav section} + :"html5-block" => %w{article aside details figcaption figure footer header hgroup menu nav section summary}, + :"html5-inline" => %w{audio canvas command datalist embed keygen mark meter output progress rp rt ruby time video wbr}, } - + DEFAULT_DISPLAY[:html5] = (DEFAULT_DISPLAY[:"html5-block"] + DEFAULT_DISPLAY[:"html5-inline"]).sort # returns a comma delimited string for all the # elements according to their default css3 display value. def elements_of_type(display) Sass::Script::String.new(DEFAULT_DISPLAY.fetch(display.value.to_sym).join(", ")) end -end \ No newline at end of file +end diff --git a/test/fixtures/stylesheets/blueprint/css/screen.css b/test/fixtures/stylesheets/blueprint/css/screen.css index 75790950..abbea935 100644 --- a/test/fixtures/stylesheets/blueprint/css/screen.css +++ b/test/fixtures/stylesheets/blueprint/css/screen.css @@ -42,8 +42,7 @@ q, blockquote { a img { border: none; } -article, aside, details, figcaption, figure, -footer, header, hgroup, menu, nav, section { +article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section, summary { display: block; } body { diff --git a/test/fixtures/stylesheets/blueprint/css/single-imports/reset-utilities.css b/test/fixtures/stylesheets/blueprint/css/single-imports/reset-utilities.css index a1dc9f8a..5ddd1bb2 100644 --- a/test/fixtures/stylesheets/blueprint/css/single-imports/reset-utilities.css +++ b/test/fixtures/stylesheets/blueprint/css/single-imports/reset-utilities.css @@ -3,7 +3,7 @@ html { padding: 0; border: 0; } -.bp-reset-element, body, h1, h2, h3, h4, h5, h6, article, aside, dialog, figure, footer, header, hgroup, nav, section, blockquote, q, th, td, caption, table, body.testing h1, body.testing h2, body.testing h3, body.testing h4, body.testing h5, body.testing h6, body.testing article, body.testing aside, body.testing dialog, body.testing figure, body.testing footer, body.testing header, body.testing hgroup, body.testing nav, body.testing section, body.testing blockquote, body.testing q, body.testing th, body.testing td, body.testing caption, body.testing table, div, span, object, iframe, p, pre, a, abbr, acronym, address, code, del, dfn, em, img, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, caption, tbody, tfoot, thead, tr { +.bp-reset-element, body, h1, h2, h3, h4, h5, h6, article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section, summary, blockquote, q, th, td, caption, table, body.testing h1, body.testing h2, body.testing h3, body.testing h4, body.testing h5, body.testing h6, body.testing article, body.testing aside, body.testing details, body.testing figcaption, body.testing figure, body.testing footer, body.testing header, body.testing hgroup, body.testing menu, body.testing nav, body.testing section, body.testing summary, body.testing blockquote, body.testing q, body.testing th, body.testing td, body.testing caption, body.testing table, div, span, object, iframe, p, pre, a, abbr, acronym, address, code, del, dfn, em, img, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, caption, tbody, tfoot, thead, tr { margin: 0; padding: 0; border: 0; @@ -13,7 +13,7 @@ html { font-family: inherit; vertical-align: baseline; } -article, aside, dialog, figure, footer, header, hgroup, nav, section { +article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section, summary { display: block; } blockquote, q { @@ -35,7 +35,7 @@ table { a img { border: none; } -body.testing .bp-reset-element, body.testing body, body.testing h1, body.testing h2, body.testing h3, body.testing h4, body.testing h5, body.testing h6, body.testing article, body.testing aside, body.testing dialog, body.testing figure, body.testing footer, body.testing header, body.testing hgroup, body.testing nav, body.testing section, body.testing blockquote, body.testing q, body.testing th, body.testing td, body.testing caption, body.testing table, body.testing h1, body.testing h2, body.testing h3, body.testing h4, body.testing h5, body.testing h6, body.testing article, body.testing aside, body.testing dialog, body.testing figure, body.testing footer, body.testing header, body.testing hgroup, body.testing nav, body.testing section, body.testing blockquote, body.testing q, body.testing th, body.testing td, body.testing caption, body.testing table, +body.testing .bp-reset-element, body.testing body, body.testing h1, body.testing h2, body.testing h3, body.testing h4, body.testing h5, body.testing h6, body.testing article, body.testing aside, body.testing details, body.testing figcaption, body.testing figure, body.testing footer, body.testing header, body.testing hgroup, body.testing menu, body.testing nav, body.testing section, body.testing summary, body.testing blockquote, body.testing q, body.testing th, body.testing td, body.testing caption, body.testing table, body.testing h1, body.testing h2, body.testing h3, body.testing h4, body.testing h5, body.testing h6, body.testing article, body.testing aside, body.testing details, body.testing figcaption, body.testing figure, body.testing footer, body.testing header, body.testing hgroup, body.testing menu, body.testing nav, body.testing section, body.testing summary, body.testing blockquote, body.testing q, body.testing th, body.testing td, body.testing caption, body.testing table, body.testing div, body.testing span, body.testing object, body.testing iframe, body.testing p, body.testing pre, body.testing a, body.testing abbr, body.testing acronym, body.testing address, body.testing code, body.testing del, body.testing dfn, body.testing em, body.testing img, @@ -50,7 +50,7 @@ body.testing caption, body.testing tbody, body.testing tfoot, body.testing thead font-size: 100%; font-family: inherit; vertical-align: baseline; } -body.testing article, body.testing aside, body.testing dialog, body.testing figure, body.testing footer, body.testing header, body.testing hgroup, body.testing nav, body.testing section { +body.testing article, body.testing aside, body.testing details, body.testing figcaption, body.testing figure, body.testing footer, body.testing header, body.testing hgroup, body.testing menu, body.testing nav, body.testing section, body.testing summary { display: block; } body.testing blockquote, body.testing q { quotes: "" ""; } diff --git a/test/fixtures/stylesheets/blueprint/css/single-imports/reset.css b/test/fixtures/stylesheets/blueprint/css/single-imports/reset.css index 63bd86a7..4849fff3 100644 --- a/test/fixtures/stylesheets/blueprint/css/single-imports/reset.css +++ b/test/fixtures/stylesheets/blueprint/css/single-imports/reset.css @@ -3,7 +3,7 @@ html { padding: 0; border: 0; } -.bp-reset-element, body, h1, h2, h3, h4, h5, h6, article, aside, dialog, figure, footer, header, hgroup, nav, section, blockquote, q, th, td, caption, table, +.bp-reset-element, body, h1, h2, h3, h4, h5, h6, article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section, summary, blockquote, q, th, td, caption, table, div, span, object, iframe, p, pre, a, abbr, acronym, address, code, del, dfn, em, img, @@ -19,7 +19,7 @@ caption, tbody, tfoot, thead, tr { font-family: inherit; vertical-align: baseline; } -article, aside, dialog, figure, footer, header, hgroup, nav, section { +article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section, summary { display: block; } blockquote, q { diff --git a/test/fixtures/stylesheets/compass/css/print.css b/test/fixtures/stylesheets/compass/css/print.css index 74dec933..0978b0d1 100644 --- a/test/fixtures/stylesheets/compass/css/print.css +++ b/test/fixtures/stylesheets/compass/css/print.css @@ -1,10 +1,10 @@ .noprint, .no-print { display: none; } -address.print-only, blockquote.print-only, center.print-only, dir.print-only, div.print-only, dd.print-only, dl.print-only, dt.print-only, fieldset.print-only, form.print-only, frameset.print-only, h1.print-only, h2.print-only, h3.print-only, h4.print-only, h5.print-only, h6.print-only, hr.print-only, isindex.print-only, menu.print-only, noframes.print-only, noscript.print-only, ol.print-only, p.print-only, pre.print-only, ul.print-only, article.print-only, aside.print-only, dialog.print-only, figure.print-only, footer.print-only, header.print-only, hgroup.print-only, nav.print-only, section.print-only { +address.print-only, article.print-only, aside.print-only, blockquote.print-only, center.print-only, dir.print-only, div.print-only, dd.print-only, details.print-only, dl.print-only, dt.print-only, fieldset.print-only, figcaption.print-only, figure.print-only, form.print-only, footer.print-only, frameset.print-only, h1.print-only, h2.print-only, h3.print-only, h4.print-only, h5.print-only, h6.print-only, hr.print-only, header.print-only, hgroup.print-only, isindex.print-only, menu.print-only, nav.print-only, noframes.print-only, noscript.print-only, ol.print-only, p.print-only, pre.print-only, section.print-only, summary.print-only, ul.print-only { display: block; } -a.print-only, abbr.print-only, acronym.print-only, b.print-only, basefont.print-only, bdo.print-only, big.print-only, br.print-only, cite.print-only, code.print-only, dfn.print-only, em.print-only, font.print-only, i.print-only, img.print-only, input.print-only, kbd.print-only, label.print-only, q.print-only, s.print-only, samp.print-only, select.print-only, small.print-only, span.print-only, strike.print-only, strong.print-only, sub.print-only, sup.print-only, textarea.print-only, tt.print-only, u.print-only, var.print-only { +a.print-only, abbr.print-only, acronym.print-only, audio.print-only, b.print-only, basefont.print-only, bdo.print-only, big.print-only, br.print-only, canvas.print-only, cite.print-only, code.print-only, command.print-only, datalist.print-only, dfn.print-only, em.print-only, embed.print-only, font.print-only, i.print-only, img.print-only, input.print-only, keygen.print-only, kbd.print-only, label.print-only, mark.print-only, meter.print-only, output.print-only, progress.print-only, q.print-only, rp.print-only, rt.print-only, ruby.print-only, s.print-only, samp.print-only, select.print-only, small.print-only, span.print-only, strike.print-only, strong.print-only, sub.print-only, sup.print-only, textarea.print-only, time.print-only, tt.print-only, u.print-only, var.print-only, video.print-only, wbr.print-only { display: inline; } .print-only { diff --git a/test/fixtures/stylesheets/compass/css/reset.css b/test/fixtures/stylesheets/compass/css/reset.css index 1455b31b..dd912b3e 100644 --- a/test/fixtures/stylesheets/compass/css/reset.css +++ b/test/fixtures/stylesheets/compass/css/reset.css @@ -42,19 +42,19 @@ q, blockquote { a img { border: none; } -article, aside, details, figcaption, figure, -footer, header, hgroup, menu, nav, section { +article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section, summary { display: block; } .unregistered-only, .registered-only { display: none; } -body.registered a.registered-only, body.registered abbr.registered-only, body.registered acronym.registered-only, body.registered b.registered-only, body.registered basefont.registered-only, body.registered bdo.registered-only, body.registered big.registered-only, body.registered br.registered-only, body.registered cite.registered-only, body.registered code.registered-only, body.registered dfn.registered-only, body.registered em.registered-only, body.registered font.registered-only, body.registered i.registered-only, body.registered img.registered-only, body.registered input.registered-only, body.registered kbd.registered-only, body.registered label.registered-only, body.registered q.registered-only, body.registered s.registered-only, body.registered samp.registered-only, body.registered select.registered-only, body.registered small.registered-only, body.registered span.registered-only, body.registered strike.registered-only, body.registered strong.registered-only, body.registered sub.registered-only, body.registered sup.registered-only, body.registered textarea.registered-only, body.registered tt.registered-only, body.registered u.registered-only, body.registered var.registered-only { +body.registered a.registered-only, body.registered abbr.registered-only, body.registered acronym.registered-only, body.registered audio.registered-only, body.registered b.registered-only, body.registered basefont.registered-only, body.registered bdo.registered-only, body.registered big.registered-only, body.registered br.registered-only, body.registered canvas.registered-only, body.registered cite.registered-only, body.registered code.registered-only, body.registered command.registered-only, body.registered datalist.registered-only, body.registered dfn.registered-only, body.registered em.registered-only, body.registered embed.registered-only, body.registered font.registered-only, body.registered i.registered-only, body.registered img.registered-only, body.registered input.registered-only, body.registered keygen.registered-only, body.registered kbd.registered-only, body.registered label.registered-only, body.registered mark.registered-only, body.registered meter.registered-only, body.registered output.registered-only, body.registered progress.registered-only, body.registered q.registered-only, body.registered rp.registered-only, body.registered rt.registered-only, body.registered ruby.registered-only, body.registered s.registered-only, body.registered samp.registered-only, body.registered select.registered-only, body.registered small.registered-only, body.registered span.registered-only, body.registered strike.registered-only, body.registered strong.registered-only, body.registered sub.registered-only, body.registered sup.registered-only, body.registered textarea.registered-only, body.registered time.registered-only, body.registered tt.registered-only, body.registered u.registered-only, body.registered var.registered-only, body.registered video.registered-only, body.registered wbr.registered-only { display: inline; } -body.registered address.registered-only, body.registered blockquote.registered-only, body.registered center.registered-only, body.registered dir.registered-only, body.registered div.registered-only, body.registered dd.registered-only, body.registered dl.registered-only, body.registered dt.registered-only, body.registered fieldset.registered-only, body.registered form.registered-only, body.registered frameset.registered-only, body.registered h1.registered-only, body.registered h2.registered-only, body.registered h3.registered-only, body.registered h4.registered-only, body.registered h5.registered-only, body.registered h6.registered-only, body.registered hr.registered-only, body.registered isindex.registered-only, body.registered menu.registered-only, body.registered noframes.registered-only, body.registered noscript.registered-only, body.registered ol.registered-only, body.registered p.registered-only, body.registered pre.registered-only, body.registered ul.registered-only, body.registered article.registered-only, body.registered aside.registered-only, body.registered dialog.registered-only, body.registered figure.registered-only, body.registered footer.registered-only, body.registered header.registered-only, body.registered hgroup.registered-only, body.registered nav.registered-only, body.registered section.registered-only { + +body.registered address.registered-only, body.registered article.registered-only, body.registered aside.registered-only, body.registered blockquote.registered-only, body.registered center.registered-only, body.registered dir.registered-only, body.registered div.registered-only, body.registered dd.registered-only, body.registered details.registered-only, body.registered dl.registered-only, body.registered dt.registered-only, body.registered fieldset.registered-only, body.registered figcaption.registered-only, body.registered figure.registered-only, body.registered form.registered-only, body.registered footer.registered-only, body.registered frameset.registered-only, body.registered h1.registered-only, body.registered h2.registered-only, body.registered h3.registered-only, body.registered h4.registered-only, body.registered h5.registered-only, body.registered h6.registered-only, body.registered hr.registered-only, body.registered header.registered-only, body.registered hgroup.registered-only, body.registered isindex.registered-only, body.registered menu.registered-only, body.registered nav.registered-only, body.registered noframes.registered-only, body.registered noscript.registered-only, body.registered ol.registered-only, body.registered p.registered-only, body.registered pre.registered-only, body.registered section.registered-only, body.registered summary.registered-only, body.registered ul.registered-only { display: block; } -body.unregistered a.unregistered-only, body.unregistered abbr.unregistered-only, body.unregistered acronym.unregistered-only, body.unregistered b.unregistered-only, body.unregistered basefont.unregistered-only, body.unregistered bdo.unregistered-only, body.unregistered big.unregistered-only, body.unregistered br.unregistered-only, body.unregistered cite.unregistered-only, body.unregistered code.unregistered-only, body.unregistered dfn.unregistered-only, body.unregistered em.unregistered-only, body.unregistered font.unregistered-only, body.unregistered i.unregistered-only, body.unregistered img.unregistered-only, body.unregistered input.unregistered-only, body.unregistered kbd.unregistered-only, body.unregistered label.unregistered-only, body.unregistered q.unregistered-only, body.unregistered s.unregistered-only, body.unregistered samp.unregistered-only, body.unregistered select.unregistered-only, body.unregistered small.unregistered-only, body.unregistered span.unregistered-only, body.unregistered strike.unregistered-only, body.unregistered strong.unregistered-only, body.unregistered sub.unregistered-only, body.unregistered sup.unregistered-only, body.unregistered textarea.unregistered-only, body.unregistered tt.unregistered-only, body.unregistered u.unregistered-only, body.unregistered var.unregistered-only { +body.unregistered a.unregistered-only, body.unregistered abbr.unregistered-only, body.unregistered acronym.unregistered-only, body.unregistered audio.unregistered-only, body.unregistered b.unregistered-only, body.unregistered basefont.unregistered-only, body.unregistered bdo.unregistered-only, body.unregistered big.unregistered-only, body.unregistered br.unregistered-only, body.unregistered canvas.unregistered-only, body.unregistered cite.unregistered-only, body.unregistered code.unregistered-only, body.unregistered command.unregistered-only, body.unregistered datalist.unregistered-only, body.unregistered dfn.unregistered-only, body.unregistered em.unregistered-only, body.unregistered embed.unregistered-only, body.unregistered font.unregistered-only, body.unregistered i.unregistered-only, body.unregistered img.unregistered-only, body.unregistered input.unregistered-only, body.unregistered keygen.unregistered-only, body.unregistered kbd.unregistered-only, body.unregistered label.unregistered-only, body.unregistered mark.unregistered-only, body.unregistered meter.unregistered-only, body.unregistered output.unregistered-only, body.unregistered progress.unregistered-only, body.unregistered q.unregistered-only, body.unregistered rp.unregistered-only, body.unregistered rt.unregistered-only, body.unregistered ruby.unregistered-only, body.unregistered s.unregistered-only, body.unregistered samp.unregistered-only, body.unregistered select.unregistered-only, body.unregistered small.unregistered-only, body.unregistered span.unregistered-only, body.unregistered strike.unregistered-only, body.unregistered strong.unregistered-only, body.unregistered sub.unregistered-only, body.unregistered sup.unregistered-only, body.unregistered textarea.unregistered-only, body.unregistered time.unregistered-only, body.unregistered tt.unregistered-only, body.unregistered u.unregistered-only, body.unregistered var.unregistered-only, body.unregistered video.unregistered-only, body.unregistered wbr.unregistered-only { display: inline; } -body.unregistered address.unregistered-only, body.unregistered blockquote.unregistered-only, body.unregistered center.unregistered-only, body.unregistered dir.unregistered-only, body.unregistered div.unregistered-only, body.unregistered dd.unregistered-only, body.unregistered dl.unregistered-only, body.unregistered dt.unregistered-only, body.unregistered fieldset.unregistered-only, body.unregistered form.unregistered-only, body.unregistered frameset.unregistered-only, body.unregistered h1.unregistered-only, body.unregistered h2.unregistered-only, body.unregistered h3.unregistered-only, body.unregistered h4.unregistered-only, body.unregistered h5.unregistered-only, body.unregistered h6.unregistered-only, body.unregistered hr.unregistered-only, body.unregistered isindex.unregistered-only, body.unregistered menu.unregistered-only, body.unregistered noframes.unregistered-only, body.unregistered noscript.unregistered-only, body.unregistered ol.unregistered-only, body.unregistered p.unregistered-only, body.unregistered pre.unregistered-only, body.unregistered ul.unregistered-only, body.unregistered article.unregistered-only, body.unregistered aside.unregistered-only, body.unregistered dialog.unregistered-only, body.unregistered figure.unregistered-only, body.unregistered footer.unregistered-only, body.unregistered header.unregistered-only, body.unregistered hgroup.unregistered-only, body.unregistered nav.unregistered-only, body.unregistered section.unregistered-only { +body.unregistered address.unregistered-only, body.unregistered article.unregistered-only, body.unregistered aside.unregistered-only, body.unregistered blockquote.unregistered-only, body.unregistered center.unregistered-only, body.unregistered dir.unregistered-only, body.unregistered div.unregistered-only, body.unregistered dd.unregistered-only, body.unregistered details.unregistered-only, body.unregistered dl.unregistered-only, body.unregistered dt.unregistered-only, body.unregistered fieldset.unregistered-only, body.unregistered figcaption.unregistered-only, body.unregistered figure.unregistered-only, body.unregistered form.unregistered-only, body.unregistered footer.unregistered-only, body.unregistered frameset.unregistered-only, body.unregistered h1.unregistered-only, body.unregistered h2.unregistered-only, body.unregistered h3.unregistered-only, body.unregistered h4.unregistered-only, body.unregistered h5.unregistered-only, body.unregistered h6.unregistered-only, body.unregistered hr.unregistered-only, body.unregistered header.unregistered-only, body.unregistered hgroup.unregistered-only, body.unregistered isindex.unregistered-only, body.unregistered menu.unregistered-only, body.unregistered nav.unregistered-only, body.unregistered noframes.unregistered-only, body.unregistered noscript.unregistered-only, body.unregistered ol.unregistered-only, body.unregistered p.unregistered-only, body.unregistered pre.unregistered-only, body.unregistered section.unregistered-only, body.unregistered summary.unregistered-only, body.unregistered ul.unregistered-only { display: block; } From 5b540f070d40dfe7217b47489d2cf14a7f8e8bc7 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 10 Jul 2011 17:32:20 -0700 Subject: [PATCH 41/56] Update changelog for 0.11.5 --- doc-src/content/CHANGELOG.markdown | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index e6ab0ed9..c6573794 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -14,6 +14,15 @@ The Documentation for the [latest stable release](http://compass-style.org/docs/ The Documentation for the [latest preview release](http://beta.compass-style.org/) +0.11.5 (07/10/2011) +------------------- + +* Updated the list of elements returned by the `elements-of-type()` helper. + It now understands `html5-block` and `html5-inline` and other types now + return html5 elements in them by default. +* Fix warning logic in vertical-rhythms module. +* Fix typo in the css3/transition module. + 0.11.4 (07/03/2011) ------------------- From 04800afc63582a49b58082ba223d01b6afe018da Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 10 Jul 2011 17:32:41 -0700 Subject: [PATCH 42/56] Version Bump. --- VERSION.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION.yml b/VERSION.yml index 70e78557..5969ca2c 100644 --- a/VERSION.yml +++ b/VERSION.yml @@ -1,5 +1,5 @@ --- :major: 0 :minor: 11 -:patch: 4 +:patch: 5 :name: Antares From fce52690b9069e84322f3c6bcdeb2c2885b6d4ed Mon Sep 17 00:00:00 2001 From: lyuba Date: Fri, 15 Jul 2011 23:31:30 +0200 Subject: [PATCH 43/56] font weight and style default to false --- .../compass/stylesheets/compass/css3/_font-face.scss | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/frameworks/compass/stylesheets/compass/css3/_font-face.scss b/frameworks/compass/stylesheets/compass/css3/_font-face.scss index cd2529e1..e3ecc8b6 100644 --- a/frameworks/compass/stylesheets/compass/css3/_font-face.scss +++ b/frameworks/compass/stylesheets/compass/css3/_font-face.scss @@ -26,8 +26,8 @@ $name, $font-files, $eot: false, - $weight: normal, - $style: normal + $weight: false, + $style: false ) { $iefont: unquote("#{$eot}?iefix"); @font-face { @@ -37,8 +37,12 @@ $font-files: font-url($iefont) unquote("format('eot')"), $font-files; } src: $font-files; - font-weight: $weight; - font-style: $style; + @if $weight { + font-weight: $weight; + } + @if $style { + font-style: $style; + } } } From 45db63c35e9a10505f522d169e0f63a58db72168 Mon Sep 17 00:00:00 2001 From: Dirkjan Bussink Date: Mon, 18 Jul 2011 23:01:25 +0200 Subject: [PATCH 44/56] Use more lenient timing, fixes feature on Rubinius --- features/command_line.feature | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/features/command_line.feature b/features/command_line.feature index dd529977..56d52abb 100644 --- a/features/command_line.feature +++ b/features/command_line.feature @@ -215,7 +215,7 @@ Feature: Command Line Given I am using the existing project in test/fixtures/stylesheets/compass When I run: compass compile And I run in a separate process: compass watch - And I wait 1 second + And I wait 3 seconds And I touch sass/layout.sass And I wait 2 seconds And I shutdown the other process From 84e3746325d7fa5f23988c71ee33bd1996f12cdd Mon Sep 17 00:00:00 2001 From: Adam Bowen Date: Wed, 20 Jul 2011 16:05:47 -0700 Subject: [PATCH 45/56] "to the right" doesn't make sense with how the page is laid out "listed below the display value" is a bit more relevant to the current documentation layout --- doc-src/content/reference/compass/helpers/display.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc-src/content/reference/compass/helpers/display.haml b/doc-src/content/reference/compass/helpers/display.haml index c0c3924e..2d5ea3f1 100644 --- a/doc-src/content/reference/compass/helpers/display.haml +++ b/doc-src/content/reference/compass/helpers/display.haml @@ -21,7 +21,7 @@ documented_functions: .details %p The following display values exist and will return - the elements listed to the right. + the elements listed below the display value. %dl %dg.head %dt Display Value From b1b6273b3fa5f88a80f3b3ef64e5742704e95f2b Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Thu, 21 Jul 2011 13:07:32 -0400 Subject: [PATCH 46/56] docs for horizontal spriting --- doc-src/content/help/tutorials/spriting.markdown | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/doc-src/content/help/tutorials/spriting.markdown b/doc-src/content/help/tutorials/spriting.markdown index 82874aef..6a5b9ad7 100644 --- a/doc-src/content/help/tutorials/spriting.markdown +++ b/doc-src/content/help/tutorials/spriting.markdown @@ -52,6 +52,14 @@ simple naming convention for your sprites so that you they are easy to remember should never have to care what the is name of the generated sprite map, nor where a sprite is located within it. + +## Layout Control + +If you prefer horizontal sprites to the `vertical` default just set the magic variable `$-layout` variable. + + $icon-layout:horizontal; + @import "icon/*.png"; + ## Selector Control From 7a183754b73ff7a88c0414ac1852322cbc68b059 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Mon, 25 Jul 2011 23:05:37 -0400 Subject: [PATCH 47/56] merge 454 closes 454 --- Gemfile.lock | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 5b86ed71..c36c84da 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.3.rails.0.2124003) + compass (0.12.0.alpha.0.38cf0e5) chunky_png (~> 1.2) fssm (>= 0.2.7) sass (~> 3.1) @@ -105,7 +105,7 @@ GEM rake (>= 0.8.7) rdoc (~> 3.4) thor (~> 0.14.4) - rake (0.9.2) + rake (0.8.7) rb-fsevent (0.4.0) rcov (0.9.9) rdoc (3.6.1) @@ -147,6 +147,7 @@ DEPENDENCIES livereload mocha rails (~> 3.0.0.rc) + rake (= 0.8.7) rb-fsevent rcov rspec (~> 2.0.0) From b581d2e1a7720df5e812730a3232c4834b409498 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Tue, 26 Jul 2011 02:03:38 -0400 Subject: [PATCH 48/56] passing tests for new vertical layout based on file size --- Gemfile.lock | 2 +- .../sass_extensions/sprites/layout_methods.rb | 1 + lib/compass/sprite_importer.rb | 2 +- .../stylesheets/compass/css/sprites.css | 1416 ++++++++--------- .../compass/images/flag-s03c3b29b35.png | Bin 105539 -> 0 bytes test/units/sprites/sprite_map_test.rb | 6 + 6 files changed, 717 insertions(+), 710 deletions(-) delete mode 100644 test/fixtures/stylesheets/compass/images/flag-s03c3b29b35.png diff --git a/Gemfile.lock b/Gemfile.lock index c36c84da..c2b5e59e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.12.0.alpha.0.38cf0e5) + compass (0.12.0.alpha.0.7a18375) chunky_png (~> 1.2) fssm (>= 0.2.7) sass (~> 3.1) diff --git a/lib/compass/sass_extensions/sprites/layout_methods.rb b/lib/compass/sass_extensions/sprites/layout_methods.rb index d8787671..48235588 100644 --- a/lib/compass/sass_extensions/sprites/layout_methods.rb +++ b/lib/compass/sass_extensions/sprites/layout_methods.rb @@ -16,6 +16,7 @@ module Compass calculate_horizontal_positions calculate_width else + @images.sort! {|a,b| File.size(b.file) <=> File.size(a.file)} #put small images first calculate_width calulate_vertical_postions calculate_height diff --git a/lib/compass/sprite_importer.rb b/lib/compass/sprite_importer.rb index 1bda1162..5eb31be2 100644 --- a/lib/compass/sprite_importer.rb +++ b/lib/compass/sprite_importer.rb @@ -80,7 +80,7 @@ module Compass end end - # Returns the sass _options for this sprite + # Returns the sass_options for this sprite def self.sass_options(name, importer, options) options.merge!(:filename => name, :syntax => :scss, :importer => importer) end diff --git a/test/fixtures/stylesheets/compass/css/sprites.css b/test/fixtures/stylesheets/compass/css/sprites.css index c31df2fa..3fc49c14 100644 --- a/test/fixtures/stylesheets/compass/css/sprites.css +++ b/test/fixtures/stylesheets/compass/css/sprites.css @@ -1,243 +1,243 @@ .flag-sprite, #flags .us, #flags .au, #flags .ca, #flags .es, #flags .eg, #flags .ly, .flag-ad, .flag-ae, .flag-af, .flag-ag, .flag-ai, .flag-al, .flag-am, .flag-an, .flag-ao, .flag-ar, .flag-as, .flag-at, .flag-au, .flag-aw, .flag-ax, .flag-az, .flag-ba, .flag-bb, .flag-bd, .flag-be, .flag-bf, .flag-bg, .flag-bh, .flag-bi, .flag-bj, .flag-bm, .flag-bn, .flag-bo, .flag-br, .flag-bs, .flag-bt, .flag-bv, .flag-bw, .flag-by, .flag-bz, .flag-ca, .flag-catalonia, .flag-cc, .flag-cd, .flag-cf, .flag-cg, .flag-ch, .flag-ci, .flag-ck, .flag-cl, .flag-cm, .flag-cn, .flag-co, .flag-cr, .flag-cs, .flag-cu, .flag-cv, .flag-cx, .flag-cy, .flag-cz, .flag-de, .flag-dj, .flag-dk, .flag-dm, .flag-do, .flag-dz, .flag-ec, .flag-ee, .flag-eg, .flag-eh, .flag-england, .flag-er, .flag-es, .flag-et, .flag-europeanunion, .flag-fam, .flag-fi, .flag-fj, .flag-fk, .flag-fm, .flag-fo, .flag-fr, .flag-ga, .flag-gb, .flag-gd, .flag-ge, .flag-gf, .flag-gh, .flag-gi, .flag-gl, .flag-gm, .flag-gn, .flag-gp, .flag-gq, .flag-gr, .flag-gs, .flag-gt, .flag-gu, .flag-gw, .flag-gy, .flag-hk, .flag-hm, .flag-hn, .flag-hr, .flag-ht, .flag-hu, .flag-id-2, .flag-ie, .flag-il, .flag-in, .flag-io, .flag-iq, .flag-ir, .flag-is, .flag-it, .flag-jm, .flag-jo, .flag-jp, .flag-ke, .flag-kg, .flag-kh, .flag-ki, .flag-km, .flag-kn, .flag-kp, .flag-kr, .flag-kw, .flag-ky, .flag-kz, .flag-la, .flag-lb, .flag-lc, .flag-li, .flag-lk, .flag-lr, .flag-ls, .flag-lt, .flag-lu, .flag-lv, .flag-ly, .flag-ma, .flag-mc, .flag-md, .flag-me, .flag-mg, .flag-mh, .flag-mk, .flag-ml, .flag-mm, .flag-mn, .flag-mo, .flag-mp, .flag-mq, .flag-mr, .flag-ms, .flag-mt, .flag-mu, .flag-mv, .flag-mw, .flag-mx, .flag-my, .flag-mz, .flag-na, .flag-nc, .flag-ne, .flag-nf, .flag-ng, .flag-ni, .flag-nl, .flag-no, .flag-np, .flag-nr, .flag-nu, .flag-nz, .flag-om, .flag-pa, .flag-pe, .flag-pf, .flag-pg, .flag-ph, .flag-pk, .flag-pl, .flag-pm, .flag-pn, .flag-pr, .flag-ps, .flag-pt, .flag-pw, .flag-py, .flag-qa, .flag-re, .flag-ro, .flag-rs, .flag-ru, .flag-rw, .flag-sa, .flag-sb, .flag-sc, .flag-scotland, .flag-sd, .flag-se, .flag-sg, .flag-sh, .flag-si, .flag-sj, .flag-sk, .flag-sl, .flag-sm, .flag-sn, .flag-so, .flag-sr, .flag-st, .flag-sv, .flag-sy, .flag-sz, .flag-tc, .flag-td, .flag-tf, .flag-tg, .flag-th, .flag-tj, .flag-tk, .flag-tl, .flag-tm, .flag-tn, .flag-to, .flag-tr, .flag-tt, .flag-tv, .flag-tw, .flag-tz, .flag-ua, .flag-ug, .flag-um, .flag-us, .flag-uy, .flag-uz, .flag-va, .flag-vc, .flag-ve, .flag-vg, .flag-vi, .flag-vn, .flag-vu, .flag-wales, .flag-wf, .flag-ws, .flag-ye, .flag-yt, .flag-za, .flag-zm, .flag-zw { - background: url('/images/flag-s03c3b29b35.png') no-repeat; } + background: url('/images/flag-s8c3c755a68.png') no-repeat; } #flags .us { - background-position: 0 -2520px; + background-position: 0 -407px; height: 11px; width: 16px; } #flags .au { - background-position: 0 -132px; + background-position: 0 -11px; height: 11px; width: 16px; } #flags .ca { - background-position: 0 -385px; + background-position: 0 -572px; height: 11px; width: 16px; } #flags .es { - background-position: 0 -737px; + background-position: 0 -2124px; height: 11px; width: 16px; } #flags .eg { - background-position: 0 -693px; + background-position: 0 -2058px; height: 11px; width: 16px; } #flags .ly { - background-position: 0 -1474px; + background-position: 0 -2663px; height: 11px; width: 16px; } .flag-ad { - background-position: 0 0; + background-position: 0 -781px; height: 11px; width: 16px; } .flag-ae { - background-position: 0 -11px; + background-position: 0 -2652px; height: 11px; width: 16px; } .flag-af { - background-position: 0 -22px; + background-position: 0 -1045px; height: 11px; width: 16px; } .flag-ag { - background-position: 0 -33px; + background-position: 0 -759px; height: 11px; width: 16px; } .flag-ai { - background-position: 0 -44px; - height: 11px; - width: 16px; } - -.flag-al { - background-position: 0 -55px; - height: 11px; - width: 16px; } - -.flag-am { - background-position: 0 -66px; - height: 11px; - width: 16px; } - -.flag-an { - background-position: 0 -77px; - height: 11px; - width: 16px; } - -.flag-ao { - background-position: 0 -88px; - height: 11px; - width: 16px; } - -.flag-ar { - background-position: 0 -99px; - height: 11px; - width: 16px; } - -.flag-as { - background-position: 0 -110px; - height: 11px; - width: 16px; } - -.flag-at { - background-position: 0 -121px; - height: 11px; - width: 16px; } - -.flag-au { - background-position: 0 -132px; - height: 11px; - width: 16px; } - -.flag-aw { - background-position: 0 -143px; - height: 11px; - width: 16px; } - -.flag-ax { - background-position: 0 -154px; - height: 11px; - width: 16px; } - -.flag-az { - background-position: 0 -165px; - height: 11px; - width: 16px; } - -.flag-ba { - background-position: 0 -176px; - height: 11px; - width: 16px; } - -.flag-bb { - background-position: 0 -187px; - height: 11px; - width: 16px; } - -.flag-bd { - background-position: 0 -198px; - height: 11px; - width: 16px; } - -.flag-be { - background-position: 0 -209px; - height: 11px; - width: 16px; } - -.flag-bf { - background-position: 0 -220px; - height: 11px; - width: 16px; } - -.flag-bg { - background-position: 0 -231px; - height: 11px; - width: 16px; } - -.flag-bh { - background-position: 0 -242px; - height: 11px; - width: 16px; } - -.flag-bi { - background-position: 0 -253px; - height: 11px; - width: 16px; } - -.flag-bj { - background-position: 0 -264px; - height: 11px; - width: 16px; } - -.flag-bm { - background-position: 0 -275px; - height: 11px; - width: 16px; } - -.flag-bn { - background-position: 0 -286px; - height: 11px; - width: 16px; } - -.flag-bo { background-position: 0 -297px; height: 11px; width: 16px; } -.flag-br { - background-position: 0 -308px; +.flag-al { + background-position: 0 -902px; height: 11px; width: 16px; } -.flag-bs { - background-position: 0 -319px; +.flag-am { + background-position: 0 -2300px; height: 11px; width: 16px; } -.flag-bt { - background-position: 0 -330px; +.flag-an { + background-position: 0 -1805px; height: 11px; width: 16px; } -.flag-bv { - background-position: 0 -341px; +.flag-ao { + background-position: 0 -1485px; height: 11px; width: 16px; } -.flag-bw { - background-position: 0 -352px; +.flag-ar { + background-position: 0 -1739px; height: 11px; width: 16px; } -.flag-by { - background-position: 0 -363px; +.flag-as { + background-position: 0 -121px; height: 11px; width: 16px; } -.flag-bz { - background-position: 0 -374px; +.flag-at { + background-position: 0 -2630px; height: 11px; width: 16px; } -.flag-ca { - background-position: 0 -385px; +.flag-au { + background-position: 0 -11px; height: 11px; width: 16px; } -.flag-catalonia { +.flag-aw { + background-position: 0 -1386px; + height: 11px; + width: 16px; } + +.flag-ax { + background-position: 0 -528px; + height: 11px; + width: 16px; } + +.flag-az { + background-position: 0 -1023px; + height: 11px; + width: 16px; } + +.flag-ba { + background-position: 0 -594px; + height: 11px; + width: 16px; } + +.flag-bb { + background-position: 0 -1254px; + height: 11px; + width: 16px; } + +.flag-bd { + background-position: 0 -1662px; + height: 11px; + width: 16px; } + +.flag-be { + background-position: 0 -2597px; + height: 11px; + width: 16px; } + +.flag-bf { + background-position: 0 -2168px; + height: 11px; + width: 16px; } + +.flag-bg { + background-position: 0 -2443px; + height: 11px; + width: 16px; } + +.flag-bh { + background-position: 0 -2080px; + height: 11px; + width: 16px; } + +.flag-bi { + background-position: 0 -44px; + height: 11px; + width: 16px; } + +.flag-bj { + background-position: 0 -2487px; + height: 11px; + width: 16px; } + +.flag-bm { background-position: 0 -396px; height: 11px; width: 16px; } +.flag-bn { + background-position: 0 -363px; + height: 11px; + width: 16px; } + +.flag-bo { + background-position: 0 -2179px; + height: 11px; + width: 16px; } + +.flag-br { + background-position: 0 -484px; + height: 11px; + width: 16px; } + +.flag-bs { + background-position: 0 -1408px; + height: 11px; + width: 16px; } + +.flag-bt { + background-position: 0 -605px; + height: 11px; + width: 16px; } + +.flag-bv { + background-position: 0 -1276px; + height: 11px; + width: 16px; } + +.flag-bw { + background-position: 0 -2355px; + height: 11px; + width: 16px; } + +.flag-by { + background-position: 0 -1463px; + height: 11px; + width: 16px; } + +.flag-bz { + background-position: 0 -550px; + height: 11px; + width: 16px; } + +.flag-ca { + background-position: 0 -572px; + height: 11px; + width: 16px; } + +.flag-catalonia { + background-position: 0 -2245px; + height: 11px; + width: 16px; } + .flag-cc { - background-position: 0 -407px; + background-position: 0 -451px; height: 11px; width: 16px; } .flag-cd { - background-position: 0 -418px; + background-position: 0 -638px; height: 11px; width: 16px; } .flag-cf { - background-position: 0 -429px; + background-position: 0 -748px; height: 11px; width: 16px; } .flag-cg { - background-position: 0 -440px; + background-position: 0 -1541px; height: 11px; width: 16px; } .flag-ch { - background-position: 0 -451px; + background-position: 0 -2696px; height: 11px; width: 11px; } .flag-ci { - background-position: 0 -462px; + background-position: 0 -2509px; height: 11px; width: 16px; } @@ -247,82 +247,82 @@ width: 16px; } .flag-cl { - background-position: 0 -484px; + background-position: 0 -2399px; height: 11px; width: 16px; } .flag-cm { - background-position: 0 -495px; + background-position: 0 -2069px; height: 11px; width: 16px; } .flag-cn { - background-position: 0 -506px; + background-position: 0 -2014px; height: 11px; width: 16px; } .flag-co { - background-position: 0 -517px; + background-position: 0 -2311px; height: 11px; width: 16px; } .flag-cr { - background-position: 0 -528px; + background-position: 0 -2036px; height: 11px; width: 16px; } .flag-cs { - background-position: 0 -539px; + background-position: 0 -2421px; height: 11px; width: 16px; } .flag-cu { - background-position: 0 -550px; + background-position: 0 -814px; height: 11px; width: 16px; } .flag-cv { - background-position: 0 -561px; + background-position: 0 -869px; height: 11px; width: 16px; } .flag-cx { - background-position: 0 -572px; + background-position: 0 -418px; height: 11px; width: 16px; } .flag-cy { - background-position: 0 -583px; + background-position: 0 -2190px; height: 11px; width: 16px; } .flag-cz { - background-position: 0 -594px; + background-position: 0 -1717px; height: 11px; width: 16px; } .flag-de { - background-position: 0 -605px; + background-position: 0 -1827px; height: 11px; width: 16px; } .flag-dj { - background-position: 0 -616px; + background-position: 0 -957px; height: 11px; width: 16px; } .flag-dk { - background-position: 0 -627px; + background-position: 0 -1970px; height: 11px; width: 16px; } .flag-dm { - background-position: 0 -638px; + background-position: 0 -374px; height: 11px; width: 16px; } .flag-do { - background-position: 0 -649px; + background-position: 0 -1783px; height: 11px; width: 16px; } @@ -332,322 +332,322 @@ width: 16px; } .flag-ec { - background-position: 0 -671px; + background-position: 0 -1915px; height: 11px; width: 16px; } .flag-ee { - background-position: 0 -682px; + background-position: 0 -2575px; height: 11px; width: 16px; } .flag-eg { - background-position: 0 -693px; + background-position: 0 -2058px; height: 11px; width: 16px; } .flag-eh { - background-position: 0 -704px; + background-position: 0 -1419px; height: 11px; width: 16px; } .flag-england { - background-position: 0 -715px; + background-position: 0 -1574px; height: 11px; width: 16px; } .flag-er { - background-position: 0 -726px; + background-position: 0 -429px; height: 11px; width: 16px; } .flag-es { - background-position: 0 -737px; + background-position: 0 -2124px; height: 11px; width: 16px; } .flag-et { - background-position: 0 -748px; - height: 11px; - width: 16px; } - -.flag-europeanunion { - background-position: 0 -759px; - height: 11px; - width: 16px; } - -.flag-fam { - background-position: 0 -770px; - height: 11px; - width: 16px; } - -.flag-fi { - background-position: 0 -781px; - height: 11px; - width: 16px; } - -.flag-fj { - background-position: 0 -792px; - height: 11px; - width: 16px; } - -.flag-fk { - background-position: 0 -803px; - height: 11px; - width: 16px; } - -.flag-fm { - background-position: 0 -814px; - height: 11px; - width: 16px; } - -.flag-fo { - background-position: 0 -825px; - height: 11px; - width: 16px; } - -.flag-fr { - background-position: 0 -836px; - height: 11px; - width: 16px; } - -.flag-ga { - background-position: 0 -847px; - height: 11px; - width: 16px; } - -.flag-gb { - background-position: 0 -858px; - height: 11px; - width: 16px; } - -.flag-gd { - background-position: 0 -869px; - height: 11px; - width: 16px; } - -.flag-ge { background-position: 0 -880px; height: 11px; width: 16px; } -.flag-gf { - background-position: 0 -891px; - height: 11px; - width: 16px; } - -.flag-gh { - background-position: 0 -902px; - height: 11px; - width: 16px; } - -.flag-gi { - background-position: 0 -913px; - height: 11px; - width: 16px; } - -.flag-gl { - background-position: 0 -924px; - height: 11px; - width: 16px; } - -.flag-gm { - background-position: 0 -935px; - height: 11px; - width: 16px; } - -.flag-gn { - background-position: 0 -946px; - height: 11px; - width: 16px; } - -.flag-gp { - background-position: 0 -957px; - height: 11px; - width: 16px; } - -.flag-gq { - background-position: 0 -968px; - height: 11px; - width: 16px; } - -.flag-gr { - background-position: 0 -979px; - height: 11px; - width: 16px; } - -.flag-gs { - background-position: 0 -990px; - height: 11px; - width: 16px; } - -.flag-gt { - background-position: 0 -1001px; - height: 11px; - width: 16px; } - -.flag-gu { - background-position: 0 -1012px; - height: 11px; - width: 16px; } - -.flag-gw { - background-position: 0 -1023px; - height: 11px; - width: 16px; } - -.flag-gy { - background-position: 0 -1034px; - height: 11px; - width: 16px; } - -.flag-hk { - background-position: 0 -1045px; - height: 11px; - width: 16px; } - -.flag-hm { - background-position: 0 -1056px; - height: 11px; - width: 16px; } - -.flag-hn { - background-position: 0 -1067px; - height: 11px; - width: 16px; } - -.flag-hr { - background-position: 0 -1078px; - height: 11px; - width: 16px; } - -.flag-ht { - background-position: 0 -1089px; - height: 11px; - width: 16px; } - -.flag-hu { - background-position: 0 -1100px; - height: 11px; - width: 16px; } - -.flag-id-2 { - background-position: 0 -1111px; - height: 11px; - width: 16px; } - -.flag-ie { - background-position: 0 -1122px; - height: 11px; - width: 16px; } - -.flag-il { - background-position: 0 -1133px; - height: 11px; - width: 16px; } - -.flag-in { - background-position: 0 -1144px; - height: 11px; - width: 16px; } - -.flag-io { - background-position: 0 -1155px; - height: 11px; - width: 16px; } - -.flag-iq { - background-position: 0 -1166px; - height: 11px; - width: 16px; } - -.flag-ir { - background-position: 0 -1177px; - height: 11px; - width: 16px; } - -.flag-is { - background-position: 0 -1188px; - height: 11px; - width: 16px; } - -.flag-it { - background-position: 0 -1199px; - height: 11px; - width: 16px; } - -.flag-jm { - background-position: 0 -1210px; - height: 11px; - width: 16px; } - -.flag-jo { - background-position: 0 -1221px; - height: 11px; - width: 16px; } - -.flag-jp { - background-position: 0 -1232px; - height: 11px; - width: 16px; } - -.flag-ke { +.flag-europeanunion { background-position: 0 -1243px; height: 11px; width: 16px; } -.flag-kg { - background-position: 0 -1254px; +.flag-fam { + background-position: 0 -2003px; height: 11px; width: 16px; } -.flag-kh { - background-position: 0 -1265px; +.flag-fi { + background-position: 0 -1772px; height: 11px; width: 16px; } -.flag-ki { - background-position: 0 -1276px; +.flag-fj { + background-position: 0 -286px; height: 11px; width: 16px; } -.flag-km { - background-position: 0 -1287px; +.flag-fk { + background-position: 0 -176px; height: 11px; width: 16px; } -.flag-kn { - background-position: 0 -1298px; +.flag-fm { + background-position: 0 -1166px; height: 11px; width: 16px; } -.flag-kp { - background-position: 0 -1309px; +.flag-fo { + background-position: 0 -1596px; height: 11px; width: 16px; } -.flag-kr { +.flag-fr { + background-position: 0 -1673px; + height: 11px; + width: 16px; } + +.flag-ga { + background-position: 0 -2135px; + height: 11px; + width: 16px; } + +.flag-gb { + background-position: 0 -99px; + height: 11px; + width: 16px; } + +.flag-gd { + background-position: 0 -693px; + height: 11px; + width: 16px; } + +.flag-ge { + background-position: 0 -462px; + height: 11px; + width: 16px; } + +.flag-gf { + background-position: 0 -1640px; + height: 11px; + width: 16px; } + +.flag-gh { + background-position: 0 -2267px; + height: 11px; + width: 16px; } + +.flag-gi { + background-position: 0 -1761px; + height: 11px; + width: 16px; } + +.flag-gl { + background-position: 0 -1992px; + height: 11px; + width: 16px; } + +.flag-gm { + background-position: 0 -1849px; + height: 11px; + width: 16px; } + +.flag-gn { + background-position: 0 -2454px; + height: 11px; + width: 16px; } + +.flag-gp { + background-position: 0 -1904px; + height: 11px; + width: 16px; } + +.flag-gq { + background-position: 0 -1210px; + height: 11px; + width: 16px; } + +.flag-gr { + background-position: 0 -1397px; + height: 11px; + width: 16px; } + +.flag-gs { + background-position: 0 -187px; + height: 11px; + width: 16px; } + +.flag-gt { + background-position: 0 -2212px; + height: 11px; + width: 16px; } + +.flag-gu { + background-position: 0 -1496px; + height: 11px; + width: 16px; } + +.flag-gw { + background-position: 0 -2091px; + height: 11px; + width: 16px; } + +.flag-gy { + background-position: 0 -242px; + height: 11px; + width: 16px; } + +.flag-hk { + background-position: 0 -1364px; + height: 11px; + width: 16px; } + +.flag-hm { + background-position: 0 -22px; + height: 11px; + width: 16px; } + +.flag-hn { + background-position: 0 -1155px; + height: 11px; + width: 16px; } + +.flag-hr { + background-position: 0 -1056px; + height: 11px; + width: 16px; } + +.flag-ht { + background-position: 0 -2333px; + height: 11px; + width: 16px; } + +.flag-hu { + background-position: 0 -2619px; + height: 11px; + width: 16px; } + +.flag-id-2 { + background-position: 0 -2542px; + height: 11px; + width: 16px; } + +.flag-ie { + background-position: 0 -2278px; + height: 11px; + width: 16px; } + +.flag-il { + background-position: 0 -2366px; + height: 11px; + width: 16px; } + +.flag-in { + background-position: 0 -1585px; + height: 11px; + width: 16px; } + +.flag-io { + background-position: 0 0; + height: 11px; + width: 16px; } + +.flag-iq { + background-position: 0 -1221px; + height: 11px; + width: 16px; } + +.flag-ir { background-position: 0 -1320px; height: 11px; width: 16px; } +.flag-is { + background-position: 0 -1177px; + height: 11px; + width: 16px; } + +.flag-it { + background-position: 0 -2641px; + height: 11px; + width: 16px; } + +.flag-jm { + background-position: 0 -319px; + height: 11px; + width: 16px; } + +.flag-jo { + background-position: 0 -1948px; + height: 11px; + width: 16px; } + +.flag-jp { + background-position: 0 -2465px; + height: 11px; + width: 16px; } + +.flag-ke { + background-position: 0 -935px; + height: 11px; + width: 16px; } + +.flag-kg { + background-position: 0 -1926px; + height: 11px; + width: 16px; } + +.flag-kh { + background-position: 0 -1034px; + height: 11px; + width: 16px; } + +.flag-ki { + background-position: 0 -88px; + height: 11px; + width: 16px; } + +.flag-km { + background-position: 0 -671px; + height: 11px; + width: 16px; } + +.flag-kn { + background-position: 0 -517px; + height: 11px; + width: 16px; } + +.flag-kp { + background-position: 0 -1012px; + height: 11px; + width: 16px; } + +.flag-kr { + background-position: 0 -308px; + height: 11px; + width: 16px; } + .flag-kw { - background-position: 0 -1331px; + background-position: 0 -1981px; height: 11px; width: 16px; } .flag-ky { - background-position: 0 -1342px; + background-position: 0 -143px; height: 11px; width: 16px; } .flag-kz { - background-position: 0 -1353px; + background-position: 0 -715px; height: 11px; width: 16px; } .flag-la { - background-position: 0 -1364px; + background-position: 0 -1111px; height: 11px; width: 16px; } @@ -657,62 +657,62 @@ width: 16px; } .flag-lc { - background-position: 0 -1386px; + background-position: 0 -836px; height: 11px; width: 16px; } .flag-li { - background-position: 0 -1397px; + background-position: 0 -1298px; height: 11px; width: 16px; } .flag-lk { - background-position: 0 -1408px; + background-position: 0 -682px; height: 11px; width: 16px; } .flag-lr { - background-position: 0 -1419px; + background-position: 0 -1618px; height: 11px; width: 16px; } .flag-ls { - background-position: 0 -1430px; + background-position: 0 -385px; height: 11px; width: 16px; } .flag-lt { - background-position: 0 -1441px; + background-position: 0 -2102px; height: 11px; width: 16px; } .flag-lu { - background-position: 0 -1452px; + background-position: 0 -2201px; height: 11px; width: 16px; } .flag-lv { - background-position: 0 -1463px; + background-position: 0 -2223px; height: 11px; width: 16px; } .flag-ly { - background-position: 0 -1474px; + background-position: 0 -2663px; height: 11px; width: 16px; } .flag-ma { - background-position: 0 -1485px; + background-position: 0 -2608px; height: 11px; width: 16px; } .flag-mc { - background-position: 0 -1496px; + background-position: 0 -2685px; height: 11px; width: 16px; } .flag-md { - background-position: 0 -1507px; + background-position: 0 -1232px; height: 11px; width: 16px; } @@ -722,132 +722,132 @@ width: 16px; } .flag-mg { - background-position: 0 -1530px; + background-position: 0 -2476px; height: 11px; width: 16px; } .flag-mh { - background-position: 0 -1541px; + background-position: 0 -275px; height: 11px; width: 16px; } .flag-mk { - background-position: 0 -1552px; + background-position: 0 -825px; height: 11px; width: 16px; } .flag-ml { - background-position: 0 -1563px; + background-position: 0 -2410px; height: 11px; width: 16px; } .flag-mm { - background-position: 0 -1574px; + background-position: 0 -2256px; height: 11px; width: 16px; } .flag-mn { - background-position: 0 -1585px; + background-position: 0 -2146px; height: 11px; width: 16px; } .flag-mo { - background-position: 0 -1596px; + background-position: 0 -737px; height: 11px; width: 16px; } .flag-mp { - background-position: 0 -1607px; + background-position: 0 -506px; height: 11px; width: 16px; } .flag-mq { - background-position: 0 -1618px; + background-position: 0 -132px; height: 11px; width: 16px; } .flag-mr { - background-position: 0 -1629px; + background-position: 0 -1188px; height: 11px; width: 16px; } .flag-ms { - background-position: 0 -1640px; + background-position: 0 -440px; height: 11px; width: 16px; } .flag-mt { - background-position: 0 -1651px; + background-position: 0 -2586px; height: 11px; width: 16px; } .flag-mu { - background-position: 0 -1662px; + background-position: 0 -1860px; height: 11px; width: 16px; } .flag-mv { - background-position: 0 -1673px; + background-position: 0 -1430px; height: 11px; width: 16px; } .flag-mw { - background-position: 0 -1684px; + background-position: 0 -1838px; height: 11px; width: 16px; } .flag-mx { - background-position: 0 -1695px; + background-position: 0 -990px; height: 11px; width: 16px; } .flag-my { - background-position: 0 -1706px; + background-position: 0 -561px; height: 11px; width: 16px; } .flag-mz { - background-position: 0 -1717px; + background-position: 0 -858px; height: 11px; width: 16px; } .flag-na { - background-position: 0 -1728px; + background-position: 0 -66px; height: 11px; width: 16px; } .flag-nc { - background-position: 0 -1739px; + background-position: 0 -616px; height: 11px; width: 16px; } .flag-ne { - background-position: 0 -1750px; + background-position: 0 -1353px; height: 11px; width: 16px; } .flag-nf { - background-position: 0 -1761px; + background-position: 0 -539px; height: 11px; width: 16px; } .flag-ng { - background-position: 0 -1772px; + background-position: 0 -2157px; height: 11px; width: 16px; } .flag-ni { - background-position: 0 -1783px; + background-position: 0 -1684px; height: 11px; width: 16px; } .flag-nl { - background-position: 0 -1794px; + background-position: 0 -2498px; height: 11px; width: 16px; } .flag-no { - background-position: 0 -1805px; + background-position: 0 -1287px; height: 11px; width: 16px; } @@ -857,92 +857,92 @@ width: 9px; } .flag-nr { - background-position: 0 -1827px; + background-position: 0 -1342px; height: 11px; width: 16px; } .flag-nu { - background-position: 0 -1838px; + background-position: 0 -627px; height: 11px; width: 16px; } .flag-nz { - background-position: 0 -1849px; + background-position: 0 -154px; height: 11px; width: 16px; } .flag-om { - background-position: 0 -1860px; + background-position: 0 -2234px; height: 11px; width: 16px; } .flag-pa { - background-position: 0 -1871px; + background-position: 0 -1441px; height: 11px; width: 16px; } .flag-pe { - background-position: 0 -1882px; + background-position: 0 -2674px; height: 11px; width: 16px; } .flag-pf { - background-position: 0 -1893px; + background-position: 0 -1552px; height: 11px; width: 16px; } .flag-pg { - background-position: 0 -1904px; + background-position: 0 -924px; height: 11px; width: 16px; } .flag-ph { - background-position: 0 -1915px; + background-position: 0 -979px; height: 11px; width: 16px; } .flag-pk { - background-position: 0 -1926px; + background-position: 0 -792px; height: 11px; width: 16px; } .flag-pl { - background-position: 0 -1937px; + background-position: 0 -2707px; height: 11px; width: 16px; } .flag-pm { - background-position: 0 -1948px; + background-position: 0 -33px; height: 11px; width: 16px; } .flag-pn { - background-position: 0 -1959px; + background-position: 0 -110px; height: 11px; width: 16px; } .flag-pr { - background-position: 0 -1970px; + background-position: 0 -803px; height: 11px; width: 16px; } .flag-ps { - background-position: 0 -1981px; + background-position: 0 -2047px; height: 11px; width: 16px; } .flag-pt { - background-position: 0 -1992px; + background-position: 0 -1199px; height: 11px; width: 16px; } .flag-pw { - background-position: 0 -2003px; + background-position: 0 -1001px; height: 11px; width: 16px; } .flag-py { - background-position: 0 -2014px; + background-position: 0 -2113px; height: 11px; width: 16px; } @@ -952,311 +952,311 @@ width: 16px; } .flag-re { - background-position: 0 -2036px; + background-position: 0 -1651px; height: 11px; width: 16px; } .flag-ro { - background-position: 0 -2047px; - height: 11px; - width: 16px; } - -.flag-rs { - background-position: 0 -2058px; - height: 11px; - width: 16px; } - -.flag-ru { - background-position: 0 -2069px; - height: 11px; - width: 16px; } - -.flag-rw { - background-position: 0 -2080px; - height: 11px; - width: 16px; } - -.flag-sa { - background-position: 0 -2091px; - height: 11px; - width: 16px; } - -.flag-sb { - background-position: 0 -2102px; - height: 11px; - width: 16px; } - -.flag-sc { - background-position: 0 -2113px; - height: 11px; - width: 16px; } - -.flag-scotland { - background-position: 0 -2124px; - height: 11px; - width: 16px; } - -.flag-sd { - background-position: 0 -2135px; - height: 11px; - width: 16px; } - -.flag-se { - background-position: 0 -2146px; - height: 11px; - width: 16px; } - -.flag-sg { - background-position: 0 -2157px; - height: 11px; - width: 16px; } - -.flag-sh { - background-position: 0 -2168px; - height: 11px; - width: 16px; } - -.flag-si { - background-position: 0 -2179px; - height: 11px; - width: 16px; } - -.flag-sj { - background-position: 0 -2190px; - height: 11px; - width: 16px; } - -.flag-sk { - background-position: 0 -2201px; - height: 11px; - width: 16px; } - -.flag-sl { - background-position: 0 -2212px; - height: 11px; - width: 16px; } - -.flag-sm { - background-position: 0 -2223px; - height: 11px; - width: 16px; } - -.flag-sn { - background-position: 0 -2234px; - height: 11px; - width: 16px; } - -.flag-so { - background-position: 0 -2245px; - height: 11px; - width: 16px; } - -.flag-sr { - background-position: 0 -2256px; - height: 11px; - width: 16px; } - -.flag-st { - background-position: 0 -2267px; - height: 11px; - width: 16px; } - -.flag-sv { - background-position: 0 -2278px; - height: 11px; - width: 16px; } - -.flag-sy { background-position: 0 -2289px; height: 11px; width: 16px; } -.flag-sz { - background-position: 0 -2300px; +.flag-rs { + background-position: 0 -1871px; height: 11px; width: 16px; } -.flag-tc { - background-position: 0 -2311px; - height: 11px; - width: 16px; } - -.flag-td { - background-position: 0 -2322px; - height: 11px; - width: 16px; } - -.flag-tf { - background-position: 0 -2333px; - height: 11px; - width: 16px; } - -.flag-tg { - background-position: 0 -2344px; - height: 11px; - width: 16px; } - -.flag-th { - background-position: 0 -2355px; - height: 11px; - width: 16px; } - -.flag-tj { - background-position: 0 -2366px; - height: 11px; - width: 16px; } - -.flag-tk { - background-position: 0 -2377px; - height: 11px; - width: 16px; } - -.flag-tl { - background-position: 0 -2388px; - height: 11px; - width: 16px; } - -.flag-tm { - background-position: 0 -2399px; - height: 11px; - width: 16px; } - -.flag-tn { - background-position: 0 -2410px; - height: 11px; - width: 16px; } - -.flag-to { - background-position: 0 -2421px; - height: 11px; - width: 16px; } - -.flag-tr { - background-position: 0 -2432px; - height: 11px; - width: 16px; } - -.flag-tt { - background-position: 0 -2443px; - height: 11px; - width: 16px; } - -.flag-tv { - background-position: 0 -2454px; - height: 11px; - width: 16px; } - -.flag-tw { - background-position: 0 -2465px; - height: 11px; - width: 16px; } - -.flag-tz { - background-position: 0 -2476px; - height: 11px; - width: 16px; } - -.flag-ua { - background-position: 0 -2487px; - height: 11px; - width: 16px; } - -.flag-ug { - background-position: 0 -2498px; - height: 11px; - width: 16px; } - -.flag-um { - background-position: 0 -2509px; - height: 11px; - width: 16px; } - -.flag-us { - background-position: 0 -2520px; - height: 11px; - width: 16px; } - -.flag-uy { - background-position: 0 -2531px; - height: 11px; - width: 16px; } - -.flag-uz { - background-position: 0 -2542px; - height: 11px; - width: 16px; } - -.flag-va { - background-position: 0 -2553px; - height: 11px; - width: 16px; } - -.flag-vc { +.flag-ru { background-position: 0 -2564px; height: 11px; width: 16px; } +.flag-rw { + background-position: 0 -1530px; + height: 11px; + width: 16px; } + +.flag-sa { + background-position: 0 -968px; + height: 11px; + width: 16px; } + +.flag-sb { + background-position: 0 -253px; + height: 11px; + width: 16px; } + +.flag-sc { + background-position: 0 -495px; + height: 11px; + width: 16px; } + +.flag-scotland { + background-position: 0 -55px; + height: 11px; + width: 16px; } + +.flag-sd { + background-position: 0 -1750px; + height: 11px; + width: 16px; } + +.flag-se { + background-position: 0 -1452px; + height: 11px; + width: 16px; } + +.flag-sg { + background-position: 0 -1959px; + height: 11px; + width: 16px; } + +.flag-sh { + background-position: 0 -209px; + height: 11px; + width: 16px; } + +.flag-si { + background-position: 0 -1507px; + height: 11px; + width: 16px; } + +.flag-sj { + background-position: 0 -1265px; + height: 11px; + width: 16px; } + +.flag-sk { + background-position: 0 -891px; + height: 11px; + width: 16px; } + +.flag-sl { + background-position: 0 -2432px; + height: 11px; + width: 16px; } + +.flag-sm { + background-position: 0 -1331px; + height: 11px; + width: 16px; } + +.flag-sn { + background-position: 0 -1893px; + height: 11px; + width: 16px; } + +.flag-so { + background-position: 0 -1607px; + height: 11px; + width: 16px; } + +.flag-sr { + background-position: 0 -1706px; + height: 11px; + width: 16px; } + +.flag-st { + background-position: 0 -946px; + height: 11px; + width: 16px; } + +.flag-sv { + background-position: 0 -1629px; + height: 11px; + width: 16px; } + +.flag-sy { + background-position: 0 -2377px; + height: 11px; + width: 16px; } + +.flag-sz { + background-position: 0 -330px; + height: 11px; + width: 16px; } + +.flag-tc { + background-position: 0 -352px; + height: 11px; + width: 16px; } + +.flag-td { + background-position: 0 -1563px; + height: 11px; + width: 16px; } + +.flag-tf { + background-position: 0 -1309px; + height: 11px; + width: 16px; } + +.flag-tg { + background-position: 0 -1089px; + height: 11px; + width: 16px; } + +.flag-th { + background-position: 0 -2344px; + height: 11px; + width: 16px; } + +.flag-tj { + background-position: 0 -1695px; + height: 11px; + width: 16px; } + +.flag-tk { + background-position: 0 -220px; + height: 11px; + width: 16px; } + +.flag-tl { + background-position: 0 -1078px; + height: 11px; + width: 16px; } + +.flag-tm { + background-position: 0 -770px; + height: 11px; + width: 16px; } + +.flag-tn { + background-position: 0 -1794px; + height: 11px; + width: 16px; } + +.flag-to { + background-position: 0 -2553px; + height: 11px; + width: 16px; } + +.flag-tr { + background-position: 0 -1728px; + height: 11px; + width: 16px; } + +.flag-tt { + background-position: 0 -231px; + height: 11px; + width: 16px; } + +.flag-tv { + background-position: 0 -847px; + height: 11px; + width: 16px; } + +.flag-tw { + background-position: 0 -2322px; + height: 11px; + width: 16px; } + +.flag-tz { + background-position: 0 -264px; + height: 11px; + width: 16px; } + +.flag-ua { + background-position: 0 -2531px; + height: 11px; + width: 16px; } + +.flag-ug { + background-position: 0 -1474px; + height: 11px; + width: 16px; } + +.flag-um { + background-position: 0 -583px; + height: 11px; + width: 16px; } + +.flag-us { + background-position: 0 -407px; + height: 11px; + width: 16px; } + +.flag-uy { + background-position: 0 -1144px; + height: 11px; + width: 16px; } + +.flag-uz { + background-position: 0 -1122px; + height: 11px; + width: 16px; } + +.flag-va { + background-position: 0 -1067px; + height: 11px; + width: 16px; } + +.flag-vc { + background-position: 0 -1133px; + height: 11px; + width: 16px; } + .flag-ve { - background-position: 0 -2575px; + background-position: 0 -1100px; height: 11px; width: 16px; } .flag-vg { - background-position: 0 -2586px; + background-position: 0 -341px; height: 11px; width: 16px; } .flag-vi { - background-position: 0 -2597px; + background-position: 0 -165px; height: 11px; width: 16px; } .flag-vn { - background-position: 0 -2608px; + background-position: 0 -2388px; height: 11px; width: 16px; } .flag-vu { - background-position: 0 -2619px; + background-position: 0 -726px; height: 11px; width: 16px; } .flag-wales { - background-position: 0 -2630px; + background-position: 0 -77px; height: 11px; width: 16px; } .flag-wf { - background-position: 0 -2641px; + background-position: 0 -913px; height: 11px; width: 16px; } .flag-ws { - background-position: 0 -2652px; + background-position: 0 -1937px; height: 11px; width: 16px; } .flag-ye { - background-position: 0 -2663px; + background-position: 0 -2520px; height: 11px; width: 16px; } .flag-yt { - background-position: 0 -2674px; + background-position: 0 -704px; height: 11px; width: 16px; } .flag-za { - background-position: 0 -2685px; + background-position: 0 -198px; height: 11px; width: 16px; } .flag-zm { - background-position: 0 -2696px; + background-position: 0 -1882px; height: 11px; width: 16px; } .flag-zw { - background-position: 0 -2707px; + background-position: 0 -649px; height: 11px; width: 16px; } diff --git a/test/fixtures/stylesheets/compass/images/flag-s03c3b29b35.png b/test/fixtures/stylesheets/compass/images/flag-s03c3b29b35.png deleted file mode 100644 index 3ec1e90d9c6a5abfb2123331a2ddd5596a25b1e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 105539 zcmV(@K-RyBP)S=Tkr48y}JP{&+~mf|NP?X!|d+8bMBNgXFg}<%+=gu^fm2^udeFoIOwX@s?Rme z=|r>JeKe~T9eH^MvOvoaqzIA(i2`$OzJsub#BiTL`C z!P|Qnegg*L-@7+~-MUevV@Divr`g+VM*U^v*vZJWlb&Hm(;f)!W666+eoitD$6cJx zIGk~@IBwm-dE*8yDVi?8<#OS4X*eAk4yT4)m0z=Q>2L&hkCo=mv67tITS0!aNG5?r zr3Gj@Q+C$ zYlt67mH=*DC?;J}fU`g{+l=n9c?3AznQe9_1y+r6Rqx@jTRHJY70#UrmuogE)|E!g zE6_9QC9&JxCCFEGcgjspU5M4{)T{7%^RtwWdO(@-3Dj?QQc5XL&KDFInMF~IUdWao z?a~89g1spk>_tcsFZsEQAdG4++o|!ILv$iS^dSxHi zO#PDq<1R8}_(jsv)(ST9@ZpanCG82rb?y248x;k9<~MoYm*B0v{2dbAF0UR^}~kWZvXP#trN)`(pu`sIoM(4%NDw-`mWV23y$P zU^}}S?PBi-dpXeL07pMO%E^yTa^~YRY|g2 z-gtwTUw)bApMRb@b?Q)~Mhz-gsX~Pc6^M+CAUr&rH{X1d=bn4cQv%Uy`B4*4wj2== z5prXsjwn%Ig=ooKv0_CkRjN$o%9W+vosX+fuzD4ib?eCAw29oUTiCH<2YdGHVgLU9 z96o%QeMODojb?*^XIvA=@M72TrmW^D8;K@t{gQ5wFT8nl|sq3`}km$R3Xoe z0j1=hp@M#b9tOFJCcH%`asF{2qje!LiEvC3bIRsLG6@;>4AfC3SqGANC* zi2$3jb1Ji%j@q}!cK9H+ojY;8^_Ey7D|Y$aDyGijD8TBJ$LH%NEngR4my9->odPkM znlhXL{y0Pzob~GA^7j=11vsP>7KbWDfl&ojf;_okS5FrKR3FrPE4)da}xFbz5ESm;Ds%{Tb`7U1-~P=+$z_#9~yz^0Ym$ z>BYC{LOfN_{<=oMz61F0{RM8_(B}iy1_e$FHm5YW^9cd!sl`i_kkXc9+U!rp7wY<=M72U#$;a4iu zm>bnUE}7nyQEl?WG*Z(oEW6d2*au$Re&DU+W}-K9uJz|(s*QFl24YfEyWFqO&c?*z z&_`obpp6E{mJ=>zD_hz`Sy2gv2qA6}CA?^MU@kR+l}bAv^Ml7m)v2rW>&|$F<{xHy z^RmotS&o=i5q#Swf~k%}G`3#TN3F^%tn9G>eNJ%L^b1ZIk@np`QXqEEW5x^qx=PZl zSvd8~>Rz$nLdNteIP^AfVixuFDqR|{GG#EAC`HQ3m1r^o)gVe)xQJ5E*1$V53ZL>( z_=<&Ad32+y8X{XSm$`~Y`bPb8(?MC!HQ&z!GM5ZZSJjjAlAY5B!8Ej^Eq zi_hTWpeeL8jiV*Q_?Us1&li|To>-e7hrPmw-Rje*?Q48L;92&(?aS5nof$vt9Y%gr zpCOAHFlbRz`Ydlw&-Jb7zP^K+Q80g>`!l}h&+y67jRgL22EU8H)As0ktjB-jll`km z%FO3ZhJ}1#a6th+1p9fBCk^Rzsphv}p5yx(S1ZVfs96nXKp@W05U5m6q{E%N% zY@iq(d75w5HprTXPf#F%8LPygs6Mb`ZYJ~TjN^A$aXFLo8BWfnIa#>*G+pim@=7Tm zy}NA2-FTN7jxBC5F0W!ZHFp($I-8C)s0h`gim@Z|1vZy|i5gYQVE6XnfUT%r1-r#b zpQ~@v=S((z6GzkO;+vwpno$CTwmU?cP0@Xq!Q6G?EjOqqJCzF{+Ian9Jc$+;4=ix~ z+&!IKD648lsi%B)DW}5&r{R3K97Y4$1CzK^Q|xh5+I`%=%&*F|9YrsQZpZpDklq zhefRVB8Ih{X0fsB6n^MFnQcACva`={cK08~&*FUT8!*5a3zsd!x#k$dHUCLm3z*3* zpZQ#4i5T3qTxKJe_)*fG{J~z%aD)su?-yHc^&=Y~D-%mt2z;z~YBV%^O<H*zV)p@dm7rZn^CTFuEHHUne zt-a;OZy#mT@qQX_m|VKQq{HF%Sd?9N`?|WN`90S{IhR2=@}!3nrID>dE=r0CJD#1V zyL*bkxNLU4_-4gr6xCG{RS7C9jwYFh1epq_`;kS=gvy*yO|$DycPa*>?BbI)QPEtd z*u|PAC!hIg9L&hqi*J?;`!jRt=4aw{Z&5Cr!Kc+jY@V4(=g9J-LnH@?km(PzXemN6 zrRWNu`KKgaN z1bUSnMip>#Wv`N@@h&A6xpbHgSE+CYR;$36nw9Vt{_I^Y5+AY3zLC*lnJXAVJXMIB zJe$~Q^SC*C5!dG}=lY_xTwT6_3v0G;e!~tCpo$Qv?6K3 zm4(K?D75Bf!RvyzgzCIiqzLZ>1kljSix1=`@z3~B(8T?@g`l~hwO$3`%H~OvbeJYg zz$Dz*YswUSgeUtY?|#Ck{YH(#UwCuiS6{hRS)W>D3KOm@t}2@FWi2^b z=gTgI#6(;|K6D5Haf(~0__J0xJ7;DVx_z4N`Z1S<0Z(A#R*jm%o+Kx`v_H?jzq)ovW46?T%lCFwuJ9PWz zbgv;e?4G57$FSKXEnFgS6fPI&^MZ2LbQ|a}VE3eU4_tccu)7LBE4W=I%(>roXF!Af zO#gH$@6rO{ z%-+J8eZn#Omc`4b9A=*gOnwnUuti9w5+G76`^S>MXCisKr;@v42H8K(A#3YA(l;$6 zedAKn)~_IK?P^lid`I%C4Ln-0ndD_#AXw=^w=C$Ng?UI8-XpT`9VeKOh5tebTrT&l z7Oa!cbCU@CHi_T`i3BdVPvD|^_|Lp!jK-oxi|QyMV?ZG!qzFX^4kEN)KSFx-qFDFt zx;s$f374R>@Tte{KNLFEg`e-;MH6>V6L-%Q8>`QcDuV|GJM_5!f6uH^wm>*Yna+q2XZY;1gS2kFpO!8537y|h6K5}u4qeWXk*ld^AIRHp@8ZQ5xADv~KTxaI zW*Rr%BVPSyssyelG|$ksY13ZTReQqtbBrBxR@ct)B;$qD2Mz_dlxpl^zt1g|xI$%$f5VTemjkr=5+(?Qg=qea+~* zu^ZLDXh@BY?=g6FJ1$;qBQAd%Zro@`TwHq&9r}n17k)5&XHVlj1&lMVMjQOsDpxO;cS-Me@AFmcC^ z6MO3xw{PE;^rlqfh7Mgo(!1}H^#1##G;B!P2Op5!xG@i#HYKHcby7X3QG+z`=2P0W z)LE@!=_wR7TH2y1FPcvd_Tl zSih)(ZCY_$7ku@_b^RW-G@zgsDU<+$LejLlD+pvkpsG?w~(Aayb&pE*br&Vz-^Td1ZDQ%VdDEkZ7hATO z__U2lhPkWo`jc8~HabBZ3SVD*q-ZKt@bmL~3P0^KQh$GcJuOsaB`HDrUa7BA%~p=gO<%h+ch%a?4{Wv-B3B zi*6FM@CH8fui=cjie=VioO3Q?&XykO8f~C+v__W-CccaoR58)B67;ERqHk3%2G#Ut zNKGF`)bwR+9X}>K>rYay3}@w3DF^J4RpXK9&_h9Tfkslkz@qU$(!_ih33&$M1^05L zdlkD7(`FtYnaVq*H9i#Q>!Y&paaj#<+-VV^(W0D2D@ogy*JvN9(LvHLqBJ^J&}b?5 zt*(`dxmpnyC43>wUm)Z%Od2@cUn5*QL|E=1%H;N^to93K<+pNfLH=J*QG={_p+ky0R|duPhg-R-?g^g#0Gz zjV8L`YQTfQMI_1$8}Dkuy*#ZDcXJ^@?m3w%PFL?+#n~gy%KCd6Ywv2TxudZ%PGfnj z#!^WaOSCg@rmdI)LF!C_N zM^@#)*h(B5UJ0{|4VEl{#ezkPq~1$StXic2%a)m0xX_#B^DO)}?>I^G*YI$DE@OV! zK)nm6xHo&ET30q!`mbKm`14P=bP>*<*SPe%6~Bx7c>CG}u~fsToOXmF)x~dk??o;; zA8_LLo!t2A{NpVW-E9&-s)FkhpZhLkc#%sdSamLJT^Y&3Mdp*_tE)rZTiqL^W3HYotrqbmLwJtAV8WrDe!3$pw<(ZaW z;VQxaNJT(E+2J@ckKmiR6CeL1 zqTYR;@~^hi&70XlAkJbX`98fFqwWmhoBQ3kc+Q8E#VbkvvOQS~XJET~9q-Tv*liCm zJ(y0-DmN(NeN@`asv1%89yRG`0w1ng>M%2XFkNEjGC%fnF6~YvX+VFHK5K^Kmts(S z5ccpkzGZyS4o>>?C*^{JyszZDM(O6P)sURLZG%u$_T=-i(_LY3X33*Xz9E!NS9Lgce{W8 zy4zUU&iRc}a!7XbS4u%P*q|rO{r04egCL(CXF0_U4=V@4A3T zyLTf*St`{Jt-sW4&|oyFf+pUns**Nl44QbXns~0Z@#C?HhpV8j+oiPsZI%Cr-9DB6 zw^jZhcKdXzTwM5}wr(9-ObpDPgEnIZnmFFtf{ByUD zh=_l333eN80)G zq)4e#JiC2=4xh||@!u2j%0gCEdyn;1>Qkc9G-lT8#rZ+g2oL&-a^j^&iV8>3p59$o zQ;AOmZwp?-Jms%Ix;Cmv;>J&CK6M~X$M+(3O#?_GRKey#l>=339-U$X|z65=~YRv=K+)E*g4Y(!lO#NldIzp`H6 z>vvL^vHT<>d%Q_li6GQQlR5L#E{IFY4p#+|g3FNX6UvXpU&gC;9kPm+bKDUiE#9uk*lw@ru^4L02$xeVv9ZRYIhE0MFnh&s zWM${eC8x*nRLjDK{eR`za+D7*O7n)*u__1C?r}z)Smb-Tu%Zm_{yJ8>Q(t!}6ri3^ zJS2d9Ct|sMFO6eo?h+|ChnFm(XNm|5pi$}A2`7jQx8%C4*uhHO(r3~!y9w#>U5dktcM$a2X zsaazPpEsRiGiDMpZ7xBRzr|HZ~ruzwlv?^{Wi6JHbEcdEF)J)1J3?tJFIzKF$d&S&{s^H}}% zT-Loai;eHj;D>jo@neIj>})iNJ&h;vOXCR~Y&wpWuMZ*io6(p9mL0)oNCSKaHo~vZ z2l(~;0ROH{2>7C@u(hTHw*82pPd_5~<7O23uo*?0d`!`XpXjJGZlSn5(hyO?b)tlE zMFt0xF>nITKf7V?-JhV6;tTl)g0EuL0=4v~R-=`xmn7Bz*K7@(>v8=dXHzA-1k|=4St>xLtkR>=vV1G@lCoD%_@~W6LrzUV2Q0xqss!OK$Os)IUvC3fv*V)d{x?AzJTCO~0$s?GNjA?oj zrpbZ{;#iGN#55uS^H+)bHSdLLdtjBcZew3upZVkL=!@3bUks*{;B!Bm{pIrjp~6D~ za10N?IXW1}xF8&pgK-TEqM)4!2wb*+`B&d()Y(rMe!3MFKbf|j7F_;T+Wpdl*86+$ z$uIr*aL+&*?jFp$yM|M5=P248=*3Ileq5A_46VJ2^RK zatmAnq5aZsI^=$f-DFIzWM=C(77y{JR8b+%zTyy>R(IpC_&5 zz}G7|HfuR2=Pu#Qyu~8GR|I@sU0l7oFycj+^g7Sk#7~-hj7r51iB)bbTG?EzvZRCB zidF6)u3#sz%7Tu9&K*QRu7lBHi4{h^6V34Y6&NB`d7xP3eqxn-iB;|{R=KlS361ZkxE;(*5s?&iD1$#!x_gvaGNiOqF!Thd#C8wxoN>?SX% zK``dygI}cgZ(EqKZz+@ZEn@241x(-bEi-q=FlX0XzS%L81>3%6@s`Of-#mfU8^^M4 z!)RvzG>668+PF7q^tCZ#??hkb%g>|ar!6TrcrZm@dYO{#+TvFsN{1FTA6+T}M69b*g!x5R!lyzs_h-*0@cHNPD_?2gioxs%SHxET4GszNsUd>HOqQc#Mrf(YNzMEZph85B-bK$sw$ zX#cWQ3@AsXfCwrFM&J|zro1n+Xd|nod)9qFnN91bv31QXcC3tH&+_@~U%Z&Z^Otjc z-YQOgvzBwSHgJCCCN9m`!j);;jBp}moukU#Tl_KDLaY3iScEpFd@k)WP%unNH$og! zaa1jWya_UD1zg?**S5pCZALG&Zd{afga=O zG)TpnOG0b6XHvgWdsZK9qA$LxFdI*1&1o}Y5+3hxxT7AN28mFTPoB?X`IZbCH0{LF zgC83Kz!=+RDw^8nCL@Ic^xZzYrWeiTj(Yg@TpkO*Pp9$6-B^5}B~F`>S+9bJq2MwE z7*xik3-QD)t2mP*r}OycyL3Km(Th2|+qtV^*S8Lxk4x}mz_YP~W3xZTf!}hOwJMF~ zZ3go7jxY2Q*xdo*k4qpwgqQLmTv^~U-b9E6jtui5GTeu#vOdHm*!fOouWr3Zu=K=e zDwp?j(|wmwg4JJNW!=m_*);beTfe=?jzzz-XW3cyuR6ow?@n=i;|b=D`h`m650ODb zF73L;l|6^uE8AYD#U`E=oEQ8lKZ!GOp^czD&O;rs@9T{9cy}x(d&xC1|HJ1>xridX>MpU_yTa}|km7_b+VbsU89npc7LqDh4z|J0z#aO{e zc$CNehk3*&<%;^=mFkHaJMIWXm0hC7)>v-EXL947;7*3V3+xu)R^=ynv8Wp{D{S0} zw{z#7ooNefdNjT2UfqLHTLTVHD2>xqm|1nFf>Ib2r}pC^8(R;m&mI+a7UHo0T<#}3 z-O=+-U0I&1tYS6|JXgg~Abqz_7huG?7kX_@^>kg0jo2eqf_Gjs!Y*@it$a}L$tpZq z0=Fg_s_ZP>HrEG@myOV1d4fp>k&n9sc4G@&JzYJtumt*Ey2I&KU$+3MckfSaO#ISX z$l7e~@ccrD!{hd;AHqupi8=>TR)9~0AQF>;Z6{_Z`lV zfkPNLco6-D^rP4CUUVPToz7!Ll_zze?NqVKGg{JYZZmfYJgS_L!2OK-#HYto;mTbG z?7GXG4R`oveH_DnjHS|fQRRoXxbaY|@`D>XF*5`d26RdH2;Pvf|K*=fA~S4yD5Xhg zU->i}gMPQt;Ew7Efifyij{wCjH0AEA?zHo2g5k;)hM~J*F0k=#oU(_8kjDblCZFz9 z+Vu$F>W}PCXSUl4x6z+TdMvlF(jShXjR~N4Y|1G0u+gQ@yi@F6oRRtAVBwy48 zRgFWXY&yx%thOgM@NIhaekyCzOKI%-c}h@#{&bI!Jz;jH*RT=mFJwzf;S@r3Gr-2E zXKieXP+Ds|T{ZaQ5{Sg`kZ>JkL(B1J-3W$#8cB<;k$n7R6#d&pasEY7<uL_VjSX#pmzRp47W-BWo1aiJ~UvL>sE1*EDw$Fdv#luAj6%_Q02eHEBgnERW2!3 zxujU-Qeu^T#3~p0zpN`KxZ{=MRk)B?WDu*YiB;CzR@wPq>&m!QS&vsX;&nC6I25I6 zb~g-@_M~QNPYNj9$yEn@^iw3ZCo(>PzX>QDjYfEoy%7JJ+4c0;C_D^=o9Y@d7>1rd zo!R=YRd}imJhA(#_;%ah1=t^_o}#yzdb0hIEsp-c_ zNjSxobLY6~K1Fiv$`zvu`YQbsP(!3*C8!<+wW9@9AS_bw45%Ra+8Ak7!3Tw!`2X(~ z3I9A0<%xnQJf5U~{ts3D*8@>DL-Q;HY*+@nyVGj>cU2Z{#-jiy3Bh(9_XY7m0--ep zuM5F=)5hI3HXa1pNfgtT5F`k+ksRpYv=Z==%#qU?Iq28QLC-cey0^2@rGt&nuh~eK zr=}HHY4N*_M!l`P-(QGFKO1ijveB-SolokxO`2{{?QT`J8_dL(FJ7B)q?QK^SJ0!W zYDz1#$}acJq|CW4L=h=>YIWOxt2i13^4Y3iQ)b<5+LckYd91RS^>A_V!UIK>gUS&R z6hUNgq>iW}Q97cFh*b^|t6Ws9a){e1JKQB$y-rklwW#t6QRQV~l^2Uuo-bB8My&E2 zvC6Z=Do+=yJXNgn6j9}gVwEReF=F%b=H`*NK(I`(MzB7QoJ~38{Fp=5Pg!K_&LHEL z4AKs!k#abNhesch^lK7{zb10;@O?v(0s{ke1Ox==2nq_4??D6y2Ny=msmQsIkPt#c zLn&6Q7{!Yh*MnXEJ2LKxU9Tr2;+~9*(|5XVXWu5hAf42LR8lM{Jj#Eh<6-_olJk=b zk(8fAQeF}d@*a?wmnhehxtV_x^D`@+VaCN7^gq#`KF9me^VgnqJJyX(M>^3_{Drm$ z+VSbWPiellIUnx*kPmi$K!aTk_~LLU8uxDOHfb^s*u~}*La|bpn+GU2Plx+A&G_A+ zc@#-)9Gk@|3vA+{dZ40_Rcb{YM^*nxYPJ=^ZnhiUs63ab2X^t`ZB)DKpqlWY>TcA$ zZKL*WJGF1wsC&~+-Rm}Q2c36y*S>UyZhCVJFWLHo2Nro;qHYD@HQmihl+l^<{1a#@O|wuRMJ>fbH%e_G`y z!wT!vL7O;9xPF;`273OhRdx@I!jh;nyi#;cp7?jZ{GSBl$tq~IYopEk2CZD#fAZ!3 zA{b9?O8J2YP^R=h`10QghU3XLC=_z`EZTqp zGC$t?XQ1cb2nJ7`#QGNlF%!zwCUASm|9r-Zg{hfS2qBE>E}ZYqKAzsD8J4Zb}6CHy5- zC|)#_qQ0RlycEOgxHV`2UWCn9~cQ)Wec`Q~~I{f_jYq;E-m zIGP>qZY&cV&R?ll>2<0nnVQ9z4^lEPrKahhbH$jpIMSTsi6^KK8jWVsj8mrh`UZ?z zTXquYAEf(Dx3aFG<=7}uxi+P$Jty|ULTt`WvMf1-1ck^E|GWpGQPl|vlc~MeR|Lv$2j4wHwc=H|o_bC9-i&!6UHUaQk?ys7F}V6*ov|f| z^-1i}gMu5^1vg0$j(Df}$D-02Uq3sInQweUY*w7E7-j-t>hoXoO2`Z3pE}Kh0sZh1 ztLzgNM*5Paq%D|_w|ow$QkDB(v?YJv0p2P820P!|Y4pOe4~`Lk?2m$SFEz1SY`ia>ePY=@HV(|LY}yNdE)lv#*>hnAnCoQ z-98;+m0e<$T`Jt#IF0s?6$~}C>om^kalY(NdoEA7LWTfEl`#}a-#bv8(Pf+_{)gxG zHvxuK)&n3OuV8pGE5@pQC}<>jPw=(~6z;6OEO=hbJ9Qn0xQer^}~xiN898_De?6dS*Xv?(NCgpJou(paa!=^`^QE z@0v2CYYM@rDFmaA5R7MqVCbjHR=9qIYkv~3{X2qA9VF=N5sIGt1`HBS8txJArX)gJd*N@<-)~~R6 z6P0%Er1H-{Q)%~ZU4Y(=58iE!%|Dnm_d@u~RGMqHqO8iVilbUB(!4_S)5k^^S{WVd zWW;T!vFqm%Fl6^&5)K^4^v7vJ?pz`G){_w@J1 z;PWWb-NY2i=iH;Q<1dOO-y$^WHXqymqRN#6q#gfFf02MH!J?$aG?@MZu{AFflQ{Qr z3G_2%`ax-%aTr={Sh|ns=|}P0*WT-}O$>=YzW)9+YWc%sRW=SxyU%dDGkDJM=}>PY zP|G8Nrk`%6S&L1^$!m`)JKS8^M|iTYz(=^UuUKVYQDX%^QDX&vQDw8JvRPEwUsPGO ziOo}mKZPq_6t4V-kcxA{l}`&-J}uF&FEP$;%`T_#<+Y?&{klPD`xx#%*cL+tNcfb-SpW^_kPB|HEfAnM;YV$;8_y zl5x7e%$HtrrVoJV8 zhI0$9GTZSEKPbKR9cCXP7)S{Vo>+{_7H4C&%!z~g^yT{W;lwSNLUQAFgmxK-eam=K zW{)(8sCq+B>2-LO`JSS0C1TFGChoydAI1*wE?kW3d+;w@1$hkb){Tx$n~|HAOk#t! z{3(9JKY~0}J$!tfRIBP@`#Nv7F85-|Bp12Q++t z7?hu7SR1Fx^lc^MOrI;?F2d|YR?eq#ja-77|3P4ztBjuP#Oi)mhMI6r{Pr7Dr%u&{ z=_ODH15I9G!o0$yWy1yK@DB;YFC-lQqG42dy#zOYug$`-xY&NC|S| z7LXmggv?uO$hfhd^lO`VbYUCWw|9_wa}P-;_mh0$2wAs}5#TyWl~QNeJmU(xrYWM? z#EX*6yeQq=i?Xd1#P4hYmxmyIQ?54+Sl_i zO&83Lfmw6lo0*tmrr|Yv3f|Ml<1=Lpz7t2_H+CrgqXs_V_NiV;5z6&QIQgT8Xvs-J z&lAy-1P>B%CEgdPgHrLh?%xyK(dS29Kz>`{234eWYZYLxZNXMMA6p#@*1GvvpUuPe zY%aFv1kdMSdm$I=OM;i>yIjwX5&^kgWNxfcAUEV;eL*t3D3F_M>ZX@-D0o%yy5Nl* zEcLP}cuVkh76o!GbBdedX!_f^Jm)+eZu%n7+?&-(N8EeP`k7CiCp!#^qw9g%)z+6Z z3|ixIxw(D`{kOj|b71XHa!OcIQ@W-~@GvLKsb1zCJ07%ZRrTeIjV z>11mj+p`NvmV+?wFv5Mp2@{m{5rW}YmU6!3i13Y|yl;6b_(c)rFU;L9nu`9>I^-uV{f7^5R!U)(ZSnt-viR~vcK`{Qa@r?a!ETcM(VtB{l z?3&e&z4Lm}=gU6y=-GpAeY?@A{};3$+@97dMyc>US@Pe5><1)d317|5<7Z<#P3nCw)=&Zn~K-_sAH)xZ#Cj#@W_OaT?RMc$1l;@l27^g#zARZ{z4?DM5%w zkwmG}v(2>F;LYxPHhOoMMwOgAQXWcqax{)@&!thlaqPHjqt>@R#HaY+6X>IFdFdrk zzJiA<&p+bDJG*Tx{^lJ{&1=EAm}bnJ`XY5#c`rZ!qQ=Fd1r>=d9<7I96$)4~doe4fFK5lWMMTwI%Rz;Lr zT->r~+)&6@QN-dex`LnB?Ynmmhq$@Df9uC)Z2((bz1gnyV3(^KdtF~}z}23kt~Q)> zwd9P}oNcaNBo(yz+iqWSGOM>cICatHwv)D}!ib*wto_Gs-@`0B(^lEJmmoKppU9-2 z%70Rbo8lNHc)Z&eD47Pdwh zoqFCC;CRfDM3qaI#@4GB6W&_G8?M#7>{`e3uJ5Vi`hgm*?NoOCLfj#$fg#!|kkpa=Gv{bZ&dfTj8%@~RFcr{+kqo*hZXt7Az!I~=pO zw4`^{(fA5{s*c2`%5cFDe5(z@w^lz)wPMgJ&BD7%Cwyvmz`J%E{3^7>|8g^2+c4gL zpxb3z0$A^hofD>Ny(^!EBb$S974JzwXdg0)&LZ39MY32a$84ea1=5W^PndNTLWDle z+l|y)x-9!VnVC6y1dNY#p{ZmH89yas3YBYq>RlLatE@8M<^?E@Aj*`VW9E^iEUv6W zWaZg7w|z13sTq{&G8rw`;0%T;>-z)F$Ll33ct?tt5VV%8z$s+;)DxnvQRkyC2`l19 zu??T21=w^q$ygS46HT3&D68ycBdyp_J?SgOlI zG<7wVjF#XQ#Cp#lJ+&kO&TQ;y2^3xU8Bu@yNM4Z$(i@6zk>g&$aC+92mFwjtKls-m zJ*zJMaoJQ{+8vXB09nUYNvUKIU0h7bDX&w0Q6sdHw!#-}>1`lAC5m3SEDBQzwTe*zQ$$7SiOQHtRn{BcsDgBPL8Vm`v|3C4oK56T*h1dK z9cT^vP%vOSS)&h=Ir2Ce<4%!2;T&lb&yzCc5-FY-jP%ZsZdDQJ5c)_XqRAyfvz;pX zv=F&Z!1J3r-8thcn~EA^rLj2UX<$5ozh)9QRedwl>Mv? zWm~l*vU#(|oA*i=)hk=n-@^>!J(`ZYcX8aggG1aLdu%NB+X}a^-4t>m)4)?96f(H= zNMZe>XSLtq-UfMM0m9{8OLDo_lJpWph(!*bGL?|E-x*JK8ctQ{wjG4-+(qcmdkNit zkkG@&DE8|~ik&)3@pI=1*}jwNGLM*jTmQ*|Us4(KeG;QKCh5VOU#(4K;Oa#Bu1uiU z@&vjsxlflx@qE4@p7!(NX%ll#zaAcb7_;q%y7XyOf=O-4Fr{4?J>G0q$8hF;5ze=r z%d)U*S(biTjuky4SkpU#b^Rjven2EK(%AR!zlAx@%Zu!R{mA(EBi-?^yQ`4))*Gb0 z_6jL4y+G=7bxEmRla%UJcvLx>M-|GGTK_HnjEsD|S?75PsR}RD*VWxiAWt=(Cshp1 z;f}%ZykNUJ;RamlrozEVg%46kcMneWEMkU8yp@g2E*bB_LtND(US1xzckkiG-u>J-c$jNPk8|zhDK4Km$JO7@bLqk*F8}FP<>qHJ-ao0) zP*C-+P>OAANck(Fynn>WyN8^-cfd}AeO4OnvCwp99!(;Gl*`g)Qnl+WVE4SBUIsB|&K$OG-O5ipf70LNx=&`_Lx&FY>#x5SzRC6C z#f$n|T-AF};>1QAk{SAsKmNd6;%qR}1~k3uSyY0fhUB524<~;Af(ozkvurc|lZwnF;~! zSGuTf#M{NVKMR<2$->tc@|pR2E_2T0G4E6^i%w;;^w%s_9?fLU(G1odNoV81R5l+@ zVatB^%L6p^qJOWcnA`}J+o|F>`=(L}9&eNa#Rw{RklRsPR#qLdWF z512LU>2RXIZ(9FXI1%avtj(LF_388UJC^??$n)PfuB8O}ndWcjKYkzBlNp}~^8ELW z>n6={HvgEM!M*sTr-Kjs*l5(x#(M*VGY_`$`Y<~$kF@dp7&~>w*{C_uPSq(68V+(0 zsp64byLaH4GMR!U3&;_clH+C9)9gZ6$rjR;Wp;lT_Lk#qC(rCur;$WJnNnzD$6_8k zp74Nh$_A7pA|Qguz(^v4B8du$(h(h8fr>>cQYpAHm5Wr?cS&{M*_HH=+~A_bf7P8$ zt2eQA`4)C8*}jT^Y~Jm?Xx1o5}bI_ZU0&9-~IyWyH`p%CJ)kQ8J8zz+iFjf{4uv;#PhT33*;b zzLi4t77wZN$s@uW-QjMoiHlhwT*xe{BO^e?fmHQG#(Bqwe@P*feOs2HA1gkLDZStkDc>p15x{fZWECCn5| z?YePdGfl=Z6o=;kgv0g3t1lrUI+;+d7{0+JDM*lUaX*=`sEUMAim*ya#wk^>P%RBC+xK42$6Rs}aO& z$s~y5QSZ4*GUG8{gy#&Uotn_>{-^_iJquJ>kamI1X zahHq8ggf~i64QM2dmJval-lGT&W|2p5?&A)U=fR3pd-}F#h)9iaQVkDu51tEkM$L# zT{LPG&7oFkE_Fh3@Xb~6!f}{Wv?`1lRGe``N-$wW2_}vy$>d?7^c!D}76YsC$ye1F zI4znvGsBp>yfQH>s}QrMD)Yaq#s%65&1>2c-#6YP@a+b8*Qh~>++4~Cq6KvX&k3sM zO)lh5j1M( zBNvL=+1;-_l+4yE*T}!}Cti2sF~`S}ckXvRGC+@-u~_ssUaOrjx65NIH0QeAQ}Gr{ zmZELkj44P=eo!b*VQ?AKzBc0Wq)KZ0MDa(1?yEO$d0uyHGsq^DqR`ZGcxEQ1N5aJ7 z@8DInn(=>%Q2zr5oAD}8y$TNXQf`M~%Ju)Zga`=k(uMpIC9%n@Ww+;&Tf8(OGUe$^ zR^4wkHuQ`tNH-aojdzUe^^{f*nJ@u!yHD`$@;Sxl&B0V8SZ_#GO?@ZO<1aYU65aK; z>2EamLusR^2M%h-Q&A#3+l5v;rsAQPOO|}HR<31KHW|9}=FJYb$+pvW@op6SYg3W?$4zhPT$XV|oZMHAw+y&_b_R|Ux&`avqUFz3a>iW5$ zeF1@OtOR{(BdEEgA6Y5#p`F0C4oVJ^5(M-LA%B5^y!nCTEeaxUnP62gd20phi;(xd zU`tVQx63_06(e_7F>=0l@^H4Fp-7Ii*RY@Y3+t)tSWey`|3oagzuqC|SUg!r639G~ zM8=_qWFAT*?LZo-`_oC=mu0AO$(3;^lv;I%u(k1&TN6*@nglAWPNL#+nckPBQf*N> zHH073oRdYJA9H!;>wKP_XyMtB7GrwfHE<@{($VBhoyhPG^BB@0hJjsX)9=d}^y)E{ z?tLcFdBAukjvGe&xb94x-j8Nu20Y#(`7k1nPFsCga4nl@ubt+udZS}zBFU)_h!cAe zo0h=sw0M5LD@^4=DqC(nFb)G5OQI#w{OvTWn8EXYdHQmgkD_yVE*8G@faT98>CrK* z%Vg@l(z#T#{{4lJJa-AQ&HQ+)2%m&M;Qcxe>2WLqm&wMGR}x9gbJFfi2z@K2(kMKW z_T@75%rA%J@_A$?RMaD)lK3szhyEAC>A1ffIk`qWQh>?M*ek&VVQ2k4ACfIjmfrEz zBj*l3GPCe@09>F9Q`Qc(+8qdI8l+3f>M+%TAGL=GLZy@QM70nC4-5r4(O3AHrvqOFexgYqcoQx=B;nGQhos!bSfuC;iIGZ{>u+)f3OA z@w>b=GKxA?s_Q4K%;sk;yyqnzn>s`5-GTSQz9Y#3N%;;Qtj3U>qII#W>CeYYMPmt8N@?s^)(Ti(z!cPRH0KRgr8YwwT2X40^nF^iilPOi$>H9%kS z`fYe8KDc%Sv-*FMY`oJ*&uF!p_@Qn%A2sQWQ!-l5nDv)51jtkA=C5ZwG^-Cy_nucc)t3){Im6sjEsS@`DMixM z7UMfUyxD0en0#_gJ8t_S8SWyQr0#7i^j8GD?($oH2&qg=2rWdpqkSFb_zHxs5_g&1fScojy^=h70-+*OTQdo8|fo13KvHV;-E6&8R@?0#d&Ir!NvRb~cJ{xBUXzEaV0JWSuaHo# zZ`{HA?~mpF&W+3&UW}OGC73s+gv?a^2=3L3nG;Jfb$n?iO$cNBlyF8(F30fc<)jhq z>Ln8J%Y`nar)w0mi$!V^_6^z6b7Y`C$BqX@Ff8VLYsg4@T_%h$zY@$n3 zFB$t27}ef~vF*JX-^rVaUA+reFlP4hVoo0~=Joet!9Z^o50>j)yg6|qU-g2q65*vn zj?5}ZNcSXp>ixohe_NaT2w9H!5autBf60M_18j-i!sgh`Y`ndZ^>G{cF7~^^g@_fm zRu#>2)z7Uk|Gf8Setz&X8}Dso-Q9J3cjr6S+*-}5n=1=f zE*70z#DcT)`Ty8^>#(Y}u5J8g(~WeB2zCc{cVZt=vFo6speQP$g58}M*sa)&-5uvB z0@B^h?r+Ss*4}`6j?eS{uHW^&e|&h|&b4EWJ=a=ejycAhBeuNRf{m{?V#BKqIPmEJ zio%P2?c`a>M^nmwrrMX5YLbquDTAEAEkO8Bpn>Kp!@~MfENURZl7>=*G?tL?EMG&} z)LDWpT_o5+*xg=&y&a`k<}OFa8EjRTSieCP8CqJ|p%tNxjRV?QJEFaHx!ZjgJ7;vW zuZHf9)zQPz4ZWP)(2hjihW5fP&x;oaNDn@OsHl@jNk4%wd(G)+0PVQm+gOBoMLI|O( z;$oblLO_(@ugreA=Z`1fpq?xhPOh{V$MvAxUwNFR1ieivo=jc8L+v6~M)4PmaqNE; zD|=bUFu?SOU%o@XJfGU4-}oyJGnZnRnFN)hY@ZV5i@8XGfA&|V-t;h$!ONU&k=W5& zB&y&Dd?q&DNwE2izjA*%?iqIirSFcS7uy*z{BXW=Mvzlwr$|AD{qB@(tq?xiqk zsf1Zuz>EfnS!bvNqAJ3f<}Vk5YX$rqrn+z;2h5#YX8G~<;%GQlwiJ_ zf>c&<-9Hkj6sB4s_quvr`QHerKR8T6^ypFEPfsO*S(UIG*ZEY)|9S~zo&Rex&fgK> zN{jtlCePyHf4>BdK>z+g?>?1JY}t|zPhuq}|MebJtlL+SfNDkicQ>(8Y~R>%JVuOA zOXc4Zs1)0G@&t-cQ5zm!$@Tsp2^ef4R$c>`5X@E)h=)YE`OwPEg;sVpbQm%-p_85t zT%@~vfpCU!f^Z5-E{X)5134%=6DxNM;0rjI@FA&eD@_%a>Q%=Jo^^*~NP{8pXzao3 z2dXF%WihdGF|l%Cf_e)7F-$e8GzyU{J5h;Hf>ISlqU7^j@xB*=Ys9bkK@~X40!29j zGBqp9dEX1QpUtlsN=<;x(n@K0u(0Zv)x|r0M?k@=0%`)P>K^6JO1~#iehHit2k)%J z{IGvVKq@5JVpD;d0Dq$3@g)EEOHfB#D^>f>W&9<;kXV@jLkBgN@dX>oQC+V(T=m@G zrYCHXaOD?C&nY`atbBr4`7p8Yfirvo2Ue0aj%Mljcy56%CME{2?!3a=+i&sV?gxCn z`I+DCds+~PMR}WG`ZNH0A9h99%g%6Zw-JlGEydeKJ5i@jKQw4C1C1I@0Rox;3rLJF zAU!#VWORTXM2p_*AYevY#GIarK^y(hca;x59~zA<7m2k;jE3)$#h9~v24*dtjp;#i zF_k3u#JPbO>$e14+Pi&8yCM4c8m5wTw)d- zXJPZ=A&8F4;5-UB0ynJNLE%;hS~Y4wYHkIEeO2f*YJyVRs`z45U0ulL)Q*YV)^V>f z+qmtKeQQ{`H8Q&58h3$MM;~EHrbyN@M+#YmM~WOFb*P49kqKY^)MnF~9xZ(+_Rw@u`J$NnGKD#iNTfy*{w5yx| z`(+zTW7t@kz>Z+gU}FXcTON*fRZ!L59911GFyzlrRCBZxvJ-Ix%CLD!2)2hT#_pAY z*tc#z!Zyvpv8}UkYUebZ-#Z(pU zM$zOtTE2kMOJA}kFt_7{68^o41Rz9_R0>lSLR2~D zy(NTHLNayT|L049`VxMzg27z^>+*EM)CwG`?z-TwtWt5*VX6u~O!b$nEUkR~N|l1~ zQ<$oO14Q<}VCAaB${NJV8g3let>-VHVwmc&lQ?_q4B}7xf|aimE9Vd^XA>)D5-Vp4 zto&si@Yf#T(|&3X@nAtusw4p_aIZ}Ww&?Yw4apsEwYm-#gWlo+# zn5z0I#E?{uA*uY0r1BS%%72qo{!Fa=ky!a1bGIi}ej_;fy&$Rlf~4{@lFD3R;M&)L zx>tevgvNyCmkAev78igv=YV!+2qy?ffDQ)~4#VNlc?cZ4d6dU5aLR;~hKq#EKC$3>Uq({7 zjHGhe&q-+&WcF2xp!mu4UMVD^R0qdNDkY^=WpI;8R8|}KN(M|4Lqo=Av1L*jf<)Gk zlpjMSR0YG+V%#$XT=j$J(KQ%$cs&Ll+=zbrwxZYGo#?iE4?6AKkG5M6q2=adXu9zv z8m>QwI%_YWcjzuO2|g$|^KgtMl;D-BT9zJG$$@)M!oM$3m7!ESG_e|P)SFTXU)-il zKncs{Emm^ijwS3hk20|aS4oE#Y0B1E_H_jgzMYQ4Z>Qkc>xnr1YAnvb7=_C(JaO&$ z5Zrn;01;36;o;*xc>1U(oLf76JdiGY(bFhZKqYZSc z+Ci_XJ@lO&pkK`ahAs{;aIFeMf|k6DW%A%3WBR^*$T)Ne$;XZ%>C71cabvx|lY+9%hWFhgqW< zz}KrG=8S2Gx#JolU_v7VPHK$BQ=1_8&t_QZcgp zN{m+$>#_>P(iK9PU9L2*v|RS_WqQSx+aIN}<*F4h7%>7yJ~LoEYZi=W`@z_M4vYf= zV6<=njDr@zc!T7(CX6{TK)P%(_;X%2M`7g=DuTaAPgdX-Gx|t_ybmleZb27?+_CD z7EAWLLC~((^xR)z{GWx zu=hr+n6VaXX062f*&*06Z!xyd55lfR3lX|_9u5T0M%Xex99=mJ$5zdRkXN@Z9n=P& z)UYX`1)&w89ic-7bRu-A@VX869li&FojEL6&@Ni`dv)eE*(!MUY#RdL+i>!VH`b2MpUgQm?0O>NM;IfE_S-EGmLg&kV8vP0`O z_GsJIflPi!bm-tj@7r>hDtdmU4MvW1!_1lWF^e$UuOVGRL(H4kh%Tuy7A>Lyw74mP zgPURb^5$5z${lOhw%|TbeKS}!vHZ^}LPdcQ(M%!Bl5tERQn7AB7(`ft_lZ9_I8ox4p z%R+2Ci!1xi6Oa*8C}{GO?$}1Uf&_Ps>fv^W(Xg>Lge@zxWN%9BVFr6gGhz`ldLm}9 zwPU{Kj>09Rq(DZK3acz{JZ=mIomhK%=Udp!ergNC*ERI6tfE5UJ9L3oCsxg*st*Ng0hsrX=Lcm00Py5%aQZ zVfLX&%sTiLGxmRl_r9-~yyq(>?D~RnJO9S$9e-ie*3THRyKgWDlz5wYwfSOo`> z`*<4L{iXne{{%c|0Aom8kD3jPmd4*@z7S}zBhP+O1M8X^2mT47Bb?lZP8`|b65{hLG3x9x#N}FJVw2P8C>=HorGo~cv|m4nH~ax*?i7eud!VF!JCu+hEpd0}KF@G) zfXIXfk2dK$niJTH)C%YxKMq|Ip1LGRbxE*l`;h=O-3{$|;m~{V5PCFb^k2S&9(`^W z8w-*4Km`_%tu*qe61yKghosmabHl%*_g*Dto%;?+(NwItbsw#_D$!!Il2m>r8m?2q zW51G1aL7duup44yOxj*%3!MDyg@$%{xHe`f8r$dK;QJ|fpV0|bt7vejRz-wr78;PN zo&Slz=5=M*zM>SnLrO4df-5GCstNsC{+KqTCj17t;nIveT=mYy%^5kkGb;=CeKYZJ zb|x>C@pT$7jedTyDX_c>u+{?DOxSKkkH!YrM{~tKnk)7@0in*oF6#F-S6~xi9Sev` zABez&PYAT!g#`^4AfRCY{2Thiw~-%wn)<-InKvf8PsaF`nevwe6Fy70G)JF{q*!)TAYfvmh1s*CP*5Pp)@^Q(iVa|A zSb``Lum_VRTt*g&kf_$%QG!?b66{Zwm0!Z7Nw!=Vik6lFvt~t+MJ7gSvJqz3NU*z( z7&=T2(j~ByqMwVEAxrczRlK1SSj*#O}3&adEo`Mzq-m>6%$s z_s)<`{$aO|FW|uMv2NX(ge_Z=xLOmegvyB%U9oRpU;g#GI*|CSg7jgF^8CsQ)fNef zmj(@uuz!Co*xT#SAOQQg)Yu2&bp?f5Fli*;2!(89rk&#-pQ zT^bx=ID7U!!o%<3>eairb?Y`FB5vZ*qbqp!>=ItRI*qq)kK@CUFZkTYkT{eG^})JkeTU=^z_+CO>E+kDh46)y1S*bBCE_X76 zDlzRpZCqPeSisWK5>{4Lu(q}q22%w^v-0t;wn*f^-Xf`dGJRO`HyKx{P$q7MQeFgQ zSu~V!Ay9q~2A@Ny;ucATKaNn*3n)`}K^Zd}%ABiE{xyUMkz#4!2&MCU`i@9VfXh<# zQ$|<)23#1wQkemz4ynOLwosb&htgs!U6giZU71sLf6$d>(8YaGf8<$Ag|g~S{B1Y| z=L_xrSy!(3>%0qz0*NI>*q@kz^C^)y8}krpMd?57?x=Tpe!K*h@_D4|5O}(Iph%pL zsrANUYV9$<)Y#Sc;76+L&(^>eqicD>%E0P}4Qx@RNE41gPEHP2ew~$KPs>Q-%C)o7 z?G-B`unlasksTY$Z(=iW1g!iMaQJB%$BB&dEX^%BZeyILf~~FXPhjtx)AvMG6h+W6 z)<UxdeB@_)n1zu4{LBr+)&2J$jo{9KF&f8|zYtl#bS$%J5G z21B_R=RXu7;#1ClM1XsY5*gnmRn1C$nHVSE6ynSJP)H6Rh9oQu;{E#}4yD(7_CT_0 z7bH7&K*D^N8aHM=ka06D9~{Vs?)QIx7LHerLQE%!ckVM5eBg)#2?$bR<+<0#|L3 z{Fr^Ad|6n+pWG+qF*;|zgNPMyAhShfaC$le>%)V$c`(nuKV?$Zg&tf}r zd)I+q&sLbzryXYXXoKmUTVPtpCYaf=5qt@=3G)QZCoB@MkRXyuOEJ?g05j(-z>Jx5 z;OjdFb7s#W^LQR+&h*Fh>Asjcbp|F*{1aoxOvI>BV`&N;iNS-1@s}VH@nZ4$i;rYN zzr*9lZ}9NpYuvl{9CvO%#f=+}Xp*^)OPB8ALilZ*IddH+Ph8EloaydY6PLk-TGz5NxRsT1s8vd!_ia@KJf&hZqdPi=2#lvMPok5jQahb6 zi!i6O4D*OUAlXw(>3Dgm7;C8YAcK7xBf#xssA9a?j-Iedtx%)1{5A7WW3hcifIE*P z!0G$K&IXI^6GHTqsuNTvmy~dyv(Q8?vW}JMV+5pZJ*g&*uI?lod(*(`OXx>a*dS_$ z(tE>cq>i9=4E@en`rbs61EjSp+h}k_MMcVnH1-|o3(e^ycS0+=oVL`qrCxO)BAsMV zbfxjqjo#})#CowGp>yhLK+#=r@?_zO&~6HmZZl}=wj{KIrd~T}>9>crei!KIcZIG& zPv{x-fu3=H=$m-(|z0?GMG3od`o*sXkzgL-cfs`VCoi{4^;*;{Nb zeT}VoFR`KEIo9Mq#p3kGn4kR+vy<*)WzKzw+SLYjPa>0V1Te0XlAwVp-FW=j1DM`h z12g(+!mqy;{5`ZWf3OaMhU#MJa6P1E31%OQRBhp=L_H_IPG=gKeOY7%W)>3imB`3f zAR|wKbV3?Kt`IEzqk>V}9_Z6l2}g5Q=##h3n5b zYG3zlqD1@JO6aq6;1Zf}D?pQ=A%J)8V}Ebnl&@m3B%gF*lWI!TZ5)jh{f|i0|3G+$ zM1!|TFnB|FjZ_0N+s*b0m%w~0x^;uHS1*3TARXai-bJh_oQVkMNw`~WJZ`&;!7Z0j zxKVvLuDcDz!>T@Xy-S4Yoe}BXo7L0coW28-0s2+iJyLs^HQFEZeh2k1C)aAs)_ z2`+loP+j*Io^drZ>hr6(_4F1Z9z@{LgGYFF{~2CI z{K7MClFJ*|(F?%!(+c9!T`=lasDv(b1Ds>ha+I~RdTp)e{5KD*(A_NG_ zfqH>~JQgf~0n3BIB5O&hF!Y}TLvL>wO`Z(napPd>YFvt$=tU z_0lCIlY)^%3P!x3V8oMx5km?_tV+RfSVM*-!G%zRP-hijvC{%Jmztn<6wrviRF^Kp zomjagv2{yg@3u5MwI!BsJzVI)vTn;bEbX=wOS&yVV9!7-=(!NET!J}sd^pdzX#=NW z^5DrB|Hn9Zd3wRq%dJg1kOU&^WIMtGdfDvdwl(Ya>R>oC0{iEmar2 zbLX#c=8#Bpu_ordm*vBkF#y7LMxyFW|mq)Ywcwm?_6D|6y<{ICN7mLMD0Ab6MK*D#Q|dJ z!}|{7`0nF4v+E2BA`j!zdia?8aC(uPHXpZ;CB}q%#Tx%t$I%A*pOmQrVoOvN=g*Gm^@6 znN*HrDc}73kUMxVay|MZhxCN(?%k2yxf3Vs#wvXy$vZIwhTt7YG+tpS(wWiM=YF3QaO&Kax6*Z7&7~! z*=}EI5;Cw`jWj;uR`;~Nj*^p*oSyKNsX>(d?`rnW@; zvGriTc@lKBBuGhFMp%X9q~vBIDK7(wxoOag zj)m+?BuZ&C7L&=tCL9%1lQOsK%kDH^&y)!kGW`llFy~V$MntEest~B-XpfWy63b)}?iOKab0Jj`D~|;5lJUav}Rf!baL~c>$ea( zuC-u)@T~e|)|Rg)mX&bbXQ2fg0b<`1HhL)42G%^Lv41QKrUQrb+$pHVs--YCC2$1T zwX-^Xj6fM(`+I%h&w6Iq;a~)V?){)7u2ksh{d5C`1&9JJ>wu+^8LUjIz}nax)<)*A zF|$NMeNrUawt-Se>!M2SqUr&E30itszs?U^SIxujrGYpQv=qkzR^W{9dYqlL5}!VO zP%pl*6fZ2*OB9JV)^a@%Z?uN^upPvw30DZWY*6~J3QAuaqxh*V-1R!ZMcNq7;>K_h zH$`=cJF1m1wB$gHlmkucr2>MWX|otww!zS{TLx|0mC&(U16{{e(05t}y{b!K;2a1; zmjy7YK3DKd<6QJ;Xv#8ZSZ9!|OQSZO+EhXc$%SMB>Cs|>gmh`LXyoEJ&go5|QZTqc zRW2>8oXfgZIsd#&NE@&6lH+sFDme#XBA{hZK+}^Lnp$N7O3I1N6MWAyLrj(_qB6}8m0^Z&>1OzvRs~Yg5?Sm=VljZ)*D>+`qx{OSYg3ZJ>$vLffM_uxvXL8wKj)A=6iwY`f5 zEpMYqvzutv;40i}T}Eq{i)d|k4s9(?p`-CJbkshA_BhDv2Z25{I4qc60|7JK;O|=l zzO!q=$G;Z51L|V(!nznAR3Ba;4dJ<>F@~&Z29J%+A=LTi|B`a0B#9+R$dMo}Ta5Uu zGQ?(<;X5HFqYTlca73k-B9bAcq(Z53g|OSllnVv_IORg}HL0LzNaW>p(79^l!uNOr z_c}xVd@E$P7eaP(K4jPDLUPRy(kn9|xik&p@TriTp9t~Uv5=e@1<9%5kQ^Th>E#(< zMX>%CWb$M|aR1Xxo?J-QPrE$-1uE_GsEAbj`!Tlf$1M^y0exb88j`;8Pz zmT>E@zy9L7&WZtl{P>aD_jpH|8cRgV-2)RcWzEQ>HLq0*=5-kAz`8*LST||}+a^t5 z@9qx!mM!7fwk_-lw(Z-)wqr-wckT>Z0;l2_1qO03T(E$5EA;n=v9BMD$fh>-_J%3x z%4Vc1S0P>5f^=m|(v>YM>B?+}D=7(bGGSy1Bz5VMOXZ`708XO{w*71g%!Bq1n0>G~2X+7IXSx0daI5mlMY5`E%%u90|Rd zGod?c7WDjPLys;&XRbdqr`nJ`tPP#T^Pv|K0=*S0ptpK8^wzC|9$l(A%dh;S)}dO2 zkfg7LOk6-#I&omi@}Kzt_<6IgvS*x(TRSY1n(~v%KdoRirE6xzp*L;XgbnLAV9lB} zSh;c~R_~Fcq~JSB3S$wxO^JYj`It9v9vS0o<=>C{juTs7U<~qg`;) zas`(!UqYYJkI>!o0nVR4hqLF-;?${Agp*t)YBpxnqw&WY*N&tsGwKY^&dwZMs#Qbv z>eb=u>IOGAxAL+&?7tstT!)jc%zok4ty_qQh~P$@YE-@zYFvL-dB)-Y!{0>}fh9|p za0m(t!or0MxsvU3=gy^@UQ8p@j;Vc&02{`$XV2jt-}?3IxyQM6>sIX8u>-sJ?8g56 zp>&T9;>gjXI6>G?inddQSa^}8y(PCH$u=Rm%}BE<+;J5eL{;dfR@t+M+nh9~?-cdz z%b%k%Qs=>7g^>#+1;{PSMQ&*>vP-jhG^mcO>0^*N?@wfvW+79Dl=2sMko#k7 zpX*Xr1UwJGh&v-N?A9<0zBw5EZ}dm6t9%jU&f%TW?m|1XI^PP-FSSDB5DBs?<-y=G zame^OBm{e-3N@}xh?Px=mCcBiO^B6Es-v2j8wT%oL!P>BpW;8LalM9Ec_p#(GGgW6 zw|E!w0aZ0VBbpJ&Uzv~m&4itVeT1-leIH&YVFZ35+}D3D+G?+Nh zv}V+$3tyhu?fiL|vekML7*? z5j0`_guF<8U0LN;reURk&LomDgXpn&NV$ZQjr&V6=DrM@_sB5soDAJw zN@1QU6bsd;kj8>NMD3n5l|PX}{z1kSDJk9{gWQ(BNYE>kqU~Q&_+FA>+g=%#9G9cl zQz@!sOPTLKpST}7a>%0O5V`P1rkp-xxqx6RhK$BS5&dcjDH^7ErRej%6w6MFvG}wh zUo2gwQY}0jRUc-{u(;-1s_=_zOH~~ zBMIaM^sD+3h#bqH2qSCuV;S{Q53ej+BDCQg1hqea^)1)oitBJ>=&|_YG9ixTiwvb9 zQfNFCL*uLj1uI4P@U$*Y)S8TtcDt~_eHE^_3`df#1J^_C(n2owg)=yqs;0%3JI$-& zdu~TumCwTNzK3vf@J4)WF#=jnj@%w>4bw7Iv!n^eN)t}jTAYQ$5qM3_xP!5!ePPq zU<6DEf&Y}{@SU;>K7X!+_q1i0JR=0-{g%MXe-S*%@E8&_7amJ}fn;t$k_NO?14$WK zNTdlSAw3gu>8Xg%q6wx*2T6sxh{;GobaDcsl9Cabn1sl<1V~F&StzP!!qQ9(8;cTH z6KpJsU}Yvj%^JR_?dFBLHM~%#_Iy~Gi(zk-4+rafINBD#)}oNa9^2vAO|wteRIDBp zk9C9Nuwh6XYPn5Zz3{9f|)ygpi_{K_h~I~Icg+y3v;n(?Ih z`a+}>THlJXc-cry+P(l&wgzBj;9zKdDT4ANeg27oefKwcFhoxFBpEZ%0O`9-Q2dxv05uO%4MBM@V{1z>a+ ze|VApFtWo;FmnV|oa@52R#Vv2Y{s>AwVK0@j&0oNJ=bQia%N}>%c@Ob?$`vDj!j`~ zQA@Z7N;!1&bdZ->h=Qy_PV1Z`bI z&O{QalxMc4%ojA|Rk&@lUgATH8NAmw!nP1i~`TLug9Z zD{7)D?_!aX^TXy(<}X8zJ>k_Wy@s%Hx%YN&?tFz%{1N;;kn&{#WKtfa&b*5@#!kQ2 zTu48kZ9VG(OMh65C*@(v>iTre`PdWi2@Pu$VEi&C!N`#D zd#swu@|##zTm&Oi6BwD0&17Nbbfjaf^eIej^_rmlj!?i#c-T0w0vTIwwpl8Fe+l_F6h ziDXIw6E+E1z_(;lFfvKm$bjN|Iw=`xC{-k*M3KaS@rFcQj#bGrd4j7&!s7h6_-BcX zuivF=*@iBwxT};3kRgvRNvi-0pkNEtY^$6dt4`nvsPe+dDxJ&*VTsxcghf=*$x^lm zM?FwVgdSAvg+y9`0Mn0zO&Ttx3;2^+_gSkhJ*FZefd6Ga07Riw5#TOCbuxq=uzC!# z%Ds?QI2rsU2tD9^4OQLe36ytRb^Q!-_4Nw_P1OT-vMp&UcG^nVGmXWblw&6gQZN`S zp;49KYy~|HJAys*3ET#aNFcELT^aVhF2$i&B{=go55=ebNh&W!!KFatUtf&8+rh}a zw;TtPb|Nf(Hx9;!A~beCGMIB;avKGbJJ3|$MTF#TG}SNv42wFqVdZ`oSy9<2OUy<| zJhjABzB=icsh5fwI?0%+lZcu4!kawymPQ=xEcCHrUTrK3tc|5JYNB>^GdS6q!o|T9 z)f~;>;#39ItD2*Rvju8avxJd>PI(?pmD!t;B}NiiXGxjjN(&9YTESpD9%|Qn&N+^A zKL@|_CF5NL0gZE<}w|$MaoX4K8Q44L2@cGAfWr$P;r{bDy!jN5mmlNs z>Rl|JzyFSB@1pVKO%xuzib7sN5ky&=x8n5r^Jq|OCC<0=#2UK;ME5?X+J%!ncoOZm zx}o!V9^H?-q32OI^d|J(R~;jcHiT$Kco8OhHbKJQb1`c70t{U3gKsydBjnl|q_ypb zrK2^lysst}575HGVcM8CTnDrN(8bI#LYV3S*=cC}^$z+Mj==Cm1Por@gXyDdC_Qx? zt>2&LLRDjn6iCSD5uc|Z1yljPz7svhD+Y}rcdY{*(&OdEW~AF!g4zk=_-m(hJ8?C-E$#Smu;OhE1`-pU}3Bz0G6g?j1a6%HDE)q zH|FssO#>@u-ofj1jS6n(bP2)7%CPcKDc0;S!G?WB*s`M-JGK{L_vQlZ+mMg24S6`a zIu|EaXnkrN1iLge*O58geTkaBwfdTg45J|UBkaIHILo({stK4UO_VSh{x z@Wl8zBj7c2EJjYBfT2?-!DFH~{eA{S597AN=<|Eno(zT6<6E$K76FHQmtk-u41@0N zM`}_gV&Za9TCEmjbsC_cMg!zms|_iaS%;p&N&9vvsZp1Ugp}(WlNsX-)Tx7lDpq)H zR+D$ZFC+a?*9d=hF@|qXVs|}5NX1NtB!Tjlx+x>|?s%yaqD>s|O;iO3j9WrpuP)Mb z%{V23?Rqo8dh6X=y!iYA#p%&PsWBp;bL$!oKgq&{&tlw8)56Up4V*di5ldh4%j0r! z3H_QJx+L$~RCk7bVHPw+8gvOl4_3Vc4ObCYI_i3k5pLv~5aWpP=|c*(J}*O|Tm*5M z1O~EPBs{x~_~dRS!xyzPGcc+1Z9> zX&YlW+L+L+Ot3eBv!e+d>G*C`4cz+bf}4?UxF6q8*zJ?>;mQZs@5YhMJ8*LQR-E0v z3E}(K;cD1w+&a1p5vM}%=2Iw6fAw}e|3;0Xvm7<>vu1@{5-xnPsmsi%oJ z`6Q7uEF@eOSCxaK;7Y>?FpgAmY4dsKjoNhQ>(QNO#zazf2@84;f|2l?`iw!D;pvI_F8m6+95i5`BP!;1kRwZ3Y#wir4n=BW4 z%*_kzL)J|bLv5In;%G*#nV}A>jCB$IDusi!nI0^S^+-zV!pcOCB(@$;fXxdm&F}1k zuQ6-?OHAAQ0@HRrgU`0d@Z0(KALV>klFj%k>`HyyMGX;i^q8B8&VHF_KQjZZ zre~n})O0kOn1*`e($G5~6SZnZLll``1M}0DV{776>`0o7-3b%;892@pM`MTKWb7cE z{oWtpF}-m)raNxLbjI!I_BfO<5|_~zqFS0?5Ny5>ldX1QoYfwTw%W&Sl?<~vhJiLG z(a-iQdXdW4&F(Tf+uuMt`#Wgua36nIA3=Xs$1^v}78|@xaW>c-mzG=bDlYRwA})Kl z#S+i9TjJF&E4&Z2#^(dph&*hA@5gO%ccT?Pe5m&GZXe4`r{El${=-n+A9wrgEj6KO z>j)=n&HqeSW&~KIb!KKJx9fM7tdq!t;kdf?>kpCEv7D<>Y)mxgZp6S5SbH`D>(6Il zV|WfWU&@2u786vXFGoi^b6r&BS7yi6x->%7R!vZ~Su@xZYzZ7A4eDUeVPHEu45XI1 zlQ=jyaBd^aWu#`!np~^9d?WPMuYtjaWiVd7xI#b_-GV}r%K1eM617iqQBe_>(V3O+ zX2ByAWw=XZWYQes>vFS9!?)IO0^rA6el`E_a*|p2hWm$wcnj)!Dwwclx>29pPkd!H#p_;O_xf zNsA*;CR3j*6S5Df2*`hQ8{lrBkRDG}uDwLU=NdQA*MuR#NMB2R_f=r`fP;-4L^k%& zv~%DhZMhzll*q6$>=TyleTPLm-@SCtkVr#i#m%5Yv1Z(%XzemwR2%>rpTCe>M<9o({o?=OZxw^>{QR zVeLK^XgvaGONv+9K>{bT04Od9s>cEZ^bCN1ACk&_{NU5i2i^m`F?rBrj2|)%UVnJO zbL4Og88ZYPV?Bhjd)!JeP31*NTp(0JVFKa`NGcOz3upx9e@9Fn3xbM4RBjX^bH5=n zC$d7_KC&ORwUp4<V`(hqk5^x^%29k`ScO){yeYnqvBnguWvYS}9*0Nlwbv;wEzJ zX)i-)2PqDAkl|1#366D<;#5}&&UKgIVh;(f_LSgeZwVs$O7O6s1jp&~)UbcpBKc`& z??2t`Q|Ae-gx~D;X?8h*ZRfoaxNiyO?_Li7oh#tGeKmZxtjDyCn=p0#HcVPeB7ZfB z{1y8!a@ipa4?YUtZR_FW#Qan<%uraWi@ah3QuFkYTSRSp*jhPl~s%XKMU}sLP1+|viaInyZqm>SvY;;i7S_jSqw${$C z;t+wQ{;#pj_cd0{e1Ub-Utp8ZQ*85nj9qgcB6Qw899Vc4hZfzzvBkG=GWa^qEWe3! zD+C2&>mpO!c-R$zYn?G^kt-&JRLA&WS474P#kq-DI6E$zj>n<*^m^zur3u=5HNeQ= z7T7na0D=2^KxA%egr3n6ST?ma0>(5%hX%Ij(9jVzT+A`Ji6MqG)a8zQw{SxDmbO?w zqZy9sKf;8wYhh(&2vJ0IDel^KgT{%IaEp6^(F5F&nkwdZFh0ZpAEUYBglr|IYDc5t zqm$5>y9{CHBC#gqInM{lskvB^)es5t>X0v6iUr~cY)B@J<7d3$QZ5^TpvNJlYZpA+cLR=94`9Tk z%V^nQ884M>EOc;ePfs|X-Gu!82Qab9)Cx0^gcCSzJDq^#-3YjAq~U${hiK^T%&WRy zqibN)fZ8Zqy#OCOjz(}vOPCwUxos4UIt~O|Zhmm8We%^gXYr^`dsyw;2k%!)FnxS` zh*C4Nv9re%^h>CVels2*^yEkEJ@y74zNTaKvplSMl8-lEvT*9+U7Wf81ic4tgN^%2 z9QIm^Z;xI=v|>UhOuw@qcXo|I&gV(UAMb-=4_`E_Ym50_&k^AD8V&2)ptQ#Z6p!4D z!t8B`c^85S-Rj`vtF8R9aM-OtD3cf#K*K8l8nZ~wCHMi;eW2mv4b7Oz&{{eU+B3bN z^KCeEo)5vsunPXl83sy()C5B)+OH4~xQ5`=PL)&)wf;SY4-x`_O=X;qTr>&lvf_?QQsA)-;qfues z*|JcEZQ6Edp<_pngwDyKj1p$8yo zb_69gPoik~85BUAKOo5eGw*g@LP~ZS zK|+u*tWAgPG$Az=S`TRgegrP0UlBpt>Csp|d_OXhgXGH>z6Z>Nv(Oa5?9&HWl3vI= zaoWIu1=O!vCb(kT!-32~hqtd$Ra*;Ht5&US_DSjFoYzkw{qR=3C@)V*CcQXOt)+?I zzCwD$b%>um;?7~pncD2rZr=%J-FiX0V^^r&Q`JCMDV`cG$f}_KyvsXpPhv<&z>ESgzbmq0Le{u?R$1Zdh!^I2KFJ5wrvmO z40n+p5==Ehj6ANjklFJt%Id%w=BVi~D-2-u0C?x04peQjNBCS!w zAZp$Mnw`2pt9wsqcI^gHcbfA$bmSHrm|L-^LuY9A8wkw-1ED=^I5Y>-Io*4cu0)Tq zXzgZb_U;QU&ry)sSVMa>368N7pgncEK!B95*>j;ieI~SL_(5!_3tf7xGhq_)?pKH+ zDZ6wIxwo#N)plBNTuA1^LI1Ts0g60|V6eXp8#Y+M{mAj;P(aGitIZ5=Q0! znSKAy?EAlO_T4Al=;fil_;_j%qAw0Z%FR*e*rf})_v(c{0|&xm$Pf%3F#?|B$8!nA z8S0`u!TA3MCr?4aP?w+-GL8JQtWJdxjPjf?Y>|Ei^AIJY>nNRklG-z*NSu^n{}2gw z50#*hRZ&%Wh`uDeC0wNMrv8iBck#Rgmo7@U_QbLOf!XItzh2cr0w)JC#*X?ovu_^V z?59%nzac@NYch1dB0;B1612T0!L!a1yzC)GQ@Vt@r=_TIQUaIbQdB)AL&r-pICTRm zm(`K;Wp%h#rm8S3R#zJ4a%HHC{|U*3)aBY$WpxZIM3E3!?h8KuMKx46tqxZcH@KO) z@p&*50s$@{YX1?O+iy|c)Rp1J_LQh z=ODo|E_Zz{a<>w8687aHJ1iU7$Fq@nIuq$<(~%yYj?^ouNWPJb#9N7ozY~wxh*(73 zi9+P9Nd76XHRFm|JNflve(jj8Ay-Tqz;Y)tsmelWlww83WItFr0Md zYosgRB3=0&>BGt>kgB6Re*B*au&`X*zRh)2IcN}+ zLx(^)><=hu22#?Lrt}&GB`b`}V*PgShH~dlD7S6nN-mhSV^uIhL-}NLj~~-XbfTvx zlq1=RUQmu110_vqO48Q2leQ4UZQKauh7G`h15mK)iRzRtG=<^ulb^fFK4W!{e_OYY zDNyVeSWlRpz}};0u3WT;zdZGnR-VZdDgtVMWnEoh=PrO|Y0!xp^X5T=)ZG8x^`352 z(dNx4IDh{4{>rSn&U*rD*;{`L?Z*nO>N_gDCA<{CnZ7QhTyUVSS0e?(g&u7UQZQUe z!Kg_JMom&M>eADwOHZaQJ>CYSU^FHLqoksOAt41rOoK#13Wk_Cur!{J>no+FQ$`9# z2`LyQq+pbif>A;WhFleKU7JRjeQ*e>?F&V<1N-58C=4#gj-vXB5}6rFq%))w(v(Oeq^2s7 zoI;>BiM7epCb92O|1)VU=-aa`Qzgj(9wz^Xx%YsI>gwLOe={H=2ndKMMa15FOH87% z#cpiTBpNlwf{KbYwqOm$-h1zg1-ntB#@=G=9T6)Qq==NM-@fWo*KNoQ>xvP)wh#qZ7o<*99UAm#fUR<%jbOOi!c=n$ z!Ek#oOf`=X3@;%Vox3&ibjQv4Q(Gjqq5KY4Hb0Q}Y{odNaAixhkg90zCfZ{A5^OcD4WHu5Ds#27 zQ#(V=$fAEHLsrr`RU#<|zmxv(LuzZW+0YD`d@$}=7D;9YmiNkZe^5>JBbzf8+Zia=uKc=E_cE)__xsgUKe|ct39kInC=z{u zyc;NEKtYfS2mL3w@<*levnW}p_mG@?Kxl(V<;3H}zWl^cE*URBDhLo1R9ay;NDgC0mvcf%$ym)<{!!u|_6qjfuv<~Sb2~8AW2TBJ9y6HcIgMGKlbPi`i5XrKnBqN# zNqI*z!Dj?x^ABaT-#~^3^kYb1Z^fSp{r#sG=;6?x?)rZ8(D$d8K8z6EAo}Wt5UTr? z0lJY4)Qx6{E}UVyag1Ohqpgz|r<+Fftxf1%DptZecf4qB(&MlmLf?LdA+jom{eZQf zEb)D0x$oH$>n}}&-ZjM9sVXBI@uOdg=rfQU}R`doUA zNt20{VGCEyuxYDGo37bTjM`^PZYQhV0HI_k=8$|LB0(NYiWWwYE`ub)oUOH}&}CTE ze7YLRuo)l{Z=Zyr!o+3@3z@Y+sLW=p3$_U-+KF|!P@h!?u&z6db<;5sc|tU{okbTV z>-GGdyxy?@y-)sHOfroU^?3y2%tHt_4`j5tKO@Y28DdD^O#3Tk9e5) zkOzqmh)sAvOkxc8U*9J>KAL;4L@K`$sr*u;@{8MQs$ezVS$S$Ya#GiOIm_xUV`aUS ztgXM6^$pjv^~=8OsNJ7kO?R=c`CbmSJjCCv{^n$xlWh8C6EUk}6po~o)p?kpBi-PL zqb>^zu3lyKrGIfy|97;tS^qohoi(>IWxOaJ!wb&8o0X-Ut_l@o4g07sj$Q3j!f6y= zRK+0IwR+YU9>>Mu?C6SUtAipm`O1!gA z-mD_2w$GK;kdiDDEKvgIk|l92 zU4~qxN}UWX@en z;;i6|f~!fKzLLZ#1)>72JtU<@SRVZVGP1q;UUnDu3*}jecxMDXNumRiFJgH9Tol)04)vylDER z7cB%WYkTu;9dBCK%}d*Q`S`AWKE7|@LxUQ5SUIXV`Vuvd;Z<-S-oAVB_S%h)_YQo$ zw~;?@B>D4g#Lssf{`prEP+%2-ek&;Gzm$Rj%PADNnD4$lDiiVN!%P|KC@atw7I={W~gT_tD6SchuM~@B^&A$uPss(5rIE|P@J|7*Ujyv<(E082v z;YY{Uq{t6n3ompKd1+F&i+}p5CJv5Ph74PWudh2znv~Z%sJw9!!{%J%_O)m1zm>+$ zdnPW-oJ!ki&ncQO2gdYtIb8?Q-kgcL@DE8vPqKT@PJ)Adv<^ZpzmQ+bC1f>&!%uT? z@JUYjMR#6_b{@JmR;>h(Au{vjt7K~CdqKw%#i&*;huo9rS_cZ|oKN`E3apZL9N& z6{A?Q=2tdu9L$z2{fUYSWzU`g95^tD!-t1*{P+k?pB}~e^Wj{)IF`$oCvffBM6Cmd zoCi^A3U1$0V=Ht9Ti7O#4ZDtTfQD0O;nM?Vq5ER3wu8z`3q#e|fVOOT~ah*?Aj z4HG(83I9olZ{82>$^m})=+!R=Jq9@Ob68G(8Yb*JPO+sqYQpqcl9i{zc^)OAI=aKV zCNIU=JNku&doOHt`_zqVo7=s~9xSTFFIhkCtDL>$o|@S=-B!0xI}pv$-TVnhXN#@q zpD8O)C{y`1+cG?7h97;xxz}jQD*mU1LR)Mdm^BxBd-&1EO@H!c@&# zum9}~?B7$1Sg27XN>v=&f%a4UI464V49xZv4yhJ3NH(9lC|Mp>WHe)UN6zl2>>vor zt3Xe%wA%5?B{*A{H6@*SlhRl`HkH+*Q@C{}M%~O-vJu%gu`gb^$>E`|IXvtYM~A=U z_y}7-l=*}!<{NI9?|EQ;>WTTaHx($7Mqy7(8M2ejYP~cFkwapW95v)<&3lK_QCUb zD{-QD#tDIb_R7k$mu5b{yM}tPYk2a^#KSlXvCjlgEyO&vU<<6XIrEsUwh~KOqp?=% z1nz&GK<@UR(KU8j)(EuKIai*7rgRywgKgxJZE0qpTw7HYnf8 zOe&+APfS_WPL!Qr2c3zp3N)vrdjh@lzlFcy~cI6XgV8G-dLG5$D19yuaTId zjXp!ROEBBdK>5dLvBmb;PG8aL-oDMi&+{nFKU>84^D&};@F0= ztzb(;z)TuH*o(tv9h*dB&wh591zqfCp!~W>F?>Y*&F3YpH{|oyv$FgGelM_7mNIAj z^63ch)e-2cCosP@lrt}3Q12WJ3w2_+$hwh(b23`w-Kded7(LpBF=JgBJJFR1lX4R= z#f{&mx$(zLcm9~=uAPBW&(+>7V+BHi^lw_F1E*gxFio)hwvmM8wo7o5U!5-`poGmBXR>75XSS8$G}?+_zGIAY z{Dd(syWQ}ejce0;#<-ME7~}kujcZri#&zx>6~VdRGsYFZThC&^H$w>hCX|q-A#`uiovy9A(6Mbt zI(*ljHb1nXMW+_pJy7yQ*Lo30%9Je}-}pPeIo2_-{1*(Z(3wspJCPznBsw9MdoQ!O z-oI~G*2_@-QU+6*{i*B-zsbd`6Udiq9F@EyS@>mF7T2CYgP{84$?31Y|8 zv!HRB5%VPjix(*aM;Z4o1*6EJ?@qAWNXAtez?@n$)EoJMU0KPm{F@A@(oGF??qU$} zuFOKEcI5~eP;-cVGlnr2X3*zEKREH8UHQHYs3Exwd_Bg%521Q|@|KjFHG_vKQ<-@2 z3QhJ-qxOz2EW5gq2T2dIjYRqNBhty-KocXE7v!s&6L^t2m2)q;()!QYG~D$I%df8H z&g+ZPVKPPsWs}Ng7FPDt4tRQVwb^HkoIQ(|mi`Psdw||2rZMsSB#}PJ1i9xY*xR;6 z;*rg+tUSg>xuEIf2nIQfCx2*pDs-#LjLDPOy(p3cOJpd|lc7BOBSSgDHk3t4;ibs< zm!X0cvdr%ih{Sy+c=D%+Ns+{{$00@}^xc01m*M7BxGoC+&GWY1J{OV5Dnu%~id1$P zJeb@A!f*=>#iMs`@^tTxXO}MIwdGgN*QO1=Em~+5= zmc{g5er2OAzcQH&#U_>Ql3De|QYsvD`x&cZ{t?Em(`QRcnY|W?`WS5$qLgJ>C!8>s zTu!dOeX+*K+TffEhuO1nojD7~oH;-AM^Y~!+fX(u&hARN6ghS4<;z%=g+}O}H7ZIi zy_Z=jB-5^J8_HyEkz|mh>~0@EtQA3%OR$Q<@n+jL3`t2JmQzt@<9oG8oIE_RmM^cp z_xDk(xpI*sckZkm5arjipMhN}+k4IsJ<0g%ucY+sLBhOwSOyLxMREAGZCqPy8`qk9 zq4E&qmvy!ZQECaw{P{)cmJa3A9h7=hFJ9m%ZH~f)amZGJ(qtb8FGVW95UH$`po|l# z{6ucpV_ONzSh*Jujvpub^l75cpC{T@g7U7Y#>%FL{^_vsYzf~$i5m0RTcRF^ihWIm zA`z_rGK3dl5!7%U#AkHlOF9dFWKy>kd`&CrQCt504E=-~E_C~*Fi+OE;@gP>Xc`_u z^vVYOx?~W^^_w%~w{I9Yu^l1dZ8>paBH^KRS-&fsPJ=_$QJ^1pXcVS1r*K?0hnz?E z20Gp3y>)M4G z{Y#C^2y>LWLD*98ffIHtdEJ=o1=r1dY zK$`sRpWmHf-9J}DxU=*|v??cF9=Z7QL^Ste0s8VIV>1AoxU9h@n!W6teZZO^)tq>b$&Qe3r4bg$x!}UGn6J@ ze@27Oix}{8Jx*-ugR-*d3F-iz3c3h-fLm|K*%urJ$QK3*ls)L7f?owAxO)V()&Blf zv1}U{`+F@F;S*{xI-(XMCf8=z)Y=T5QilPP>d|*XLwb#E#4o=!q05M7{5Z4)?FY58 zoq<8i!gK#|8qts5$~{QqZtPp`#JrV}_m-RYQ@C;e4cDXJaP`g`F5gM!@~vc&Q%u@D zh?rTCb`A5>vt0lo?E?wv5J2A!f%NNGkbyrHWN?=thW=cLU%Lh~vS%>iAw?J$T7&_e z3ew=muh4h-){pYVb5pathl)xi+|^(FqEa4e3BIh7hdNdBaOGaIeC|$znw~WL%u7D^ zU|iqA?|MY3?&nU>s-CaZ=yK~?2ZI8Kh`wgcqC35m&0_UzJQmw2zN6*J|_*^`Hoqffj)2}F3 z%!OnBB(VR)OZFXqseV3U<{k8-Lr<`1(<8<$xJUThdyJlaM|i?rhD^Q9pg(TXKjIdB zC*Gv@gj@6wcKS>BHGUp_jghnNa&mi=HkllRbq5FJA~-M?g#%qEDkv7@O7TLuDN)Fk zl7(FDS{b-If6x^S}h}kRiv?jw`}4K zTS;O&3G5=C$d9Of3Y5QxkH9i?DAqxP(f8|zV@L=&glISk(a0%8!&!*N$NiNRXEs@# zhg9srpw=M_sMMQ2-}S?C^%|BdSFp&UV!3olt~~kE{>nyaC$H|qH0LB{F8hT!&Px81 zPx>p%ffFZ!;yR|3o!+=f^MsT46dyh7l*w3yCs__2!g}%~)^q2u%JODaBJciF0SDEw zZ^{()V5=|`%cpkxK6(5QBzJdY@Je=?o1bF2nAWu#TN}FX* zlrtDR<2n;3U*V64OH7?`iCJSVFn8oR7XEscB|}cLGVBCv1{`C3pTF7M=O|nH9$|aG z!`fWP@z5QIr+LWnIxjg=@}o=5FQP6$qvbigX@6N$0_11!=b2K&EU_B&spa@?H^Oi_HLMFE^J3 zHQj~Mfl5+sU(S#>Ghs^sm#(IKvyi5?Ry7S=nk^Na`V?GK;>c-AC6_TpgW(O%8Ob;s zlI3+0xiXS)5x6RCdZM%ml+e{eM zHbtgyiqe{mypijEYcXkg_w8z*M)$Ky&}KPwX4p!!+jz3Q;;NnM+ASD5H9|z;%fglY zWPtbuqW4!2ghPO!U?KDc3*%U*C=P{+zUw9WdggNC=L%O|C|r4IBylUFh+DUZCz}rN zc-vtf?L5wdJ*Ro_=Xo9+x=8fV%iKR^bMkzF>IuPX)ExARHmkPTU#Db4qU}B9`!DP= zF;Jwif&h`o{-X8;iP{$=YG073eMLm51dB8-D$=-^NaK!fvxYUeQGpO zMftLiNMJva$^}F!`-xQckBr1$ln(!0yYSz?kAOpm2t4{Xfg+U)ic}5~sq80Gx&D8Y z%Kr`jRVx1%WJ%@L4utLvrTMz%G+Et*1}p1RXIUL;EvZF~MK!3hpbF*Zm8bOV(iEFn zjNs|P6r5U++DpIE%IYX8xSIDwvD&GwgT{B<2s4Dat8J!r&t}oH*SOA%B2j9QxEH|B z&7T1G00KP%3Cv@2^7ITM*fX1xXWr~(b(AQQNy}L?aSa>8H?n1PBvHeo*fV$!2L>GA zut?wIA;&r0=QQU-&vP;CBA3H1b8WC~D97AzAm$>($lo#dAUa0y1n$Oza4&9Wz;(H2 zSLMr>1^)^ZUFEFcw0Z^!X1u0EsPOz_BHok7;}tOm?+L$=ckBrAh7ZMe#2|c!^(X(J zJ{0KRgMi*Y6WHS?TcoXnHV#a2&oDoGis|VSOi#2JKGP!^)(>MbJd|PmAO^z&8P+j^ z`}eZK($pNmw*3)Rp|)w}njczr*O@GVq8@C@7Hw=veTz9I8M6{ClAMGkIT3SG66Qo{ z6B49-ElAK_C%ncau*mn+OUM)29p^7tq7C_iywQ8jTu9D3_2msYpjBI3TH6o!5tj~~aQVJ7E*-n# z`qMACcIkoZ&%Ma~OK)7i`;q)7F1<^(`NU4=2lK!-f8L3t`Cli|`yKtiQ|v4~J)N|) zG%c1hH6=5?Gg-)Fk~|HiFmQrAf!D8J6CbZ-GE$(Pf$LIN+~&LCvCsq0g`RlN^_B%R zUA?|{;xkQ1-_=uxJac$+pm%?dCw$e4zcZ zR{Z(DoPpWaL8h0evhk)?#584Q7Wnwqxh3mhb(7MV)q&CGi>!s{8PsGcAMHdv*cL@% zPag2G*uGER1C#9@DBrQzg=%`X*gjV+wok9qe>jx&j_C3g78FJ2Q&hFDXqO6x?uiuDi*4! zx=$!0Q3=IU;8(gj1|@NTQf2z)P12>~)T>v8_WT4<7xJmtdftaE=X{7f=PM|{#xwcZ zaJm5NPy4g>Q~+zw1hMKwK~|p%X61>(lq)Cl;NfcM(FD3Tw$e-5kfzY5nU&BMR{FQJ z64uHp>Ys(7Z7mFMXJKRq3!}fcFiw8>pMO3P+h=d5ueCC5?WYCGJE3`*2P<_=c3b&% zp<=nR;w`+n-z+Qhwtd*a2Wju@9O2tq@}UsxzTa7C(L&p6?pW^=1mk1H&Ndy33P7Ag2@U0b>999+%lCx>^p;Z2Ocw#mT`B{VVTBrNO zO$@4UVbW$Rzi)=|>#dAg2czZDj#vr5F4r++sg8k5bPQOequ)Xuedp^5nX9A6Y^YaH zO%ZLPeYFR)uM$m%YWMh|+8x17I#$0yryAGjRQ)oYt6!o^jeqG{<03!Tyg;{_=jm4C ztP+fdzUbp(C@2|MiqbF2Q2JFl%D=8e#n)A+{JI)dUw*a@F@Yu8ogH z!F&W653y!E5H;oj*7O*`eJttGB9#@0R8AAAoO)X^$lLav^Hsx|t2E@QByD9ZE|sym zRON1JV>Vvv%lfPRxc#<;yjK&e>*s>=#RH;y;d8h+ZPE8?fe;EDt_M`Xi z5PIzF!Gf4!T=kkJn8KU~18BRsEv+`TqQ&|aG+oz}?mN2^SU)gJD%&Nq(cYSjS&NNr zx7)t(C_>nrJ>ptfRPws!#mB`5A6Fmpxyq`X+gC+?xBL`vQ#iCA{vLK79q?|%^_Uf7 z7{6>h5sM?3GJgs)=FDKuj5#crwtyv5masfxIjbhDV%^wvY#g(ZNa534M{m`n@=d>K z%*Y=pl64lVZnR^={WkFDSjMM@QTxRdA;jZF_=O8u9t1Z-!O=rVbsvcBDd>uR!nxe^ z2&qBZ^B%O?8bRGDeRzGhD+70r;-`^~ICS(Uu3hiTpMQ5^(LpaZFP+AcJ!Sd(q^Vx{1-&#@FLLPkzkbQLOKDpQGs9B$OB7CLIjMfe zNSfgd{~jn$=T2kL2PEF(wbg}^)r#O$q9~6tobmR^fhiyum)tpNP%n^>Ze=M{e;qY^ zddf^SP=pW)ez}`P%SNDYI`#$I4nAZ0yo*d;6U#bTZI-XSN%+KboWGGw)UNwXn{$zC z+rOjarYSTCF;jEXY&oOm^z8N<`kwtO)4WL`8rCaF>y||rI-oKQ>IU*t$C88(t45P= z3eqp6JZ--%ipQX`#0<4kbe1ze{aBJY3r3+|H0uPBQTN!f=RRvU-eOF|S$6Ec&%(u5 z7#4ntE!*!gY1%)m-f)xaw_Z>vB8}vfG?pyCMrep!LZ|LkY2B(HU^+LaGH+|SK~8*I71g;Q~7xSw>7 zGjXRm_xvo^6RvaV`9)UUT*bey{$*42rVlL`jRP7{*e#ga0bfzvqY!~2!m8%0Oa<=> z6mk!wY~E6IDbb12c}mefxLuY7!(JG8=8Ty<*c!vC8LL=1V+SUKR zD-1kK{{15xA_O9c87mkq7%musJ?IpajCkDyodjKZPwlI13y7*Wm;v={0a1-Y=-#9| zU7K~GV{=apu|g!#J}cjN7;#tCAPO$r0=7l^+t(_lNQa#yBN;fD*bd zlg-+->xZ_3OsYF+64tmltVfT+?K_(DhUiLa+n}LL^-@?x23U9P!YV3`b>~jFbP21l zOw-Ec(t#q4CQQ(FbQIr{@#C?I1X7a*bm^?M-+hNwq?GmBZ?TG$vNmt7evi@NHoJ0q zh8h`a6;+@71ynCN8Pn(#`1@;6YWNi_h?+z|fIUalN5fSAPj&k$EW%CTA@CIBkx8Q1 zjJ>4w4V*y%-zoTeMi7{5JV6fO1T#|B#vy_*K_BfY{4u35r z3?KhBLn7)EHl-n<(;L%!MiaVEX+f7s-(qtg(4_LS_%xozYdJF&+p_ZBqvvml6+DPb z5xn94vt;f)O(t4kGTGe+6!V5+QnqN@BbuE+Q@{+{&YV+cYT0E~&o#$1m5LdB0uUa(cg5r8p zSnjs_#NY8;wHnWL>+ssNS#|XE+OZR_J$v!~^B~@bkC6A+aePjn!ABltzKfUemd`87 zN~U)Rn91lBm*_hA6rFxQp=o0V?Gl=eI838qhp0dJAa%kH@I}8r`7CrF)qC%yP52R! znLSV|18F4z%$cQhRO7qVYP)%M*uP`8-9&6pL2)ZplG1wS!q?MTeTv*FZIjB=Mg0CTQ6RiHVuosrD=Kn8vGB#lP9P>`64B9yAHsz0{borPuPBFk;xpGC;k4tKrLnVKl(tcDbTYrEj9ifJj-$F?Qr|`|aRj9GQ z2A}Qyj4$_oN$uUW)$|@gqU{9>xhNtsH)R9lQC#o8>nkEWU?gW+3fc~5oDAi`bw3hu z-J}b>TX$q%NPE(Iv>~u$3yQat4kAy&l5JLQUVlt=w@3Wq^$<^skc*^jsls1J<6({_ z%<8HWHPvlgTU1MD8-0=Go?#;Lpiz1@apRVOR-Q&C`pJQU4$|4R>jr)qXJGCo18?3M z)QSL^9cVRaj4H0*GctOfk(h@Din|#o>24q<)<9^4k@MFKT3%T-U7#uZ8JN^J6klck zdLE1Jx@VSu@@sbkC^fK`>`O15Y;-Bf1*t{)2&J2O}fy$hAK<5N}kF!FaixkQ)YG z>J1F*ZD84GBL(u>hH@zn7}U{3wHgIDl~{oB&-{rt+fur?*>c9^3F4lm5QCl+=0HMG z>NP0JykBh{T-XNj_m<!8-*Xs@I*wl5IUkcG$ zD;O?n-!M`81`DAYAZlNz5ULPS`??G1>MCkqN0G`M+S|BtixycoF|SDAA4Kh|CyV7P zAs0$KS8Qxn-3hJQe6$+hb^DH1asHjhXm=;7D;OakY--e$$jC^xZ{N-?;fMS7?c?B~ zgK8>BB_-t9vuD}5bt^ZOyt;0iaYI5?}+|ogl zMp%3I{Pe+Ow<~MYQSIbFQ5mvbocN~DcIxh~%U3(U;`6A_skW^em9|!<{Fd^R-dvjE z8%xk=ZzC%GR7vaLm6M6Z?F+EAT@hOfL_hpp{PB0yG8GlfU64X<1#M{%gDLDDtQq4J zo2o(+@;_Nl-!p4iE}VJw($%bAxSq%bS{lUNGj_9o`hE^hImFS3qa6SJIHx9_;>@@+ z+CAv2q<>v2m@QZ+SpJqbtKaZu{Tq@tCy}r%frOn2#P5#h<^GpEKk%Gq2cGfd&=X=0 zJkp+mlCf4nu3WiPC>d>CTwK-cw)Q-7_7XeU%j;M^R#qqT_2Iv;jva?}^k^(H8vjq} z4`rNcd=0mE$_Vgxe(9~)V}P$u2Ow(Z>%j_s%F1;(%*>?v5L}_ zeJE>l;bU7QN~StRy;C9x%9PP&>cD{?+{BNT)lvUbHl{^a)Gc0&Zp8|8KmV-ez4&BV z9c@E8UM;T^_aaUWkbe5~DUSt@g!aB$UPlvg3e*miU}*c^vXT-xC{QL$a4hPih?%sqQ! z`K2cjatZ1GUcr3nDx-V$B)v&X((5%Q{j2($PxXX$11DtvV8wm@U!X^wQ>5 z>bKea*3=MGQNVQe$os^bM{pcB5{DJ@aa_F^#|_KSZC=5g#WQg%U0l}x;*4Lr0H>3G z;(Y!v&X@is=jG$%+_izk?K9AqSuNW6g%Nyv>^qtrZB3&i&8dI51wURJ!t{VEO!K=$ ztIK^UzvpvG?XFDmo#iRIvn)*yx1!y+FuOmJkwVS|RRlX1qOfxS`JCN}DdWNI3LfNl z$wNukLX^v0nzC*(pxjGq0mAm0Gz&K_Wa+x4tdd8wZuvSkFW$`dg|e{D-NpWy`#Ch@ z5J#pR<>(|?Tt&M*Gw}@P#-D@S(m~QJNLnOVCRhUrn*>5I;)O)K6oT0M zAw${gea|>0AWD&W78%NBnRS-u53uHn0r&e@9z|mof?>7=M44=!aarz#HiBWbhpFn! zI5snoL#SVlPDUI%h(vPC$nsl!U+u#d5M_@P(w8)dW+K0ERw(Uhd0p6mL#eETE!jKJ zR_AOv<7D*de57@dFU85QRmw#uRS*J)9y+kUf$bpaF zy@br5u9F zi;N{1q|cG}lkC6zDJReD0a2p%>%9Z9#t0q-q4x~JLDYY}sC|y2_Bj;I<^Xd*jKAcm z{F5leB4N!MUT)mTi!G77h>9X^&mQ3c2Y4#P>&fxsJUo4xhobg96tyo#)V>Fz_Nm#4 z3b-91Fy~(c35p1cIs8Ql4pK^pavAnfPKa>@c2I?_RAZB11D~-*u!0%_ZNG7PaTVcH zi!*9^F^115!O*EC7&N&g{eLe_@9|~n8D5@lBP-E)SS5ZKTvb@R5(ujr<5F<88hHKu z4X>Uj6Canvt7nP4e450I$BD!}N#yyX*Tg+a;Mv31JdJ(LlLxQJVN!(QEA+=Rn$z*g zQU=`rov`Q$47@v*A$P|x^!5nGyq(JgLHLa@#^31A#A_k^akV?suXJPh?cpq72i%)ZO-y#uUI-2Sw+W^YZ+2x8beT0zTr-?F(+<$ zJ#h08c)1FMV0sI=%q!$FpF4T-dEn)nN8o{XfH!#qeMmOT{SjqJ%}TRy?0J?>ILoR@ zr&%}UB%5a*XZzfv>{@u3{YwsUXvIN}tlrP@b$dCzX%FWjcXMHztwK~ZZMe(#f=)!! zRod=?5N;AG2onquZEu)hB>xc3dB%zcI9@ctiGuN(|3SV#Mybdo}P1+C_W)n;Ten`LEg>qL&$IpnonkY;51E-Q|n>SI)_ zfy%P3h%2S8f@+i&cB=b17gm3H-U5e^Txy{wrEG#ZEmbYxkSWqqrcFWbpu?lr06c!` ziK7fAkC73$mHi!8XA3SlEjR}c#dFGH^|QQl*OGVTcAT7@NNL;v{l?dRn11ZX%xX8 z<>Bt*G{!|`P`8#Zt?GC&YEdGi7bU5=!fICZrr(-0x_;}&pdbC2x;u?Rl?$UEH2DV2 zzw&0?-Z+B&oT*za4=Z;(X4%%q^ls-z@9+Fs5c!Cs7vdS*F_7CaDa_vRkWNi~*?UX` zN}GoH*>n6A4LfG1T9qkTP?d6pJHXwMp7)}mOj5$7*AIks8n4{z5 zY*v$GPWyxjAj=^rQ*S)~^gL-9sj9Y~W_ruItE-v2bpXbP!i!?>+FId94}|K++`{ze zJ}HNzvO1{jTUoVmD>3~_rir>jGTQ98N}|mF*FDgU$H>fDkS9h>s<$40~t>c*`f zL$nS?|2=io(zhu`?o4+z& zJcn<;gdaShmnZb~mgg!M=mSH2<=P6sAb;o|h;B&`D>f)m#zivm?iR_%GI=%(A*^k8 z&V+Sg;?s_tKk~lX_x=`1%0nK!v6Y}qiown8KHuk#X3>ZTeE-t~Zrn*C>D6s~y^Wj> z{n!?X#faHx7HMmsUkMT2Ym7`8X`pzy=D51%rdgvZObItItBWWpbKc(~QM|u|@)hxL#@pe6W(b3?foqhWq(a?q<2XpZRGW=(FShbQ_Q~x z@(Se*>u01_r7gJkkb}==-y%_Hf&Ag;WnyTMfu~1mGjpo^>NCxL?CYJuqA><)-N^vu z;KcX0NaP~g7BcdK^mOfL0~$B`iE5uW!Q0J1u)l!~LyUNZ$w6~Jk@bFA9XP(y#O$d? z_U%7TQgSk4QqU9`EwuT3%HZtl`B*yAdqzwEYH?AvIe19`# zL(P=zX{Km5dET8f2>daPpmuKwZuy2Hjgu%+FG1P_^fNoc(GfNbw{m=>j?=&CI6p?m zrHOEDl8)Px9f+Rh$h|o^xU;~CTT63tbEPxO28v9mSVE8Y%9(gh8iD8U!^ksc5MC39 z;5j@5uMxfR9@-P{A>Htnx!~QmBi_9`kXIOr@7R9SY~Z8Z11q{0FI29Rqg`8^M+_rZ z|9&_YFQ)n=@j!IP`_Y2CqN?6SclQpudw10L^>(7EL{K@jY^m-gT9tT}{rhof-5RTt zQ)UE}Ss@n&4JMmvWXP`e;Uk={LIpB5N234ybF4yf$(uJz)wAnVpH%zeo@3m#6UT4A z#k6mqY9h8gdzM)Q(wgxJwNK^6%IOFXc5KiPU2q{BfBK0G#jWDiD@_HkjeVW8I@?gz z+svUF-Ivo<%0Z+?Od_pMU*3wgu4EsvxVT{P@W7HM4;D{PEW+5$inULm{H@acbN{3f zH*g{^X0GPN{0%%`C|cWsNS?0}t!>SpJlpUW&o=+fv#lq1y5kJbc3?lv zM5F(9wuK@+(<$0Djp7|sDe-*@CEL8EbjuXVHc6&jgCr`{OQd3*1S;2hO_l1es8;PI z)hfSa>`*y_*9#$Oqn@N~jwJ1NB5A)f35T6XIN?nE85iO&xbX6l3(v3Q=Gl$hJh_vb zM}pXU&cs}B(r%)=vx|zS4<2&;-^=8%>f~=%trm%^E1s@yVnj3uB!%+%(6C7p)oA%FF789Svf`-KwQE-zG;B!f!K3PagTjwf zGIYE?d9&WLmepOzG~+#4f(XJ-kiimhI}+fU-rP+Lg1L#ubb1H{X0iy?XV?m#=`@ zY5Bs6yR{1r4tjij{bZZiG{(GnqP!c z3yV>1ehDhfE=8s3WvDc@0@Z#OOc0E*+m$UsFe(edsGqIIbu%FtE&i7p*UEpwl^?Gc zf^pAAF#b<9uCWn}H^LG2nrY|Nj$WmEspwO>520m38BlHjgUSzNXvLunuQ;4hl}6FK zbZ=VrYMHfht(F&kYow}IRnt?OWlpB-8`tLl<>2?XNR(eTsQW0=(aDooWG0$qWj5{qQx)+h8Q!Md zyD{$EiD}0UOi@wl=P5t`Y`+APustKAQw;>kd`SK6H_}IrBz^d=qz@TF+Mq$CiEKy@ z4JEZtZ_+|SNFO_v#DfQIPeEs5Zr%b^El_|AKY#R!F-~zIRUqWTQGpN)2b(d@(MB*b z+4?Xc7hZxH$zi?-7PX^5&NvPb1KBGeEKCC}o2meawh(X*u(vP+wV`=frI8CAmmJ6m?*wSlxMw1WZy2i z<2%w|>s#0^*B+S!8xmkuf;O4Fi%sL-;4O>|wlc1eju}OCOf8{fatSNbOJ@*K+Cq3) zM@E&;!SK>f3@MkB0TrD!wx)FOlt5M++aP)c&*jIS$s>3wci%DnHWkxXQZ#)V&(l(Q zkY>@4YEjcED|tjRt$A&&i_}~g8S+RK*Fhx|v#Rv~Us$$N+p?7!mc67|w1liit1UUP zTKzzTXnyN`HduP9Ns4t=qnbn3)f!J}>j|~KvpbKeV%?9cB~j}@Nwi_L=T}zwfvgAC zIWhvRcvzm}Vu`1Orswc8nMDMh$WUGoU?o-XY_Yg2g)UwZ26UyGx**zU9CkCZ*?O{I*BnCp|N!t zUs$(N$a;lPYk%S`URvT_i&k<%t+uW#(SDY@EVm3$dsc2_w52HPEj?Ij9?VTk8S+>j zv&cMxMRGRwGtfFfI|HRiORpSD@o}<}F9+mv0$)K+r+l1t>cL-5gL&#)mqIyp1UTyn zbhhPJwqL^13)883=|>{|NoC6U6lR=y%UqF_3y&r<<1d(X5LO>ZVBP-LY&`gi$iH5) zbU-56r29zDtiSk1`bFoYlBJ=imatyOu+9OLDdM7Hc-MkBIf+CzDCu5w8Z0_(VNqt3YS@;sX;ws= zi19qR^|-k>WO4ydcL#j)IABQAOe88YGq#zuvc%GlmW*85xOgMUZ?oJ@UnLpUa4kha z%dlraHfCn}HfdRDj9LmCWjH6u!Ncdra{2CCuG~viUq4UO>bKhcxHG+ln+>M<>G>ItzX_o~D=OG`%gSWD=dEzx5b>O@Gthbd-V84l*C5%e{@=Y;eq>(Coe;-bP3B$-gb}$8g3&U?jCA{*oPFck z(Gl~@7g%1#VSfHh@Dy|06TxH5_N|jAk1#5^F&@WadiX%@zfPMAN=3|^VZY%rc_A)S zmf$jd8LqQdlR9}O^Ey;vdb{!@&YX|y+CAjnu%FzU|04JHzj2+v4kx)cde!!!c(w?v zYO9x47NzJzT#38Ng}8s&fA3Eb<(BtCM0Hszk6rDvdju&59=N%m*J-b1h0b8t)t%gm zyZ&*m{JuMpl96lfi8-p7SQ%`Z7qO9u!;{ptAUjw7XvDSh!K@au7~62X9GIbY)TL?{ zes3Bf0@wJVJ5jo@v((=PkkYjkZ#p$4`TK83@6Z^}&Ofp_Dw$1NUQ>6#SaP@chPSol zhSn-hLe0V?e^-y>1`RY5h*I=Zm&a4!h2AqSdat}Vc;{2$BpliyZ+;wo1o;G_{yFCJ z$NE-_wor%i{h7=%BV8TEHWBSYAgVUJYKaGe!Z<)|Lg$cdh zFuGeZ5xtUxC%)0qwy~8~4Xw0nXyIFFTYY1pZcPg#23Q$0&`QJ4EwpW7rhO9&?HgI> z(8x;1rdCo7Z)7Ce3OK|kTZn&cRqHsuinsDam`ol+BKeGoJW3S85hw4(S=2g?PnE3q zMvYhKwV-3G8h&jyX^ZCDw>nBS)N?j!75moAqfAQ&Qj;zA&0%eEHELr)Z?SE8s0Uj# zk(MGfrnpd`y?get@6ZuS<&b4RU8m-mSF^$!ZTZra#noO4K|NS{N>8`qTu?{C4I@dS zh^2`pmv}XUoI%1U6&H0yei{^^YP$qmIbZc)rT2_fD}}1)*}pQ98NV1<+&6=DGnP{1 z3!R$!OF4D5W`#+cQhMdIlwVg*OL|R{yYk|Kk&?L&O{+KH z=?=Nw<@EE*a}Vk!e*_9+6NrMPa}DAf{|*!_0A8Lt^5<34U}%@%p3B0@C><+z!P?zc zHtjM{dCY98OkPBl=}W0PeI?bVt)=?!Yx(omG<8~ zySet~K5pzg#Eo6Yxv}*xZfrcrjkSMrW7U2ec5!3%R%vCvtXVH}X01l^#*VMTiaCKC zTdyPebTo&z=$X4Hn88zOFko6u`cD6hUXyF_OT?FS8UHmuhS#J0s0Oyx*%o@=r1%cX z`-+e>#ZoKq0L@Bl`G1&u>%b_kE^PeSjk^&yB1mwG7PlfT(iSKhtPN7UNN@-q+?@n> zil#t-AOS+~K#&l3;%;m6J9lPwSs>89-}lGw%lkf^Wq0PzotZP|KKI-sNXo20Vn#U< z(#sH^UW&N1Qp7T(mhfYwm=0BtgR8F_!bHCu20E2|K*YJ{&BOs$sR@YE%x3tUaVoI~ zDk%-=65NPsh|vfA;2S&+!w*cs&6s+qpvP6gYTn635CN%RrO6aREj)gC!l(EuYL&;M zVOb37l_sKoNdg)dN26)+3p6W^Lh~Zp7ClFcqGxDT@C4r%K0%wp$7ou@yubHAdb=zb zgYvIpQr2-y%|3+bSqCxW!$Hi-491*{eVCuI8;dh`Vrlv|EKlExRcV_Ln6?44KLjHR zWrA-WTivNt%BY(P;z+^^RH2ZGdE|tgab8ag3mU%ehbFIjcKQ<`Ik=f~?Jd`mst+2Dg)>+2#ckg&22BKCM8CDI;+(G@}iOw$yU z(|cW2&gy57jx5KU5M$`*mqI}!P(@)ms)|WJ$V*XGQcAPcA|yRBpp!_2B@$jMv-D*u zB|qI`Npng+D3SJ92Tcbh!S%abH2yi6G<7$}fsNgH88km-&LH{&ZdlcgJKV~qoD~FY9AzzwUrDVf9r{WJ*@XuB(HOa3z3KbxX z9m)_BV!}Lr&}r&>xV6iInSCk$J3FzIb(bB?_duP#NNhksZ&G5I5o&e%Ks_mgu2CiA zq!^hwak@}cDf#5y zDoqdQK$)1Gj9<;6292z$U|+uk$&U;XbJG-&LAFSGV2sa4V+quB(4cQFDvR`?XTp;4>d`o$2TrO-^9e)byf=k~V*yNTs@P3bAh=C2 z4z(#mMW+gsb|^ztVKPjea?yJHYjj`y8aUZccBNmMZWy88LbHDn| z2^P&|@bQ&okwG|G0Us6g|W zw?YHmy3~PzfiBv$^(698h|KvjkU3{6GGv2^A!bmmb5kvjZWqzvwZ z4Ep_U!^Si^=WWA0{~p-7`8Vv?HVC_S4TZznt#I71gU-AMPTTjxY1ctG?>h?Tpp$Su zbOtWRF2G^qPPBRY6w;SAw#eDE8kzo6kvWr{c^uN&HBT6YG{50U9X%K+BL*O4=r2g7 zGbaz|g`{7)(>)o5+s#O!)XT|&&6L@6O?1s`x6zq*!f^{ba}b<%AA#!Lt-L2#mA#lY%IJZpJH6+^@1RkW;}wio)U)AN|dHOfR&XcYSgghSH9G~{VZD- zTM1&JtCvza?0!w^@Af-!-ss&1?;jq<+j~L$t7@yW{675M?X3^Ew6+(0m#`xuJ=wFor|-0e|q@%tG`#@C=bjg{b1)@TmdkC6Jj%K%rawag`@4j&7V&UD($A4w-Mm`01Vh zr8gLN_6-V3s(AZ~tULiS*LjfXr4chK5yB5-;!>GYoldCRehhrtjYN$mL*RSp5yBJl zc`hU;eju~h4!P%g$aHhXI6&6u=R(hA7ICBL(5pEa z`tB28;Nb@Y&rvX}H5|ru20_IhqpnnNv6Lt?X!^pC28kk-kixPE&|^p@BoPwn-|;l` z5oB?6fEZ!iZH*iYdYPcg64{jDAyu;e^4j3o+nTA%1yTh~7~J==GuyzrQWUzyo5mu_oeL zB|`bJ#FAW7YN?uX?WJmmCbme&eT=vk3OWhfDwSBKoo&VMWW-!pkTrh~&aMC^hRCt> zuna2?DiC;pX7T%E*sw>2Ejwj2R>-k?s|@=$$#GzV3`aJ|abm3k8}}*TA4Lr?=W&Nz z1>A^vxo64X_Cb!CA7t>zAkehWGouP#^qIjsU4~j|gml^`TZx{m2h16T=Q~;zqBv4p zoU1Fq;O@>t?M?*IoroDEE7e^2LojjW!^D+OoIvWC(?~sk9!Vh~NDK`{Tv!-l!^065 z5rLS;j}i0i8Qw-k;f>n$-n&&p)b(*iJwhXfI?ia~VUOmn7HDa2g4R}gXiY4yCB3lB zimQ$0{CuI1rVaj!cyKhpNM;k}ECl8+0~RfZBw#gkmal>C$`#OCy%hQ@7Q-N59t;=x ziyl#xLUAuHBMrz%1=3P!zDy#Vk_3(+IT5O)c&HK+pkm2r-1N!v` z_sam_mqFkL3;BY0L!#{BxE)y=%=L>`|+NUTK z!Ws)vb~ux;xR`NpF$LVrfSRN*-7O^WAb465tR(Oz)UuMIwzUNMj8f~;u@d^vyvvnX zc(DQjXUnnTR4G=UD8t$#rPy?+7+Zsiup_7td-fDy|E_!-*p-XJ+jDS~0AuRGruila zTxEv9wH656Y=u=jZLn;w4FV3@V&PGH%suUhS!bOw{gNvtUvbB{YaaOhrWbr~d12%g zFG!i8x%2$_JUY#ti_ZT3=r(gEx=ovo?vp2@*Mtf9$;luIkpg|bWzdr`` z?aLdprGhPvLs?oH%8164rlg=Gi3mh8fhbK;LIR42))dAOh}smse~*Hg7-7=In?wPz z45^Y-7qd{vg)NPPRlHwB(QUn`hnW1PWt?0OGCpzuji!MRI=yvE3emH&{Jx-lM`z>3rjt>rO-W*0mqD)8&@o;m4 z327oz+M1FkVlX3ZWai-kGtx-r3|?L^q3>OK_JlN-G)y_sxl(oy2>d-@NKO{+1)-RM z?nkkBKZ@ewP)fh2kj9d3Xwd>smo3Ac@#Are?)J^mqjA&M7uSaj!L{Fh!Ix~CyQg_vbM{xl(3}j5-e)72=m*|$K3XFF{|S&Oz$!slYf|u z2|rALUk^Ww`e_t~_a2Txr1~^v_n0Qis7&V*ZKah9e#^;a$vl!ulaN@Fhy-G6aV7DH zD~>~KNvz;bq)r9OYzVx+GL6u3F)NFDs8^5HLg_`BX6R@8YSx{3e`PVLic)lXRv#?z zg^#>IO#wdkfHj~wyFx=S)PzGgKv?C_9Lx+9nlzXSfnW$-|Fp~6j6~CYv5Mr!+J$^Z zmQRz)Xs%uBAPsX7_u(myO5K3i1MRbFA1HiQXY>@Zeex9~6=DPIV0%LcI2t;_(Z~r- zMnduc7h@N=uyT~fuBgcp2oPVcY3jkJ$KxAN_h83`9oTzr4}wky;qb{rIDYgvP9Hvv z^9Ro(WPb>*1zp39T{rnOc=xv7L&UZSL~f208sHX_Ad#4Ifdmp=C5f<-#96tYaFBX; z9H=@;ocSDa=1atxuMl6pMtu1u@#UN9#k&80(;os~l+}S&0SA>PeDiB%b$F_()Z~GH zSdO%UnCOE>GTd)WYMfP1t&)Aw05q4N9i}QG-bscsLm5g5?_9M)_`k?bgfGKX*$%a1 zWH8BKsDjVyFLfidFG1b9y88@LVsEXU$ngDRIsaL^Sn4OP_u6?dKFKzqzGhbVz3LlU zSskXTT}_qd_&iVM^Thp|>;3&7{zCG; zD$06#{3GM&5pnd0xLORg1k|n#u5KMdU1IU|1hB*s40Y-VJ;=|<5Xwj`T}p~&891Uj z9Lp8DVFNg#Io!5w;CAf-M>K~E4i<9796JWk?-}%1|E~%-{A;T4f5X@FV2FSJR=`1c z7pQ>`A3pHD*ePOKAC}VR^K$Jh3(uQ(Z)p1luU@_4lX3A4xYm9L29J7isMRP5bsD6g zwxJJdoBE(08WI|#o@rAwFmC}>i&jvyBD8Ib%J08NIc<4CTE4LkkAU@cu$Z1@P*eOL$pMhExI(6`%_8U5S2R6fE>-HYv*l2Jtw}c@L;Gi9 z*uYG1l6<)N{{VVR{(CToMB^;yqz-bh}KaZmKmr)o)TKU}#Ji2%bks)^x zdG$Ubu8Y};xa9rdk`EG&5>67%!rGxbYS{h&JC`5e;M|plimq^R?t&rFoiRA7GlsnA zj6u&jqW|L#)C1EhC`T9ZP>87do$yC7D*TF3Hog=kf0m+XQW*-Tl%Z%kZ3)FQDu}8S z3zEpw-Mg=#AjrjSm553a6?b2v{LU+sG0?wxXJZmR!Nn3hW8>RWil5oGYL^cb2O83o zVU{l8dxh5TOaP@!j+NrU>K}DhlEQQ~gpRcVzvjYun?h%6{ZAU;_g4uMcg?|?v(p!n z?G504#UJ$_EQIdn`hshvxQ`kNKDDlb(;O&(Lse!aRJsyaw|b1`ov!fRmqnL+vLC<5 zsbZI)R5w7=UlzVjJ6CL@d19|ecv$luj#$4%VWj~AUUd6O9yFs}mq6P{R0OA>VB8zc%~OLZaVaO> z1HBFnp)bOaU?6UdJ2W6PBg^(t@I)7-Kdp6@oQ@=uC;f;z3v`jDEo+^96+5$LBNq&z%7!*JCkWU0SNa4 zB1QsFhXGLofmgo(Z~LLGI=#{IEq(CMwJ`|4I}R(h{en50`(oC{Uod@re@t035Pz;5 z1iz(2F=Fuu44(G~7A@+HmuqZrUi}yytc}sLod?={=K^a}eI#WTBPpW@N$EvMNGn1- z;azG4KBQ*h$I_FSS-BCl46~r}6^AwheWB(WV{iKOnT?e)G1qXpT*A@>p@nWV)?4qv z0Gr3qY1|du&#R$YlPP!$$E6qJ^woE`em?;Zqd$laOdK7k18Y?-W|*A83Wp2uYW^KK zU!uGHR-n?#6U+BK5*SK3@t||z3D|S-EwT$MP*EkJc@~GRI`^@`{wR93u?9D0C%8VV zkRtWOj#Do&Wz|g@lxKdcNvhQ=Vbq!K!G zpQJq76>D5qRC1^-O~KOUu^2VD6`pzcVeVBkj9795TMs=zbV4rg{KuBXc;7sh21lv- z*g$WO0!;YX3yIEsu;8v8HlKP&{5S)4mPYWdX$@~zOL#h&qo#``Je)1y>;ZU+V6{(G%3DiDh@B%=hGC_)wrn&u&|AdfDA z70cd443F_sRV0+4eivH(2n3J6TVwS+f#&Ngw+bMVq81Agne|@MT8k*7gO1~6Cr|u zx}HSaWZL@Eb^u`*y`J;v5}es3L{I}!)cQO6(v%t*K|9nS+$CILpx?sSceI@*Z1J4- zyQggeF{dxa(hjp|hexzME)((`G$FL4GqWsR2M9OC`>>q$u~nNu`cMz%P+Q)PG|hDc zVzo>lwFzF#{2`h^Vm%=V@P?$GH?U7_0yzOx`Uat*;bD|-{>%g-3q?_R7z*!dnLt9G zA*V|ea%z%Rjt49J2bj@~v><`9S_RlF1IkNS+I*l!OA%Fs`=6OW=yyvm_7tkgHEwCZ zio^>wBP0?MWgQY__pcF*YI2P$RV2zFQRYaLITB?RiLvZ!1f!Z< zD+B|mF4ws1R(_hqSmG+o85#7xmPn(TT;s{PB+8{E%EctgMI_3FB+8G!V$H)^dY^Zb za@$Wh8VQ^YM+=WTu(iDpd;2S>LGM=$dcSJ;e$|?%z`}(d*tWe6?%eUgwQG$qcdjR< zO>@We$#wr5SJu;$qIN97+ zT$%m9f?n5%$O^oDSAl0Q%5nT;5gjb$8~Jx@9*TL(ZQScZTs@zSkTY2*&o6^SRxTPG zJ|0l5DCeOUmMC{%N5x{SNcYFq{Mk4rn~9V1sW>Z}_|YK!HN!MB#_G$Yp(rYmJ9#iG)&tNfv_blWlwOV8MQM}3|AEVi(xv12*zT8U@V+v zN}?=bvp!6iAc3Es4*W(L{)=JSkqAbvV33t`_ua{V2s;^jLYCwPV z9n_Z(FRYeeq?RP1Se}IZ%0%?BNJDN#Jkmh(f5mOK&too{|As8%hc#M-2WpuYq zblq^LtSOD!3YH%c(_En`Va_jHtJmJOGj*{{6o)g*P*9~nH|HNPv(aoCa80Oj8MdUB z3Jr*h*B{rNwOs3l(|xOF*&cp%|KJOoF>}?7MpH1(XC4Y@Aoh2cesrxMzn4ioE-$HLfR(e+NN2igRK1q9A~FcSl>55$lgLoojC zc=W!~8w0Kl!0P9#HLKnlFVX4$R#IzngULAD`7j204n#}aR;W}|erdt@gkZ3g z`KHeN_CoRnY>(cKKkod2V{ymus^BF&EvvC$d_pje5WzU`u>!=E?N@Mp^L2!8`Gy4p zR|9|tghzxIgy@9?QnGLSfp;?qM0sCMB#lKf{DNdRie&iJAmHsUz~i3;IoLF>7mtl| zdtm+CpKx$}PuxD)10|1tfFi0Z;-CJEZNa}{_J$$&Yr}9%Su+xUt{Q_+N=#+tmm)K_ zj9$+IH1N!XQQlpYyiG>s+j6+-zeiW^C`gpKNXjTcB0;WH2ShPTsY<=RqJo=~3QcH| z^;%IIduW1jTfZje9I6R(RRyO0!ikm*g;=9XCKzRzdoeqhnS@$8n)n!!C1b%H9B)Hl(|V;5X=vSAXkOn8))xBc)XWZjySU-e zBMahE9Pcf~Y%8CHY_osxpwA`6)~N52OTEZIUQr36z2e4+!KCGX<3!7(c$BsE$uxG(W^lm=`eLMVx z1G5+5WZ+VqS-S-1H!Q-%%?l8+Wq~+0de)`^pf&=wPr>n!m1s3^FsbL(q^8?YH}BF- zyGOfqBDBGfsjIPe{~`MPBZ0ZdHm3&46O*AD$e?L}9Dz9Mfbqf47vKeYRnepN* zEW4INx_8^p=-tT+Ir-&y9h-v}Z*%y@#tv+#Y2eQxO)z;_Q@l;c#q+mWc$bg|-#+y) zY{nEw$Nbs|4Qtmxk9Hnt`<)BgH*-Pr1`cRPpVbX?Y~g}VEnP9Ndu{Y+>w&(Vz0kUe z6W09I3DTf5FY)qy4pKjqps=I@uc#OIo~9xE$;WyVw<1$;^INortPF;D2zd3`7Z5KhD*0%Y5zw! zx^a&1GO<5a0Qtf5beI_Hp@yXqU*}le025obrt~4F43SY8{5=y4$b48@CI2Q)8ulH2 z>FSLd)`qC-Y0ZnYdbQix&J6Aj=2$no6Z&^7CNOWnDqMan~Niz{DR#J#4tL}LCK!QkT;Ohtlmk_g5zA{a+Rm%4o+2;CQouwCL3$u=Sw z8;M|SAcC=8Bp7zoKzQ*&EYm0Py|^8VLx~^U?F#(84CA7Galv{PaGi+79U{l!L@XkQ z0Z#`4&-)R<=mp&G3hAU!eG<`{NW9StLpD#vPXS}`_EKleKjDwu9>d_jcpzrZ8-($* zhU1TEgb711YTO76`eU3hv;`GzgTebKnEZVJrVp>f_)!?F?p=iH)De9D@E~$ia*&u( z2rG9VSb6xs%)2SfJe%-}mCw|5*|as}?zN%o>IQ|88C1@$(68fz5)&J|Hu6FR^Dq*J zKS%3a)U1)gvlE3}BpA6pheK*h3V8vN z@s1y254Jy5Ai2T-3K~cviYyRbXvuS+S26iG@|;7COc#|^QnWT+hVHscVfG;t?M)WZ zm@I{6iG(K&{9I9;WJ{>mss3C-m$3fi_lU_S-egpa)koTC$GywM%nC}r0l8MDF1cKx z$==1j4?NZmD|hwa_pQ`$B<2M|KRVc%@Nl#@g|h>L8C+-_bR`Y!=4=i-+B!Q~(p1m_ z-X0b_Ez7^VuYO|T%L#9A^r#p znS)2yX9`-msAw083igotK14V{_?vK<5Q>8MGc+ZCjVi>V0`VwADoT)rBIKZe{+CCP z>e6^_WNeI-zQf7=)rXKRZ%M@J+$J0r=}6)AMKG%qit)T)KFwr%l}c4By; zg=d6EBKYWm+Vkh57Q@`RsO9gE+B0XuXWDesoje)!CQLwm66HoD%8f~s8$=&Iq#Zi@nzUu-p0AkTHbb$-b{JOK`eK>wNCeo8 z##WmFxPp%CDHuX2(S?FR%C>r>A@t}q)}^g3y~=vRmZL2v{Ko$-VR50x)PUn{I9aE{ z!!{lsHgSaa@U$h^y@MCQ+wLvA?cbob!)w%Wd<`F`Xdd2nEJxK977rPM$)j#z*{t(e zIrl8qEI5Ppi%wzlk`vgr>=<^fI*fg54k37bFb-|nkE2`n;^dCq*c@<@cdQlD;tH!8 zB%jqU&V07zjdqMvF^V%b47i!5z}W;jPRGe`B36!L?`1ebROb-kz`H60zm;MC8yWV# zmSHzx$16FGzgMEk8EPQ-6zCuYLXsSDks;9;7ZP1?F2NON<6Utk&K)NSCt_>jc$_DW z$9mJj-q;eQMA15t;sgf~!Pr9tV+Rq8?L;s(6T#R(1Y;c$j6fn7D~Mn$CxQ_`1Y;o) zj0Hq6=0^)eGv^?XbsWe%OCXAzd4(omH-Xe}LIjZf6i5_HN|8!LOfqqcbl_DcAzgeM z%}I=)pdDT8Y>m?#VTbboTX0aVe|v6B$jBY-<!EgdhSw@R$fS%=#tw|FwjyhT|fpK4`@zWdB1&VoURxwDLR zZ{+WIB|F7>8ooDfLoX9GETN&EU94E-Nvpt<*d^9YnhQvYJj9m0!=-}r$d-S=?V>QD zhzoOaRmwGGrar25`iD-13^V+mV~+0=%o+9si-$bJpuUGuuhVoa>+=w+evH7nuJ^I_ zhx^bimwnXAe5Nk3#FVj>Jxr~gU{b>gW;L8)ZtDUwI|lk}??$7wJIozDc&)6|u2GdO z#<`}PIDw=yr;&92JmNw^5E~kbn6NOsBdz>~wDKF$%CAW)$B2sot)nkz1Ed|K}+IkZj5T+2p zXiVGlgv*3I^n0e}612il_~i5iecH)@fuv4Pq zQ~}@NG7R&jX)nzi`;V5P-yd@H9xFr7337CsNHf`~arZ2xEin?IFTANQ6SY! zjue_RrqDK#rhN$vmNLX!Rw2$xhFI&5h_j}B*}9as+OAC9=cB0zPBiIoF{Ejqkt-ib zIhbtFtRxvIeqEh;LiaER>*2&^JNW zo-E`9=7HxX`Q#)_`@f+QoOC>!a7l!B~}T$$5Oq`^U! zkc27{Z&`f8r+(`~aG**sjWQPs@!*8$+lYU4i%(e0D4$A{4b>-}^DH2cQ}GH^h_Dk9 zaHhsQL~h~>oZh?wanG*_c?o6e7*M&E^FPyb?CiV=KuGb)8ql}2L#fmp#%}dt>0C!( z?yTD~wdcIX1A-IRScC>-Vv57Cr}vR=Xbr0-jS>3j4!<6+(&|2^_{0lDq3HojSkCT2 zmlj>2D$V12)U{1d!KSA6-IrbSzFp-NH1Ru`)MTX=yLc=P=_C| zec0?(-2k&-*qhqG!OR9u=C+zJlTX4=Xi}o*MiX;)26sN)mrC8h&UFj0chzDXSiKyl z7Oq8HLhKh|C~sc9!pp0d5lx5+4Z*9hP~He8MR+8vUhGErf?5b)REy@uJJGm)DSUi# z(Xe4YDjPS3G0mmS+qXw;I-n-Oli)^hVhvasy+CrJ4jQ-hM?R6)7f;QR`aT9*HkxAc z>X7^U)wL51!O3>Fg;Nd9i&EX^s|+9>CV>JuHk8@MGtH zkeDb#?wH?^H*zHMh7Lm>sq|b@>A9rR3n%`GcMTh=)w&8FvP@A~DdiImGcQS&u$ZYx z%N;vlxqCM(_wR+}!2_^5as*Z;|LkHebAPHP%FEqCrjz5DkejYM1YPdE;pMK7T{?*+Ch{=!bh z6zo$>M6i4uN_%%h?k~R}w@)AB{P-hsx_3u*=gxeuUb0}I?=sV2yJ7*H5AB5Wv3+nk z84Q;*hv9PJI9x+cqsG-Mu>SjRSYNyd8yc}~u3dxe&6}_~bO?1>I@AP5XB5w0fPxY1 zP7kF!Js5fY2hg4Fhn$~&LQc<~$m!M%Ih{HoyF&+Lw`qe9ty?2+;6S`2*^s)ChA|5W zfMswntcWA<*Lms`Y|fp7EuGc&$`#mNzYg15w_rzSw0rOX4i6vl`!!&B_hlb4P)Y(( zLMVRm0)G6-IehM?9%U-í>nTQUCVuwEZ2@zer6d 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 T>uT4B00000NkvXXu0mjfu=~Ja diff --git a/test/units/sprites/sprite_map_test.rb b/test/units/sprites/sprite_map_test.rb index 9afa868a..abb64542 100644 --- a/test/units/sprites/sprite_map_test.rb +++ b/test/units/sprites/sprite_map_test.rb @@ -115,5 +115,11 @@ class SpriteMapTest < Test::Unit::TestCase FileUtils.rm base.filename end + it "should generate vertical sprites in decending order" do + sizes = @base.images.map{|image| File.size(image.file) } + assert_equal sizes.min, File.size(@base.images.first.file) + assert_equal sizes.max, File.size(@base.images.last.file) + end + end \ No newline at end of file From c79e9970986e7d7f22ef2e24908a842dbc20d95a Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Tue, 26 Jul 2011 02:08:29 -0400 Subject: [PATCH 49/56] merged in stable and added a test image --- .../compass/images/flag-s8c3c755a68.png | Bin 0 -> 77172 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/fixtures/stylesheets/compass/images/flag-s8c3c755a68.png diff --git a/test/fixtures/stylesheets/compass/images/flag-s8c3c755a68.png b/test/fixtures/stylesheets/compass/images/flag-s8c3c755a68.png new file mode 100644 index 0000000000000000000000000000000000000000..490903426e9cd023df42e85338494d8cd6081d97 GIT binary patch literal 77172 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 iE8x)A_fKRT{rg`y3H2tL?diS%0000 Date: Tue, 26 Jul 2011 02:30:47 -0400 Subject: [PATCH 50/56] merge --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index c2b5e59e..6156cca1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.12.0.alpha.0.7a18375) + compass (0.12.0.alpha.0.c79e997) chunky_png (~> 1.2) fssm (>= 0.2.7) sass (~> 3.1) From 387a2ffe1f79f7091cfc65a18f4880e1d56f6de3 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Tue, 26 Jul 2011 14:42:57 -0400 Subject: [PATCH 51/56] fixed features to be more lieniet on sprite hashes --- Gemfile.lock | 2 +- features/command_line.feature | 4 ++-- features/step_definitions/command_line_steps.rb | 9 +++++++++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 6156cca1..ec726def 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.12.0.alpha.0.c79e997) + compass (0.12.0.alpha.0.64d0787) chunky_png (~> 1.2) fssm (>= 0.2.7) sass (~> 3.1) diff --git a/features/command_line.feature b/features/command_line.feature index 56d52abb..a783281e 100644 --- a/features/command_line.feature +++ b/features/command_line.feature @@ -200,7 +200,7 @@ Feature: Command Line | tmp/box_shadow.css | | tmp/columns.css | | tmp/fonts.css | - | images/flag-s03c3b29b35.png | + | images/flag-s*.png | And the following files are removed: | .sass-cache/ | | tmp/border_radius.css | @@ -208,7 +208,7 @@ Feature: Command Line | tmp/box_shadow.css | | tmp/columns.css | | tmp/fonts.css | - | images/flag-s03c3b29b35.png | + | images/flag-s*.png | Scenario: Watching a project for changes Given ruby supports fork diff --git a/features/step_definitions/command_line_steps.rb b/features/step_definitions/command_line_steps.rb index fd45fdc9..37b0896d 100644 --- a/features/step_definitions/command_line_steps.rb +++ b/features/step_definitions/command_line_steps.rb @@ -133,12 +133,21 @@ end Then "the following files are reported removed:" do |table| table.rows.each do |css_file| + #need to find a better way but this works for now + if css_file.first.include?('flag-s') + css_file[0] = Dir[css_file.first].sort.first + puts css_file[0] = Dir[css_file.first].sort.first + end Then %Q{a css file #{css_file.first} is reported removed} end end Then "the following files are removed:" do |table| table.rows.each do |css_file| + #need to find a better way but this works for now + if css_file.first.include?('flag-s') + css_file[0] = Dir[css_file.first].sort.first + end Then %Q{a css file #{css_file.first} is removed} end end From 3f72a549d37f3a37b7ab9504df3bc683351008d5 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Tue, 26 Jul 2011 14:59:08 -0400 Subject: [PATCH 52/56] fixed sprite hash in features --- Gemfile.lock | 2 +- features/command_line.feature | 4 ++-- features/step_definitions/command_line_steps.rb | 8 -------- 3 files changed, 3 insertions(+), 11 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index ec726def..8881495a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.12.0.alpha.0.64d0787) + compass (0.12.0.alpha.0.387a2ff) chunky_png (~> 1.2) fssm (>= 0.2.7) sass (~> 3.1) diff --git a/features/command_line.feature b/features/command_line.feature index a783281e..fd2b374c 100644 --- a/features/command_line.feature +++ b/features/command_line.feature @@ -200,7 +200,7 @@ Feature: Command Line | tmp/box_shadow.css | | tmp/columns.css | | tmp/fonts.css | - | images/flag-s*.png | + | images/flag-s8c3c755a68.png | And the following files are removed: | .sass-cache/ | | tmp/border_radius.css | @@ -208,7 +208,7 @@ Feature: Command Line | tmp/box_shadow.css | | tmp/columns.css | | tmp/fonts.css | - | images/flag-s*.png | + | images/flag-s8c3c755a68.png | Scenario: Watching a project for changes Given ruby supports fork diff --git a/features/step_definitions/command_line_steps.rb b/features/step_definitions/command_line_steps.rb index 37b0896d..412cabfb 100644 --- a/features/step_definitions/command_line_steps.rb +++ b/features/step_definitions/command_line_steps.rb @@ -134,20 +134,12 @@ end Then "the following files are reported removed:" do |table| table.rows.each do |css_file| #need to find a better way but this works for now - if css_file.first.include?('flag-s') - css_file[0] = Dir[css_file.first].sort.first - puts css_file[0] = Dir[css_file.first].sort.first - end Then %Q{a css file #{css_file.first} is reported removed} end end Then "the following files are removed:" do |table| table.rows.each do |css_file| - #need to find a better way but this works for now - if css_file.first.include?('flag-s') - css_file[0] = Dir[css_file.first].sort.first - end Then %Q{a css file #{css_file.first} is removed} end end From 1ad4dcaae80975f46177c16b572df38e59e4709a Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Tue, 26 Jul 2011 15:11:52 -0400 Subject: [PATCH 53/56] hoping this fixes the ci server issues --- Gemfile | 10 ++-------- Gemfile.lock | 29 ++++++----------------------- 2 files changed, 8 insertions(+), 31 deletions(-) diff --git a/Gemfile b/Gemfile index c66fc392..242b7ea6 100644 --- a/Gemfile +++ b/Gemfile @@ -7,23 +7,17 @@ gem "rspec", "~>2.0.0" gem "rails", "~>3.0.0.rc" gem "compass-validator", "3.0.1" gem "css_parser", "~> 1.0.1" -gem "sass", "~>3.1" +gem "sass", "~> 3.1" gem "haml", "~> 3.1" gem "rcov", :platform => :mri gem "rubyzip" gem "livereload" gem "ruby-prof", :platform => :mri -gem 'autotest' -gem 'autotest-fsevent' if RUBY_PLATFORM =~ /darwin/ -gem 'fakefs', :git => 'git://github.com/johnbintz/fakefs.git' gem 'mocha' gem 'timecop' gem 'diff-lcs', '~> 1.1.2' gem 'rake', '0.8.7' -group :mac do - gem "rb-fsevent" -end - +#Warning becarful adding OS dependant gems to this file it will cause issues on the CI server \ No newline at end of file diff --git a/Gemfile.lock b/Gemfile.lock index 8881495a..f5ce76db 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,13 +1,7 @@ -GIT - remote: git://github.com/johnbintz/fakefs.git - revision: 7363b6f13bfcd9f583bbf7cd1e0d65c2dc656db7 - specs: - fakefs (0.3.1) - PATH remote: . specs: - compass (0.12.0.alpha.0.387a2ff) + compass (0.12.0.alpha.0.3f72a54) chunky_png (~> 1.2) fssm (>= 0.2.7) sass (~> 3.1) @@ -15,7 +9,6 @@ PATH GEM remote: http://rubygems.org/ specs: - ZenTest (4.5.0) abstract (1.0.0) actionmailer (3.0.9) actionpack (= 3.0.9) @@ -45,10 +38,6 @@ GEM activesupport (3.0.9) addressable (2.2.6) arel (2.0.10) - autotest (4.4.6) - ZenTest (>= 4.4.1) - autotest-fsevent (0.2.5) - sys-uname builder (2.1.2) chunky_png (1.2.0) compass-validator (3.0.1) @@ -106,9 +95,8 @@ GEM rdoc (~> 3.4) thor (~> 0.14.4) rake (0.8.7) - rb-fsevent (0.4.0) rcov (0.9.9) - rdoc (3.6.1) + rdoc (3.8) rspec (2.0.1) rspec-core (~> 2.0.1) rspec-expectations (~> 2.0.1) @@ -120,35 +108,30 @@ GEM rspec-core (~> 2.0.1) rspec-expectations (~> 2.0.1) ruby-json (1.1.2) - ruby-prof (0.10.7) + ruby-prof (0.10.8) rubyzip (0.9.4) - sass (3.1.3) - sys-uname (0.8.5) - term-ansicolor (1.0.5) + sass (3.1.5) + term-ansicolor (1.0.6) thor (0.14.6) timecop (0.3.5) treetop (1.4.9) polyglot (>= 0.3.1) - tzinfo (0.3.28) + tzinfo (0.3.29) PLATFORMS ruby DEPENDENCIES - autotest - autotest-fsevent compass! compass-validator (= 3.0.1) css_parser (~> 1.0.1) cucumber (~> 0.9.2) diff-lcs (~> 1.1.2) - fakefs! haml (~> 3.1) livereload mocha rails (~> 3.0.0.rc) rake (= 0.8.7) - rb-fsevent rcov rspec (~> 2.0.0) ruby-prof From c950d874320765ab8645bc4b6935eb57519a4247 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Tue, 26 Jul 2011 16:20:51 -0400 Subject: [PATCH 54/56] abstracted out test helpers --- test/test_helper.rb | 15 +++++++++++++++ test/units/sprites/image_test.rb | 2 +- test/units/sprites/importer_test.rb | 4 ++-- test/units/sprites/sprite_command_test.rb | 12 +----------- 4 files changed, 19 insertions(+), 14 deletions(-) diff --git a/test/test_helper.rb b/test/test_helper.rb index a4146cc6..43981842 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -39,6 +39,11 @@ end module SpriteHelper URI = "selectors/*.png" + def init_sprite_helper + @images_src_path = File.join(File.dirname(__FILE__), 'fixtures', 'sprites', 'public', 'images') + @images_tmp_path = File.join(File.dirname(__FILE__), 'fixtures', 'sprites', 'public', 'images-tmp') + end + def sprite_map_test(options) importer = Compass::SpriteImporter.new path, name = Compass::SpriteImporter.path_and_name(URI) @@ -47,4 +52,14 @@ module SpriteHelper Compass::SassExtensions::Sprites::SpriteMap.new(sprite_names.map{|n| "selectors/#{n}.png"}, path, name, sass_engine, options) end + def create_sprite_temp + init_sprite_helper + ::FileUtils.cp_r @images_src_path, @images_tmp_path + end + + def clean_up_sprites + init_sprite_helper + ::FileUtils.rm_r @images_tmp_path + end + end \ No newline at end of file diff --git a/test/units/sprites/image_test.rb b/test/units/sprites/image_test.rb index afcc0c7c..24b635b1 100644 --- a/test/units/sprites/image_test.rb +++ b/test/units/sprites/image_test.rb @@ -5,7 +5,7 @@ require 'ostruct' class SpritesImageTest < Test::Unit::TestCase include SpriteHelper def setup - @images_src_path = File.join(File.dirname(__FILE__), '..', '..', 'fixtures', 'sprites', 'public', 'images') + create_sprite_temp file = StringIO.new("images_path = #{@images_src_path.inspect}\n") Compass.add_configuration(file, "sprite_config") @repeat = 'no-repeat' diff --git a/test/units/sprites/importer_test.rb b/test/units/sprites/importer_test.rb index f9b0d79d..094a1a0f 100644 --- a/test/units/sprites/importer_test.rb +++ b/test/units/sprites/importer_test.rb @@ -1,10 +1,10 @@ require 'test_helper' require 'timecop' class ImporterTest < Test::Unit::TestCase - URI = "selectors/*.png" + include SpriteHelper def setup - @images_src_path = File.join(File.dirname(__FILE__), '..', '..', 'fixtures', 'sprites', 'public', 'images') + create_sprite_temp file = StringIO.new("images_path = #{@images_src_path.inspect}\n") Compass.add_configuration(file, "sprite_config") @importer = Compass::SpriteImporter.new diff --git a/test/units/sprites/sprite_command_test.rb b/test/units/sprites/sprite_command_test.rb index 240b00c3..4e4354fb 100644 --- a/test/units/sprites/sprite_command_test.rb +++ b/test/units/sprites/sprite_command_test.rb @@ -2,10 +2,8 @@ require 'test_helper' class SpriteCommandTest < Test::Unit::TestCase attr_reader :test_dir - + include SpriteHelper def setup - @images_src_path = File.join(File.dirname(__FILE__), '..', '..', 'fixtures', 'sprites', 'public', 'images') - @images_tmp_path = File.join(File.dirname(__FILE__), '..', '..', 'fixtures', 'sprites', 'public', 'images-tmp') @before_dir = ::Dir.pwd create_temp_cli_dir create_sprite_temp @@ -14,14 +12,6 @@ class SpriteCommandTest < Test::Unit::TestCase end end - def create_sprite_temp - ::FileUtils.cp_r @images_src_path, @images_tmp_path - end - - def clean_up_sprites - ::FileUtils.rm_r @images_tmp_path - end - def config_data return <<-CONFIG images_path = #{@images_tmp_path.inspect} From 9966421f5866078e24bd248c7cda64aedb40566c Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Tue, 26 Jul 2011 16:21:21 -0400 Subject: [PATCH 55/56] configuration for sprite_search_path --- lib/compass/configuration.rb | 1 + lib/compass/configuration/defaults.rb | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/lib/compass/configuration.rb b/lib/compass/configuration.rb index d8efb812..58ad570d 100644 --- a/lib/compass/configuration.rb +++ b/lib/compass/configuration.rb @@ -24,6 +24,7 @@ module Compass attributes_for_directory(:fonts), attributes_for_directory(:extensions, nil), # Compilation options + :sprite_search_path, :output_style, :environment, :relative_assets, diff --git a/lib/compass/configuration/defaults.rb b/lib/compass/configuration/defaults.rb index 236ce672..abdd3efd 100644 --- a/lib/compass/configuration/defaults.rb +++ b/lib/compass/configuration/defaults.rb @@ -88,6 +88,10 @@ module Compass def default_http_images_dir top_level.images_dir end + + def default_sprite_search_path + [top_level.images_path] + end def default_http_images_path http_root_relative top_level.http_images_dir From 9c472b3c36d58c5d835146ee0c02bc25934de33f Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Tue, 26 Jul 2011 16:21:59 -0400 Subject: [PATCH 56/56] sprite_seach_path implimentation and test case --- lib/compass/sprite_importer.rb | 6 +++++- test/units/sprites/importer_test.rb | 21 +++++++++++++++++++++ test/units/sprites/sprite_map_test.rb | 1 + 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/lib/compass/sprite_importer.rb b/lib/compass/sprite_importer.rb index 5eb31be2..5307b2cd 100644 --- a/lib/compass/sprite_importer.rb +++ b/lib/compass/sprite_importer.rb @@ -66,7 +66,11 @@ module Compass # Returns the Glob of image files for the uri def self.files(uri) - Dir[File.join(Compass.configuration.images_path, uri)].sort + Compass.configuration.sprite_search_path.each do |folder| + files = Dir[File.join(folder, uri)].sort + next if files.empty? + return files + end end # Returns an Array of image names without the file extension diff --git a/test/units/sprites/importer_test.rb b/test/units/sprites/importer_test.rb index 094a1a0f..9d058704 100644 --- a/test/units/sprites/importer_test.rb +++ b/test/units/sprites/importer_test.rb @@ -18,6 +18,27 @@ class ImporterTest < Test::Unit::TestCase {:foo => 'bar'} end + test "should use search path to find sprites" do + Compass.reset_configuration! + uri = 'foo/*.png' + other_folder = File.join(@images_tmp_path, '../other-temp') + FileUtils.mkdir_p other_folder + FileUtils.mkdir_p File.join(other_folder, 'foo') + %w(my bar).each do |file| + FileUtils.touch(File.join(other_folder, "foo/#{file}.png")) + end + config = Compass::Configuration::Data.new('config') + config.images_path = @images_tmp_path + config.sprite_search_path = [@images_tmp_path, other_folder] + Compass.add_configuration(config, "sprite_config") + importer = Compass::SpriteImporter.new + assert_equal 2, Compass.configuration.sprite_search_path.compact.size + assert Compass.configuration.sprite_search_path.include?(other_folder) + assert_equal ["bar", "my"], Compass::SpriteImporter.sprite_names(uri) + + FileUtils.rm_rf other_folder + end + test "name should return the sprite name" do assert_equal 'selectors', Compass::SpriteImporter.sprite_name(URI) end diff --git a/test/units/sprites/sprite_map_test.rb b/test/units/sprites/sprite_map_test.rb index abb64542..25d5a98e 100644 --- a/test/units/sprites/sprite_map_test.rb +++ b/test/units/sprites/sprite_map_test.rb @@ -10,6 +10,7 @@ class SpriteMapTest < Test::Unit::TestCase FileUtils.cp_r @images_src_path, @images_tmp_path config = Compass::Configuration::Data.new('config') config.images_path = @images_tmp_path + config.sprite_search_path = [@images_tmp_path] Compass.add_configuration(config) Compass.configure_sass_plugin! @options = {'cleanup' => Sass::Script::Bool.new(true), 'layout' => Sass::Script::String.new('vertical')}