From 52c0ec270061546b05ce07dd402c086113d0235b Mon Sep 17 00:00:00 2001 From: Chad Little Date: Sun, 7 Aug 2016 11:33:41 -0700 Subject: [PATCH] Update Phabricator logo Summary: This updates the eye logo and removes the formal wordmark "Phabricator" as an image. Instead we'll use the new updated eye logo and plain text for "Phabricator", both of which are more friendly and less industrial. Installs that already use the `header-logo` customization setting will need to rebuild their logo to 80px x 80px. They will then also get to use plain text to whitebox their install as they see fit. Test Plan: Tested new logo at desktop, tablet, and mobile sizes. Set a random instance name, saw new wordmark. Created a really long wordmark of MMMMMMMMMMMM, saw text cut off so UI doesn't break. May need some additional tweaking, but I think we covered the most edge cases here. {F1751791, size=full} Reviewers: epriestley Reviewed By: epriestley Subscribers: edibiase, bjshively, yelirekim, Korvin Maniphest Tasks: T4214, T11096 Differential Revision: https://secure.phabricator.com/D16373 --- resources/celerity/map.php | 18 +++--- resources/celerity/packages.php | 1 - resources/sprite/manifest/menu.json | 31 ----------- resources/sprite/menu_1x/dark-eye.png | Bin 2044 -> 0 bytes resources/sprite/menu_1x/dark-logo.png | Bin 1403 -> 0 bytes resources/sprite/menu_1x/light-eye.png | Bin 1794 -> 0 bytes resources/sprite/menu_1x/light-logo.png | Bin 1337 -> 0 bytes resources/sprite/menu_2x/dark-eye.png | Bin 3528 -> 0 bytes resources/sprite/menu_2x/dark-logo.png | Bin 1758 -> 0 bytes resources/sprite/menu_2x/light-eye.png | Bin 2876 -> 0 bytes resources/sprite/menu_2x/light-logo.png | Bin 1699 -> 0 bytes scripts/celerity/generate_sprites.php | 1 - .../celerity/CeleritySpriteGenerator.php | 52 ------------------ .../option/PhabricatorUIConfigOptions.php | 10 +++- .../page/menu/PhabricatorMainMenuView.php | 34 +++++++----- .../css/application/base/main-menu-view.css | 33 ++++++----- webroot/rsrc/css/sprite-menu.css | 36 ------------ webroot/rsrc/image/logo/light-eye.png | Bin 0 -> 1350 bytes webroot/rsrc/image/sprite-menu-X2.png | Bin 4333 -> 0 bytes webroot/rsrc/image/sprite-menu.png | Bin 2173 -> 0 bytes 20 files changed, 56 insertions(+), 160 deletions(-) delete mode 100644 resources/sprite/manifest/menu.json delete mode 100644 resources/sprite/menu_1x/dark-eye.png delete mode 100644 resources/sprite/menu_1x/dark-logo.png delete mode 100644 resources/sprite/menu_1x/light-eye.png delete mode 100644 resources/sprite/menu_1x/light-logo.png delete mode 100644 resources/sprite/menu_2x/dark-eye.png delete mode 100644 resources/sprite/menu_2x/dark-logo.png delete mode 100644 resources/sprite/menu_2x/light-eye.png delete mode 100644 resources/sprite/menu_2x/light-logo.png delete mode 100644 webroot/rsrc/css/sprite-menu.css create mode 100644 webroot/rsrc/image/logo/light-eye.png delete mode 100644 webroot/rsrc/image/sprite-menu-X2.png delete mode 100644 webroot/rsrc/image/sprite-menu.png diff --git a/resources/celerity/map.php b/resources/celerity/map.php index 7d846e4cec..92360d0793 100644 --- a/resources/celerity/map.php +++ b/resources/celerity/map.php @@ -7,7 +7,7 @@ */ return array( 'names' => array( - 'core.pkg.css' => '90c46327', + 'core.pkg.css' => 'f12c7d47', 'core.pkg.js' => 'b562c3db', 'darkconsole.pkg.js' => 'e7393ebb', 'differential.pkg.css' => '3fb7f532', @@ -32,7 +32,7 @@ return array( 'rsrc/css/aphront/typeahead.css' => 'd4f16145', 'rsrc/css/application/almanac/almanac.css' => 'dbb9b3af', 'rsrc/css/application/auth/auth.css' => '0877ed6e', - 'rsrc/css/application/base/main-menu-view.css' => 'b623169f', + 'rsrc/css/application/base/main-menu-view.css' => 'a79b6e52', 'rsrc/css/application/base/notification-menu.css' => 'f31c0bde', 'rsrc/css/application/base/phabricator-application-launch-view.css' => '95351601', 'rsrc/css/application/base/phui-theme.css' => '027ba77e', @@ -163,7 +163,6 @@ return array( 'rsrc/css/phui/workboards/phui-workcard.css' => '0c62d7c5', 'rsrc/css/phui/workboards/phui-workpanel.css' => '92197373', 'rsrc/css/sprite-login.css' => '60e8560e', - 'rsrc/css/sprite-menu.css' => '9dd65b92', 'rsrc/css/sprite-tokens.css' => '9cdfd599', 'rsrc/css/syntax/syntax-default.css' => '9923583c', 'rsrc/externals/d3/d3.min.js' => 'a11a5ff2', @@ -320,6 +319,7 @@ return array( 'rsrc/image/icon/tango/upload.png' => '7bbb7984', 'rsrc/image/icon/unsubscribe.png' => '25725013', 'rsrc/image/lightblue-header.png' => '5c168b6d', + 'rsrc/image/logo/light-eye.png' => 'fcd66408', 'rsrc/image/main_texture.png' => '29a2c5ad', 'rsrc/image/menu_texture.png' => '5a17580d', 'rsrc/image/people/harding.png' => '45aa614e', @@ -343,8 +343,6 @@ return array( 'rsrc/image/resize.png' => 'fd476de4', 'rsrc/image/sprite-login-X2.png' => 'e3991e37', 'rsrc/image/sprite-login.png' => '03d5af29', - 'rsrc/image/sprite-menu-X2.png' => 'cfd8fca5', - 'rsrc/image/sprite-menu.png' => 'd7a99faa', 'rsrc/image/sprite-tokens-X2.png' => '804a5232', 'rsrc/image/sprite-tokens.png' => 'b41d03da', 'rsrc/image/texture/card-gradient.png' => '815f26e8', @@ -785,7 +783,7 @@ return array( 'phabricator-flag-css' => '5337623f', 'phabricator-keyboard-shortcut' => '1ae869f2', 'phabricator-keyboard-shortcut-manager' => '4a021c10', - 'phabricator-main-menu-view' => 'b623169f', + 'phabricator-main-menu-view' => 'a79b6e52', 'phabricator-nav-view-css' => '09f3d0db', 'phabricator-notification' => 'ccf1cbf8', 'phabricator-notification-css' => '3f6c89c9', @@ -891,7 +889,6 @@ return array( 'releeph-request-typeahead-css' => '667a48ae', 'setup-issue-css' => 'db7e9c40', 'sprite-login-css' => '60e8560e', - 'sprite-menu-css' => '9dd65b92', 'sprite-tokens-css' => '9cdfd599', 'syntax-default-css' => '9923583c', 'syntax-highlighting-css' => '769d3498', @@ -1724,6 +1721,9 @@ return array( 'javelin-stratcom', 'javelin-dom', ), + 'a79b6e52' => array( + 'phui-theme-css', + ), 'a80d0378' => array( 'javelin-behavior', 'javelin-stratcom', @@ -1844,9 +1844,6 @@ return array( 'javelin-dom', 'javelin-util', ), - 'b623169f' => array( - 'phui-theme-css', - ), 'b6993408' => array( 'javelin-behavior', 'javelin-stratcom', @@ -2246,7 +2243,6 @@ return array( 'aphront-tooltip-css', 'phabricator-flag-css', 'phui-info-view-css', - 'sprite-menu-css', 'phabricator-main-menu-view', 'phabricator-notification-css', 'phabricator-notification-menu-css', diff --git a/resources/celerity/packages.php b/resources/celerity/packages.php index 103d395f79..66015f6263 100644 --- a/resources/celerity/packages.php +++ b/resources/celerity/packages.php @@ -104,7 +104,6 @@ return array( 'aphront-tooltip-css', 'phabricator-flag-css', 'phui-info-view-css', - 'sprite-menu-css', 'phabricator-main-menu-view', 'phabricator-notification-css', diff --git a/resources/sprite/manifest/menu.json b/resources/sprite/manifest/menu.json deleted file mode 100644 index 68fe112276..0000000000 --- a/resources/sprite/manifest/menu.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "version": 1, - "sprites": { - "dark-eye": { - "name": "dark-eye", - "rule": ".dark-eye", - "hash": "c8112e52666fa1cb509ebb2cdf3a3df5" - }, - "dark-logo": { - "name": "dark-logo", - "rule": ".dark-logo", - "hash": "e3425da87e8f6737d8db0063d064cd7d" - }, - "light-eye": { - "name": "light-eye", - "rule": ".light-eye", - "hash": "5b6bf7c8c10d4f7414d976f6e79ae2ff" - }, - "light-logo": { - "name": "light-logo", - "rule": ".light-logo", - "hash": "bee37c0a86825ec7ded38936b1ba7b65" - } - }, - "scales": [ - 1, - 2 - ], - "header": "\/**\n * @provides sprite-menu-css\n * @generated\n *\/\n\n.sprite-menu {\n background-image: url(\/rsrc\/image\/sprite-menu.png);\n background-repeat: no-repeat;\n}\n\n@media\nonly screen and (min-device-pixel-ratio: 1.5),\nonly screen and (-webkit-min-device-pixel-ratio: 1.5),\nonly screen and (min-resolution: 1.5dppx) {\n .sprite-menu {\n background-image: url(\/rsrc\/image\/sprite-menu-X2.png);\n background-size: {X}px {Y}px;\n }\n}\n", - "type": "standard" -} diff --git a/resources/sprite/menu_1x/dark-eye.png b/resources/sprite/menu_1x/dark-eye.png deleted file mode 100644 index 2e13cbf2a1735ea5837772063aa8295f4298c04b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2044 zcmaJ?X;f3!7EUYnfz~pq2tFabNM*{12}vZ-kfEf{L<~bg84Sq{1jrl=li0dwAp!M; z$0Wr8d{hv{0VqKhh^{y?E4(sjivb)FK|m-i&>IBXAHLqR?mg%1^?iGPdsyqL{n=lv zTVuBd27|3*`q4Ph?reNbKZ3s53px?B*(&KF$^eN#sp85(7=AVd=jNxUL2@|M}g5oF&TK(a20?H`DEZL z91G2oQo$IZU$PtwNM;A}lH+(pKH%dG_evx|4n&}m3r`fqixs3qGO*;A1f7j$6aZg> zDC5Y$TTvk_e>hbl2jMs*9>GInw!=M%NDL0|N%VAwW1%|=O+aDM2sDv|^B|$I@Z|@9 zqRIIJ5{JfEjs@MwK#Wo;C81C%l?tiyKuYA%C=8KEM4_=LEEWMF5Q-$RlADMSD;!rm z&_D%GE|e;T5;5H9ksBpRP?7;i>Dv@UQWoo-W3ghnP*BNGiCifPgG8f5B4b`lXoZpk z{wd?VXhmR>6hv`Ag(N}FgZd$GTp>fX`};sfAf$#wlkgHmpjgSIkpakp zrQ#V3oG%4~p>Ov^QcAh&MYoZC^i~hj0IlS3(AH2K|Vt+5y6)#L=wJ71%ZkuVhD6B zord->WL1IwG_Wq^aD<)`$jK_Dw3tirg zKPZM~UJea+Y>B@G3}zC`q)`GB`$r4SGJ}FP-8y-!OrU+1TUN0e_sQd!vVWIU96K^% zSIVi6vn$u-g%*_t)R(dCx)_?$4Srmz#*|c8KUn2a9;)RK50MVz%9!lMU1>Jn$eAWj z4_DJh^R(iWj_{usizg9Jnqo&rM$|9*#C~B<@;4S5*Y&drFEJNgJ07}|H0=gUEdu*s zy4rB6*A1Wb;Y4(I7Jm4`&N-@QFehX!X3xhqwZ1>GH5^%G%xzdU(~vV8nCiSgGRsNq z9*lP5S=3Rot!C6k279fOo%(xyV^rboCn|;}JnC@bcgZab1iF_ab}iZo&aZ=zb) zY_*H`X0$0%FYj7AaUn}ldV%2jLqtV$zaj2Y`sB9;B*yxh!1{)npgVt(HL<;lH-G=( z>kdm*R@mHVY5==~GF=Ibe;^B)T7OGFWB_+xpU#L`+~;yox+-b!@3h6pDe!*(uOD}P zIcj}89`E$}(OuJcq-MOKr}S9wSk*v_x#h6~Pph5cn`IvvTIG6%?DLw0SA@@}_I5tt zb|JM#gSNKywr(&C*JtDJHt~X2?EsoAuL4uHo-Jng+D>C$6}kWXNLPEW{e;f8MmtJ- zP>C^oXX##6C0WxIhrC!Ajo5NnHPbtf%CvEOJ?P6R=-c1MAJW;n^OJtrmY4oAKa(GK zI#Mt5%x_DbahqdY%2s#Ma?`DA(?_fVH_o%V58mk*l?;UFh=pIbPou|)rb~ZMa;{}yr zJ(poue8&E<^|JYmQyBtf7<`;uV86fyr1p8IPPB;3p38E{^xrm%wp?Plv$Wqwo^D%f z!v0|>Z+&f&OG0h-=#xreC<5#S!jF8{VKhx zal@57v#}i+xH0cxHX&14E_IRL`2(JSMiji@#H=d`R&6^p={w`|ELiV)>$B%6 z!gSrIRgAj(qv6?=TM;+X3ceot9bDItlb+R`$~Z}Jn$R|$XmYOJI#0RiYE|ddbEH2< zwVq1OXuWh>?@%*Wayzf)muP-_r6BqUTh2vod= z|L#-|$ebKl0e<%=XAA#Tv$4T0{ARwJ`3F8$)0CG#4tp1>Ru5n|kGBRour~C)?x@>s zwW)5mj4k*6x_kF=O_zhr?8o^I?7$gj~?um#R=#{V&s&ZbrQ?mP4cP@rDb diff --git a/resources/sprite/menu_1x/dark-logo.png b/resources/sprite/menu_1x/dark-logo.png deleted file mode 100644 index be96d3c13cf16794f99cf8c611d33334a1360622..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1403 zcmeAS@N?(olHy`uVBq!ia0vp^2|%pD!3HE5C;ztuQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS=07??FOLn2Bde0{8v^K(3-T9Ob#X~hD#969RTqa;7NqJ2 zr55Lx79|7YBTX5m85nl>EdnV7y2i>SKe;qFHLt|e#a0O@qL-4HV&&@Q=G0%ot5o-U3d6}R3*d*?M9h_q;kpAao#t!lZDGi&MQ ztZi=vPY6Dcxx4iAx>e6O9_q+6-kQ`Ix5ECs1B0pYrOB#BX>xKE+XOpb@9JxKx#57o z0R{;M81Cu+@$;$aHj807tU+w?FnA6P+fPA((@fBJZ%2%h_aJ&-=E!g?qAV`$$CHa zqg#{}%?`Fc;(D~@P*l5@#oHA}pQ`fx^|80yC&RsHy6`>-p0%QOH diff --git a/resources/sprite/menu_1x/light-eye.png b/resources/sprite/menu_1x/light-eye.png deleted file mode 100644 index 64e37bcac277d204927c2cc286a918a01c1b5817..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1794 zcmaJ?c~BE)6c5N%4wbVa*BTL_7;=yh66FXvfR-R~8L9|5HWDG(kSr4JOQnER#A6Vp zqB1xZ<*0xl76SvKh=5A1(pDiLg{c%Nb}Dk%4TAO$>(1o+$)lJpr=}Hq5+Y>1HF^P z#<8VzFh=B;ECWN514H@Av3!aE?d1tlfng~Xi%m>SbV+n|fn6SAmhpH?Blr zfO5V}B!xwg1W-rh@}LCR1C20!SAtl|X1@m@DCfD_GG7Eaj6}DqRM0VMrDVL2)b7 z3yOhYNFD=80XltYT7V;)%NI%1MkjTHm-&J+(SA_Cl0jl%sY6uJM_4dfG`bJnjmaYU z(2xpjutQnbA?S0z9Qq|;Gq!FG&99lKq{&dxz z9N|knV&-CzkkH!(l&lHNI=gsu(lkcbj@bBY$dF?_n)J|waul334IE2P z0*V*F(h_s@7#-(imL*qi)tS(m$WODaNqRM_cYSu&pwse7X1XVs`bA7-Ut%q8U6xbo zaaN0AyZM~v;CiJ^#?XGdff@OAVfDV@mVrF)k=_MWW?@^W)R$Jk%diE) z&%NAb<~O9(Pw(OtL^lJv19|04i`JAA4JYqK*3A62$&H(RLK#jiYt%EjkaR%1z18A) zHoG(rocX%L%V#d7`EtOB_IfLuGr42J81seS&5g+iCoSiaX~pb$t5-i_w8v^^Fh>lk z+VXm|o{dL!FBV!@33MmtW*2nH-CL}V){LKp^oeWwcAw5_$VWYVTX9h7Tn~l6nHuc5 zx~HP+=1&0|9?Figr-QWhm8hFt(}QutZ?kt|Yv|?cLI;oQKEHADHt*b_@9o_EydqWB z#MYFi{a~!|-OgX9qii~=!xH@Xn+v-zI$is0M|8O4M}w3x&YC$w_Tx^lK0{cC_Zbr4 zyf3DeqHa}$?Urw!AR9i42x!tbd@!{sL($;iY8hwh1vmvc_$NqFxpji#Nt4?uo4W(n zTN5;RlNRaDWuq!0ekcyr5^vl1WK^}<_6BQLWnO~MYoS)iy$UI&#K4nX2WiAdR~0Hf zdc2=>zZUc}&ZbxSv{l=_l96Yb(`&E1wywPAix+Mv?ddy_pP^;2^C~IAtceyj(20(= z+gx&fG-iZqv|IaXXEiy^;fDtk7IodeGi4o$+@{K;YqwRAh5d)~c*8*#?%229PZtp) z+6!GTM?er~b0eNTOWK;2R0}11xAtv%fp)A?zu1s>AZ;z2*;Q^lkn=RiK|ic~?&n8U}fi7AzZCsS=07??FOLn2Bde0{8v^K(3-T9Ob#X~hD#969RTqa;7NqJ2 zr55Lx79|7YBTX5m85nl>EdnV7y2i>SKe;qFHLt|e#a0O@qL-4HV&!6PXkut=?rLCU zWNB#VYHHzPV&H7#Xz6U^V&H0O>Il>8nO9trn3tRi)0>IV>w;IWm2**QVo82cNPd0} zEcOC2@=NlIGx7@*oSnh3rJ&)Pn4Fmh64V3*Fx0)NMVV!(DQ-pixeDMAvdYBb3RgEr zXD4SfM>kU^N1zW(oD9s2+?;_a!Oga2RcR{6un5%4HE*U zArKRuc!3;v@=whJruiaZ;?9(tqzBAi%ROBjLn>~)iSEultRQkEQ0xU)<0~Zi(hho_owvC`^mRl)u`yx%ik7r*5$s_>%CC9Zm(Bw*YP#_S^hE) zU;Iux_EPu$!!1Q%C3>-<3k9wG3u}trCEel|T6iHQ)9$`cwUOc4Lcc3qPrvfj?p11U zkXi4Nue2w+#VzJvVbfp=$Bg-|33e`ds2>vS*t;A!Hp&c zi3@+kOeW2mdN^#3>SXcm2{PL+M8>fBOtTHCuvjGUTpK8sx!m>Lng0(g4}4prkdhd; zdV(Ial~8){G0wKfM(VA~#+4g6P8M>@b~;Oh3NSDi2;XDf^`-hxL{Tf_@5Sn=36t3p zxSJR)n6nmsSR$5=&k>1DN|mK%C~~eyDK>^C1tJryMKq9cJze0AIlB|f&??3!!kU3<)(7*`8`tA0NYz#LX^^6`DJ~{&`%sgHFT-G@y GGywqMwc0fR diff --git a/resources/sprite/menu_2x/dark-eye.png b/resources/sprite/menu_2x/dark-eye.png deleted file mode 100644 index dd28bf3a8cb98aa5ba9b09275f23577c8e1c5668..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3528 zcmaJ^cT`jP5{@(z6s3w3AqMFs1rn0b1QL3arXr#t36RAUk_ZHmW>8p)fPge9Dp)8= zTTzfE9h4$UQxrte1%w4e+R6*A?t6di+k4KvznMAn&3seNx%b98IarDa%L)Sk01;~| zoHOrq+P;B8yl0}=Vkz&CVdIanUFbgSAOe#NFeTBw$zW?L!I$hzCXhG*on%7*fM1Q` zdW?O{-VRHoQ*{X2K03iv1`iDY7@7n#2ti*WY=0xj zU!;!NJAuvVOfnd$gVH9#;Cf(vj1C-$(#Pm)fe}0%3PVE?Fl`tHi`2!!5a1sdgqMv; z^1(XeEPmwTX+{t~Hk*NkLW6>Wbb@qs=uBTI9D~6?VF)M!q0RHqW^rh2La;WCrSvlb zj?5x5DGWA+P6Ka8BzV)$vW*}-rhk<{W!T&Q9hk=Y(I{Tapuq$N6s`kvvOjjRofiyFN!|{4(U6?6PGS@XTg;~Hbu%B3K8jDS!5y?NXl>cIJ|BA($Gsy%t zo#{%apZPgGCqFuy&hn!(z~<)Prv+BCClD#LZKL{jgMaWPGbw>&k_D4a1%K}lmhulQ z(B>!%9F0fed3AiRz!Z%#$02b@yq+l%ri+98z>@x<`X5;R|BHq4$UwKp`#CQQDp96 zXzpRh{B2{aLTn`bWSWwG_ZB`8Fvo&g6qbG0^a~^L2;m6z&vG6 z#7L!r-7?>pPv(73GvDS3?mN&Li>C<<~83Tv_3|09C~kqkHwps?ATi1a2Jg@?e`@(LsU`Au-x8 z>{EGP2NC!HoAiL65Y(Kgp16^@04UgbeN`%^&p9iC{c?446n9!tlzqKoUbFeMC|rIl zOYdS4H)XHMDssZIxv8yw9Y(ZY9hMV479wu!p7;q6b?K!L-z~lYsgmf2ddjb)0>TV3 zhJ@wm>ksEz0@dU@uS$FtYq8c4!#ep8?KX_zO0hEe+(M;r#vu3 zQztU7GKP`0Km5gNsQBioR7MsXxLKZ>9oquRuH2^(2ULA7?vS3xK<6!$cmJ^_;MdIJ z@=Mf!b>1afB!xU@9K0a^OdD4X(Y(RDdwIhr>+p)N^snWGxBZLdpFyKQ7c2IpwVNPB zfyIA3D1)PtU?UT+3D!SEWD4(NdUayqd4pkU-)+W z^mP)PZ=@G~!XtFfzlEU>2?!DAy9Wz>sbV?v@st^bdZ;5IN&1&Xb+4S_)Y|?HU9w=+ zP2fz-Z6F{tr0PGX0Q6%$%w(5 z)#d{FogW%m*@c_gQ5)xRt4>o%cdY7SzinFX-m4Ob|itnru9d`ZX-ebNfe{_#+d7h@s zT*2_PeZ)#hQ^1wvKr2jd(>(>5uT8NnacP6IVUTi|ROA_l+Wlj%;GfccLYicQm4rj> zhh4+Oh;|>tk4QggT0&mh_ZVN}@bH=12`+x`ec!C!UhN9O6h#QU*84F5uv%y5=VxH<^SCwIs(%4R$N9E_EeEs4FoP>ie zkHwWc+hQS0?Oxs`nT4J+qBzId+72bZDDL9pD!b#c%VK*lZ@i;)5PLeSN>kL`+8!xw zc`CPsBArnewoyAxEAdx;?MAwh45y8~y4g8994qqtjoo-{lI*`pewXdYU+S z(<1dsPWv@}DmBI-Y57WB^Gu55S4z4NN2wW1*tZWiUa9kXzx$Y&_pFxf0a@iB*}RAS zYlY0+)A^R_?~n_uP!R`Gwa_QiNMq?Irv09}Xt)YzwyW&wyxG*9X#BPG(v_jMH^6Th zH;~i9XjwO6UR-EmXi`IxcLr;3oJvJ!{egEzBR08vmMM`({F1dVg5Dg!*@04*=Lji7 zj_@_rm^yL)D9S+wvFhNgNP~opwBMY3yYze4$pbfDP2Pzx(k?tDhK1WIl^uiUWLAEcuvL|5p?u! z-{&qoCivLtQ(vTP3`i1RTlB{K)5`j5b(D){s(b|3iHkxd$^P=$yLtsiB*N}oI&k^C zD+R^aGm=~deZOVSIH@=+SKrk0;G3XHPzj;vNa2vi4Q{rOh+OWD3YB~vqwd>rCTG$2 zFnlk@2j)ZruIaihXCnY&pPi39uUMLvsgrXaY%6{H?t{$h+-SI7Yr5^lZn*5>E2C=F z75lgf16m0k2FPdpEhpu42M1&)Z)QsCpc2qmJLx-4`AK-ClCtS#O<~VVdWaiJ;qegq z&Qu>+&b!H!t9v4~Uggi;UNv^$)B~6Ig{hgu*i7y&Z;+_+_-%zF@|4Dq^FdJ4-Q*cz z@ikw;p|KtsFS0x2(i1^9YmFD|NvortE!E%wGUD#QM-gM;p!?X>4d=L>{mc`Rn`gUT zkU1v~dbU2c>1?k@Xuht0qQ`+2clAWgZ4mvESRWrS8~k8U1g+N^VwWT zZlckSuXIVV{A17CeGn5p%kwxDrRIdgEoIOZmKzJTAQ6+ZOR>7+NcU>iMx)k9!?pPO z8}=^?)Zqwx(j6&*i+c@avpP7ky#=2M*6QmrbCn{uX~qJ{6ONB-3TibyJOp7+Jugka zjp;r41s+qMjYmz>-w%_zB8=4*4e)iFsJ`3H0$*Q6(E9aouYZ4fQrBl@DC>Qr19-`5 zD&;AHF_&gloKbTpz5boMV?M=Q;(|$b&Rnu^HSUtCo|{hh?-Oe;m8`vp87qk84UH#$ tj|va9Z}GR0CbxW}{_O+Jp7+Ap0cec&kEVl+IotnM)_4b8nc3;6{{Y+R5<&m~ diff --git a/resources/sprite/menu_2x/dark-logo.png b/resources/sprite/menu_2x/dark-logo.png deleted file mode 100644 index 0920a8a6ec77e85d03a2d0a09800cdcf73d23a57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1758 zcmah~c~BE)6kjD+4iT&;PK(QettiQELKc#h2)U400yI#Kqo`rCK!DB0WFraVMK5uz zhz8qQlNmew2C6s7DTZUN0f0uY7t9Yq1p`+=^xha%)ak^Z{F{{-#d2p zKy36n54UA*004L>B4sM(yuiG%E^`rL*put2US*I64j~ZJbP^T3^ z8&M^qG)RdQU1X+_h|7$Q$1~G#p%w~T3x--SCICs$8qh+f>rI$N1Wm=o7~O7$A#lot zP7^^dNU4>vpp-HaAj%15;|P}zh6p)aG&n>U5(x5`JB$cm9>PY17#f5jJaGDfm~2LE z5~h+xOy^>5A}EEX4Hyh(WMptMf;f~h8RiOwLKxw}JRY0zV4JLZT4Q1BO@59DGQxx# zbp~2T=|Ou$O(JEcMG(XEMG2%qseBn&Z<=lt(=yniF~D370+Xb@t|@O5ts-VXOaw6&j#j6|q^LlK1citrP>F=g zmGcEbh?vo&K@u?%fd~-?R-rf18a+-pu(}zn@U>V>Y9ur?WsIk&bjS2!Qz)7;rBDV? zDxI1ZxKgRXb$Yuoz~10#zJyV?lh8&ODH5FO5T<(t3nWCsN5lfIT!!$cDi8~Tr7~28 z%K2gx36eq6SnVsSpT_e36ALqBVEcIgHExHA*&)07a(S7{%k?Mp%+4E`U;xyn+MMe2amO`DBm3Ee(a8V zf%S*9^xWU-CdsCd0e{w{`1!D}x1TznsGpsEe2ofl0rmm^E08t8gBQEDwH)rLYTHp< zmwIJw|29)2HP%om7|vNb@`2!;4Vm}%D1X^qOODu*ien}$k5^A*);*GRRO1!vI==f+ zaJXljmWDOP+e*w86C=6vFNEH}dqzF8{F~}L&|9aj-D%reS=G3tp=I|#GynU%%hCtC z%F5CjZSx9eH^sM}pOyEdtMzePe{@X>JibXG4J-|fDvUwRCsc6heelSkD zRhUN>m0)VYnv~K{b8?saUOVoe?=;lLeZN#1xX~X!bo`A2g2LOCZ)cy2>*=YprS9?O zyMAN)X{=;LaoNyiE0Dd61+ai{fDzdTJp$BoNAjOXpJmNTgx+_0bbpRYh3s_Adh$yL6xatJJIc;N9Wp$v!7-#F5AAHGxOVn+Ce& zybY25W5WF4zc;#9$wxy@n@8*4E5FUEmhc7>pD7Gm7PcJ4Tyiv*x|h0toXYS-T^yU> zwWQp2>%5WPM^~+%fA|#`9{ASg{Dfxn{s6B4N2OEcvhQX6aj;CpZJC={R1Mt!mbG#| z7|L-E;}=D)N*`U&6@Bh^|AMk{#JQm(7wsypxFWso6iT->(k*?x;C_7!#r7&G4)c*4 zy=$(nI=i{o`HMPq(oitx-uTYG-qij2u1)MAbE}J?^VZM=n^hQI6ddEUM%iacx1RZW z(?CQ0u2}J<@h8_46Hcs1@Hzd-{FyetPTRg`mn#Br+$O=jPZORoKO8_IkCs(Rwtx5! DmM?+j diff --git a/resources/sprite/menu_2x/light-eye.png b/resources/sprite/menu_2x/light-eye.png deleted file mode 100644 index 267ba6c1cb4873ae047ed702acc430f7cd280a22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2876 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 diff --git a/resources/sprite/menu_2x/light-logo.png b/resources/sprite/menu_2x/light-logo.png deleted file mode 100644 index a9710c8857f294fa148a267d1f1a56aa85ff2de8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1699 zcmeAS@N?(olHy`uVBq!ia0vp^2Y@($gAGXf@2YYEQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS=07??FOLn2Bde0{8v^K(3-T9Ob#X~hD#969RTqa;7NqJ2 zr55Lx79|7YBTX5m85nl>EdnV7y2i>SKe;qFHLt|e#a0O@qL-4HVr5|NVs2q>W^7<& zIl>8nO9trn3tRi)0>IVYlK&?m2**QVo82cNPd0} zEcOC2@=NlIGx7@*oSnh3rJ&)Pn4Fmh64V3*Fx0)NMVV!(DQ-pixeDMAvdYBb3TL33 z4UEk#-AtXFfIcv>Fg9=mvYd^b91YwIEDe;PdQ-6Y9;(+7r(S)aWAs7Mixk~3Az&H; zG2w|9$bl#S)I4CCF9Ig+>i^a%z&s=9>EaktaqG?9*M+kkL>v-tK4!bq6dmB@pn62r zLUl*$l9m-L%UMF4t~f;%aJuw->~V6~+>si2usrQs`lTl=E(y6E!mviU{{(XUJY*+jeF+@r@d zt=Dv)$i`)74&Sg?&wNZS>VDE(5C zCshkMJLn4O25i5tZsvb%z<4M6Pk`**!TClo+?X(FuP^} z7YlNz@jSP^9MKWd?R}mxsdk?2Gnu9<8~copc%2lgS1Jk6JtoIE?azm$ewX@rk`i3@8I*T^Y2G}m=dYuvhL^w&yVx#@AKdI>8z%iZ`2d2 z{yO`?O7Alfnw>MxM@wF|-zs6H`A@27ZjGE!wzcz`DQEs3WiRf{lzy#L!P|aDCRs5^ zm!l!n85*$(u``7C$lUt={`GSc_e{kDQ5pZay#G36sO$PQA|m`iZ-K|2JFAXues+7o zQ(o=>U7v<7hL@Z(e@r~wyd*jJPtpUwX|J6(tU2~rHq)$ diff --git a/scripts/celerity/generate_sprites.php b/scripts/celerity/generate_sprites.php index 61f63d155d..ccdd194b36 100755 --- a/scripts/celerity/generate_sprites.php +++ b/scripts/celerity/generate_sprites.php @@ -27,7 +27,6 @@ $webroot = Filesystem::readablePath($webroot); $generator = new CeleritySpriteGenerator(); $sheets = array( - 'menu' => $generator->buildMenuSheet(), 'tokens' => $generator->buildTokenSheet(), 'login' => $generator->buildLoginSheet(), ); diff --git a/src/applications/celerity/CeleritySpriteGenerator.php b/src/applications/celerity/CeleritySpriteGenerator.php index 0dba6c346f..8c09bbc59f 100644 --- a/src/applications/celerity/CeleritySpriteGenerator.php +++ b/src/applications/celerity/CeleritySpriteGenerator.php @@ -2,58 +2,6 @@ final class CeleritySpriteGenerator extends Phobject { - public function buildMenuSheet() { - $sprites = array(); - - $colors = array( - 'dark', - 'light', - ); - - $sources = array(); - foreach ($colors as $color) { - $sources[$color.'-logo'] = array( - 'x' => 96, - 'y' => 40, - 'css' => '.'.$color.'-logo', - ); - $sources[$color.'-eye'] = array( - 'x' => 40, - 'y' => 40, - 'css' => '.'.$color.'-eye', - ); - } - - $scales = array( - '1x' => 1, - '2x' => 2, - ); - - $template = new PhutilSprite(); - foreach ($sources as $name => $spec) { - $sprite = id(clone $template) - ->setName($name) - ->setSourceSize($spec['x'], $spec['y']) - ->setTargetCSS($spec['css']); - - foreach ($scales as $scale_name => $scale) { - $path = 'menu_'.$scale_name.'/'.$name.'.png'; - $path = $this->getPath($path); - - $sprite->setSourceFile($path, $scale); - } - $sprites[] = $sprite; - } - - $sheet = $this->buildSheet('menu', true); - $sheet->setScales($scales); - foreach ($sprites as $sprite) { - $sheet->addSprite($sprite); - } - - return $sheet; - } - public function buildTokenSheet() { $icons = $this->getDirectoryList('tokens_1x'); $scales = array( diff --git a/src/applications/config/option/PhabricatorUIConfigOptions.php b/src/applications/config/option/PhabricatorUIConfigOptions.php index e73b4ee780..00bf33faa0 100644 --- a/src/applications/config/option/PhabricatorUIConfigOptions.php +++ b/src/applications/config/option/PhabricatorUIConfigOptions.php @@ -69,6 +69,14 @@ EOJSON; " omit this if you just want a piece of text, like a copyright ". " notice.")) ->addExample($example, pht('Basic Example')), + $this->newOption('ui.custom-wordmark', 'string', array()) + ->setSummary( + pht( + 'Customize the text next to the logo.')) + ->setDescription( + pht( + "Allows you to change the text (Phabricator by default) ". + "next to the Phabricator logo.\n\n")), $this->newOption( 'ui.custom-header', 'custom:PhabricatorCustomHeaderConfigType', @@ -80,7 +88,7 @@ EOJSON; 'phid for a viewable image you have uploaded to Phabricator '. 'via the [[ /file/ | Files application]]. This image should '. 'be:'."\n". - ' - 192px X 80px; while not enforced, images with these '. + ' - 80px X 80px; while not enforced, images with these '. 'dimensions will look best across devices.'."\n". ' - have view policy public if [[ '. '/config/edit/policy.allow-public | `policy.allow-public`]] '. diff --git a/src/view/page/menu/PhabricatorMainMenuView.php b/src/view/page/menu/PhabricatorMainMenuView.php index 25dba1871a..f353012a5a 100644 --- a/src/view/page/menu/PhabricatorMainMenuView.php +++ b/src/view/page/menu/PhabricatorMainMenuView.php @@ -298,7 +298,9 @@ final class PhabricatorMainMenuView extends AphrontView { private function renderPhabricatorLogo() { $style_logo = null; + $logo = null; $custom_header = PhabricatorEnv::getEnvConfig('ui.custom-header'); + $custom_wordmark = PhabricatorEnv::getEnvConfig('ui.custom-wordmark'); if ($custom_header) { $cache = PhabricatorCaches::getImmutableCache(); $cache_key_logo = 'ui.custom-header.logo-phid.v1.'.$custom_header; @@ -315,17 +317,27 @@ final class PhabricatorMainMenuView extends AphrontView { } if ($logo_uri) { $style_logo = - 'background-size: 96px 40px; '. + 'background-size: 40px 40px; '. 'background-position: 0px 0px; '. 'background-image: url('.$logo_uri.');'; } + + $logo = phutil_tag( + 'span', + array( + 'class' => 'phabricator-main-menu-logo', + 'style' => $style_logo, + ), + ''); } - $color = PhabricatorEnv::getEnvConfig('ui.header-color'); - if ($color == 'light') { - $color = 'dark'; - } else { - $color = 'light'; + if (!$logo) { + $logo = phutil_tag( + 'span', + array( + 'class' => 'phabricator-wordmark', + ), + (($custom_wordmark) ? $custom_wordmark : pht('Phabricator'))); } return phutil_tag( @@ -344,16 +356,10 @@ final class PhabricatorMainMenuView extends AphrontView { phutil_tag( 'span', array( - 'class' => 'sprite-menu phabricator-main-menu-eye '.$color.'-eye', - ), - ''), - phutil_tag( - 'span', - array( - 'class' => 'sprite-menu phabricator-main-menu-logo '.$color.'-logo', - 'style' => $style_logo, + 'class' => 'phabricator-main-menu-eye', ), ''), + $logo, )); } diff --git a/webroot/rsrc/css/application/base/main-menu-view.css b/webroot/rsrc/css/application/base/main-menu-view.css index 8be3a97f5e..7496e9a060 100644 --- a/webroot/rsrc/css/application/base/main-menu-view.css +++ b/webroot/rsrc/css/application/base/main-menu-view.css @@ -41,27 +41,20 @@ } .phabricator-main-menu-brand { - display: inline-block; - width: 148px; height: 44px; float: left; - margin-right: 4px; + margin-right: 6px; padding-left: 6px; } -.phabricator-main-menu-logo { - position: absolute; - width: 96px; - height: 40px; - left: 52px; - top: 2px; -} - .phabricator-main-menu-eye { - position: absolute; + margin: 2px 0; width: 40px; height: 40px; - top: 2px; + float: left; + display: block; + background-image: url(/rsrc/image/logo/light-eye.png); + background-size: 40px 40px; } .device-desktop .phabricator-main-menu-brand:hover { @@ -69,6 +62,20 @@ cursor: hand; } +.device-phone .phabricator-wordmark { + max-width: 112px; /* iPhone 5 limitation */ +} + +.phabricator-wordmark { + float: left; + color: #fff; + font-size: 18px; + margin: 9px 4px 9px 6px; + padding-right: 8px; + max-width: 175px; + overflow: hidden; +} + /* - Expand/Collapse Button ---------------------------------------------------- On phones, the menu switches to a vertical layout and uses a button to expand diff --git a/webroot/rsrc/css/sprite-menu.css b/webroot/rsrc/css/sprite-menu.css deleted file mode 100644 index 61e1240b07..0000000000 --- a/webroot/rsrc/css/sprite-menu.css +++ /dev/null @@ -1,36 +0,0 @@ -/** - * @provides sprite-menu-css - * @generated - */ - -.sprite-menu { - background-image: url(/rsrc/image/sprite-menu.png); - background-repeat: no-repeat; -} - -@media -only screen and (min-device-pixel-ratio: 1.5), -only screen and (-webkit-min-device-pixel-ratio: 1.5), -only screen and (min-resolution: 1.5dppx) { - .sprite-menu { - background-image: url(/rsrc/image/sprite-menu-X2.png); - background-size: 97px 123px; - } -} - - -.dark-logo { - background-position: 0px 0px; -} - -.dark-eye { - background-position: 0px -82px; -} - -.light-logo { - background-position: 0px -41px; -} - -.light-eye { - background-position: -41px -82px; -} diff --git a/webroot/rsrc/image/logo/light-eye.png b/webroot/rsrc/image/logo/light-eye.png new file mode 100644 index 0000000000000000000000000000000000000000..19d28b72e72c97b3d35380f0f857cf7b7e423650 GIT binary patch literal 1350 zcmV-M1-bf(P)l6RaMcoPYS_8XQ5N*S*S|s z>=O!x(M7FgWik`gRW;$p$0>FQIeS@=%mphEVv20Gu@cl(8?UTK3fikSSlubLm)aFQ zYu)S<3Ra`5>B{8^SdA08g|``m3qX!Ryw0s0%gW{P2dWqmv{UsbWIG-vPdz;DWjlYO zj0BU*1~YIjqe#jy&J3ovxGr{rGQlLAPXSvz&h#hJl=L{|wm*|pkFEHHwEV)xX#_=d zxnO**LdWGhJ{p_v@X)!;AAf*?nk=*MAtv7C9M)y#az~|E?qFut|-%z@s z2n+HPk`bKEJoUyi59crf$xqCaUQp8;Oca+BgNe#*i5{wxaEUUQg%S$-t*P`LXBNF5 zzd@LlClV`4!DQ(1R0{=2Be9ytTInyRb{przoBT$rT+7z2|}sLvK#r z17I+V_kVUY0E0QsG&$(t`M6@dS67gEVtPg9GB!7+!bp}5KiQWG!<6ZBQzXhy%wg_2 zL5pF)9Q=gjJlT?hq2m2KOqGIqea;6}Q3}>Z)$^EA`Kp!CK^2?|Pgm3g!!Wx+4=z`~ zYDIJi+SGklKoUhKksd5vJ;SwOdOoBcmuZSD14$H}M0(%Q8tF~Qw~PqmGA`ccxiII8 zXSt2-zeA2XMTDLbI?c(v6p z$V%ue5*ggilf-e^ldf=m25!Z~vqEqYbXJNBUWd*EVsszR5T(pYk;V;3K4%IsWdd}r ziwk~_MlNhf#fPco2C+UduF#v_FeQh^_i@1z8iT@y2wl{&nOqll^c2P!gU~3Y5fq`8 z)nlu-Q$x^VFKBy-ML39B4vwvVN-e93b&E@E`;dg;sMsUW9a&$KC3ap6E zB4YF&#JP>0{`H0U4M~v=Q@v)YSiGoT!^Bq{%BpO{r4%qRl=c)a>MBg5|EO~!up?=> zP8{ZynE8omg1s&F1Lnid?4l=cgWrsQWI__0lMMOs@9pv7)kPay(rxo#MHv1lLmboNKQqFI@c3 z&N-CsC@Or&A}qvZRN2V5V|I!}8O+>{#9Hxr+KkQ0)A$wPZ9whs%4-|?Z9E&(n_oAv zQ9Rz*o0voRnopUo<`r@g0gteu>5w>1(aS*5XA`B_N{{$tGNrjOzN(jjqQ@%E0AM9t zT`wC&myJ@-+8|p!{X!o>i}jQi4%07g){5{LGg?iUo=2fUdWxdU@r<8n?|2-Ko4uaE z_-|e#IFmW+?wXx5jQ^1{uaiAY%R88OhqG9V=|p!e&f+ahyw40yW1yRh(aG^0AB@d+ z{LWk4#Br=dx6`CalO|1?H2GKa2cvX%vGt^lX#fBK07*qo IM6N<$g6fcq&;S4c literal 0 HcmV?d00001 diff --git a/webroot/rsrc/image/sprite-menu-X2.png b/webroot/rsrc/image/sprite-menu-X2.png deleted file mode 100644 index ea92e0e9cfb48db956cfcecc2bf4d8cfdaa4cf32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4333 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 diff --git a/webroot/rsrc/image/sprite-menu.png b/webroot/rsrc/image/sprite-menu.png deleted file mode 100644 index bdb250c3c1953d8ddc93d353f37f1f5a9294dbf7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2173 zcmZ9Oc{Cf?9>*ghL}?gH)lw}c+S-CrK`liw6}zJ8XoQk3D2lX}5QbPgv|gs0RVuw zy`8lyUw!!_S_I6G{^wVG000qdduvN~+{AKmh<|RZ97A6}zr!fUUoYQ2N7YtmA)BFQ zzoml6ae&$C~IKa5xV!^YFq>;v?ov(*qeY8`oMzpHiF@eTGlttG4MBidu(`zwoe z+^N9gw$7LuUffvhe%&VyX`LHhvOF&T;N{1#)=S!ac{MR<4i|kW_k>LLo2yH2oynot zo>=zs4r^kx_-#<+7dg*%P%!M1WJp_(;ms1)g2tu~{&zzdUNEn*%7Ga@-}~C>bplBx&p812D-n?EOdLeHbWU}v|z912icA}D5RWu4h4#Keg z=G>*nZ!Dy6bI;}rrjoqFNpHRwl5(f40v1c~TZh&adDeY6DpbogGW7Ip1} zx3%Gw!5Kc4sU+%K5Q5PTsYVn2^=*#>7($2okaAJt z@Qq9v8_aJ`Mz$G#|4P_D=jb0+;yYFoL1-Nc zU?tH;0%DdRj0SEbW_hrAONI@HE&;Y_D!+0-N8%yFP~(C}>`9t58>~VXZUDSvY-lBF zpaTWds7ekAAr^~*UVznvw|W#{x@jGZQTq12)L4ja-`?t;PYR-I)?N;kN|6`IF?_u~)eHdC^(6(qoyM)xH)`+{?2a;Ep>%vty!u?-HTA+bZJ3 zF8F-fpBxn&Om|C|&0W~jGnp<2}<5xBNac8IeJeGvuv_JkZ z#g%eOU{lwf@jl^TE9+@{i8M2bw+Z-DhhJG&$R$QMW8)JT(k$8_`rj ztxdyO;{%`jjCF`Y>_=E?g=p;gje(~@kPW$QDxEc{D?}Ltnl=p{zzD>hn5Y-1LOl#2 z1)V1|DEnHy@9HWA1Tlx686FGPXF<$#_fAc6cRCj2xG8Mjq2U8d2GS)!ec z&N98f3@VYs7cBFRIx<-1J*(7spWz_6wW2kqZds4OwP9j=RhntvR=R*x01I#Td`7o- ze2DV#Vxf_RxIDcTQVt%ElkB;g%u8|SD)|-hGEj97ATo_Ft|Ez(bk9xCUT7l^+m$5w zTsuZsl|0lJ=;Kqr#W_GWC^c$lKiTVNA8S??3YB+R?2dv1Ibu=^A2&DkFz0x*R&tN! zQYkjNTny(@IML&HO_$yglKjQ%_9#InACZ>GvKrYEvFmt@48o|>6>Fmu)*rV}VAg28 z;TZuH8|s~;Q1Oh^=FSq9QnBwoW7s6;dUqO3kf&r(efdl`1>9?mnsHjn8f@5C#SXkk z630A2$PimW+HWhwnsg-EQHr~yMEjfGA?AJ+&qzt0@4>pGMWQ{I=H%hfYZHfv(^?1P zhG=R|ea5zD9&LWOjn=rB0`DD2u!9c>QK0wznrosq&j15c@oo;nHj5Iy6vR=3zcZzZ zo8Cagf(Gxwg?cdOV~UXru)atBixaa0W^QV|$nXZCz<)v6Aytd16{9GPu{WDd@ z)R*ZQuc)9Y+j>&e_~3*G(|b$C`?E+!W1l32JcnW_XRDLfJ;VL8tH~9i!*!U!rusfY zJvPI}XGBP5rhBh|1o%L?^9tX&t)EVD*=Sk6uAV0}z1wMZMp1E2S~fcz!E+ije@axa z!JAMc3Esm4t0r$=(2hC!8dNEIjuEvq8}@405?JUGZlX&7UgpFk=e-DIqP);m2<_hG z1SKa0BS64L>fxh|8RwYDTL!+8aZLIhL