From 2f605497be67a3b1735ea4329de2219f1bfa2935 Mon Sep 17 00:00:00 2001 From: Juan Cruz Viotti Date: Thu, 15 Jun 2017 10:11:49 -0400 Subject: [PATCH] chore: use `electron-builder` to generate macOS builds (#1511) This commit makes use of electron-builder to replace what our scripts were already doing. Signed-off-by: Juan Cruz Viotti --- .gitattributes | 1 + Makefile | 47 ++---- assets/osx/installer.tiff | Bin 0 -> 90964 bytes package.json | 23 +++ .../electron-configure-package-darwin.sh | 146 ----------------- .../electron-create-readonly-dmg-darwin.sh | 60 ------- .../electron-create-readwrite-dmg-darwin.sh | 148 ------------------ scripts/build/electron-sign-app-darwin.sh | 100 ------------ scripts/build/electron-sign-darwin.sh | 62 -------- scripts/build/electron-sign-dmg-darwin.sh | 75 --------- 10 files changed, 35 insertions(+), 627 deletions(-) create mode 100644 assets/osx/installer.tiff delete mode 100755 scripts/build/electron-configure-package-darwin.sh delete mode 100755 scripts/build/electron-create-readonly-dmg-darwin.sh delete mode 100755 scripts/build/electron-create-readwrite-dmg-darwin.sh delete mode 100755 scripts/build/electron-sign-app-darwin.sh delete mode 100755 scripts/build/electron-sign-darwin.sh delete mode 100755 scripts/build/electron-sign-dmg-darwin.sh diff --git a/.gitattributes b/.gitattributes index e9818105..d590a514 100644 --- a/.gitattributes +++ b/.gitattributes @@ -31,6 +31,7 @@ Makefile text *.gz binary diff=hex *.icns binary diff=hex *.ico binary diff=hex +*.tiff binary diff=hex *.img binary diff=hex *.iso binary diff=hex *.png binary diff=hex diff --git a/Makefile b/Makefile index 6d03b796..5334fd25 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ # Build configuration # --------------------------------------------------------------------- -NPX=./node_modules/.bin/npx +NPX = ./node_modules/.bin/npx # This directory will be completely deleted by the `clean` rule BUILD_DIRECTORY ?= dist @@ -26,8 +26,6 @@ COMPANY_NAME = Resinio Ltd APPLICATION_NAME = $(shell jq -r '.build.productName' package.json) APPLICATION_DESCRIPTION = $(shell jq -r '.description' package.json) APPLICATION_COPYRIGHT = $(shell jq -r '.build.copyright' package.json) -APPLICATION_CATEGORY = $(shell jq -r '.build.mac.category' package.json) -APPLICATION_BUNDLE_ID = $(shell jq -r '.build.appId' package.json) APPLICATION_FILES = lib,assets # Add the current commit to the version if release type is "snapshot" @@ -331,17 +329,6 @@ $(BUILD_DIRECTORY)/$(APPLICATION_NAME)-$(APPLICATION_VERSION)-$(TARGET_PLATFORM) $(BUILD_DIRECTORY)/electron-$(TARGET_PLATFORM)-$(APPLICATION_VERSION)-$(TARGET_ARCH)-app.asar \ $(BUILD_DIRECTORY)/electron-$(ELECTRON_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).zip \ | $(BUILD_DIRECTORY) $(BUILD_TEMPORARY_DIRECTORY) -ifeq ($(TARGET_PLATFORM),darwin) - ./scripts/build/electron-configure-package-darwin.sh -p $(word 2,$^) -a $< \ - -n "$(APPLICATION_NAME)" \ - -v "$(APPLICATION_VERSION)" \ - -b "$(APPLICATION_BUNDLE_ID)" \ - -c "$(APPLICATION_COPYRIGHT)" \ - -t "$(APPLICATION_CATEGORY)" \ - -i assets/icon.icns \ - -o $@ -endif - ifeq ($(TARGET_PLATFORM),linux) ./scripts/build/electron-configure-package-linux.sh -p $(word 2,$^) -a $< \ -n "$(APPLICATION_NAME)" \ @@ -371,32 +358,20 @@ endif endif endif -$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH)-rw.dmg: \ - $(BUILD_DIRECTORY)/$(APPLICATION_NAME)-$(APPLICATION_VERSION)-darwin-$(TARGET_ARCH) \ - | $(BUILD_DIRECTORY) - ./scripts/build/electron-create-readwrite-dmg-darwin.sh -p $< -o $@ \ - -n "$(APPLICATION_NAME)" \ - -i assets/icon.icns \ - -b assets/osx/installer.png +assets/osx/installer.tiff: assets/osx/installer.png assets/osx/installer@2x.png + tiffutil -cathidpicheck $^ -out $@ -$(BUILD_OUTPUT_DIRECTORY)/$(APPLICATION_NAME)-$(APPLICATION_VERSION)-darwin-$(TARGET_ARCH).zip: \ - $(BUILD_DIRECTORY)/$(APPLICATION_NAME)-$(APPLICATION_VERSION)-darwin-$(TARGET_ARCH) \ +$(BUILD_OUTPUT_DIRECTORY)/$(APPLICATION_NAME)-$(APPLICATION_VERSION)-darwin-$(TARGET_ARCH).dmg: assets/osx/installer.tiff \ | $(BUILD_OUTPUT_DIRECTORY) -ifdef CODE_SIGN_IDENTITY - ./scripts/build/electron-sign-app-darwin.sh -a $Oi%z1Lu?RCY<-@1tuXgcV2?O%mHEYWh*6KAD( z2#wIL(d)JoE__t2=d3SYVbEY$Z{VWeec<2sxXH-XK+K#O*S5{X&7jAwW6Pt{%-v9; z;_blOk$ZNQT4`Dg2NO5f>@9) zP^m@dE7R2COgq(hme@*@O9A%e3$ zWeXyYmhsVL<})97uqo*T$=w4a<)Ly9meHA17Bd^T)S4EWAaqJ9us}vxqAcDz9esKY z-4${Ty#~1jIyvGO#GH@FMlMY|!s{>F{mfUhPC|;8w8*g0WQepN7&0sPVKsUk=7kO$ z6iF3M4gPL5F7GI2+uh#97dE(WQsR$#Z9XS|?Y%{*vEsLtS@_2PJ!R5C;QKVc?VxSS z*~`%F5#xir~|82wa-L1En&nz^lWx-vn}ZnwTcFR)d*awFtW{`pre9u(+AQ05+HMGzVT z>K2+X#(DqW8$k?7n?_5=rJy$(;UZz%xPZ0>ailRGe~T`d2q+&DG!Z|LAN??s4yqXMma1h`TsG z48lYxGJI~#z2_TbKp+@|1oJAkJJ{-traVVK{?*y+r>3uc4FBj%^z*rxR+xjtYjK4v zbR?+e#rsYWZB-BGV@oftTXy01(E-|F4k-$6k$)9l(Ol_^LRZQ0ks&&kA{-&clOK}O zrqduD#h=GX2EZphib2y6gmz<3B6%?Y;Kd9lb}PtV z){RyZ*T?G9H_%^+a52_w`|W0CsK4j(*ocC>*ykUekr_WR-+Honm82r3_x7Ygf2BRt zCTOGW1YcfT&)P*vhb${L!0I2Jbr`x+$L^6_9*Fj4AKWBtT+g=US+7(GAyjm1uJR_& z6RYm;iK)_+qJS2`LU*;qX)q&~z|$-T>eY*z!{m%OsLJ!SNR(*anzkR#jJ66<<@Yu6H$|549Z z{I?N#6AmNUX0(Y`9exbW`LBZCQLelSa}peTUU_tr;8OFsyZ?I}^xh9h`$3%3Zyfs1 zs`qB9>Gr7KloaCpn!ZfGI(d6V|BSY;G8TIy7@&zMJBf?VC5;}D{bj6jrpc}b&Ku)) z0Z>cRKhFxQ>Iq_x2LO`*b8OUd+4nz>`-m?8{2l$a%r~l(z!v(-YwJled+4Z5fkSj< zKta0GR3P1}$#a2t#8mD?y3;+4_TK}#b3ZHvvBMRdHl&}spPIkxb9_0F+r0P@hB8Ll z0)RD`IdR4K1NZ?*bHVPu)STxwee#Z*C=!IK_6&RTP*3%iAueSC=v0utSg0&T$XxRa zh6F4?C~qqo>v;{(6ds}=$7<>_j4VwDtPo3jB6;;-c`VCKbIZb z)*}k7)RT`EqMA|mq=8~x5oKt1i*It=XxXY;CY5dgbkw{KIuV|NCmX_(A>=!_4c6OPo3b^f>sNlsXHSxI68%ukQV^jbjbWWOVa&F ziTiK{KnCS-NE{ejBn=Osy1SfI+HkrntQ=($7UqW?UA6N22v}NM;ydM96_q0y%C!A4 z<^ExAPBbl{IMx}%#4B~)Tp2-WB;Z1`6b4XBZs-n#Ja?~^k_ryUY~bGVhb0>JYFBI? zd-kcGLD&vj?pVk;pxaVG%Dxs&@xm3bkQV6YTFRl{AK-~h6@Lm`kq_jId+OxG7!MfP;=;g>L82z_Jj4f)cU)EQ>cjC{j*#JYP$COh9N`$_r?) zpxU;Cn61Yk*0f^)pOR%t{2pE;z&dYgk*&AyLSc`w!~r`7OcXj_j&nPyrv?%;%f}3S zZCsEAB^=;Zy*42d{_fW4;`S*Z!*ig5m@B8}#qI%!s3lc$J6(rOS#tySeY{9G8vQiNn!G*|Kp;baz0mQ)4?v^@Dl&7 z%)X36PWl1!#iEn%+8~}54nT{GBL)DD0g*m5z6xtaXnVT@4C;<2EDvOtJGdsHJ6*J& ztX;+9c3H;k3NQnJbT-?R4iVH+8OUG{A^|RBK$0YytWsqHklD-orwVGYs4uf5=^Cv9 z=z#NUJjmijrik0IdyyzNZNi5#ceU)NVl4%CUw2ZxQND8b)fVCA@5`QopECCy}qxLlMolK4#cq*$hNuRFV-!FsXx)oB*;#iY^3I?aR4$jTrIqv zewJ_6t^h-OAOHbBWT7O1b{YVPrFg4QjROEL3bBqO7TZqL3;+rGZZ9C&+c5(ip7JH{ zHBu#Fc3&V#qw4f0YCeV(qaeSzS@@5s1?H|!`aCvC$!0w_pL5OLecjbcMf+5+H-Z?| zm&641v;{JpOEadwNDC5fFcU!UrEzdZw=NwQZX{0NLDt=-0{k{C!F&M%& zaE)`dI~5NN3SuNUg)7q}3Vgn`C>zs|*Kk_CRgMu-smjg6vB_WHOWQ$7ll~(yj5~Z9kz-?|6-y3w&(RNIe`pCPziS;cO5sD&Z5~YmyLZnSiDc9+6 zBtk?1#+#AkX3TI&04^ALw9-%m1lsIf+dF&?h_ROo+*g*#Py|pa zjyJK_-}(8Bf$`8ZMrT zV4ib9K^_PzCvYk(At}?zgT>GXRtjNff8j7>Y1}Vip>xN$g+(24Ix0Xg)V4Z7jj>8& zZ1{jnN>GRy=i>mHVUoizJW;;aIE36o<$- zbWg{}kysKc`>wu(>{wLM=u0RzJv|I9d%%%PPsyU^M{(!zY+pzrG7E%60VLR=fX2xU znaKGe2F)Oz%)~|CWuXPp@v^XP*vL)9Bt$Is8wQiBe+TZ;(KDRSc$3wsZ(mrZi?c>7 zp?iHtC8?kQIc#7iVa#&-Ax?Xk@&S$w8kswjEH#A+*0BYECMxIzV554{yb{S$@ty}T z9>@?8GieG&oQW<>?DQ4v0EIb$68bbOfTeVsJUY5Zu~!L{4bIZA7vgjkjArkNhK{m& zKVaXsXP!5~_dsRa#I~`;FPLx%Su3u_H^eh&rFOH+NgBIjZ4q!p)b34T&?%m3On22i zN02~@L|>!^YTHrhys(m{g2Xc|!=WFktf`rhpdO!++B$6^Oqd62WTFa59e$Ne67EQe z5Z$qx&!bf0CGcfw!2g6@?|Yp%7h?SL$39&Nq{P>LcT*`Xy5yN45LEoIW%|;e-keU! zcIUdqKwFR}^mUB#N$aSIiT$#-sO>Yot->f@Q+$yzMD(T2az;&3I>cY73YkRdlUn4| z;7x-AfzycG%lphvfw4URNK3;)2Imj&k5vPjBs50{aY-ffA+nT(SQ&?ZOM@dSa7J{-N)o&?nO@g&=(#w zmaGMn)xb8@GUZl$)Mo0p&VBkH-*9{twG^ZE4KbtQ`V99rogXh!+r)!f>gb6_cseJu z{@Wt&YCOt(Q|LcT)YoRkY?so%W;(bX&t;P0NV*s~S^7+nl^gWH`kXnD{Xk0vT-?*OJV}ggkYN!Zht0Q*>AAOL1V@+`em40?OL{-{7F(dzR zii4R8{30BMaVLH{h&$wY4b##_f1q_6!GAlv6LDH{q2_v#vcbHQP;L3Kni)wd6LYWB zjCvkn#$(O$=H@CD%ASgG9U*-(C;kIUHa%1}ZK)Ue)%ji(7Zx)qG(vI_AH&HKep7~E z!0&C-(#LC9+pJ1Ie@Tlszm8w?1U-TeeL?_(X9dG!jit7!P6k#NA&0q_ff@P3EH#Fu zDdF!~@-~t7eBOld|bRrh%<81-7GuxBxr?o78>>mK>4Ar23 zvQRC}P%*I*@qQr1U$ESA!{bPOM8W4q@o|*^%0uu7xtRKyrOy4LOmGUX92c*eWgii; zi$gIqBKGART0#YeWNE{fQxZgoti_0$z}4yeH6Ph^Gd1@3M);kU;WM3Ye*9hNFxP5h zX_jZ#R%M$db8=ENiesp#yuW@nNlE-;fzO4p1p;S%Ln+HenQD2#7siqniBZOBWfQY1 zi_*0}W>K-W;HaD&F2Em%g2BN$ekRK^Bu**+xO(z#!Yo$W3emS7VqR=IqC93MVce-3 zJ6UmRrhfT>KNRwM=6oA0Y1?FJ8gQLx4kstZ^LUQ)RCRAG<`z6R&%=)9aEu7q#C=-~ zlysdel7LCaZMQKo^1kcXd=4`oc1l>+9L<%EE^UM^HXkMH9vt7L6M(!PX7O?WL8$w| z(EHfSMA*N5xF-PNWqZxBgwETFC$X5#oSx^JvUDFRid!m~Pzi6@lf;2r3xPSz>28+e zIN5Lvibh9vOCw)PK%9Jx;DMc`;BziMB1&HZ+I_4|&%we7Q%V%yK+cacNn(g6rwodg z=bY!87GEhDPHJU5GcQf)lq2WVUIZgggb>eSB=7ec@$zlnj0OpTHjY*jX6F*mXh~b! zP3tjUK4MAcB^m^Lk6fpd?u418gq56a<}E)0!31GP0%{U>L<=2&aFJL7OAG^+ojEe+ zYC5LP_d2S_%yP6k`dmIX*s@ZbX*5g@WGj1S(0VvaYyaJ&jBK|uNYRWPbvg@=n2ivX z8G%#IqUKZ{knt(;e1E0r>nJ18tk~wI#4IFHIkbDqyk{+NZ%>wHaLy5avEtT*5a36< zi#mqw5jbQft)~i_29C_4#)p~lsAP0YE@gKk0!=L&e)VHn5t+qhR+4qr#VO`zO+7k$ z2v{N@IIp)FqrV_yIZQ_?o6Xwau(%)-9Lj2kn8cw1;@SsF`o!8SRf?D7+U;~v)+U-d zBav+(fPhtOh)XL%jJX7?ei=GPfmQrDn!y=&E9=HGYEj2$I;>X+%p3t0X@gRG8U+`A zYg#p6fmWG}yW{P9z{?+@qWl4mdRALqkD8u0Nqz5;hJXVd^Mi*C7H{F~G|aNjr$1h| z-=|#=tgS3(D&d4Qmt(u7Z;^GrCe}d^CKuPR9V}ZhkXC75?piRbX=fc+v^gln4C=IV zv#_g%mGol5#l@p;9uL7i96AX>YA{rryp|JSTR&KC3fr^QugXLW2FzGd&5Sas`_c-X zrOEQY)3D}7FA?SsC&JOHMD0D&-+^dWVXczuQ&{WJ$!xNXv7v}oNiWwBK!zF;h1#hQs= zX}c#}#*I^UBOK|fakP0UIFzDKsLLngkZEIn74Lp^27epvA^elEBhe*0O&7{v^!XQ3 zuGE48?GV;JCD~)I+6S0yj>*I)kkMt=O^zJW^mtqS7KsDGc zKP09r%j3}T%kS!`#}g}m&vlQFuRNJ0ocy>1uk;=m60y8|F9fDA+j5`07^jK*N$oha z1Qntso3>dXy4JPx$tplZLy?r!uogB+7bGWi)F^IWnc^eMwYmTES?yPLA=k^dBCalm zo(KwM{@D6pY<(Kpz$bgi{2idu0bOfp5}#-!3r`hjYBYK4&AeK`qBrX*QsHVX=2~u` zaOahG{4C+#Fcm8CPp%=cGXNq<6)8^7#*BDw#JoBk8lbKCWGPzI=-W4hk%LZlco^-2 zArg1ehbi9i1OBjh>L&*GY&r&5Nfr6iKd!5$*J;eL;=(->`T@jykD|l5OeZ;FnP{iH zW=NXi9-_fU!sbIP-NHP}Zl$5O54-hWDilPc1oCuc7OhM<8VFVc-= zNS45NNUq~UbQgrT(=b&GJGFdUPcd(Ehr<4WclG68MI1T> zGn6%1?$L=U@|OP`EDT&P?Aj{)nUq`EuCF4?%x5aOzFRDISseJYxcx(sVr#a@G4oHB z;tl+g8{$%Na!MNDLIYzF$1M$FEepC=*3G$PLSvK1z(T`Pb|dxTMy6a`{<#UixrsbJCv4S8EFvE;C97s>s3XTY50CCVoj1~4o+;?mzwV(G?imLErnW0H4PvnR-nxK|d4 z2uyYaH}|kkx1&`QMB$kmFUYG>_dKHSs3nSZNX3R5tJNV_iFoA)xqp6)HZ579`CW^w=mvvuYf=8@Q2XLii@aAH4gjupxW- zew2Dl0WkoK2#+T)_42NAUW8zdFbP*;<^%+=Ro@gK0YE9%!Rv=hnv2J87f)?v7%w0%R9+!pQThKmj^R*}PMNyKp z+0U=!x1ERYoT;M~0c56yN!B8`F?6ovvE^qKqH_Rtkgho|MDdvBILS&T`gg{B*M*;#OT5#6|P2552s_=DZ*`=lyN(Qg2tWeP}?Fy&}6_x^s_&Dg|T z(PT};w^y5H#1B6|c0Qy;>$yP+tiK7FeizzRl{=!bIY@3dJrf-Gu3@#K!TxO-b3BtG zp2@G3qX}x6e!Xy6JT7aJBZen*;!Mb_K1)cf6P2yN2=fqlDVT%=sl0d)?5J)A9u%~_ z;1dwHc$5mXs4xI+oHZQn4-z2j-yt#NLf-=juwpOM$^?=mumM7)=`&!i*@{Bj6`bFb zCmt$g7c$iYD?XBkD6~m7OAb6VfbSs1N7CsI2%?;+iFC+QCRFaRDFbh2EEM7Xf|StM z*I*PO&f6x)#$_l9M-Dy#W~2z0^k%By5c%=pC9j+{)yxTg02}nGbcx;pQuVX|a+t}Q z$BJE3JLZxD3amwI%69|IfHNG+siu-N3N$*5G{4)r`WrsD>-nR=LWD7G^1%CN!TTo< zOBarOZwf75J#Jn<@&8r${`%?Q?zez%BfgRJfA>$J17|2C3GwHjfZ^+_L&)*XuiL-H z+u#2JBrh4p;d8WryLcGAs{>GBENtv0G5tUSP(ov*LOJ#WaK@CZftve~KkZ##l{?mw zqtO2;LNM?c_Om9a06KgJ@*}Kx01Rl+0LWSpqpIUAn_&37;(Y$N@fTQ~#-SokI1-#9 z*l?I=%=1eiXTJnBnBx+dM<;9j07mXqAi$WM4+4Zsi{lS!Z-$!t9^9X6YjAOXUq*_7 zJpd>$qD;ylfCC+wB-4`5H&Y%M;338tiJ0P_85W#VwH8$dSWHL`z~C_C$(dpA>i$#{ z&qkU(WK!F4wP{6f~y ze%;kh=i;^Y!f{CdrGA5_nF#r~w?va5kq9|P4sfIAw~1R7h78EhrziwA0x0q>;Uq)D zvZ2q!2mnubkar~%*nzNdMwfs#O}($}{d;4|2&?nkyINK2{8*nL zlcds40I9Hqgt*e9AY^8B?h0&^EhTrMUaRX7CzsVA(S39jMt9?#FVlD5t~o-56<5}D zg8QTxcGE+iy&{AoUXq5CV@CcBMNuZIZf&=w)qiO|uZvdke%5JJ{m$f5NU5~w+tEJP z$gu;dF%gX@y9MZ$Ycy$y1jiq&l^DA#Y<6zQHd?uzRLZcsDhqtHUMP2~{v713I_{S5 zzXRyTBk0U&#!b^*3k95tycq5~@`k}8Rbf&_?T0$_QUYgR%2X?0|jogO57 zm(xt50_^_jMR`{82*<2Kk_8#kHAABbT>-lg(VSY57(oP! zd}l7HwM+G*DToY*Tuc_(2XtjwSF60CxSMT9S1h)9J{+=;32LHP8B5^SGn{u`x;8@V zh?K>(rLu|a&eyFCBTwPyOd&oOvre+jMr%?unNZ=pKgvrA@!!J&c{+OXJH|;&i@Hb_ z6T(u?MKu3RZD@6_r&R$Xm2h04C9U!!E-q=JY7zi9)pMS;YLF4`Uo)m<1wbM6wbj}m zrJ5T+WYsEDxeU-8Wrf2zDe_^S$r0-k0Bs~VBO;!4(#96D!y1M+IAAZg(=5;|?xiU< zDdr&fsgUF-j7u(}1Awm#qo=+A>zU+?tFq{~`@xU8em>NnuBMagx{dj!B}7>AOG!}_ z4|PSxCcD>&-;{Y5B5s<^coyT~#Veu!3OfrplD)h*RNQx?W6AUtY2oUO2aUMcxea+jM~ux5Kp== z0p-4EFTt7(vI>+IiC$Gp{sX%Z{O}zpR(nSem+G1iRs|k&MA?WoWy=rhH!+sE6jK%X zs<~)88phZLv?h5|_BPg0HvHLackgSVDkr-6Rl8I0V0y3kt^KTVkC=n&_d?eNw#RRr zzSuhqjujh(t(f!}d6^^2sWIs2CbYnPV>?p%iW%Z?`#ma|d3pdnb7|j|&;C+Rt|x+cutt_96HmK)d3P-q2VM@K-j%x6*rH(x z%t*A zpXq2YT!6jhmZUJ+dG(6eT2dw6OHiQg6UFjeu-e0Bm66eaVrm<)PgF$ZCPJtYg8un* z-1{6PEW*3Di7r!sAAu+8nwD{Y)NF)YaxpJf`bGG$U>S*yIwhL^Nr9@~KLIHx5{2^s z!L7#F^OGW73p@ zFp@2}3XyVbKd-zHV&Vm}hSsM5dhF8I+g}Y)roJCdWVECODFVP6^9h9JwF&f(wpkY6 zK&TN4q?PS^>-79A0Jt|BLQD37YqXeFu2OL*zQExzf#(!&wvs(NG)FgRl}PS-D7Y}}s_M`V+q z?JWL8ye4QxWT`vg5x3NIpw}&YzbUK=Cu{oWE0Irhp9iZcpR}3F^JRj9u zKV<(}c+sD`6!hfLXL_X?QHvm(u3NQ3fzt5?OoTRF*{12%qh^2U$@O3nhZ8#7hAvt{ z2};h>FQ>+{^)1l!(}t_gA4C_s>k<{$Dgz%7m@=zm$h{*OvQrf!q0S)FARKH}wCZ zsqQEbqaZGZ47D-cTJrl9`IxPDl!vY}?_KH({f0tG?lTml{|BOST{V2{A8g+LZx5*U zv!q0d@tJ?Gslb+I6XZk}I3EA{OSpQn4qHG`YK)kIYKGIguaJRMPJFaMB6YIK2umZp z#KNkYi*@N#GcMehk3?x;ARhZ;l~i&sAMr>U=N;uitj>oqcsRm>-N9S0PdyfYNKXK8 zbQ4nbz{3uw|3T(%7f4ejv~r>!$Nk;MMmwgPQmg|7Q<4=B;PW zrpWI*DKw)~PzzKKk6VD6_wl;K8`7CesW*wPGtWlPotvfS(+WHY##Qiwj>bP7;3_SW zC9$e3#+&_lrX`?(sk)Sk5TZj6{igdoqIdEyO{LGbc-X+drl@ajd;IXe#E-<+J22?` zw|*y~kJl)02Mx-yf*%{L8K@b2?;_C6iR#)xD?3`w)^GTSrfM5)<&ocuk#e~`v6(g4 z`lko{ho;IPbuPcB{LHtypKR&C|37G|=O?$zy&fFkdnrZT`)Z48R*|Q>Iqvka|Ik#r z##BXI&;Em^O8)cUf6`RB-0Dp>Kc)4v4szYipMS)%*UkBu+vt}6iF&p*_tPEaQG7^4 z5RGuiV@P^&M5CEi@qWX;uWm_);^I~ z1A&`flrjqNir$wot1&vxHWeybaEe{|_&s;a8DF7k%~AK4{`+r%eHLGzzq_!nQRp!J zkdz)Xm@s>RJXIp*WPmHQhz>-i2x4V)W-^Kj|$GzyjBeeucD#TPX>c7gAeP<@&h>M-eJ=Y3`$mNdN z*Pik#CPd3icVXn5sRv%2ulXyVBd?Ncu2xs`qtN9j)7AFtFfow?{J`x_lBE#SSN51u zR$S8E#3|PcWHeQQSjoHUyQ^>X# zOHayJDbbkC{luC3)!jO?$gjkaW6pWm{<_TI!=W;_x$<7OL2)&cIGb+uXK`!v9Ov%0 zbv1`?I}EFxcQ9HTj=L#(3S2h`MqAuW{cYMDkHfY)oZf|fO*@qs3-A8)>;2#4uSQ{M zufFzT5+-_@DXI;7h4^ER+L^H(6`2QLGtQWArU*Rq>izW4^Si(BVAc06%twyC<_f=- z{6hT#R}A~uvff_)Zhy3Pb*<#G^`x!J$M`CUGH^SfjWGO!2?Kk^M~!|3-CehkhVMOr z{cX*kZZ1DPKM8IjY}LJy_*50?{pb44*Vj+j`Yw$Be0ujot{7e8o5SO$A8uu~i@z&| z{r&J)`sK-^*9P8yOJJB%L^v?^IDF`i_n%O;$t%tuSTj4WgpnAh=rWn3=sWw2LQQU} zg9dh(r7(6YPX&~Ws8&g-AXf~AEb%>MfuZ){N4SBTv{jc!v@BLWiTbq zW*h|5L=wrKmu9>w4zuX^#GA4ZLmS?jn4yWL3~N{OMA#TdHC5##^Q~19tcY(c zS0`Mq*yBmPAUb2>#D5Az``ozULnCB-RQ?wbEk@@qftP}+{=Y!Y@;TQ(1)8<(-3T0P zvnC_k3&)Fy(f@tIN$TD@`2YF`h%Q>cN8vJh^)INY-;>Di<1@JPVBSnqI4~%B(QEx* zAbQ-&Dj;O+4v5aRWisZ%_!o$_qpmja(YGG`a-~&B#;(%(4-nm}*+Sa*-ZQ}Pq@KlN z_#Ys;o8X3c;GX7 zsM*POEGR@=dKRKpHN0>KL=UG<6H_TB_L|a+6Hi}KD=ACrGgK|~hBHkhmj^OW;?_qa zCevN)SjL-g3$iD@3mP7@oJTct)$-SO-GQ3D?Q~PRI0?y|O}Dc`v(NO#h3BxN`b6h4 zYM+aYwQ?TEYx->depo3m3Xv&mJ;7Q=SrS42qI^w=LW`^K-8|*Xl+ch-BwgX$(7@eX z(O4$O;ZoPrC&$-mEm6i7(wu^Apn5txse(Ud=jiv6%OhLJgt>J&B+w z$M|o`0Q2_)t0w(hZPR68@=}+%j;v;JleZh+6yO6=sd2@^cK1AZDV7zS^(amjo=iW{ z-{sv}&3oqwD9O{~%&HC{KJTa74~Wb&x4xiuNf+0y@@=q%6Za5#w*nBEKrz98Gjs_JqB`gRU;X(DgK37H*D;=<+T%4p|VmWhT z;me~a#51AV)ha)gQ4}Ukp*qfu?QLfSbE^Zx!GE!0-H{k!ZAY||*T$Yll$fxShEaXn zaAQ^OVB@Ul+iK6v6#1?5P&(52i;0J%qYZTKm&-5cISHrQC4w^l0p7LlfcG6pzxN$e zyB3hdW2d!FW@La5DS?!GGZ_BKW%v=Q*$rHN;dHgQ4xqCi{iyaxf%qpO={FbhXrA>K znSajze9Hl#=x7l#mh%DfY~;8xa#r&{q7+$46BMi$0!HkGU{95-;9APuA}r}Dwu^!C zu6aDTD12K87Nqw}5Q_L&J zo&I(Uo~~L8efEnPwP`W7Y44PeP_XMTwYL2yEOYOcmqj*lKwoI5ZJxS+syp41Et5H1 z32tO3e>P_0wRRh$IO&iw;cXl;3U3p}N8t{q9+Ut0-B7dct_3a4{s^470}G=(u(9uq z^1ILxSM(6HaHL=Cy9@AV^)z5JOdj{1)3kTs{IBTgVvU~n9^PtaXpo4GMP>{upRR0t0yqD}Pz&VEe&RaXe&zOlIN;%D zTZ4qoN_!*1vFUZ3fD3$L-WCHO8_}ZS%ICr3RPeOSlF^}-S_(Aa+)0a%h%HbAjM`{D zq!MQr&4RPKW^3b9%5*it)5NWNiTO2Ut_1+&*LN|5Hw`ZHn`K%7#H6PrDZ5stDY;0A zZW2|c>O~xYO(Ox>Hgi=QN$`xTK8VoLt5DHdUSXvt5Nnq-6<5Nh^96#la(ZutR;)?2 zO8n@(ENYx1U@%=}t8cJ+^2;>J7jxFDwiSYf8eI3UNE)HQWe;Pa(f|G{z6Lxy-*Cfh zze(@SH~6~BW?${hezLdre35z-e~{*hqNHC9c|q1D?0 z#56P=>si!QANA0rHM!ARtg|22Pr}$?JHVAFLc)2tM0#oS7yF6nIAmZbIP7`rnF{yc z;csT9lSBLm1Mlg)p5a^TQftWQ*xPhp@Qj>?{6)U|w($^uzO46JeQm$#pfTdWo%Z+(YekF?)iZ~bDo>oby`>HJ;wbzN5M#oGyy@n7}+n5$N$E@Zo$PcHf& z%cKNr;Z?q>*x!Ei;Ac3IG!~I4j*MROYh4bi_?qFUs$>%Huz6`r8IttU;%_)I*g_wM zSiN8~u9(s4c0^(hydMk0-$e2D(@A!+wV|Nqa<)ml%nH4EJGWRdXZxA5%6!i6Pt zbSS7M%t@zgaU8XHH{}CrC^id7Q2Qn9d#M)2HjCoO0o}8 zybnAlzYZ%J+24^=DYIqRg*un;=_4}k z4vP#~+qu5ZnK9vEJsc`tfZ3(7s~WJ`+{~8$ssjVWu9Dx$%*N+$?OcOwI@e`04`@@o z1)@6IAY|N%cX268TX2~!P8v1dVbRPveSdYx^CdjFEL~ZIx{=;5*7)29b*`a(Vy8X_ zyME7?IjiJ}0L948Y?zl=+w8p~A&zMJT+$>_O&wBny%APsUPmA^@|%Wn1sbJCVwf95 zaO-S>jLLDglA$S`3xpd)uO630R;0Xt zA%oo@%;1%ppAl517wMyk>nC0>pW{ftw+CQm#{jKEFMF!h_)D2feWGGrzw;-YXZssW z=_9oZLwE+NTLR2j+=+&|eCE@3_RaFDd?<)K-#8T@w-NNo`Fw42yeHV4DBas{D#BMD zh#U2-e{Q-vvo@!usrhYrR5IVTq`dMgT1((g&?RhhLf`c2ZEds;?Ool6yZ@@?^Ww-P zi^n{AF=uxFM_j8)aU{s4l8XXHiqwjkc$ZzzLxs#f5_?%}jb~gVqBa5t0|>eHI1OdH zQIU{6rhOh3BLwvBCOY@h4OpS>bYHHOr>gjAgEI=jeYfLQ7S6|&o{nqyT9;bft zOh3V6qwsy38t(7PWE(-EtqgRDA-Y~s-E?xDMOfh;5|2iEq;hc)2N{&g@hH+5bBX^j zjJvJl&9C@}OrdL4#)%{=&rsOn$&H+fQ#N}ket%4~oB%coLQ@nQMyV`rqv4#cQ9;R_ z{bb{Xz6<4>D*RS2cejVXuz#uc5=l%zCI#n+t<-# ztOQQjBM@eqtN!`^?r+|W@Ho~NW*_^XZf}mzdiM5J>PBY|0jR6Bd8|d*HTS3YQK)_TRD5so61uO^^U@`aDU7H%(9>|1H43Nr;1P;6R%^%(8R8{eSKX|4qUoXN#BO zSIV|5!)3UxCCY1?8B)zX40{g#wb8Z)b+%v8V@Ko;^;CtJEv7trj@r)9Mo(`?Hn=bA z<{YGo=N)}bBo#@h#fF`P45_&5%#pK0UxI%B$F9&S&(Y$A-|G_V!?r-Vqn|FCd~|U1 z427kEI#(-G>DYgFh4%Rq2EW=v-afh2dY{Q&^WoyoM)${hlfJ(SvD)NxP3u1n2E@2A zYmg!TqOa*@=cR;_=>H~REqxPmyXbXq@Zfhus3bo2zq`U0yv~G}!zrYPd(5%7>UZ5& z_&gvTyEg(D9ln?nm21`Fq+Z2w zrcYjs^4+eGv#s((@R?yBdYLUFhGMR@=$nWtQ@vNI=qva0-3L-z)mC zA)HpVnP*TMbhJ^_;QU$7KR5YqsnlogBK~`_@z|7$r)fd_y-inhPQv*)$vLJ)-z}HbWxu6Z^{aEy=)Box{ek4 z`00L2=wix3qo1A9 z3eU6LcNo)C3n%R#w?8{yfK6Sla@sBRKF@#^&0xnJ+tXk^pCd3W5A@;N2$v0X_s zvhT%MZ+&NeUSm2e92V6j1i!gDLOSwMl(eyS%twwQ-~PreP0Ehd=4X+wZnY?@a*pGw zg0u4(KcGLgw~+?c2uA;@ngO&ji2UvgOoVg zZkLWpILw)xz3P%aOE2T8Hog`FzQcir;sp>CJsYFkMSF_X`9mbkjPsJal0TtP`2nk) zt$xAg3Ys$XbM+nAKvG8xIZZ@@t2&p;7Y0?oO*z_~Ue5Rr&<1Tf4#eSr8alAT41bs= z`t_dQS$)@(hUKq=fZ1d!{5C)j>SHR&>{waXLkpj&|OQb6J+PE@b7E!N{9 zI3ywWJ4O@cIB|~jP+Z1pm!5!d#Ln1FyRAJYX4MqR=bAp4_p;-3=3Uf+AFIZar$JEN z23kVRiIhYaTmL~GZoaEq;bKb@_w-h5d%&l45Zd>?1dEdf4;pm`I!w5VGZMv(lzA!F zoA6L2j=k_I5ha3wD3nd=>i3_2K*(#xMHScX$GkZ+l|Cx<8y@5tYD@!nuS73o$$TZu zH=rqs4>&s$o;xRE(Gfyt`}i~?l~=M*2;YUsNiLQ znykCge*z4GLIN#%RphU**C@jAV~U16h*N<{GhMk5L! zX;=1;f1VCLHXuS6knN>G`>aUNRkH; zKWyFu6m;3ILtpPWiV*drU?ySocm#l+LqKfwVWj8^&z*;zW$L6`>OX2KSzi%+#@N|U z7urHv-6>W7M(Dav8A+$V&v*wh5ouAvhNO;Vah?>7ziX`OOS1WfKA7rC_d~i`_Zj9; zYF+PT=_6Mz{JUqqd_34Oez->rqt3jj$YGyBj4U})#`(o?$B(KcxGJK(Z3rI^{ZGBx<}+QoDgf0XB4 z+^yE%QAbx(%5mYSP$&JkgF3E3;lAjuDeobA1>iHVbLI#m4)Ct_nUp002tCtJ@%S&vzrqf_v<%iH@q zTN*^y0>6tX4TcHpuO+r-=iyLcMt*+7!d?goWIyep^B9MyV=HzCZ5P7L1_%e@YZ*BaV)u-D;bgV zFjJ}loLu}?@EYD>rm8?5xtL9KPKEQ`sY$2Y6I}HS@4m(!lR{MgcsI5Tzx6eR;I_xV1)s3} z*Vwj$%Om{-;-9i9g#H?5KtzP<`I8hva(&6~BQtCHc-=t(3Fm56&yUrC52P{m}D|oj*w-DSjs;0PBx$F)xluA@#Ch zx7UVcKZ@S?rE&FeXox$jQ8$;MOwJFNdMWE8SO?qeKOd>&Rz^c(+d^;P1c}}ceZuRe{i}Oe-I>TFi#3;Tr+(iAntyoemtgWVgkwT8gw#kwW7K=Ps?HetOQav7*1pG+~SxKkOG_(1TT4Ay+PzeyowBE2YmRX_!QK;*6s1TxN0d$>RTHMTt+Q8jArf06%z zH}_4EiFT2YYMdmHKoH+tke+X5&Yl zJLzoQUAxRVFMDHP6E(0`DMmIlRY^fPvR@g*I`*ENkM{oi z${QjR2P_Zl#}6FdDLwqaO2IfC?kHw7f5>WldoIE;$Z_c-YYxZa8T*u2etnBt)FlGd zbFuO>eH6*h*6vGW-I7^m%dw(8O3*Ixb-?I;v~HEd8SA`@MGb&(mLsAQ?VA0XC?pa|_^H7Xqjn zXiV4LG2*6ca6rU#SPPR*0Dw}Z2FPLjezK*NVA@MFQfoE!)05a}2bWKix>QQ@h`(p) ze_74|gXUJjoSEWV0h1R093+?jDZA9#oZu}6-&7za)5V&sZF z$O(C_Y@o^m?-vH>nIs}rP)xr;0A%@dO5`jj-Eg0+w4UFf#|taq3liA%xj1m^MKlRB zu4HOMoOkaheBlZ8g^$ls)4GIpYH`R2*iq$zZfcQLwiyKhpz;X z5!(-xRG^uH7uyQT-nIBBe`);wYUoq4X}iNndX&DWf@P@%rPnCY2qTx2ceYtOP4}&} zn~7Tn$bP_@pvn#4-bIYu&T)58vLf6sss-l?*dNHDSb0RS;_bD>12$r4=f?#lNM&0M zUp6zI>s0vA=Ry;=I#2kh7gmI6`%HbgA!C>=RB_YX&zLbtUO?E^<)Bw$)aD_Rn?pcQ z63EGOyVsBNKFLXqO&;QC-8!evMU_6n+2(ym?yCVcz__aBf$}1E0(;Q1u(%)@0+4dm z?ERXy467mFVO`s20i6-OE-del$We}3RcJDvFMApwPN61%mGHZ&2;7z&aAd)#64BPV z0}Dp9Dk2`I35nGw_^d2%!fQ7o?>?)C$r%qzw5KLG*C1XQnMYVz`bXknHx&WNP;tTM zSH0}S395kQ7OWrY#b6ACCUF{1gbwPu5^6xTI4MBHvosJP&>@N~jc2U$bJl7#C_U6n z0j5-5aHX~C6C%0&c}T;ZE!{MM^P)K#1emTf^T6^)!$Cm2-gCkShr& z<<=dNS*_2?iJ|&I)d@ZGC|iw8CYZYnx*smwD+>^n`^sk4(z))cXrp3}C%itDUghZY zdOpJUpzu&`>yGqvKWK3YGUy%r8(?|!OCYKc1>#MUJx|u z)W2sB*DvJWRyQx^@o}}g!1HEwM16|@_x8VXt&OPS660uCl~?o&P`&y1M|@2`mTqcL zq~Xft?#3+TCXGP-5vyLIvoDu!i@w1KwE+@FED8*_x=~PrR;Dur;WRUHxqRm)eYn!L zN!@9e2PK*GEp&nGc7^@9KO%R25<2p@spFqT1+r3U=MP8Ybqh4hM~NKqAe|;54B!a*Y${15e!ci3BaAA z?#T@zMnuDpw7r28IN{;U9ATdwV21sH)U;#sgG|*sd(d=rQ+V{N(a^#uR0Q;WBDEWp zA&XSh$nE~v|IWtdsoAdCmH$JiElgsBy)i_$&g@MCt2&m4<)t>v`cVtEj2YVbSHiZ0uZF#g}TD+vo)`%lWQ`_2YV+G2X~PW06naq%{W_~pg7jp zk8<|kVSBGCloE;zzaQfEfD4)^>_UvZj0Z%K!g?;jfZ+zDjJV}QJ|KXHugh4cad`Jn z%~Jx(M-L2BC0~tfRE2H4oVjbN!ppM`B1D^$B*RL$!SzSDvNgr4SqG9g9|?~Oya(Jp#TN^D z1X4`T8p613B?uAdY>xXYV`td_s=r~3f9u7TeQB7bLa4E;ngXi`O;s{o;as^j$+kDR z{9&|g-s%a<3w1-oP;sEU&7t$+I>*J(z=DAu9dQoe)g7#&xw*4x zgp^c7KK z;;n9F65QP_K}K!?;j$=h3fR37xqJ6B>YiW)`yJ z(SmmH3)J4&9H%K@2RDb{`q3IUKoIKfuA{s0lEBv3a-8{77-Nr0SxjA>_qhFmK+Gq!e!G=5nFMKBZVd%O<;Mke>Yt!fMDaKEr@*c1GWi_0q({Ki) z`F-9*+S0VJB1QtN4eY*h8!k?8vFX7@hpfsg)r+ej2jvD6W-2?)zu^Yvs5o{B0O@Zj zlM&wlFuLypkt|&TE~*S_X@C_mihUhmsxFG;zU2&mz8X`Y9_Z3O4Coy4xJ1?)bwBVR;U0`}aZU#yh>P9O5-=|roj)Aq9( zr|rFuYNK6FQ)~9Bi9wD{eNwga$4$z>Dr)F~RpKy1b(E9<*It_YumGnq-|9Odt2_OGRP}93va@$qQi~a2U=-+2 z&O-F-$yK)YO+~0vR8Bjc;ULUVTy=Rud^71RhlfM+WLW%j{^p%eOfl5X*~))_;by=z zWQ)BY&c`u;Lr-q0AwTQY_XMf{+z)UR_T;099_d%}j=r+f>}T(5yw4g#nA7iF;YB+G z_;3q1nlIXV4`3I1DJkt)opm*4faiy3;nW`ID}1M(8}gf>(9U(T@i-!Sqm!D~<8A2A zjq+GijtZ!kU~4?Ry-A7OHMm0MLk=nc0VUrlOIVspppT#$i;T>>u2EAFdx-+R&9-tVR6*D?AL-%#qA(oV!d0VHgwy#H@zt+R zZSUxcKPavnpRsYv)_o+R6OirwSolJS(y1_~TiK4S86*WVBhM`KS0B3nszdOq5CNR)R=Q~kVprzgM|x<4zVfB%ES z;$u4QITIMrJv8MoyX#699@9o)q-l_Z z+N4qKU_cD+=nYm=0+nc-C*tK5LRSdO7P*%V4j2B8-1MEA>3I?f7fNsrS=Xl(uZPB8 zA|t9wG$TR9EFhK_PFrUo zdY+^EijrYF=hjZn=Y5iWvy$y#|M4(N#xoa^g)a2OW?$>9@ae8dCMtV%lp_vuY&LOU z>T~Yz=Auo?OD#*jgp_YbTnIl^A#e^?b~~M@Aoa@kwC$RT?b@8=sdC%l^0b4r@x|07 z`qX`r@}375)F>*5r!QQa3H1@h`NWsXCo`s}m0rs#-OelHcv#W1T=Au@YJ8|XdbGSg zy|V0jbv}7@PxM*&nKCbGwcr~w&#y+H#T2z0UzS?tM#Mgn(%TQgFK*HhT9zv0kdKTTV6UV4QDAPjg z&8SJy;>N5kYG{m10U6>$hCmwQI2Yv%7Zv97`73&KC5G;=n6;@uumlBtNVIvhr)*TM z&+Pb>3yhMSCIBRg3*4w&A+3;)bCn?RK3JeHAi>XLfft@Me(j2dCXH=TqRq5_zmfZ< zM#%HA%dchfW}OwkgdLGy#@>#t`h4JfWZp{#2oY14mk5KMo<-f{ zAVF9tU_M@uE$>Ay|8UOe#--U4?>YPNvhm0;>kW{ea0Xbt@onAlL;H5|1#17De$5W;3l+t|iK$_ZUWYT$2*Ly-KTZfAzLl zXvk>Yyo72@GOp}ooVFUGu{LCMI!J=yI`^Q_k_~Z4NKVacFN~}Kw#1oNPnuuvI+)v~ zZg|@T*LC4h*F<19$yQ4Rs$EE}nb~2Glw*+Jsf(j{fKkmyf^xv#uj5VSKn45FHykxh zTrH1htNCbK2Z#qv!QeUSuGIMff03^J`Vbb`wD0oiC&l|JC2=bx?fQdiP5TfI6!+v~ zk^L7c?DD-?>Y+PIp~DIThN^=T0fW!=hMSo?NHERJ1wE>uUR_2EhEw60l<)4qm0rAC z97r(a8XH~dyc3&k;AB6P%X#xX@wzjcO)(&uQlq26&3KhS9fFiG0EA#m8pzJ1*N3&_ zMyz#PJ+J>3T@p`xS-~nVn)vbs8+W-}5_BvjQBGH$lM4q?+9pY#HQ!AQXqw1y#3eE& zmj;aa;nfQnecOAzdg88O@0}|x@2Sz=_fIp-N1-!rj;N8MXVl?PW9`=c!PMuslVG>& zX2~n=;`&Qa^`^}?E1Xh!aGg_b9#33IGw-}$z&Yojf`tL9oD;-gKgQmFM#Ps;qK_vB z1(bJhKfU{YOew6d)a%9g*;^7>1_P5P2Hx!SGGA7!QM^|Zd#mZ?IAN1|fVAf0ky>!J zOFtm#VyBGxsdkklDW#FCCdfBD16TJR%j|ba6-=Fon*5$lm6hdkate1Y&(6P)&Y@&H zC4Hdj^}wp{tUuuqnOVyx5?ty&?g&C#TH|(XZ~=BFkO}u=m2m;85BEtH3=77MbOC7@ z^_0Qz0O{~s>7Z*D)XsfZ6rZX#L(k9K&woEyG{Y{&YL7coEDmVR$(OQ_onb$UZhPG` zE9}!Z!8127I(rE}JHRr#<2MH*TaM+KixrT6MzeG$W6?+*7ZAT#m9)_8wJ=4qupO&{ zuVT|@9X|IK_v%?b0H_DN^9J#c_R$oBLiUd4s~Ra|M9oDJa5d1*rQf?H!B%$7B^2vR}%&wlU};dcw0jtu+0G=O?ig>lFxX4wltTEfJe zn%A+tp-O?XCyj;-)UPfKp1dTtNVCT`Q%!1Mq9zdmBZHoQ?eKY^%w+{_ctD$yUv$vm0`0rfUzh4v_Ff;Rl-hC%3wikZ7rmoTdveJ}RFQ;zzlI{8mSJf0S^kT|ZE zJZ)awCs|_iUd?HGecz3Q5QK;)hI&j$MIV;XI*LG&Bc8R~72^V{1l(&;La&FfTkO!Dm2W`?&d76`N21c<4#@H#xZNcbw zjVHFJx1I*Re%kUjp6$`fn&+%N5BsHPOt7xv<^}cEu1c#nN^1CJd^M@rw!m#KoG+*1 zt{{D7@5ETy>p!GL%wYe`DC{wMJ(XS0)fv3ir2^FES$T+^Z>SV@*F!r!`9Ob z9=-n#M457G;IUa7K!trSZJ5Q01p_E~Buv5k8-4`FUA{Cx;3XzdAoKab++`oYygSw* zrA&<^Q1cAL3Ism^VoyY80Mui5fe0W&Y%C#dAK{r;BMz3Z(#u1?vxj_oM9hR41c+!- zbwHd5`cVfi%RpPSq6XeNBLzgVhX_CphawK_UF#*I>2iW_rfTcRgahqczP0t zKmkZyz8=Hw3|1`4({%lDlCEj4(2(CcXGitb*{^_+cYh5qL0?!oqCAG@mLpfqUd5io zO6CDlmyH>scxNHGhcelWa$+J^A;>TR$>Y*fCao5rGv^(pBt-lBkHV8R*`FWHVe%exNKcB>@7 zT)nG^GAv7Y#uMDjIf&bXtN7C26E5+mNp*`(9FUGlPOc;8rKdWql3kX6A))D@4oYZ1 zr81KqVlgD8Bh&LzTDByDd;pdS%R{Bd$#5G#()!frVj~0KDTt(Ex9ECg?pZ$HnQ(Sz zG0i9t7|cVEcus1mSrwzgP|8q%crF9b{)IM6s!89;!>dj0D5I2`41kXYYpmC+>#BPJ^s`(PePJeVPTyD2X)83l1brvMpaWw9x_dv<)I*} zwcTYh;g#f2r=qv-f$21z=0WaIq@YFe!MOpW@w+qgeDP2P(-3Sdpt!(-e+NVu}TK*yJy%6+*rLl z0D5?;YOL8jMn~6}vdzErDxcTfb=$7+F3*#(UhvSC+60K*9dhqIDGmo0SIwgpipuO+ z;vvvBl4D?aPW{2^%_nSWq2q$aN$HnjdFMJdkfb2yjBFF@A>|+ZdlqbY92*48#dCml zR%bCaQdt$bG;VsjGK$47H&nFeTfYq%Y+aK$-c%H=I>!N25qW1#sW8G(9LUNd+W3bZ zK>0)S_w=DdEm3lkei?gonkEYe`QaafX^te%5;KEu{9u5{jAYM-k}WAj@^^`11%d!F+-qv+hb7I5e`{PCeFEy_fo3~i&KXw#)nbcNdDx)$X zA0YB_xF`6P=6L6z>O8v~U>Ume2?Buzr+g^BU?J*h__*rCtEAa-3u9j+8(I<1j>i=i zfy#=7GTInl`HI4vP-ELE`AyC3DvOpgxG!yrUP=4a2An}Owu6Oym0vDe?8ccqK2q62 z!SDxt@uqfU@_fzfm6mKNrYo!(TgjBQmPP}n`T|;8!&#TOonmIom2|dI9QBqt1qO{G zdOlhLiI)DEW-C?(+sP7FET_vYtTOesJLRt$u$55SIU2u4sWn)U*IL>>G8UB9yN1{L ztofdUQ77i(H7hD!rY|P}n;tQHZUAZN=ZBVWP%h0@IT*`~aog?00kLWEc(y!VvxYyGCoh(M^jPhW8Mu8@A)byd)5 z+O_i#Q3GfO%kjI1G+llZFOGJv=7X`mgH{FZWHQIqhNYnb7wRC`e_INBo{3FM(wePUi*>-io$Ec=TL2y_3 z@#Oo)Ozod;Vynx9xD|UCROjOnFTv_4!6tf2g zq7?j3!rRm3QJNor3cOr?QrP~{WzsfR!oxcJX6OUnM%x0#=cZV{eR<6N! zMx!6vq_V5DGv{Ry6W_m4l>8#Kg89U%+&~+b>XN&3(k@%%tb&QYj{|L%_*Bz$ubupM za(Y(l%l0|DFmqo=qmU2#=mmyui_y2R$Q`AOe(QO&*G~hkAC8pX`?Q|8E;Q8QDl!4+ zrCnFQ#Rf#Q^gp&2^R%>ocvjcw?aVhB7JrenHW}&J#Uu*N0HeFzpU}@9F!k}Sk$L!j ze3G&XK|=$dK246$AAA(U6&QH5bNAEemtH$Dj{I|6^`dm+e>hMi1Ur$L9-Il5JM?W) z^0y6*qQ^XUFv$pU5)q8brQdJ}$_ZIh!pc2lf8mf@5b9)P^yvoQONSdJp=%D>@)TmP z93Ga3ISx%mcgt@&ysP$V33+%HqqgNpK^gWVefF!4-u5Z3y70cL`LC&FH;!blML1o5 z^mRn$b(L33#M<4ZtyKHBthw!HoTe0F=n>DP-IAZ@FrVtA@Y;2J*lY4*{%-fH>_1kN z??yTu{qY_7a`)SfsD|sC>*sXR_br485S|ML00IC2gX5tE>~{=<;7l<1uNWHT@*;&H zewPENRR@D^fXDR#99obcF9A7J#}Y;f-If6~R06!jVNk~TRR>x*jP}nMdKE_ZXM7Th z>Hn@z17kW~Gqg_N`5ngmSL}s^vHW8_{C~#B+m-mWT^zJ6SD4a2%FX`~Tl|WT_unuz z?0COOb)h&Ez^tIH11LV;-k*P=PWE5FfLI#<79!|l3;{r*1O2T6fHegGqC}`JR8DLR z0FN~QB8*T|!WjUSBZ$zS2(9VYuTNlDxQoBPN2q9Upce@D@$`%c_wmP{k(8Gbm4H@2 zs%z*I7z90rfq=m9P;(u1yp63L9y1Mn8e)J3P!$)quwWw#ZA+*!(9_buhe4H&Q1)U|vMm6p#N``TwVg(k(bN9QxpSC|<$F*}kR#R<$rqduS);J-{W)pyUKytuX6^YoBUVVzux?>vY=Y%syc*@ zP2RuCT+0CHPKFu@EB`9vt^t4|34pGL|M)y~$JdK@czCdam{??Fq^OUFo9OWY{rl&C ztnhcu|33J~_C$}j_xG{GYkGLPMEHl}j}NL_kbh7_C_XIM#mxgR@}C#+|N4#p*sXu; zhp@Sar$?wqAhaoK=qmFG^ny-zpu11FPf#GJ!~e^-{bL`F!{6666j0ay05qpX z0q!9UK@I8;Ng!2UjOhQ!w3_?vf%ee?Hq55>^yzn1^DfagO0!oz&L@W;g( z=9YN3h|n{~G4!1{UZ4OLPyiah2-pA@;0Gc=637BYpbE5rJ}?26z!o?GH{cBdKq!a= z=RiD20hu5V6oYbb5!8cgparypZg2+-fKf03X22ux1gwLX;0@RVAHg>m42FS`!Kh)3 zFm@OZOb8|klY=S4v|xrXbC@m68Ri8Gghjy4!4hGaumV^)>=Nu6tPR!!8-R_&W?_$E z&tTiI_pq;U1e_F3180Tv!o}cna5cCA+!F2x_kxGO&%%@7Iq*_=ExZ}t1s{Mu3rYy3fYL+RpuA9#s1#HQ>I$k8 zHG+DCdWrgoMx*J_d}vv;F4`9Di;h8Op{vk0(EaFH^alD6gTXLjgfL1N6O0Qc9Fu}6 z!!%>=VdgL|F`tP@h}elFiL{CAhysZch)ReWiTa4BwiMff9l@?*4@gKzI7#G5%t(Al2qdK>tt9tJo{@YZ zr6Lt1)gW~sjUde-y-M0o`k3^9jEszzOqI-zESxNd>>Ak+*&5kra%yr>ay@c)^7G^s z#0YmU(%py_-OQKd}%UiuG37@ z?9o!uO3_-=M$uN#-lbiqL(uWk>CySq<jbdCM1&}lNnPaQ#I2F(_3a5W<_Q<<_zX`<`ot=iy(_R zOAJdL%OuMoD;uj0YcOjW>k#W(Haa#{Hea?Pwm!CPc4~HIb|3a4_IvEF@w9j~yg$Aa zKaAhwVByf^h~T)yG0pLflaJGiGlBC4=Tj~$mmHTTR}t4B*B&=Jw-NU_?k4UP9%3Fj z9&ertJYzhcc=>ow@uu>2^KS7m@agfL8gB5ERMM4CjNiPDK0iYAD5i|&eXi`j|g zi;ao>5SJGB7q1t8B0(jgFOeY8EAd`ZP|{7ZLUQ2**$M3v=TF=^u`eYg-g z(ND2aaqA@CNsp8DCpVNhm0XlADXlBxm7SGql-E@_R9sYQRi3MIsk*CPQQcG%Q1ex5 zR@+qn`cB>bdD%)7#UR)sNL5HXt>yFeo>8ZYXFNYS?Q8H_|sMG+H(0F%C5DHUTDjCWR(X zP5DeiOmCZ^%}mWI%wCyGn4dErv!J#(ZP94)(Nf(q*Yb%Kzg2|Qpf!cHgY`A*Pp33b z6`WeP5wnT4nXqND^|8HWhq1G^yJB}}uVr6s|I$I)A;n?Qk zr*Ar=oKHD7I)8UDajA7Vbk%dMblr2)aJ%64#$DCD$bH*G$)mty(^JW_z;nw>$*a(7 z+gruE#QUv}hEKWAzOSzDMc+?;CVp4_e)^yCzY#zb;2h8sNEPT8I2^M}Xb}O6)YD`T=@JA#^JUgQdi6%csT1VcDqKpcRnv52VPLJL^ zt9|xz3^K+oX7C)xx%hL>V%1_V#lhlS;|9-joliRdlAuFqh{wkJ#ZM)OCln-nNIaF; zo5Y$#NZLr&Np4CZPYF#~N>xm~n1)RANt;eTkzSVmBf~x8L8f?SN#^$~x2y-*64|BM zKXW{DrgLR-tMkx#fq9GhD)|islm%xCHVTajyNd8d8ATt8PZy7uNR?c?fV~iLVZGF_ z^i~;nSzg)qa_{m-73vi?Dp@MiD?e4aSIt$cR<~Say_k9NYmHCM@+F;1UA4TmC3Wb! zGj*@(t?S1w%U!;9h3QJ>m7}YHSJxZN8-}mRUc1)F(wN%>Z;EKzZgyy%xvqKrR*Oi> zr5kiNGFw4wMC$hxg&GzW`4E8Ga zcHS1fef18r@|wr@^lZeU(> zesn=^Vd9bTquE8P#pNZ3rS)a^<*mp5kM~#3tbBVySVgU7JjFdNSz}qN{X^i78|yOb zcb{oKn|yBZ{Kciln>EYVPfREokWqfA*-0(&2%h=abUpK!+ ze#d+-JrX$T{bBH9^=H7(pU2(C!T+6;;Qza0=Wp@O-%f&Z!&qX=e{<~o560YIj-3~+ zZqWa!to;wi&SS>hDf>l}e>ip?D{Ga0Gv-2~9jzh9&VP3jgd96hEdHBgr0PerF^4e`xK4^M85C7P)6B6$zQFQLrtNqQGv!Wfz_Z6blnuQ!YM}LWTC?~@oX;ZGovfror zi!pau;%z?9ID|Cidq9Q2!7>DW14 z*t|n#G=B$T%oVCTEd_B+p5%wdFy^BoE)v_}t)za4b z_dNXiYzwRV2z!F`))qqy@IPl;?TJ1)mTj-90~B77FsGdTDY>sy%f^9@gv!!Lfe z-4A~n)%#xn+HjDpW1j&6v@vFDZ{#n3h*RUp*Zl=(GZQG*e_8PO7og4XRiSOiT8Mm= z@n+%U4?p77E}3o>+5HV@3ztH`;hIsM^V zMBlTJ9tX}4`>MYHZHGT$@dM6#r4BOel<6a``=zUAR5z00V6>dkn zU)!FXK6A3_(#|XQpXYRSQJ@)@t;n?-ZZ$R5ISy^w=v$44MQJ}qZr;XHEW-kmx zR`yeH{7-8^ z62Y4sE|gX4`jR~pwsnp@)1Q%CqoF{6LQ{f9=NQmtLZc;Nd5TV}Y48ddSm)-Q<`v6W zJYO9=DNC<&W8w?Dt|Uz=r*6AcF1MbfB9AV~lb^ns-9vMZAbX`-gkt zh9_voBn@v$P2U~gOX3me5h4{nKSVV=s~{oy;>}5u6APb|O>TbpscI@lGIOYuRkv0$ zy6d*}O{a*K?TYb-WIhPc)+uIaA@xYs7(dM{43m3=b;QmFAhdKWI?dhmtRf;#+gM8% zd)Zlc-t;0~p!s@3fXDw^Wh)>PoV8zW*s*uBm9e_uY1xn!dbWNye zwz=tKEH$f2>2?vY@*E~1GrZc;z}ZVz$z{pXE) zf8;&^@DcYbf4Uws{h|~6<$C;I%Ku!}IPC<~b=AAz|oq4O9$}=>-T#t`)D4F|D&Do*= z);~F&X;bw2^EAJ-OpqJv{qVbLW(&n4zg>^tFIYJqYniek0c3F#%zE+B-&!W3*bwKx zhu##I&-~?jypnHK0nrJLU5`t4?(F@d6a4n;BMlg`mo%&aO;0Dw=~_+*J`p=B`N;@! zJwDblUAf@s+XS(aFbRZ=@++Xx+q@45^F8m2YtH2OapMFuP@la~x~r7EZWVeX^6Bd? zDzIK^!T;c<{www@PwWrwR;T43$DGdT2)7r~b^rxkRRnP&8YC=%po&{|mt;PsU*_&1 zjy@lq@B8E7r^!%7x{Uwl&le$Z3hIRJgjw4qkme%DaF4^S>w8argIS4qc}u%BDOIe$y{2>;le;$W)(? zN(8F?1`Sjj6xH`nQ%=$Z9C0i_^vnMeTVDg_!q1i&1*7+`_x5jvc>Q>E)EyhJS9MzU zB1FGDdsO{Lq3mk;acZfXEPiiA(3JdJH??>(B3pDT_R>Dr^h8FzHAvM6&6$ zeSqkfP;#Zv4Zcrx8^*8B`Ix_D|3@a9Kl}v4{ke{8nC1+Q?zXByR?Ye98_XEN2M1CQ zrHoEkF3A`{^vl`n7D=q!Ak-AaE2=MbtU_DZR8^l<_<*|iW{xw5fN6qhc3YCM>zYdy z|4Oc+{w9G5g+cY`sJG32JADT@;yy zUCT&otv1~PZII)so2))HXWI8}t%V!imR$Qx_h)iFMQ=>?@V1rjJ~MykWoo2TDLG@7 z(5b0aV0Gc8)A>blCs@{t-^tb5`mhH7Ket7>kuacYjuR(EV)Aq@K^gIA_uF}u(+@wb zj{g)c{tx%~Y@Jl#T%#wI1h577eN1gDj^2K)0PMx(TK}ZH{6iD^5BK9E5o@hS75BoZvy`DcI^*rvDVNMo!ZiX{ZFeRwXc8+^AyAW* zgfe%{{^=h7pLvu71-Zw2Gqut+L*3ci{TA0R2mJWFV)XUcJwE+<;(f*NQqh~VX7{al z4^uxaz+_f6*e`mEWlkPzLQ$}P<-IWE&)*DxEEew}Y|x!C9wjg8FTn$VK#&8bT=ccDC5 zXg|{cg5TJrn|HpHIOr!J7@B_o`>Um?A*-w;H2bJ%XZf&3Y3Ax8tEMDz<{h-5ya;I@$8S*N> z&xW*tt8u!AXMJ&%PMLJ=wJN(Rq2S8m_%M6p3!72T%onGiDjS82NYf?XBZrK(h$D!G z{PD-x{VD>A@M!I_pqlOaXD@opyV#3CPd|;Xc|H5`qu@eapKsq)%jU0dDB9mv)!sfc z{p@SWt3E$18*g;Z=X&h3O8Mcf5f;5#_<)TFYJFfT&eW4!ZGm(k+phut%B)|$VD#tO zDmSG7jaaDw#qbf1l;pjGA_?MFk;V$7Iw$sw0l(AHqpwUdG#!QO=T$QLbmT z^%?6uR-)i?zgT3Rb+g%H#;$JFg5RZqJpojbf&s_$#65xZ_|jD}Qv?jp0Ki1)G{rFT8Nt==@Z3GDPl|{3xJO}vYK^!q1F}Y(RJC7~rqgpSoUgP+_V)HS&wHo$ z7+B~ih?9q0_8BUz#Tc{4TwfLX$C(HePk0SZAWx}W_xK`?aIl^l0YnsOcetrZ!2j6$s z_>23Ne$3kY!=dr2lnXKJI`5GQZw5p=lCssV2^sH7n;`7DB=F*BnEHtLIJwNYiyKZ; zhw?+5=G?g<3CR$5YjCol$X05kkRQgxzPbJV{In`;?~Bp=@R*WG*o&`qV}*wZHPdh& zY_4vRBqKL>fhE59_KpWtyU__f>k}!2ldZ+Yqao9GSj@ls=vhW^+R_uu!tTSY0QRL! z%_Gtm=cmUGJs2%JN5ULUrBIQlPklrsd^e*#qRXFc*!@gbZ|XQE@lR=|pbcrR`3au!c{XLoZLD`LmmuQOuj z9B1@`Plu)A3cF-{`1A@`J#b}QAdnwv%zTP{5z`;phe>>t0#JR^j3E zgNbL#H{C=r=d1Eisx@rg$g!=qIRAOfVOr4>I#^Y3}$QDTD346QrqmtH#byBhUDS^^} z=rIxfNlv5LQEDAMW?uJM%3Sk66TMH7?Bka4gdAgW)xtbzV&Wr(8fOe4+Oj9FeKSYw zPMl2q*T|goCQo7pWAfi?%Tn?`qjsy*E}}VOG`^yw>qD(oqixn`dWl=4(UC!$VUAo553Ys^}(l~Ssi(l*tv zO;TJ6mDVx03)!h(x?<{#Q4Ll{0ZY~dRUXU6{gc)jqHow{=bbU}=cxzIG0S=pF zXX6xiB%6~BC3st+oxPb70Ed(API3E34+-0G9;!4)#vJPma=T_TT!6B`NNK0}%Ako~ z9*zS};5SHabqE>lq###s@GX2?150S3C0cJLacuvtIM(o$e#rd{$NrpxPDMW7C!g0; z=`bysR=+{M#E3@4B9BZw8TQRLnt7f>}jo#<8RmLH@ zZXrFFfy&>V5OPIkjNuKN+w&kn$io^jz{TZBP51Ps>dVQxvSRAy>j`?wwj9n+NRJiN zgd%^jjkpl+`1XzWm(nrorNk*B-l+ayj6_&c3~@+;96IduF0C1&-$DJDp_5_?TI9PsZeqN2wv# z4NoM#6^9c9s_xdhJLj-s703GqQkTLLlY_m{37-`ZZMXra;5{Mj))%$f*vb^>YX!?= zhoik6$y^qAv_7wE)_)4yk~Hi6pq;@Hg_lQ~>V!z;i>-C}@IA+hYDT_f9{x^$Lr(n{ z;qrgehvYK;yRl$c^IBUYUw1szxWR&h$du-SNM=L$tqR-e19`#n_8Ew27Rs46_T0Hj z@-C@+_tUM;iIA-?ag%h~ZLLh##jS2Sj4yI!Pz7_OrNjF>(?aRf!x}CiG>7Eu* zLf)m0B+f=cn-m{O=i6j^nN^#!U+>IGBjX97i;B^!@wQ!;2>o(oG#0c(2{pa8AqvxH zl-O;RUPhteU{4j?j<7*6oF}lqv)6!nur^h`D6U=oXFq&$e@!(7)Q9x1e)tbYyz?0j z?_*Uz2YGj#HF>3ZRS;WXNtOUqzw;vdKl7qg#yKXV*pbBE{_V}`Hl5d-&N|&{@oOZN z#1Qrx7!yr>>7uGPm!Dr#+Z<|v6P*7Kckdb1WT0F-D|&R>~+>SW1Mg2dp;y1$$dZ9 zyypB((su|Vk%bF79;cp@&}QgJp?9IamCBUtbsmE`Ib9U}Gz}PULI+;4d$p)QHRpBQ zx=)d^2BgT~Hp`KNB};&5M=Am!+IiyQdG?XfqY;%!pEEci-$8Vv-stzKojwHJSKJTjb^tVvpxmLL9&!S zyck6mQv6iuv?p(C^{rv~+@)-`M)Y*e{q)i)D~w^;nS;BiK*XzefP-K$ebh>SMSwCd zi?fG?&O=+f;TFx*yTzraJ}?UII>nt^4b3a-75=l4d^rCdG0(!G>5Dtcu%L_#gEmJ( z*Gt}hSFBCm?}7T=eDU$dshdsbB}U%{Cqt*+^Mka?R_4g{C_wg>(O*CNg5~K4bC-g+ zT=>N>6$81Ye)@o;RrbWR^O$j-a;e{N^Xg5m=bY#G4YRz;v-u#t_JNel57Jtt&=0Go z;pGZ>VlN*2*k{6~oz$u(GoNf%yrwUjNG$R!zcmbm1qA72Zk`poE!Lear&bVnI4_>1 zco;qZ-s-*>J>FinV2com#vbrN-M30c17QO$&!6(DT&<1y+Yo5MN}_ICPTlKl07JuR z-8HHMsqqWK&^$q|s3)_$wo79%Q@IqlE?78%_WsB8`3J>h@9`GO-XFhkKR^J(J#V{w zGQUhIW1f9cF@YZ$>P;giS=Ch*?mq_~w^>!mlUGkcU>?-X%N~e%p!gUf6)`q^Iu=7Kwn;7bgS3lr$=+Av* za?g;qEmlASRnE$T^DnVOKmo!5+8vb&nnHq6O;7kqH2*T1^(g0m((#abrPU>nqpE#L zyOX}Al8{yo6>o5?uhM6wlY__Ig3u@-ZCrW7eUi~vl)Z7zDQR13y5EoDKuxB}QZ4-> zCT*ZmRWTO%(yLC2$2on6^wjkmsza;2g!~1GF5Dc7b7zRyI@Y8JZ;^x!@9`dvWhS$D zh@zB(Q)525iQ!0-Y=Xl9!^1^@RK10hW%ltwQ>Y%x6}>N7LaHXWGfft3u6>ER`sm09 zGpeL-7>T+HSw-d35sT9IcaJHj7J%dN9TfA|f`#zUY^mxO#I*4{te&;3G<2E(I*t>x zD#{q{lBlNJ@M(aY^FaRYARbR08+$ZkgJ8oFDwo3LM{-5d!RMoJ| zQ1nXNSd12-uE2IHnn$a9FKDEcKm0Vfgdyl%6!zumVfA53B0rq=8J2>1I zJ+E-iVSpTQ3Z*nn+k+h866(;`MO$(d=&7UN!N1o5Gb#A_@a;#@GD4$`&K+Ey?=Ryd zVUWCGB&Zt4;}PFjU_>|b@&%#x@9$J~p`=Jl#ak~6 zKO1a0)_m8UqlJQYLj5Xus;2x@jv@2Z#5+s-!xAvNq~p>OQ3 z&qa&-4}w1aA^E4SU^#S^FeM)cg)IMx9oqbU9uoQ~Z0PfkpUFe^-rR6C3TJCOlfhoyLVJn>lhroOZ3BuD4nCLD+~;vrNyK7RfHG0DB3A2a&V zaY_cl%J_V2ZH%zqBAmaZ>wx%O#G$fy?ncm9%D4<>&Wz)4U4bel@1@aQQ}efPLu@VH znLT#7^=`uVJe8NB3j(TeaVvsUV&8-lSLv+}s*%}>wvcrW9M<{ML{GPU>GTG`XtExZ z9W`iw=_n*oTJ>3i=vV!BM@-uFbGl41KSmdmxTlmwVu}}g3B8@xe(9;bSOX3s>?2%| zM%gOXEpJF^```^WGlTBR-JU1@*_B7v74q z!FAPc-YLay1mTIY8>bQdC*^^oyTymS`=!NqQ!Lb#GA`DTRkD*^GWZty_BU}8r`t8q zl?l4(fP0eXf?CWK^lz`dOGvvds+H5sxVE|%OyifXrb%gF&bEV2MC>b;=rZ@DCjdk4 zdQ#r*14iCOfO>&6MA6k_FlUn!J!ekkOx{70wnSgX>q9PuSE5EH0(KeF5Wxul0VN-L z9!@%%fIUv0*=FgxNx@JH#wF@F6Swf(X9Xa_FxPD-DmkvePdECNP!q}q(e+U{?beuy z(u$@b%M*&3n#t`q|dO)`{oi-=(pWEs8sIEDS7Ks|kUTTQT*qaHYLpt(RM{77x$NuX2HLbVxd`S&%U zu{<-wXJ&cL<~ysa`DT9M+WfWeZY{0K&!)(7)QwUD2c}TRg3s}Ow?wZ!IVN$ZRI7uu zF!WE28Ho?awK2ndV`ej{CUk!i)!icQb5_^YQL$4rCS4YLV&OSYI&gw5@Ai%D15~Y1o0sIU99P29nF3NUFC3NyF%*n4J>z> zcYII)ph)((cXzyf)Df8nbu-%!dE4>+_O2Q0YYP#Y2@73*Z?%pY-~K5Z;_d)4hO*Ft zh#4J?dX=By%oaj@f-+ZZ3o=p|pJ|HHM=OGZ?NYc+WCRcQ+zlo7lKSh#w0jt=z|UkN z_4r+(iy+(g%3DiVXtzAarkGQK_qZ__xT0KegalAhALABDRqw|3w@uz2lrA-`l`~*ZF z{?(8QHo0Vhd!TLcDw-fA$Rvj)qej`*UrnXa*xiDOyUVXGpppeIgMD-4C#nEfos};L z-D)uiR#qz-W$s1X$v`V=10)D*5+|+~iuCASOKR}C8uwiE%2>lAD(?O(MdBFVnd4Q# zX5qE^@lpQuA6e3GR-ZIiHoqHSAP0QWhHKotBM(1e-8rJ`CR0qF=3+j*diaJVA2dlK zSa5a9zNKk!rHggFLELHSx9@xAagHso(|BAPML5V(k*fOPYpF^t^*UJyI*ucJ9mhLx z@QJa^z^@p7cDH9UPZ2a_mV8sE%ELoUX>G~{mL|C0!i{_jK+I&Wgg=d)s1sRu6LVN7 zH)tn}nW)Ar=-Px0o(b@6EEOcUyS6q^y)yss2){zS;zI(Sl83|syQv2a0#F~##O$Bh z%QDLdXGsOk&!ELo?oushF_P`AOBIFs`Zzo#To&cGLRJ!^sO2>gqiJfyF|`{1Fh6UP zNF(-;!$NZ+<;6QClE$B$n>X(zgz3{P)GXHOEM0sK`L>Xs$#%FLD}VO*!8-$w(fUJ$ zb&=aipWV?>2ZmT@y%zhj4T<=}BJp$3>wd*l+9FMDGW7m$g>`&6sy0hY7B4lEqP9ix zqZEmKO*BBF<{v$+x^;0zxySc3-gWxVV%ux4pRc(#v=)54FWQT%9VlL27F8VoE?+$0 zUoz3H*F%axM?=)EI2NobZ*|YpfCK=?+~S{!cb6CH9Ov(*fR?$m;yxUk-azbox^aDl%|?d2?qcbDJbq(ih3 zueU@DOGaXF6RFE`;B5|&uvR^?;gDaEMvSZ!30+YKgTPj9b;VkoNGWakp<6}a8F%4) zlr*=HQg{C(%@>Q?F)Cf zpFN28ORS4fq*cV}lB#+0kr|7SrR#F9BoHHnVb~-hx4OF3%DR%T^d{B{-)1%Ai| zzPG-26$%Pur*Bbn#>?kF@o3~L5jK+7!muB9^Z?5@?Vi0FKCEOexDk} zQ@%)+HceFmL-mQF>i9mX8HkchnX>VB>4*~P87AiM((-$h(^L$|a3^HXOCH+SvPZo* z+9969uH)}mBtNH}NS%)WzfZ$Ag-CZB+c}yZe|uUF2E(@kU={(>M1e+-bOsxhOpRb;?NcA-OBhy;mJ2D(uXI=%DOS&#^ozAmK+a@@^t%-=j{vV7FLZj? z3We#UQm;T3DR?o^4@#3BK2c@mYTciJ`m+8!mN=MuTDm7Yc7qsgO{juLg} ziu9?2)WJdO`c0d2!UVeYQZen4abd0SR&9d}jqf;5ldhWdxaK;U7LrFe{kaIFrQ#U+ z5H(f)jX^ELS=x&O48Jj0Zw}lQJzJxXM;>W}pEp+eN@kQ9W7d?aVwCvA4IufzBQE3n zA|~T*`gU&mHI3@{^GhE0Xe>Dc#m*H!cMf`Q9n%p_I*c&Aj;f4}7Tr7&5C#=f(qsFf z8ZA`e2CV2d4nK$7w0SxDF!J}!pbTr!!2ky@d0OFoL1V_EO^f%GiL2;0`Jqg{^b9b$*L(FB9>?yAnx?STV@RaqHsYdJeUQApUm<4Mi8pFQnF{N5Yi*9c{i>8JkQ6(`tRNI=MUW?73?2lke81_*cvp-m0*SjRT*7w!8#{T4G)vlAqIs}bD|L_s zPlSHw!&8BXc?npl;!Ta0L8BhQ;8tOcP)A!rHxaKUlw6}_l%@Q5HgXFT8}$n3gw_b- z5M<{*`Ko#I!k};UI#W398o#4A5!7*Ck@mCrlLz6wtr5&p@i}?9ry}w5WeHk3K@l2} zPg?cY?;U-U{u$XGTUJPy(!!9^r53*r9@!?+z!`=gQB2Af9ji-b2gPQGd0K=bYlMjs zcm*TF?x9i5L}1W>AQ;P>yl$*5YGlM17WghQA&@O?s2}nF!U?0wh1dN*YeWAVHTZ@S z8G-X5n4}>C4T@h2yxF`RIW4GrqEBb|_{GiXaJ9*h*LRL}1EA!YVicNajCD`I`}<`~ z*XMit-^mk(bW>tCrLlb5wr6P?(}MbHv{73youH-RQs+T}n4G(j&X=RgCDFTczu;%c z>pJfYZWW9yoQUtbg2?dBGdJzGTWQt2l#m>e+zG!~s=l)S#!;wQj4@38Pc`_!-|>;l z0BxXJaX<(rPY#(W>E6K^^W&OHd>}~JpidIT6#9=ltb+0YN6 z?vI~8a$#&0TYUKGrO$slVT8(I1^?;FZZl%NS5WP#99ldEvtKBG;u5$U!c{sV@7U-; z8zUD70`iz5$)=A(xh6}hJs-z5MnQoU7HM(fl^kXWKgm;hQNo)VOziDxl6+b5b?0|? z`_u(|fN$5HeVC^Y8v!Q^_dCyS)L9{5N1T+_g4;cN2y#aE6t^@VN$x=?h30DhHQnn^ zJ&~=+$FoigjL8))3t7*fyXe3B>xB6i9i1__|EStYZzFi=?Lcod*H7pDo5Fgs?|xQl zrakmz94whDz1fXcmLMkFRF7}G&8?g=9Hkut;2tuVxBOa9D*e*$9==MRm0glE>Z`r0 z1)rVw*fjqhx>~BP7=2qZ@L5_*K;)f5$KDRzv zb}+pE7ag6@{GHh6zH{p@9i7np?YiU-ZOJKm@0_8>BBVIQ6}cAS{@BDU4dco_6n;=j zU20)K$fTslz2ns6cJ<&CXg|%dwHJIyoq*0*$oW`xsq3?E(Jw(cTlW!7E%}yR%e24x z43ZzS3P(QnOib(aYr^8`!6|FHx&#gVAyy{CF~0W!=k`fFlJ8tI^~EVCfsTG!C{|Px zux#{K4fZU^t!(5fOy3pwJ=CzQuQFfCF}e|Ok5zzsBN=y1zBlns`BWPdfa6ds;UGyn zB+0+QN15?gxw#S#LO4$(AO_eX+t95?DudP~;-%+BW{8d z#u$dwH0?jW$*YZgVfHoMYmhK=nh_R#t5mjQDubv`9P4!tsf*cvKVoSCbdEufaHOww zFyFb*V`j-Fk}L&R;=S+EQYF;qDdlc&Utd2?<-%o9pqfk|C|%+w;8ll)nD6`ikDeAmxoAiz9sB^$3^4n1KIue`BP z(6SYxlV^lYkF3)sirh935eRi3Z|~41$m^g|L7|9hN#6oDaHN1DVI{r&X0V)xmw3Jl zm5bPXvN~#ite9m?CaL@B6b=tZ(W@9Q--NK>Gl^1co(+YW?nb9Im|uUwTrUH7Cq##1|@|7FQJmKza;dLD_;Om_zjZ1kEon1Y_Ynk?V`Iz=LUVRPS zt3)6bX5pVWC3kC^|Hba5xpKwW{Y;3?9e{iu&pe2GE60;6JW{!-x!XthC9@Z?NHN^$r-h1QB!nV>$bnhtwJ%Mwj;cNc^X2a%p zMjph_^lH}Z+Ny{}9}MVp{-8ZbPqcJ<9=+Yn5R7Lk26IQm2^DoKRVRdJDQN+N><%@T zH-jE%NNi-i?r-n{q}UnI7Jrqk>gnlat^xdqTFo-zreHQgz|45m(ujOh<$2~&-(=r? zYFK(8DM*Xd7AkO_&tWwiPewziem?7j2m&1k@}zvtQ?5&9aUSr`Iw{ZI2u3Np`-6&BieejH1(#uQb`9;^KVqG;myfWCc6%hwm63NcHBmz9~`S6K* zphKeGVWs@3_918T^trml>Pvx2zvTj*fPyz`<@I^O#p*OY)Dp&s)3`GwWH<5 zE{Df2-+kC!k6@2sMAxy^bn7=hJ}g!oiYpn^us&l?CDm6^NIknFv1O~D`8_mtdiA%q z!UZ(RIMt??zZK8<6m=FUWx0FWbgDET-#kHGCESx0X(-wZ*^`1B$ za#EqdO~J^zvEUUPQMaJ+2&GcA9rG}h$!P5!XiI4_h4)+fIYtOvC(8YT1$-a}aTk3# zYOO(@!?lf4>Q)3J;KT|2zYw(G3eNA{RK)$awdhtM@j5%W9-X%SkJ~=Mr+*6R{xUiu!mi0fZcn9{pl07v~dopw;bLdIO;!g z9IkTm_Hd9D+q%wm1HdQgt2JcO-BM?HG7~w;PXrQ!8+a}l{$8h8T4h%RFQ*;9@ zb^|1~XC!V;h$A@yDw(H2mFEb}i!|jHio@PJa!eZjCUw9~GV$<dCj|+c; z2mg_`fK)wie9Tys6!+)R{@!seby`s`A5n~-$%u=9Nv=@CW1*uGVd?TWv;jHB7zte| zByAk`j0g#A*bqu5>@y(hGa}kBE_yT-J5!S*I;VNm%q6{oOiwCbM{!l!i%QQ*NdJ)V zIg@DkC9$7zwv#V5Hiz|zK{jlO`g{{_1W7e=NPXv)mf@4OvlMf|X;qm|+bJ-D&N(+$ zr5~YXWwc~{^<*1nrH3h*5rI zs3t1Zn!wfSkgID-C|MfxF}J!bpSo`qS~m#&NI}UrL_I@Eqe)fc7%f%$KUhpC2u==c zu^>!>DoE|qiwCnOR|Wq2p0@UllMo@|!GuW3F&4*Zzs_=*^SknojUJ~EanmSbnJ5X% z#WDHCjuJJpi0<-wuiKnu_U&9hF7CE`^lbZIQO~a1|5c(&hv#pCj@KZ#>2MF-M1nX8gyse})W4b7X z?M72R-}&$6{WI%V|HPCCl}rCvOeB95ypvYq%y!^SzxVkci^+}4lSr-dSy$CCrISwE zh6RsSwp#O_p(}0oL{c_h{Z~xspQtC*Vk>Fw{&)6+awB%3f1;ih-`v!vi=T@aKG&qt z1uo>p@)#Fd_TFUuQH0U5uPIJwnsE%J5$1w_qMoTY1dvtu#_p^xgN(GlQP1+1{YJt1 zrvtPFltNI%un$dyAff%SkWVSgryaYEBuZXmR*y{~_z*a*nf_Ny>CsmO!h}Fh4ou+~ zhyctE77hlmiliXE&m*T{gfjNwN-^*0Ki9h-{ZKWUgC#ws1!!b8G5=Y)l?3NzIWituru&*a7oVV@1GFefm8 zOHh(f@Yto_1J0`HV(&tJ?zRViAMRt0 zI)c>pAdTfS%SKdm_X;~#RCkUdX*eS{%ql-n?=W8wnG1^A}+qUoP*bZuk*&0@06qP)*aUm7`vKnp=t0az$wB-V#(^k}<{O)Ca> z%E=5V4iJU{AKS>9iiTolX9^u{y8{ZG!Ysoda{k+5l4&Dp<^{QV{}iIL?7f+KjqCXF zj}WiI*KdCe$dA47NGQpX6^{izx9cKRSacoOqg@J=vT{lOTIH_7Wv^Hen#s$Qfpq)? zHSW~-TA8j7HSd~SJeEEHjF*Z;GArHovZvS3Bp5GAIeRhu&b7nQF@(Q9iR1wn5exS3 z?x}ZP0g}|-MWX{1($?Kzh?ECJBiIj$1Gq?vGsxQ0)l_fbU&{CT*}(*$8W3l7BFXti z7D$Nqn0utVD_u>sTS8nK2Y-D(Z`ccH{}mv zKO>uW&LJQ`9mwI$6lRR+A*@C2{yhe`CQlI#oFqm}g8*ypFNgVD6&?UV3evY{Awpvv z?7p;hxpnfO0D@V*{6(*I?a%gUi+9?YTDHYFB(oi+iG7l!o0lA{N*h&X3~0ZFI4dp- zyiK${`Bl*iBD_SmPPFoq_muYc=R3Y;&39jHOEpDtXGE`xYz?rcK`mJaXL0nryU*RY zN0E4rdy-8q%Cw0;p$Ra4iiq!}^R{CABcU@T+?{JcfdDKDt@3{M@G|XoYj&rhXXE1j z&r7wd5=FCLPcD96z53$Q_lw_QE2K~`Zbg?78om<8Pad%{EVoB90^x*3bpzZnwkSCR z;3mVc38zLz<8LHDJ9~Vpw$K(ToUk_BBA&QTIw&1RLnypKjWklOvS>_&;8k>emKIfv zd=IJVBM}acsTk>kQ6+LZ_6>BL6Dh$h_nm$DN*wLjf;I#d4Cf{Wici#1rycTTjIuLb ztr$0ZNUc+Sop)3<;RW;>@4utARg5AKCWN=;tsczx#OJoU4w{*VV4gFhRJdhMdU~%H zfgvY0o|9~qgH;tQyRmNdG)v8;HAy`zE|*Q=Y5N&e@Ke*mZ>p6L z)Wu*_$UtOh2eB&P!65SLu=L!5RPyXAndZGj$G>N*|1!am7qiy3e=TdPeLspE9#xy& z!5p30=EK&BC5_>UpWMzme)Ww|kN5h3RFnylwi?ZiN)0UDDkeczzs)zqdN0ffIl_@Vf9)9O?SVfh3vt3F=7tgE=2 zG=yCjrktKp1M5vTXtY*7rj(@NwXZT6dB9+$iK%9wRqwVmjm7vN+T`annjy9*WVs`i z@Eo^;WmXig4tbApmj>wzdbX>hlwWAIQ88QXYVMer@#Y%5`D%wD<~Q@S5;c9@B?%|H z1*;=YQ?g7NCY>>&}JR?j->}76pc-Hn@6LZc;f55yxRn zphALNpd(u4So|5qTCh_tPQ5a!&5F2RQXt+qqn{KTMYdAR3I-7Bnm_{^55n`g9g*Ah zK;awv9A<5;q3ThVx~f{`QA~Ake)Sdcs107ivUnbEjo!Ukn~d!+ivvI?W>5r5B%+u3 zPb}nugGiEzo(B8?ckKr^vdszREt^uLnU#KIXE5?aL4bF+@X=8?MAb$7TZ!#}r*u@5 zh(<&F(C+n2>0XOBLXO>WU%w)}a1WuY7&(|TVbt?32lXspj~Fgs>1VwY{tgeFE&hAv z#>--a+2{Nw@<`erS0PzNA06Z{YecBQy=n*gDCoJ7T}~<9(vrm>m}05Bc*KEx!1XV$ z?IVZjhYq?^%$1fymJV#?Qi>>)og?_G5P!?@$@OO@>dzF{>UmWxpv7(!q}LmJ z1FU0uha}at?@3Sx)P3K~q8k`7so@zlxX-_O#=E z8*{v0IC~z6*%8y$!0!qG#c-hHu~}#w55M$}fKaoq0#8UoA?fEi1#b~Vo^n=;uRT*q zzEbi7bg184_nmI-KF@BX{>_1~-MEf{&ev+UYsVgTKD+_>qA;&+wX!?Kdqam9 zYfg?Ers7s&<8@ztFsbynHwpBRyJ9_}MEUS-Ieho2c36~IDbF?nVm0D$#T{TUe~$wN zv{14J|FHRD?wn}B6{U`v*ZHHgHU$RDmiXY5T9RMi#qnZx@h zcd&W1k7KM&8!4`u5?<#*i~3|-!eGQS58_^f<1#6MPZW~V0Tw`PKtOEH!`S9yGwx2T z`BNJHI%#{j`cF)lfLhpHGWF@w$f}FjVSGH(8csk7)l&*aF#-()N3au>pbNDvnE+5C z=>Ue-RZ<}{5JemN$q+vlGO~#;uU)^)s+=d zP#qPK{Vm7=zd$`j{OM!Nsgc(zQ8d3#v@J9mw;nVN^KP>WrXh(8xE<^t1J4wrFXaea zkp&uC;n_(6pYb$2KLBP2hiOt4$$7`P{&>O5)cN13XMjrS0e8&nFf;}Bh)*IemYc~V zt_;mSpTZvxN>ieDIR!sFh@eov!^&N!H77v~WKmXV!g08JSjBsab%}ya?8dhlL3YsL zDyr_U2_;8~55%OiB@!!B6$LSH2MX8?QkdcqH(t<}@WBsGZ<^pi>bXEYnLTDXrUVv* zCgDY05PRiO&d+$wVS}7#jU614Go+()J_emy2MhH3ND~c7 z4vXtaNrV5&IV;X%(82La5O1KVA%iqk(!M(KY4NP^19>gU2rc5P)PrBZ2kgL+130{# z8skdt%)#X%507hy|A+$CBEThNQh)Ip|4<^vAox(ZVeuh# z8YG)(M5i|pB>8{{#|MAJ?*V^r6i$f6B@v^91MuY8-OJf4jX7kcCFh7zR%EFZX>L25 z#W~fFG|qQ{KW;%VO_;ZgRa!Lw443Sn!tRi+bjqYL-s9i6XA4PN~VFu38s%YQ0MgW=Go`t9Hi=>DiyZp=wSk1~FgzH^`^?oON(x|>E%jF$t|-GLNy zP(3;VgY&rYK(HCCK;RL4WPpa%9!Pr(9zKDWU4=!d(M%CxqRHV+5+r`oRkCvIH#}k% z^5Aw&lnHDv?3}2(S#JXb$&yaAhfMUqhc)2@E)x!>i_Cma6Rn4RZ22R(hbsBYX;v(< zI`^XJ!ykADzF3*q$I=HL_xUdUInbR@;@|~uZ-#Y$r>@=wu8_hvM__jcVZyH)7u6as zPgq49A2obU+R{omPKZAqB0KqPv2JljK#_rn#!0!n|YN!egtW<`Mptx8#9U#w$VQhk9P<1X_U_~9q%4Jx; zBYpO-rmwXf7j>OIQ*RsBjF1#>+-FVyQC7ZfmGbS2o765q>B5;~ukvBAf&E%+InAS$;C2y}af3MGaX9;8HkZNb_mEIDD-Z8;G6>l}~Vaa>xoFNK#jBiU)+DaDGytE|W?v^2Et|KZidAjM}HO4^Ef*5jb$g zbee)3F$9yl`qVb1)g=%lFb}NIGYXigpDDqlJ6t+`!!DlFuna-kA4VQffTZj|3}p8) zKlqnSsXO=3bw>}HDMO?vigShpy-BDdk7!SL;TRViHa9qq(1pc89ZvnqS|b?^8JfB* zq=<(rZGip4;A7S-v|2a4If%XF?jDi{h?>Jk)gX8t5K9|y0C#tv!68OO%njZLCyCf$!Fmws~<=#qQgg~+@jv;b1k zwg*1@Gxd^k>LYCGNOH0SJ~=o#8S`eEn|k^>eEKCj{ABOmPan(Y95brCGdBD)-mcT( zu<6S3X~)r-5~`VT!C93*KKM-HVzHENB9c{e%BP=ZucPKT)aO+G%z`Lq`AcWEn&)gO z=8`q%E?yBQ%;sZQBvIPn&LNhU+^or%w;yl6{e|t=Gk`xgbfwaFy>1VGeD@uP`_rv? zh?@jl-H*ih_0TVm_aOoAA3sd9aZw>}&W)$KYLQs#^{e!8(EP*K)>F(cC_|`cDX4Kn zR8#vCALBmQWPJ$9nS309KNp|BC0Sb2mRp9FAS0#`%0x!4eRy26@bcNh$J&Kob;!LC zc!-|3;|hzzi$#v!CDr~Vo57`!Vfgb#xJR?g$5vOtP`XUBNGU4+ z7`o8I`K8ATA73tg{J8w_y!KAG>76GYT*mo;%q#X;xSTbXtNEAerMH^Lq$?va)}PF6 zixTcgZOdR~Yd*3J16DY}D{4e5H&L#({jM=J3@VSfUv6@KdBpkNfy>DV&i?|*KkTNO zp{DxXRleO!s{cO0_;23F+A`>#!nSfxc<0X?fPZ4iI?Qn6H)fO5WK()06blNC3t!L33GLAj-D(Jf zY{B9G1DGZfu=PCcC&V59J3Ee}sZ#kn4~2sN158tH;&S7ELlWzlpyzp4G#Ev)XUMN`#muHq`SUz*pFv{|!m(MkqIp2yf5Eom@#&`rX)`Og=Ny z3d2zqu?*FH9o-WM)T+4OW;*Dah zEc5cqZiohR(H{3@sHk^SG69mfBSQ2HZk6(;#EnfEKo73~jn_?%34pJEhclsdK+ViE zkP#02>WAX^voaa3aiQZzF7LBao!*n~Cz<{Nl4m(d&pmDXRt zmqFQ#a95gIkNaF3Gsoz6n)cDZ>kDgN{ zpK0cJd+GH`jQDw`FA&IelZ;m|M46Jp}G?Q7AB{uRju_EDoKcjSe>-;a6hSe}LeY5SB zUQAJ2a8SIaQEh~t z++t#oVS1-UDX56J=b%7>s;`ypwr%y6Rg6o&4^!kEG@Ma1KSd_%xnu(;0TR)Dq)M$d zef(I$pzP4flcjaYD%I%y#FPa)(Fps1hiflM+Bar*o7j*~f9*J*?hA32JaP1X9lQDF zWwr~Gr(WWfrJr68a=%`1PB!mt-WJwcKYZ!QwI7@|`FP=6D7G@?fz9VPKYw$jZk|ot zKGHb2pEhZ89+vutfAdCT3!f|1-;U=$*nhfpxTuLPLS{Bb4)_OSO9Q={51XCI9L6vqZU_c?Nzb&pYIP%S* zTiS3Hv;Duib!Z0~q?qo^(WRvA_BBV;zAL-1=GhAjDPj1<#j6>gW+Jw#V<*8$(|3`U zZqSL0oO?w1CX1Vv98y`m&}<&hE-PrFuWw1{*3r183cZd(H}Gc|g_lGahu(N&(mP>f zlA($rcG6x~(V<_|NIqJyGq6mSdLNN-J5Cr)L(d+?v_qHWi*#imEdW?%Y_C=PYOyYSL<%Jh<^dnv{Qg2WflFDK#W_I>IUGULKs z1%l_vCai>T=HG6eu_bXq|1=>F*{U1+g{BK3Mju0zs{d`r+0h`bHsdGQaUPrQL>udx zi9a#B_1tV{!1Ae1M2%U;%bWk|)=BC!TNttYs^#+BthR+NZ`{f)+Pl_lqT}YRPd07? zfiKMVU)`|#9~PZVN!s?tZ5#jJj_d!wFl||vfnoy1HMGZR1qdq|y5uA2fy;_fbUB?u zsBi$BuwX;6tAjOYL|Vd%s+Jf-i|aCw5xw=YcUd|BvfqFvK<@?MaJ;_E+VR#Dh^JGU zm=G?VT~mZ^x_iMlO({4zq|ZC4NTm57{4|71GW?gQ0Ubqg7!J!!2?Dxh`%`s&Z{>?| z#g2SeFnshhUmEDv)VX4mRDcQPiv4g%Zqy`3x!Ctek_Ha=DRanAkDUEN4G7GzF!#mD zN$JjJ?ED{)SQX$;cz>zqX*n;H2#muOJ4gLLLSk=z-#h*ls3k6=58k{x>A{ zzc_|XDH2R^10`5VNp@nEr}Mj6mL-HNYU3>e$IuV``*+w?E{Om++VH^E>0Rk+yOKbgSD zeEjrpjv>CfN}E~@909U6@?6$wzYIM%tD2RJ1Tb`G|Axd0cWi{A5Cq!qE3X>_j^Xn! z=OJ7qhv%W)lI&vee?ekZ-LI8L^dcmQk~Lp+{$SD;dU6_6`0UovuD0>NIEF{(wa6(~ za&S1pI*b5`H8Dt3_(n^<)+B9RC9L1jRQpqIxKnLs_^9s@^R=VS(hl*-Ml|)9>0gdv zU1RA${Zmph1;fV1L#jrB>EoidM+V%JcEX!+#HdB@b->)}qfTAE*oSPau!lHiI}>l$t{LB=UL50+x4%x-f0 zg~UFKXsg=&Zg>9iee-Sy=bNNfkV*E-KRB#-NE2Y_evhbf$wDKIQUkLY#=aVmC6FMi zn-LufC{&81m}QUu43znKa)khil^%(}j{Y{xwY9Xr7SnfMYu5GdS&L_Z;QTA}ReO}` z*Me>7-&g6KYB;0IU6f5UGRhRyveGvfA}MlKPYQXSd{urI{dl`kJEYhxh+eDIURiCZ z$wP5JpJX%0gzbsP*U+cAGl86&U7qqSok{CK?|z@`w!-L_?U|iBel;~jZ!a8l#8mXWS}J#KQFOn ziA)J)>Qi*K<2YJ$naCV?9iU3KtSJ`Wf3Teds>23`k8RNA^9IqoF6q)ZOV z>*SpNSdWZJ!8j`Gd>}pM>5mSY-q+M^b>mtR4UcGmY3nK2aBq~oNi(^9UCEMtg*S>m z-Q=FJ;ukT&k8`;hGZkGU@BRp^6qIC|4783~I_&UiHfK{gnk)QImYaXyMBL}+!B>l3 z%u7PA3#5$RHEDNfv609z_&)}RYj;*iE`I&eh`M}zRenU`VXR|y{uIQjtBw|b>CtY+&MPC~MERFAIz7hPSsV;cKDX#AV!>mqCbyJ{^`i?@7T zuFLS>mK)REw_#Tds{Af&UVZjAt^WFdvG%`q9xVyUqcXxLQA-EGf zK!Uq#Ah^2(cY?bFhclD^+EsgZ^*Vj3x?l8*^%a=>Mvd`2_kCTqC;pvx|3q%InZ}nd zeLH<${8`d|)(-T$y5u_jLsv(@Ick(g6gcTpQNV_-sD?tQ<*KH{hyP0ku8FtvylbB7 zjd&EFMqqsAMMO+RmqZ5>E&C(Q;c6Hap7rnt68eboxMJPy{yrR_dSw{A@1;+PM9KS9 zDR5qfG5(N&k)I8Z2h?IJ8JcR_tKmj5z;yL7MEg*HjPprP_s})}8za9ShZ<$jRT%Eiq$(4JHG}1n_lD^oq)=V~ubKsny?d zfgcV?Kr!(YE{PIVF8&ZHUX@f$Fc~;HOHPVa(n4zU9Lv{sG22SgUV9SD{Vl=PkDjC4LCwKq+@Qr8!0c|5yR@PUUUTcY+U7h zVOYL2_z|*mv9^)eez$Iv(|NCx7TI^d9#q-XH3G0{jD;Ag zKn^L&Z3ki8fNxa8^`Ywy2xUA+W^kc}&aT4-Zz8t)AqEBY-J&RhN$7l7LVrw;w+-@7 za|UCT#_wYHE~xV-91%$5gc3Y46=bu(PqFKy65iP*ev^Av=6o7?}R! zOiuc&MG4mxhwEPXzAjEzUj2n`A*|G)u1ZgSc7c}aD)VzPj46qYbNjDZ+q7gHOXAWH z4h{d_OiYFSF^>gyJ;u?@Wcy8phnC#El#Ohu89V0xoNoU)-TrgB{eO76At*2QpylTd z$#rl1==kTHOWX&abNS$NF6;GYu+t)3;r$TZePFW)@CD*=`GXtsqK_Qxy3Yp7TJxh( z;L6df^7{c`se@JP*|Qu!kFXKNE&n84q`)A?lQ9;&?fC#S*We+fGA#t1G5$$G9i9Qw z=3_841{`qDui(=S9c}xXD`Glq zSt3ahW7`HJ3SEv~JYr}mmrqQix}=*wqLpx`=R5}eSJD8_z0H>`npkLRE-ckM0P>t> z{4Q7<8qy7_u@)f5MEKZCR%7)nMgg9ab_KJtk`NQb4pP(}Jco*tCk|8Axblg{Q>Ttn z)gAixn6YOJP^>tzBYlvJ?C|OC2a=IQiIj)dB?QpK9B6Y+w7%zC&XxLAS+Bwr$+n%7HF&f?!Jyp;*R~GF4n&%{5wK$9%V217&cy@Y zGVj<~V{!LGK<9Z-@6Of34EN`kM%NDG#~|S!`!7_^Mjrhoejqp!IJ?#Umk_NSs6Uyp z7HX`II)gUR7C8s+iA28ec!G4+JyVZtw(-8uMwymWF^Z8|A-f0ar8jZLnptE*#1MK+ zz{KtxyfB1z;qsw~=ircInC`+eD~RQXDXv*kE_^0U`DN});j4X+shwtV7-*cXHq>$N zNZJ}@ooU{(XAw_b+R2?zAWa|@M)_&k`HP9J;Ht&i!(m&hHN2;;P2mVi#8>Mwrqc|N z^ifQK4NbUx2=$Rtx<3sqx4Q|Am6BYME%k4I09mQrH_HS1BF21Ejn|3_JNk(R)q{Nu z%SyYlQ?Ek1D8uhH@7o+Eb98LhqG~FNxC=}7pO|dRPT@$ZJ|810EjBrnNj1mVWjSuP zsEs_X*Dy2WQ29~JMG6^-sG#&0$6sH(B-vs`-F2KrpTgE#5DGo3pE5%KYBX%GhU#&y zV7hMB^A$(xbBs>nFLq&MPIFPa$94nauIeU9pbqt5%B{$BLv+^qiM{65HAm8ouEpRV zkJa06@YvQIj95*$9Svf+ILExs0u~s(NR5&Okx@pHWMm;ai0hwdry2B{2AQ}!$yn;@&NP;4{wyZn7ZSBczZorUUzLZdfWQEHJz zME?EO0ugM00I?!D@<7J|3P5=353hhA*<4qvSsJDrEtiGV`JQ z!9@$^*EF-2FA@JdJ{YjU7NS2NH7Q;0l%}zYBFg6+@0eic#8x;spm(0h7S|N?vZCSO z5A(&t*q^6GSrb-HODC_lUAwM6|CRT5;2N#?-EV&A`FCrP>)NK>g+nAv+5tvN+T1f4 z5{@5^?y#*_gSQq~qYj|f>~*iRx5`Q)z&?jD970Uj1-ryIDyz%iX`=g=_i4P5J?>uw zhi_p2$@}-ABTgI%D3cG=^{M`Od_?PY9aWt(f*&6-Q8JKRbmSLLZI!LR1K(X%d?YJJ z9SwZth`EWR`ih2?-o$#`he^aiN4TEFeLDRb@J_|g|An)rK770Q%Ku+T$;w2EAWVKt z^WA+o6A@aJP!ZWcd*V;sg(|T3n(e8$6V^MZbs#z!F;gb ztgglfHp$4Z?wEUYgBrEJp?F2dZ3-1=xJ~Fg;e!9dHe^*rq#r&0ml|Y~d-^8Vs-rVSg&>8L~x=-kRbI z|5NLg#+rF0n^C^{U8qMY5?~os5>KAs}X1;E$$ya^1P7=J0EO z4*ob7jE2_3#kTy7v0$)Y<6-`yJrZe^faFh!c(gHG!123krL`HFCn`dB9_Oc8$&fsE zEEulb5__aCvUtDr;!bvLOUwLwe$DxkuWVEmIcF*m{y^&7PmZg!^=E5ApH`(r@TT~|UXOY#YKLc?KYmy6{YvX`ZJNVc>j`~; z8aHi9fSYs2e$0>y?_J!G%kmT^WC-Y80C`h!>rD{JMIfY(+dWO%`7{hZwfcF50@ zc0QJdQ$NRz3ICBG=PSn_@h6>LL+2rB=SL^x4kQeB!IHYWxj%ydqw3>!ECRp|+#=19 zou7WFHYG*eCEdmnV3Mf=S*N7$QQme)0Lu4#ejJ{`3@9?%_;EY25`B%0k#B%_=-2A~ zh|Mj3UguB06uPY4H8<6DLK1i%Q)S3+*GF?XQGD3RN`f%A!&J4U=JEJH6JsR{Py|S# z|K=W8Z6NPP`51S^I-tgaWV8}Uj*7I>FEdU!qyeq&(pA`pQ?*OL5nv-JI+~!(F08+@ zVyntEGAN5owkxXgVcJmQ>rjI_8Ats`b^^9OT|#mS367w|$~SQz7JReh=;U88{9Kk% z(=+8a^op!O4O`D;yI45x=zOZ9x(-Z3VbR(%TPQ790V}S{B*VO##Ff{2YT~*QY=QWlk)2{jK8SvIZT)sq<7qy_1-c<^VUnidp)OYY9 znOrg9ehEOmg(ivU73NQNB0jP|$6%;>8OymLy1SqLVmgSuGbbXJw# z+ta%AeNNm=EG|zueTjpx_e~kTLdK~=)bn_$#%~hl#Q^0)aox<(WqX#dpSY*O*2F$B zXUp>Azw~7X!M$8)|BUfmna4^qz-|N<05ojp4$mMMO-lV}x{cP9q)$iDbNM453 z5de62C-rllPaaNbi@g^P|q*K_nf@2Jz8&DJ4i_s?3f7%M3bWxtDhG}6#^tFHBL zqq<#;_{qoRz~A0>_iF${&LAX)4o<)Jci5&>wGSQFUU%Qb10NC1$BQ0{s3;87t)#8M z(U;li1kRUx^52st;j_ov;uE=Jai-mCblZxL8;JZv%1;{q|}!m_t3qj z_5q1kqD})EZUpAZA3!I2N+Y@o^*gI2>Q}&&K6RLw#_ZVCYZw#vTg@-?eu%=?=;#Bt zxtx2es|r_5PP9wrv*u*&!8C5#qYtA(Rx^Z22VWFNe5yLFPLZ>&<33ThPVHK>9ZYeo zN6oyaVCO0Q7Um|EJe8@eWbJ_A3phXrlC#o>=8;_A9AZo?ZKc={tCwGS27e_$q_gQT zsl0~C71+YU3Q^fZ4rd??z? z>@>E+yU74$sg=g+^kqDRJ7aCR?albi+fM(pF<7DDhFj{;-rn4wv&wPjvKu?vDeuWlDQ==i!vtdfhP!T5d}0l8N`v1yT_@AT_U@CE^?%aLw{r3A>xogMTgaleB=;bZ#n)p`-X0GAI7iJz$a$HknkEq(uTep`68e}q@H{@Ne-MDg{>89)|q`McWj zj?(s71rb;rcX#Y*U8s;(^hNW7ujAz20O~QYhv*FecvCLmc6wx}euMmI0}#&#Bq)%v ze7`tPkYvS&b~gXTMDHU;dr#j+FV~e}^WBk^z3<{3j43+gl*o&DlML$f<5ZZUvkLEp zCcG&o;N1QWg;u=A3<0gib}}$!FF|ft>vUKTqK0*ri3*Oj7B21*iV+*i5gCyR9sXMm z{Ke{KXxqhv6})%{!o@zSlO9aP7`e=at61=xX=Z#LApQ^%c4}x^WgG!*YM0^?IYAyZ zY!(GF3q_Td46P8zS|+G+i^(Qpz!Df?RglzE5OF{qDOLA>z?u2?^J#^2AU8yCmk3>h z;_G9e@PYE(^{b8ae+#x)bs=Em$O}LKyEW-|X`{d*p`jkW(|_jEYHbWJ#*^-}coQ_U zzhmtR!K*Y|s&yv;!1y_y!2bxgl&Ty!8>1n?K|%tz^D>4gkp;Td4<_&051;P>hS>>P z{Sn|Rz~(wt>*sK3s^m#ezmB~-6YvwP23__A=9AXO-zy?F!?(`)F0RZCK02eC#m6=9 ze7fM5SI2aD)3NTv&AI5g_JrhH$l<+zpwVA*-P&%6u0oR;XB0;;p}-U?6Gq8Q!>Rnm zV&jxPF>HQpnZ!Kx=@=rMINB)5CM(^D=NdUP1Lf~tRYpb3AN1e8h6dC3G{UwcVhm$R zC6*I3RUSv}wN+2JEns(yA+Zq3Br*OqE+xFMjFmHwea#a=0LqCFA#9a0*q-@wv2VRl zF|pcrv(=#`JK>1UQqB{|ST91Y(y-Z!M3A1!Jq{0+%w2PV?Vm&kg7wLzc#P;NFW@WU zO4p@8Jjc}D;0@v@?rF|SCV8;Aj)_`0$?r8XxQnt>l}0_4HiN17D9WGo(^Uw|teil< z&d(@;aRjk>K|6y+w@l8vHrIxlNTu?+is5h7Yd#iB(fxoQDysg(c!av^Vt`xmQGv-JKnl$DP2th49deQiVE z$f7Z*ZAcnTrtp+`ditXvrJ0{hIN#Y{!VvfO0h{N=Zr*h)>p?`He)VXo`j z+LdG*Z;7KWl<|tuH7to%+U`IaRqH{(QH`or7Ueo4}95CnJXBdBG)I{gdCM?^ZJsC&|ETjDXoCXA|L|+n2X=*r?)U z7ix{N2tZ50x-l99x@j0zQ?)Um4-B$5V|FhK-a+Lv4!Y`}?vNk$jsc0VmG^qSJ(x3dO8(<^QEurO!pHm)wXqIOGp)YR#$u_E z8#f5rWb6I|iY;wvI?qP~;I%&h0$oU^9CyT=Mslj)si&nIrGIFiSWL$l1x~_#rAO3j z`U{`5&WTh0^#|%As4nS6zC9V)M>7ionEvJvEQ;3kDD$rpC0=~l1;86q3uNC+UP7wj z6jP5V^xv|dRt4t41)Oi*rm@|tt~=2kAFh10py$?BYHBitvSTgE8`l!@t#^>@COqYnp6?gYU6}^eiS+TTq<91YB`Yvt}vtiVS z;v(-V61GSglU3Yd<(|Vv&*jkj)bEOe@6$ zZpm`GN&f2KHtM^~OHqoFw&|6W32XcYL!z%N#~m<3OhO(FA)PHv?oR94m%teqG!`zl zOs$_&7z5=>f{w-vv$;wvKKCG(?xJu6E$TmKn2+Ymr7AB;T#8^(nPk4bJzGd4>0VSg z%Li1T#bz%nXVnA4^{8Qx95su7<_c#v>mG}1m83F%`<|*(6Y)jYykRp5u|mf|f_lcWbft z5|A84Fh$Mwg{LT@Ev0uZAU_M2=#;6pN%nDQPLIZZ*yD3E+|RLW25zzAZq54NXL|3c zrM0Tasf;X!T%xA4d8Z4j3$&?^4AjpZY_Xf$`W)8`8rYmHwuI^%_s-Q;KFS|o-qzrz zJfX0y3Ldts5Pqvn`({_@$I|~G_|7zMt^7vf?DS2jIkX+^I5dG3tG;EjYQ{LZjY%r~ z5R)sMpuq0@L(Kp_JMLAU(Fv#61qvyD3&uu51u7dGmRGm?Ak22MrGTPHJg%9yIr0-m z`b8)6pw3Cv)`-=o+C8$tPb?S)?8uQ|h1dt3s*3H^6f+p>EfNTBo4Bo0J9R_e;Rh#X zjOPG(b{PI4UH7G$1cZ_r#?AUFd3MR?3?neBg$3ceavGbVK33KH3Eguca(t+^FI-k* zJjZPNbMLsX1-EoEs>H3W<+IMUT&DYFoa3fX6$f^hI?MC~Z3G2#U0+D2yxYYNuQ4J( zds4ZXZ05FBPX(xj$MgM^y0Pd})B|{1J!Mu($ASR~x5$KZ-o)$i^r10MSQ}^eNlw$MV zVEj*n&auU07tar}1|p0oXM3(5UUXFnG&1$Q@tqNacq}0zy_7f@1Al42Dai?Jf*VSJ zUMm&m?xIzS+iR>!YvSQvwv0|JaEb;7w52rW_2nk8a)#rHKN#C7e=9C}{s|iEkjAg@ zjBH&{dU}VjmxGSOv3$|*lj$)tg07y;aB16{%elH&ZO-~=ZMYKmicVJ`=laI_v$X%2 zFKm@pfbhD%a$@S*%^8%48Z=~{6jWBB_HjrL<3Pfp!xz$FUn83B$2HC47XBe$Cj-e+ zxAHui#Xk@ja9xcWxaVpHC`Pji#vdi@t?-S=bmnpL^S}A>V^7sd74=0sZg#zS??uP! z*Si)|SYvMnND(i4vfGHy1$(nWLtEcKtc3>P~_v(P?cM?e*Z&rBV zg(w6X+LQ{;)D$5UtBU&t`5G(rn;DkBC?}q1PY)a5tB%fktUefAs` zH#pny*AkTzG(CuKNS!7}=s-upkO2XjTbPSTgrda*dbs~r_q6{RK>oka5flvd@uOmg zhm=(iM7?QqWFP+Kh<%W*T6Rzy-1&7XRREwtbNTGg zJzw@qGR85d&&S&d96`N*ZgS)}SYVDe;eF6`2yLb^1(qb;%OHwI`a6!i=;*}rDYxB}*rUZvg4 zJMpXRij+Pl_T3w~t3NpcOoT$*Dz@lzHbwXf``2RXr8(b3s@5h~64<_(??cIqv9L) zOSwC4sLW$Hc$9~lTurO8JYtq@H_q+lVb2e?!xSxJ|7s8>;3HGUmNFSr&48s+XgQ5A z)D=AEKYRJ{b*ZSmi-I2(Zt%q84YmI=>-W65OI6isI5Aj0YLyk9G2(MYt8@o*-GM4u z?yTb^^~rfnKq5h)!3lfblQ@oPaF#gPW;h=PzQHp|d+R8`m{?di&2yb4*5jrbHxA$- z^uDyOe%-6^aFMtu@`#f>*cb^JcrOz6p-^q_{C}U%OhU( z{?i*KY~^#^<|YUNDqR;kj}j8V_6K>DX!HTBP)jR$%&mV8RZ%1phAn!|%jXQN`D4b^ zdfmK?gAk#G2(Cc^!s4BioUg-);Ta%KrQrCgnBrlyyhAqW+oQ;9u#Bkkit&4@OXfole3LSHMzCZ+Y&Wp*|% zX1abXG!3Q+0B`Cf4ENSL95cg-|@_q~V>2UL_>cN=&wk z*q`8%DK_-LL}IRy7G1}!D7&~sY0!`yQ>UdYr_)Vs!Ks{_RHP-zD{@kZWtx)I^j<<& zmC2N-JPqTFSnke@(G00REg1z@-X{{-Vs0=)#nOl$J_L^%Ycx}N+f0#%pWU)yDIl3^ zUg5r-({gUh$4$#cc(|6=O1v&B?u(OTWH+DHhp*Ym{l6!C4h2`ukKNsx7$zPrg;(7L zWGbtIl`IQI)~TTLl`sPM=pL|(ZxO#Ln)*z?a}X?P#J6tXnwq*Vmav{Dv((T^I2Y z|9>)M|H+X3Cqwq14B3A&WdBLX{wE>(|A&OEh!q2*#g9w>YQ{|G>>r#TU5GXWC%^eS zat)55yuShhqI95u3h6ya-%18A0D-joTTc*mtHq*gcM+dB)~{C2L$>ZCSR`X^lAb<8 z+=5tP=Wl~a^+R(jHp~M&_cv^Y**g}Z&u@s|y1TuNNXJL-@2is;szGpw^AB%cg+43H zW#Ivj9r-USq^~Qqcew&U=gBDGJ5#{3e@E{5{yhZRpTrah&YqkMJyK#jQK!L>4L??D zCvoxS-_~t(8`fP|gC_P90sl<$_c{O6ZP+Oa@NP0agc4xDag;9EXXZ-OxF4YT!Ry2O zH*kA(9zN^#<~~T+s20wmv(d6u|13?fasAS#!|_BM0PV^X;^O!f|7#iu7Z2EXe{i$NBd%7*EqzV@_=lo(-NZx-Sf-VuM2DkBUL~IhVI~aQ;edPU z`9*4Vc~;vB*0MDfjXnpSq1K|97`}qxV`3sSuaFnvI^>LbSFOJ7jjQ z8kb!3*J?}JpEW;c%+y%0z%Ir0zq6rixD{0;t(TZv7>`R)lz88aJ?N@mU1)l*<;At& zDd^F=Wnj>p#6d=OMzo$m6HNpSVd!-`Y$e*z|2napPR?XE7O64rpb^{Op+2o6L=$D& zQfKE*HYRWvz0-2_;I*T?F6=pV((%!GgOMC%moz0@HeIC!IX}Hthg&dgj>kaSk!vw* zEoH9_=hIh%ma%JsgEp1_FKbTgWo;yT+b@6X)q zS3DS3oWXYOjTT4ts`%J5y{7YG6~7Li@D>~l;&STYW4XQKtPPak_Us#I1@?=b(>YtM z$9lP^Z9nkG+yrLb+N9F=-%XjdPe@NqRJ^`Wx<06(_ACjq82-G}AvI3FTxKl;c?+y|3)pwN)pX*gUbk^N2*$1{Mu9$Z8sIHmJ8u>-s zlWa`h1kmos7Q7gFQ2c5j^*7r8L7EhOSf1mx|4Jh?`a+575hZw~bg!RL;ac^Q*9C_U zY2bI_cEJZv3A=rimvQ1$X#Ohfky!^P{!#YA5FMlW4Q{9b!qgcpS;X?^d8!0;I9h*U zH=G5ssswiU;B;v&`0JGYrVBuJMC(nD@J5c(wO7Rgh=rpfL^3jZMP=l1AEaWN)@_F; z8Zr?ty5LMae&X0fj^t}3P}X&ukDgk_=#xqBCU>EXLXD&2wVow5tILjNTNfl)Y$us$ zyCp+hhfcb^#g`FNjh`-~D78*TH?w_<-Hqd^To}gMY=}(8u&ANDULX1*keLEQFEoOw zUmXn5#c}$If?*w8JBd^f=2As8bo)XniOZGYlPWB!oy8s|*$_-Y3Bgr-k;zCs2x5?p1p4-xJ9ELIvrk z1LOa;#&43;4DRPJWCDUgB0ThkMm0M2TKrUhwwNY8c}*Zl#SINLvs9IFfril-)M`R! z%v(7UpdIwXwxO*6*CjDfb0dCL5F>XkY;Dc$r?SX4x;l>WvF;e?wtP zk_CtDjiTlamgcqdj>j&5V0`_r@b&Fq{)+1~Gk0BRNYKCvq}fLRN5zvkglM$5GEDJk z9>M~J-SYi1^>H>RfuCi$Y^Y%H^7m#f{AgTyk==*SJ-sgW2Dk(0F&6mW9Y<%n+G`8` z)cB7^uG{5C7jUF!7-M2&>)m)SV+y?OpucFqY>_;%y|{}5D?W) z1%pW9YUW*o^)~pgo4FH2>u&|<{K-_j$@;f~;BDuNa4B2e1`$I8G_v?KN_Gfg)2t@u z-zl1G4@NuBq`XFfAIlh83DSbXxCgO>L~;n&!*NJR^jT?IL0ffJGuA@)XKLB8D8KC* zqMml@seh!ZJ29cr;%BB5bmlGO6VplFf|t*|7x=s+b$J* z>F$qX8B5ZIO!}STn%9UYvKz7?Zsn=p1{!i2lsb;b)zLEhHXm@giP%J3JP*1ph*DKf z)kPU+{4H`jy^3+{hlYjwx#|6xz`?p2_F??r8h>%~S{BnUq)tfsO>f5J4^wzbxZ$gG z{;DpmK8^vo2Lwnkji-&IGs9;5}8!(4PV7o&4cHT)m+JkepyT7H^itCV@?{AQeTfTaw?UBxsX3emnEmjzSGoq zKgYJ}5cXKROKRdUF$*~V=ylx@^l9gTL`fY|?P)o*O<_EWafJ-I*K<`kkvU*)MEU)0 zyux`jBsMEX5k~(zY>l;JKUqhQmHAigUk|SlY0PI1xz)Ei_jSs@-!>tK-OC@~5;QBq z*6co-iU9ja`=rX0cclFyRpCix(84j%w^?l7UUiI#0}N2YCm|#Fn-7n-uL>JXuz5%w-ifyNs)H9&dw!Y(gixq@0Y#p-{8_&?IxqYIDY7xya9TU}jffG#?3~h_F zfFwz`cGMZ0GyCG>pxJW>#qMu03^4_7O8M4gjEVOQOC)<16|HRbrEKM@pW=*{J_wIeuIFK)gp$Y(C>6(i$mD2DlJjH{ zvka@s|0HKC(uOE`&^?tqXBmg(3oUH}O~#%=lsyfBbbFbh*4vmq)| zU2R5VB=IPWF2vQW*Lpw((U!{Zi@ zWo-^llPGbl6Lg2yjFucKC~#U1=bls@4hz3EV`0qdwFd~Ds^T?C7%sCtvGzOSW3@E$ zO^QV=IGu%UHfu`-=&h7`{JQNXzoU#?ZQ^%XELGqe&c_6zxjWY6h3yttZ;%vTyG|^cI zc5X=PO1DB0enykBN4hFW`KqoFZ7Q9SWJ7*U;;9Zx>Q)v`JfKX0WX6jde%Zw9?d>12 z1wj~=_KIS}WOHF!8k5`wX_SH2dM{Jqk-SmFHG&>ZWFb(oce#Z&*vA24$qwrzLj0gG zffvOSw!6LR@Uj0gh+%KRFQwj{ZKQROkNde!{Avktw0wu9+Di)vlGXF>SLkmiuR2Ac zR>;MgV1v91YBMyAIDkXDe9&(lM zt98DP1Y;E6TuDJehL&^7Gi6R%H!N3rjyka2-}}iGp^3mDNIQOCul5=}eS8b<+N|+b zU{n$Vd>I1Z`b$v<0$W!%^NeY+Fw=WAEKwhLAe7z$<=oXGHGXheg0VFOBYjDJ-hDkq z_$Qy6=wGvbSg8-+yg7AkUbOftu@J@&?atL{wtx`0At51r43w(%suwrGDJTC^-{a1c z`|p9uELoEWH%n|S-|gdrVD}6F0B2S_^!r=M+@zqL`$u`@hKxsr%mNgsP*4gwZ*YA5 zVTV~4Ej{K(GM)Fh;bf_oSE3>yFr%SMg@hoITql!89d-8LUO0aCwnO=A#0W<$h0gLj zBmv9EeyC4)uk;PYbEA0Bs zC*gQ+1nv}?GFd5oRBf)!7#lv@tYW%lAFWTg8fZ`uB5i@iW%Mab41&Mhi97x2%SP%e z8FZ!m<7qvIFWt~I>>(f-@s=YMXxq5sV{HhQ>!aV(^|+eZx692oGUVhy!a5VvI-|k8i2f zY5(b5gEypewjL_&w|D%oK_Q}m_W3OB=2b^8y$3ek)nC3n|UF#Ulwapo4vVw@c|z^fN^huBe~Lkqy80s19v z(0}*!9}+wvbvUou4;4sn-T2d9e*c%|Aiq=u3K+a8-cBwHrhlv!NZ+_W^e6dOGK^x3 zHMELvq5)X|AX)?npojv}_hObd%L^J+HKZ%nqpkbvk(yOIrb+l^sleRgr8~h%PGo4& zsT6wdlwf08lmm$yE@J5!_{8VH39GH&LF!nsT#Bd`j3A**NaFD!YZSq^B>HXu%aIO<;oW*`#O|b@3C8c@qev$Hx#byddu{7QueOZ9 zChy_LS!DdpwC&?hc;w{!DAC7Rq$BUdT4nwV*7T1%twHzp$>mq`m&g)3usf~tIPuhzPDa^1XNV?~F5GHowEE{IT}yAQJ(d+VJ9 zXt4V)vz>?suZZHQ7%vu^(aSBKbGgQ^v(E)5!M8j~2fg&7;-I4zT#o7694CW?-^B42 zOUKVuA)~i?3pQ(aIp_btn#?_i)-T7r3`zgG({lD7Nuu4hzZnX<9s2!&H9dVf?>PV3 z`IY0?I>4y=`h`?^{`Mu;2?}auQv~5~@#hFJR!MO`vtR$S^6J|r_#Z_D1wuqi1}m+4raRAX3={1&o0x;e$nsEXEuvNAjKUuck&3TQor2 z3S$db8JlIgm2g)80K;U!M{}SMF*Hm^wcD4GtmddBcF06y0hOPk z7N;hs?ML&Avouw$>QAO^g-W9Ov)aUad2sDvakmz{D>al~3SilT$VyX(`3q~>lNc6O zN3l>?%Hh}xo6eLhvQ*@)DKHYzSM|aO}e;>A;Q$)y+-DrP~yaanf^j*R*5wVcH{nDO z^$(v8S}c)B5wpg51Q98C69feq01%nrf%c!d0|%yuuL4QCpxz<(V<3Gb8~PLDt!HCQ zq#BNT*2E71&_d$|gBZ=jNnN^M2uWdAn~8=?01(iSp`yl9-V)TsKW*))@EI2Y1EoXiD_B{B%C|k|m^Mc7k zd8*cPzLM0b@S|MQHJpklb0eCL21|O+5rX;@HH_w)eodXpHp`pQ%4xl~VUR~Gtku<1 z9Qsc5A#}HOr1IZwVh&M)M`OvJG_m^XT zyfmYCYfnL&T*%UDa|hV!nyZHv#~;^kt1$HzxC)oD_jT8OzBKv}KLly%0HZ_LGhyWO zcYg<}+gN-qGECj$?Ig@)$GPox0X35~yS-m->Ka<}LnOz9*whD1=5N)A!O1UU!0}^; z*GmPFOS_x|ls zRw#TXQT+M~Cl2g{ZYt9oFh0K1>^jK_GFkj>kZCbxV}KJMU@eG>68;`vvpCJ}P*|_* zcMMLg^Qsr~x1ER4y}|t^Q(85II8)B>(8z-Pr0EKK*9IU@9tMm*lk~`jzt?*u++Jh1 zB8Pqx(oeu0Hi1BjVN?GqrqLaG)i@k2fgzG7@&HFPOQF5=LlVRis`!tWo!S$R^3Q1W zQ!+t9;U_nFyTl)+0`~c>mS@JY$(?HwH#isM4%cnyLMIbKgseHB$$#mAr2l1J zncA16*8W)*f`W)HBlY&@$jyaA_)k9d`g@UV^gqP0vFgt z1UGHI$-gp=NV0uk8&{toU`z*>2huGc0$lwEG(_zrqn%_y)?2(w`=^z6qcn6~c z$lSvq!oa$tJ#S=)U{**VU!KTp@DYjGff@4jD(k@FX<6?L~8{)D72JZ+Z15v(A@QF=Cq=r}H=MWTr7qr-c1L{{!g-=S6^ZamFXCxdwK4?b_k_Y32-x>l7)cEB1 z4+ZH8-5XLj=oa{`{4dG#Mh5=;EvO55fHE%~@rhFcpSnh}tr$J(Al`9MyH90`Fxx8H z{I!o}V@A2YOJWeDX}Hf-zX}4odqiou;PN%tKcU)^Nql?m8(JcEHLN<*th7bB6ji&BSMP` zmo%4o$h_8Q()HDkephrjed!{wp|*?g!8J%dn@AoNCT)D5Y8na53T&-=$XLk6I)@3f zBNYUv^ouwnK(6$Z=p3v7agYGymH=2PLoZMT7l&)+r&hZ$4Fby&H&sW+gX^@j`VzV+e0-%I?Dwf~t`h1!Ul%gjU#|5$%cg ziU>pgcAQVt9ut;;t0$xoaET`;)uk+k43y-y1E~DQ=w_vd1aU^X)rzovBK9Cb*L{%; z#h?So}E&jCo_P`Gg~Y_U#bfsQ1^Bq$Sb;fU`6<(C?Uv2 zoe4tb9(zdEO)Qav9YNhlINc3+qD{n;&F~ONYbr@}vC9#qN$cb!kn)zOaYRr`U1SKm zq^JQ1n^=mJC1gNT0^k%TSr`$-rgyw;k}2G^2^>y-!%3GEPaaI!hm+y`9>^|AAnP8e z+XKt~$#NZS3qbwGgB`3EWp18CX+8qFk`WNo@I1faoPRq4Mm^?}T` zA^V6R#V|Ox9tlO~q&5MNdE`J=9njZR(yn!EvQmtAb!2IMPy#J&o(`l40jeVr1TzR! zfJDSBwr^L^A>Tx_nFj-4uP(j^owXcKfp2aqTMp~z*4%(fo4cC|VI4A(Fe*OYIVv>>N<s*WoN*}3x#4}fU2OQeioA>;HV5>i6#&^Q-Y#nfYMb^(d47#a2O{3gyY|d z)jW;s)B>k4K5qh^MTpq9%8F;V3G;{YLy_c+m*GUjcrV-E1@~c*a;=kOBTsn9Cq}BqC8Q{QNPH6&qJD03p~MQY8C+8)~I{X4DjE zzBC1Z_#OfX1HY*PnpJB^q~jFp;S(W8*-U_HXu{l!!luQfypg79kON>k(xiOG-0Xp2 z)Bw2{V`vBnYS6CRt^>`&pwxeo(SZx~$OKBAZ6;(wsx?qzFiqVz`1w5~Z1*HvJz1hD z&D*ew8cT{jh)M|mtF`w4YvTF8MmIg7_YQ_$r1z?!_ui}Y4$?so3@wBrU8D;Zs`MgN z5s;#SfPe_76lsbIQba|)tA2mweV_Z@|9$Rr!^7re=Cj$!%`VX!A0M-PQwsfR+-6+G>RqexsquCUl_AFg4 zjBZ#lboPdxBpjft)thYwh0=sMB}pqBDW&D);zgM_hwL7%ycoo&gJ+qurfLE*5jRg) zd7CY5OO=k^?T}rKj#n)Kr8X;}u12ojey$1Q|AWq4Gt7=L|AH15saBYu*3kwvUAT5y z6V58j2L@4%B7DQHSKKlzAE|wC_Xz>(uMWx4b|Wj z*`!(NL_9)5xR5mW1{uQAumj$(6)aWGJFLs=&XrbLVk_s$?S0@WYG@N{smB2vGeDX- zQ(ZYLo)IomG7rM(D@)nt(sI^VNC96MZUBW-#`-I>ubeWdwi$2Ihjx76FKiSTc0DKW z4KNx}uDY{As@U3uI0G6f4@MC0GDtno`!ko&e!#*~5cL@0_F zmBtj6$yu0}8dZ|Ivz}&C!%314o%ONcf}g6AF|2kSLpgQ^m_7~YGINn~hTrA2x#T%E zks#EYP$ivAw#+N&ut?HvNQ!;1nxHr!^XM z2z8z}&sG-O{Xq^`x|hqqh44ykHM6t9av!cR9$iTwMVq9er=ma$0eBY)Hi|M{oo1EA$%HXY1KjL3A19h zaaoaZ+)YHef^B(`;|(Zdz8d?D?v4t^U!?%7)OHMOI}vY3$FnHPX@kYu@K!EBaZFO> zHcB@yeYkeg5?bVrwe?9las`-!udDH1?~cP>N=)H0zNPT1cB;oMPY;M>w*S1&SciP(%nc+T{j4S5FL^TyxnAq zz;8uyt_r_zlf>fQf?BIO`(~W)im9Dz5U$AE1CQxcZ>9Able?l!5`r$fsGCx8V9m{o zeYG}eLl8V_Ww^wHD!fR^Qn@ypZW1CYmTcW(DaM0~~6NgGd` zinW_~4LRH^VB5qltLm|74wo7{a4;Fa7CA znJ4V*Pb_q>kDt;y_aHuRV?z(lhkoO#cw)O!&CP|Ri_d0@*X0_dHN+crRO?|}_?T5B zo{ZZzy}HTA3dI_(R_^jZ;yG2-P@VSY$vjWEf$kXRE);U*7?3Sy#8 zwyIR4{ zxwQr5dh!|?R(*dS^x~|F84p{zQO-0no;AI#QR?|yXQs^Ii7N!W5T{M+{Z%p zuUK*YI`jFw6UQ$Bo?n+fzgl5++&JLkKe(cZy>NcFrZQd8A2@?pi6dS4NlU^N`Q=sr z(Yb)-3n@nrcu#)0O^Zz*mp?oxe{}GA{E&-O-Od3U)Zv{VF@mR{T?3q%@Yu|IC2#x6 zy&kM&FZfJlaC4EUHEBQDt10wUzxDsHqBPeP)ccbuGup~~dH6G4iR%$XFw>5Vz0{$*=3r zT=ywrOyL}yT2Kh~RA_7zB9oV-gk@{2suhk&lEUIS8?|GW$8LI$eTZ0!d%P2o9UAZg z&HLn5Qe+ zXVyKDrRXsNlP_s=B&&k6jz;>%I-P+^tu#AdEa& zJ53NLqeTx1q)DPjB&OKfv`pK>&*+#*U*p&NBj9c>D7?&VFaWKoKT9&x)g+AO8g3PS zqQ-t+n~p48O}kx+UPDLPPMuNaLq-;}Rw}Q8u?6ilZ6%8VgsF<9&yP?h>#KE!R#N~1 z!9I0YlL9c6q^;^yY)rbJshiOzJ|UHHfSZ=SDrHh-HVm;;$MV;ER3T9&wz#ZIU=3BQgIIq&J)X(K!G)k>~ zV&>miv>3Hkqx{MW+OOD6o3SWTCg5~F^1$P1zvbM}UOf$D_o}@KI-ds*M-^8~YX#Bnp=unN{4wTB?P$<~FdjB2zXW7$bX8AD=*kFYx zxem)`cN*w`t$=WHQ~Kt&``h0?|M-CB)N*I@5X=p!>Z3#r?wx`j*a?@faOH#qg(ylK zay9AvYPtO|A*f1&s+{&g)@KZ@Cbfla|A^8z-B@gKW7FODQHX%1TcvONcDTP&jJEFn zTvYD}D2Z6@4lHSlGA2@gxt+46p0F(si}z=}_b^Qk6~fA@(=sVl74;K($KsZMDQD^~IWYB`0q)0{{Z@!@S1O-|V5%n-`1lS_^)(Wi!u*ij0t_t*G!(*Q zPrFK^aMzi*@x^I-GvqiOB;YQsk`8H<(njz5w3JnMuPLG7xGq*Vz(4aj8A%3CGnJw= z2f)DrwJAB6CmRWVwnBFfs11KZ@21$^*(rZS{vVkaM4 z1$rCbX)d@f&|3aH7bD`)e~B;m^92J;vIL*>SmKchVCi#5hI)6NBGgr*Sv_97^*xd#{Pt*IqLNT{K2r7w`jFK{J~E%WJ$+Yp)qbuNIovwsf{H?D2RdtHm-1U@;YaWK`2Z zGANVZYA8immvgvUSj+9ex$h~JPBQD2!jCJY&TbSPYNHe^Spr^}cq%_u85JCjQPU8H zK1MPpGtF>Uc5y~uTq}pdU|Ezi5zMbRC^0*z0_+`@M);)3RRJT zb}Ej7A6r;Wzc}&T_1GHVWg|JUm%o-TD`ILroR#8|iy@q3e&%C+o*s;cjNF@f^7aL5 z{%(5S=zhn3XA*5tZhvi7D^hK&h$-i7>GeF_UuV}?M^o_}XZyP*Pu62TbH0A>Hg+5) zNRBzrDKG^s5WQ=}h`2E-y!F>XJeav;izRD1DcKr`-a<^2QNjshX~J_nG>@?D zkpe_vzFHEUuTHeO}Eu|n}{|@6fr{eZPCGjPCeG$2|qyUsD zGNnKVSnvztkSPkHw-(`v!03v z39>PR>O7J|(o#dJIci}7%9n+dv#$^KJ|V6@?OU4cXA@I(d#(t}&56lt=*k(gA63g6 zQ>!T)$`Bs9D~fryBrBi&(4J*zmQm>alxq4ck$bM+2cr_R&|Z_GI?I81iyI^YY9(WX zEiKA-70_XdYKxxTyUIhb=eGn>pf(KnF4+znLh(R&aZO-8o}Nuy8`{huD@`|K;5MSh z)JNw&;-af8PG~L}P6b$6PE-@3=+NHL#4e$vF;DKU0s$gMAm{{*jZCSDg^n4q=XTz2 zz1L))+4I(BXrTfR&a8@SK`ZEi0Tf=t5!vU2n7zOsy4;%YhCXoB$t1|xW zD_Rw3t@d0zyi)7!MP27S0~=m#ETAnNrftzPnk4q*NqoPC=S2I`#PIUO(`OT81k~G^ zk&|l^26GesVdI4f8Zk@VWc?c1*&6PNTBW`teQ%85&r^k0iT-O7Q5BPyd(fwEA8zL< z(Ai2n-hOJpjJZ3YJshk3_KFTX9y9yesI+2aIdBqv&1g7eRC(PnaYlc5W8$_g(VG!i zK*2386a7&5>Me1!YB9HfEGX`%1O{S87 zWJ9X92}y+)kSBJ8!m!jRorEq1h!U5YGH8@KteW&dGptuT8=5!tjAsaXEDDe1Pp^wJKFvBOOL z53)rnG=P9fBAN-$OON)}s>M0h+7y`DtHq~X*Ui(I(I_>u$&-I14FUM2rU=bck<)(R zsV3Y_+w*GT2`m;h$&N^L*nmzAJ)WMPh}D<$Mb-sfgV|u?0d@!zMxU*9V26RqP>kqp zO$Z82nsP}YdvBy+J)CsO$mff(eCCV{4{lC|1@{F zfl=On@`}<1fnT7Hue=&Itx2zNC(`sP^K=6%-h=H$Kl|Xjo{dcS zf+3@IEWx@go}=u<-j0jkR+ zj%Oc#NU+yzPd%crx9lYTpaKxo7^xav>3rIJt5n=;pr}<3NP%6Fx$fv~n-QtrpJx1{ zV2bQBk@ITdHnYArfN<}EzwJ(Sg;nSwh`v53SFeFw%`x7w6q)hKy%bmtF@Y&fF+CNd zi2_)^HI5M;Y)jlvE)@D9Z!9Bgo0F$GK=r7;0Dz1qdYcnUCsTDkW}fU3x4#OKtrNqF zAGm$7!sW_$0kDUyg;)}FfVn02#Z-Y+fJuFT2{YPENYSW)l^LcYMszoJ(cC|isA-Aq zniwYfv=t?&JoRF~HQ}(0+GQI5WcN8VO`y#d^nf*nGrWwIb8IMbaLGakOgYj&u24g; zZcI3AJal#(M049e5I_;VeNfm-umNji`}b5>1{^0CZ$v@#d6mMs%(zWhssME5W0(4r z?4On|tz<5p_&Sis+ByzBqra|BFKHjay{5&pW^#SCoMpBDD@LT>Wg*k$(+%kjpQv9gVv|-?~x=FKebRo200o5LN<4o#W&j znR1ppNgT%fmlqryw#(cYSl#&8++^9^w1nJDqU|h)+zL3C4XcUXGE)6oO5%WXry9mX z3%GAU)mCsXdCt|zd;^!g_*=3)dTeDycJz-KbZ|l`jM|1`Bs{g{E`Lc7a;!oKC z*b>TZ(f#bRWmZMYkMb`z_1x}M_ZFgi8-f|+TQ&v)Iu4vM0;JVgjf7jA_^?3$LO|}> zOYLPtvzhQ?QjjCi+}n+?7YRq(RuFT%jKa6P2`Pn_Q5!3SvWDB}Y+%1d?1WkiKoUQ) zBn+oKcl2JF0^GVXO>Jxwomq+7cT)BQ;LRR6?gJj#OrG?fiMzZh&RzwM88%-&%AhJL<9XjdRW=YfchL(O?8O&~vLcg+%GNW{m0?Zqu5fQ=h9GB&sfZ+= z0g9EN1bb}UOb-R|qs>OS9Uj(>>h#-qowxBrV3WbsQ<~nd0PZSk6;SZreLcN#-{FINj>jJ9CUWjA z!~7b2VU3~3m6yv)E8NR7(u;7(t7;w4fqMU(4&Zx!?%ZtP{G7(edG~#&*Zl)x;Nezz z^g3bBy?o!jQPi6V_|3M^pY!vWeBk*yaPx%B3r*M+4NX1X{zQ1UG5_`B$m}M?_m3Y> zha+ALXTph}uOF?28j}oz-zn3{wJ`1ECjCL5ZlT^pxWuJeHnh>kPiErd1w5`G;;DZ=x2m zDQ%9kqB7^b6H#MTs1xJ#Hltmqk=JECDGT;(dx0fERps2ikd3^P~rWpigd=gA8Qe7+0b5jV|}5M1QQmbqAAjLp^1Rj*W@IL?lHo>N5Fc zu#>rlPq^C7RXz+i?Rf!IXf|C)MS?Fb_Tgq7s<{e3U+K*RfBGXS0*7ItwDiMUB5gv? zKh`-OAT+IzBrL-9a92pxPp^tc;|a&$-5k8%*Bop@$du12N%tFPz>oJQ70S&~EzB7w1C1;DC#&Vc3&H&DAigVHI@F zJ=PH7#^;nl#WO#febI0eB8kixoVcyoeB#u+lG8jY7;yrGw4y@BzJA^k3k4d{pCl=@ zr2-;6{cgy9V$TS<(E44jjrhwUd_Fy$={C~pHC_OMz{^0IGapk466cQv*0P)oLKBuh zq@J&CdjP612~&!RL_ZKaplldDFS&E9bKvB;$LF=SLOAsPV(3_w0(wTIT$K{fzRW0i z_@0i9^iO|!>@kkVFhZa6!w#|(4w|k> z{!+f=)A98RuI73Xk>5Q`C;HH);s@nmtXSRU^YyXDcQ0R*a(8 zaV4DWvtl?9y|aC}ag6zK$3-Bk=AL}mJwx5#&#ADP6yi2sY>8r6Z=(xHQgbosa+hVN zBx<;t%KwMN@Q;P5ybHK6G*|B*<2cYBjnlk{Nt=xC4zt+3_djJNC}ERr&e_7`9G>zV z=#J;XYhU6FI5qdj!dhj?2Q3Xog)XJ7r&Q?P4DKRwV>Cor{gF>PWi{yy(QQ%c)SVyH zL`s78oY|09h0=yr#VwK-4rAG`HF!xq+^0c6@II}3ef(Of?DPRvw~DqfB37hxHV4;U ze^IVq++J&L79hJdxM-wZAlN`wXIW2Qw-No2VtMYpc-pIo2b7?O0I6Hh8WSiT49?4f z_wCNnBu#3VQejD8S9@PK)tn8cGNV^>>`GV+FQe2eNWLjvBT8F5>2b{uU& z0+k5~Cyy(cSE*Ot-6RNB0Iu1LCDK9LgqIYbRg%(-wTY0LE!^YQ2bFFC($>9x&X1%K zYjTZ>Z1FjGaxHEXp4-8H<=>(Twlt6xn;pZpdJ)b%dZlAoWQHC zOP6s?Pq)28yr=PS2|F&C(LqK$Ps76NWzw80r(u`xh#PD5uNRBte4&5DbvNvCp6)pD zX_@|Gy4ji)p+?%MbrS*it^siaZn9z7=OU^Rc8n@-e5S2BSmTzk2wvWq)>x^amF>bP z8mKy+NG;aFqUgq29VQxJtdrP`$x<`XBVcv7$St=2k{ApX|BqDbfA!y1f!ji%+~`%F z*;~BeV&jpAE7_bGQ5@i8{ln}iHke$}{To?Zu#VmP{z?qwD2+hb3v4O++|J9)7EeQ} z3mfHK;l=!{!~}77wbjl6|6Vt^sm0}Vu7rPP?J409oQBT6yb~iOJl>RF>fv6WU(XA2 zZS(Hk?`h!N`pvOfS$;AYud|6b6#}U!wAi36HA$mGpPZH`J{H7 zMU#=U6@{XtMJbi1jZP#}!F|Rgn|*vadR69i^g_4Avh=GS`W&&8io+p*$kidD{$_-+ zUTe*33BZ8H>GoSlytoYu)B8*JZ5tWWVl&pjHP5ModxK>EtR)_E5fVY%HDP!vWw5SH ztfm}8L#o!m9xA)i;|-S)v7L;%ffVeDWZ300y3&ZR=wwa2`i{)E?Y87{Nw2cWZ^T7eZzmy7pT_WlhbUOR_Hx zVv`kY3M6MbUJB&VjYvE*=atcarRBkKN!LZ(ftel(EGtqS5N=T1VR07W#ctznMFSyh+t^(u; zbl3eR;f#MSZ4&XQ(BT*ROTy8?GHISkF!mX|AyeIJ{p=_|NEnGxqM0G4 zvubBPMmJ^a@@|-D7Zf^}(FG+-0JJ?8fuOGk>m2)v98mr2-&&~Q6?Bd7QgxZEoGlk9 z-F%NncgUz#HRyOBkpVE;*GfZQ19EeI8l`-#KlAA@A9vlZvn-}9B5-c0_uAek)G)to z(4A>~Gu&e}fq3PK=~Rz6-40G_JY39yViVnKut{zkH9qZzhdLmxk@t7@P$&km<55Iu@6dv zH*)?!p@x-mXa16KHio;eoBcz=fj=xXrvOPf8J%zGMvKfvJq=zK1Cu>|NIV{mmhhG( z2)tr{E}xc{vRrW?xWLL8YTTfTrem#?!4C2`kdGXy=seVc#WPK1yWy2JY`R(Nt*EJ7 zBhi**E!W;9n@l_=|CeLB3FtktolJex!YIwuvO&_jgZY+4U?!D|a02xLDbsUrHB!?K z`t8znCB%p~dzxJYK=RtI8rKU+-IY%vf^);swp4o|R*CZGVV?#dCb$z}U2p)%?bhXK=Qa zUgxcfto(4QL~+wV=~0szw#4znM-}eiDrN2R+t>wk?ctm^C-Ul1)ni+G5s%$RMQv7r zleXZUoK+Q%c81IuJM~52#V~byy*zXL9`=ly4ey;K@i>+`r};61FVyB8wTr#67e68% zc3D%bIoMwf{-}}KZq2vpuvBJ!CP)P4EX@m@5+#2~dK3rO<;v>(rXa}lk%Rm7m6u94 zE`8G6>9=k?c3OHB^C_vTJ96aP1^W-27eelqY>XTBn2^8$6GSX`MO0QP`W!0xEp{qx z|F!+6#69p!(Z-m>#X%(bz2?CX(?trGxw1H2_YHvs$x=FUMwmMyih4QgWFJd*p;@>9#Yyp{DMOOl`F?eQawil#zyDGDHcjKjg0Mrw*Jkj9x*NNSM0YA2|3trq`E$i!tG%S>(h!CjC@|HR39NL zhZfCEeH{%{4=1^wMqO9-jdiR)BDBogO*XzW^l3N@tQ}u$;_$l~+jNY4xL{AA<`Jy|FKK|J9C&5#5)zOHQ7SZ8xN9>89+k+THlGZ2A&sWzmI{~uCdn*o<3En@RKaA31h#k|t=sqKeE_0}Q z(Z?@rByf?R;sJx=;aHMl59<8Z50g4J^V|?8!{Vs({2SKY=o_`NMuPD)iL(qe`yyqJ zKXV)@9?=-Bm%H?j8B3+_@yCe@RXThf)!lIvV+biPdj3&DKKAyjlhDuHs7g3jQt6u- zH@(z3_ni>A$MUg{f2Qd%GCF>6Z0dCSShf_CT%JecU2-r(Iz&{yi*4<(F@L?D`X%SO z`2dD9;@qCrH!2{}bKd&lB<#&;O3r61^Lt;(m?3(oO2x0rB#o&kUD&D;-GdgivA}M)8s_#X!kkq?x zck(Rt;AhHoVfpi&SUbUIZ5UK5599O?znzuSGmLqDuGE(B;`7&j&%XHN>=YzW^If$v!&0z_azij9-;khC($6el9Ra9OMa zIThBmXO0SrMeQD%@G9S_9sACEdktz<=PidOjXS_XO~lV7K2xj6>cwQ=y*m{{ve!ZC ze^;&vd8cW_ZdtVcfc`=iBrw^0hIo!YXp~BV z=dKXZezL06Ta%jK>Vt$jz3&<7eOvl{=YFxEnyk!qF-7G-HJOV{AB5@|gdWj(E$mg@ zqx;0fD`Ckvon4gU$ShIBTu<0a5)jpuSIbsGatXf)oRaZ)L>*jO|HxAW`Cvu0)lpr!jNcOq>Xmxx`^D6{Os0lx zEolJtG)XIrv*tT{D?67YPyMtYhr7Vq;6;YL1zrJ-w_K*QpP9LQd9lGmY$38|_9r-v zw0X>IvJ(DhZPtH&rYZ0g81m=;>u1`3`+J)KWGpe~foEG&_fDYcS~q9BXS-j?mKp!y zn%|yDL_zS?%{xEbA$CCg0RAkT`SjP7`xmm_EB*NP^Um~Y=l5$j>m&P|E?W0)fCK3P z=O9ZPI$Bi9uxqeQpQqe^`FlV047KgsjPP@=-{!)C%LE4yGcTPxUo0K{3W)QoJd6og zTq^&=HQ)Ra`ykgPitQZ#zqscA_S6s(z}Xy`-afgQ~~O=~+YM zjoMFt{8R48B_I8ZYyOvbIgl;nTOVJcu2az`I^+LYpvh5J{I^*^JCP`c^B3!jE8$5sy}|CX=^-tbN)pm zd0#C5ZECVg!N<9G|8UJaM4sfnvxE!lgPImvHR;32f;u;M7lpTq=h&Y-&v=`tl({wn zOdil>B;5XO2-jrKMN|CO-cjtr*s@lYo5vx{b zkX;3?bXlm9sZZv%9IoqahM0wLQ6rzW^pM@^T>^86k^bim8hs^ zf~V96zD>05z(E&}MbZ;zhz;RpIUWv_bpvpqf{rodHku$ z`iE=v0fj*GYlwxT<_`Z_p1OFUUWN!P1YTjbjLpzv{LXlv7L6K4CuLGWhVWdAIRrOxg zU324q^dj*_KPmTU_$!cWeq7cRFlH9rdA8_N@f5`3_$P@VBEFv9yI=x~q`1QI$t!8- znB&Twop0q$4ezHzpwWn@;>+35>uI7=yU}s{SJN-i^IzXQdccE=|M4aZR1~_=wEL@F z2+gpob&+LC#ctZ$uj$p)eGmC>7`O4*i;7Ts)Ge5E5_N)!5s9kV&$2Ps#DvLlC42?N z)0`X;ky>mAdeFs4dQ&q3w( z>MMS5qLEG+vsK{V_{%lNsST7pueGz&gh-#`;j&%JUBa8?Cynp;i2O6mm4UxA!7<-4 z=0yx~cq-r6h;O`VYGkMH6Z3~_Zf@i&u-@}1{~d+P9d?=P^t#e~VRInYJjBR$LSakI zx>Twv!sz9zKU{NdhVW+!A5^x6zuqwa7)Pu7{=7E=Qei=nU}C#*ep?1pX(37ghq-Lq znv{QrxppF&Z^Ef>(FJCjE~;qnzzl9#5OU4z40U%j1x+n7ubC}6>hB~=RB8V#FjovP z+ZL#~r-0qSw=$}$!NpX|rTdb+Crf#jJXqAOsmbq`TX`Q7}ovH5)OW#Mf_24kq zD7wko4;;kNMJvv`q z>~aXSR=NY~yWOyC`fGR!UX5-3S2rur@YLFV-dN=N->Y$?%73{e_y%8cw7Tcm1iD$- zt5m%R_^bQ@UX7*ZFP=F3?^k1A2afC34KH^88lLw5(RUL^nU8~pr?LOIB!F&K=bB1( zzO>_A&ezDjKS@5b0*5BzyoE_lRsWj?Kl@$Hq^#h5 z*8yUO_i;d+#-6eW^GMF!0M=3Jr{V0q*|#s9xsxLRK!Bd=2)YpAM&?JP`umV8SQD6{>s;g9m7NX4LDe7y~ zO!-EF^y!-G)P=Kw3hY_hZ)uq6GIe?LbT?>B%FNTSM z82Sgp0Em?=1ok%_K!EAUe=rop6acsdsKJ0qY7Klt}?CH@?j3XDI6fZY5)F~8Hz z|KQ(cewz{spa6hO2Y^_Uf%(55+2B7|qJN&z!0$f*p#lEufRU#Fz(4^$TLJ*1BAC_$ z0LU}|fWHO+)C~Y2;RXOq4VVtb{Z2#sgReJ1d;kEVxnTYln3o9v&<+3y?E!$Op8yc2 z1pw)408nWH01bBlVE7FHJO*Q?nE+t!7yw>f1AwhA0N8g1fG-XJaHi&s`=9jxSBTmzC?pK5Xz()wQtlq1ZXiwqv43P((C_p;5YxH({l?JWJ%%m> zEFg%%Isxds{$k-jF@G`cH+ByQbO&R8mpRBi!2LHK1~D-r+ylfg0}vA;d^{pSJPTqT z|L_1G5TAgUF2KVj6l|y8y?`go!_6DS;vgmqu`p8yu`<|}WM2P;UH=P*c|?Kb1OWAm zL6<^&yu8D(0&ap>2?Ygttd2*dzeiY@h>44vpG$~4R{df?kW1ht0QmcvfA0m*{H|Lp zSjn;y3bL{yl7Cw0PtO08`LCe=;rVyl{tY=W{nKU;hNu5Y`_In*NxOIx0OXIry2<`e znrjgN+)D-krp5oH@l*f+WfA~%KKrlF!|=Pmc!z}rDT;|jMn;PIc({rFuF!u!{>OlS zNB*C|e;rTs_woK+cUTP%PnU52FzoM2b-U<)F+2nt8sy^Ufff1RJMsVL9sjFX|5XlQ zGY?OX5RX9cP*z|s^9l3*0mC(P$!Al4`F|J1_&A9wq&GW>>r`!xt?Z~p}7E{FnD z&*%Wyho=CXmK1f?p|ovaQL zX5GR=B7S4=ocO-kj^ufmYxi&<8vOm292>Q@|Xs1groXzCD)Ir)JeUUN93}hLy2|0kAMy?}|P$(2L>MTkHWsGt` zg`o(jBGg^f1Jn#^19gHXMV~=SqP5U==sWz4K-ot5jB=L>L&Zm>PUS)sM^!@AP4$B6h?``oAwdy1|5=)pH7#~moA;I zfo_s+kDi8Jn%;^&ioS%tpMHe_#=ys*%izzD#n8$y&+v_rol%w1gE5t{k#UCc3ll37 zj>&^5jj4%gj_DgSmRXb8k2#0=9`h>}IExUADN7_vIm;uKT~<0)B~~}qG}czuMK&m# z5StlW4BIWXr))>;9PHZcLF`5BL+ra83>-KPUygi^`y4xGXwRHG<8vne%!4!Uu=H3} ztUtC8JB;1q1SkAC!#OKCCpo`!@pD;nC2%!yz2YX}mgn~5&gUNF-s3sLW5{!vr=Dk# z7sD&h>&<(eca--FA3vWpUkcwnzHNRceqH`({(Amp0dj%!0>J_|1!e`2g7SiXf@OkJ zLQo+YA#b4)p=W2IXJya&oGm*$EsPLW5DpZ+Df~i&Ohi>ALZn_~Rg^*0Kr})0p6Ew0 z9x*$y9I;WcpW-s&{^GaAmn3K;^du4_dL%we3Q4+2mPpP@kxOYwU6JaN+Lt~n?IB$* zy&yv?Vdva zP}NuUuIfiMakUV&4z(}pit4fI0~#<5ZH+XINlh9}OU+`<*IHa!URw29d)hMEG1>z< z2pxT$9Gw@s?7D8cwYqzHa(c0P!}?_U=K96@YX(9FAqG8$P(wY#Ji}!pUZX&xd&YpV zu5q66D-(W`V3S@`q^XH%iRq@9gxO`YQFB`J3+8p^#};Z9Sr$u{0+!*HgI1JQ4py~R zU#vB(bFEiw#B5@1p4hV3`q*~aq3o>es_c&JHSMq2Z#c*}5FF+m`5mJi$DLT5{GIwQ zP+oAk(B_PAwsx*_K6Np6x#@D`s_RSBhE#XM4UugMYcszM+HVby(Dxg z_0m?fR`i`1c#K=j;APIs@t0R)RbwmTAaSm7gIBn(Bwg9SYvXI;N#gzDClbUHauW^{ ztrL5a*pu){>&e>5^#lq+2;oJFQpyb?oajTGOqEJ4O8uGUp7uChJiQ?OG{Y_9@l}bd zg;#%NdS*^$$!3*jBeMgu=X1{I)Z|jMW@By#d9TUB~7JlrKzP~%G}Fl%5mk5H`s5a-}qMHQ?XE~UDzjN2&?o@+DLsz3n zV`URVQ+hMd9Nzq{#kpm^RljwxO}?$MowvQTgSI2B6ViF9bMKz_y_GK8uIX;Q?!g|V zo{nD8-s(QizLI|W{;c~X_ml4bdJz5KXdq}{_o3Ir^}!2+OG7q8v%{vtlaKTtjg4rH z42`OeJ{VIO>l;@b?|v-*_}&xQC!J4ao_0*gOms}jPIf+%d)76jFx4}yJbi!W{LI7W z8qY^&b!VT<8O=@4Th1@MaCot@;J&c^(*NcDV#MP2CHyjCIqenItAf{TuW!B)eABcd zyVAd^vHEn)d~IpnZTNt@)G1zTsfYPTh~`*yT;rrz1V+jt-J{`)TB1NDc} zj{+atKjA(--Lu)-*bmwN^*Q5!`Jnnx`f%{bPyL_EzXE>!`o943_Dre( literal 0 HcmV?d00001 diff --git a/package.json b/package.json index 5789d17c..3771e1cc 100644 --- a/package.json +++ b/package.json @@ -35,8 +35,31 @@ "**/*.node" ], "mac": { + "icon": "assets/icon.icns", + "artifactName": "${productName}-${version}-darwin-${env.TARGET_ARCH}.${ext}", "category": "public.app-category.developer-tools" }, + "dmg": { + "background": "assets/osx/installer.tiff", + "icon": "assets/icon.icns", + "iconSize": 110, + "contents": [ + { + "x": 140, + "y": 225 + }, + { + "x": 415, + "y": 225, + "type": "link", + "path": "/Applications" + } + ], + "window": { + "width": 540, + "height": 405 + } + }, "win": { "icon": "assets/icon.ico" }, diff --git a/scripts/build/electron-configure-package-darwin.sh b/scripts/build/electron-configure-package-darwin.sh deleted file mode 100755 index 800358e2..00000000 --- a/scripts/build/electron-configure-package-darwin.sh +++ /dev/null @@ -1,146 +0,0 @@ -#!/bin/bash - -### -# Copyright 2016 resin.io -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -### - -set -u -set -e - -OS=$(uname) -if [[ "$OS" != "Darwin" ]]; then - echo "This script is only meant to be run in OS X" 1>&2 - exit 1 -fi - -./scripts/build/check-dependency.sh /usr/libexec/PlistBuddy -./scripts/build/check-dependency.sh unzip - -function usage() { - echo "Usage: $0" - echo "" - echo "Options" - echo "" - echo " -p " - echo " -n " - echo " -v " - echo " -b " - echo " -c " - echo " -t " - echo " -a " - echo " -i " - echo " -o " - exit 1 -} - -ARGV_ELECTRON_PACKAGE="" -ARGV_APPLICATION_NAME="" -ARGV_VERSION="" -ARGV_BUNDLE_ID="" -ARGV_COPYRIGHT="" -ARGV_CATEGORY="" -ARGV_ASAR="" -ARGV_ICON="" -ARGV_OUTPUT="" - -while getopts ":p:n:v:b:c:t:a:i:o:" option; do - case $option in - p) ARGV_ELECTRON_PACKAGE="$OPTARG" ;; - n) ARGV_APPLICATION_NAME="$OPTARG" ;; - v) ARGV_VERSION="$OPTARG" ;; - b) ARGV_BUNDLE_ID="$OPTARG" ;; - c) ARGV_COPYRIGHT="$OPTARG" ;; - t) ARGV_CATEGORY="$OPTARG" ;; - a) ARGV_ASAR="$OPTARG" ;; - i) ARGV_ICON="$OPTARG" ;; - o) ARGV_OUTPUT="$OPTARG" ;; - *) usage ;; - esac -done - -if [ -z "$ARGV_ELECTRON_PACKAGE" ] \ - || [ -z "$ARGV_APPLICATION_NAME" ] \ - || [ -z "$ARGV_VERSION" ] \ - || [ -z "$ARGV_BUNDLE_ID" ] \ - || [ -z "$ARGV_COPYRIGHT" ] \ - || [ -z "$ARGV_CATEGORY" ] \ - || [ -z "$ARGV_ASAR" ] \ - || [ -z "$ARGV_ICON" ] \ - || [ -z "$ARGV_OUTPUT" ] -then - usage -fi - -unzip "$ARGV_ELECTRON_PACKAGE" -d "$ARGV_OUTPUT" - -APPLICATION_OUTPUT="$ARGV_OUTPUT/$ARGV_APPLICATION_NAME.app" -mv "$ARGV_OUTPUT/Electron.app" "$APPLICATION_OUTPUT" -rm -f "$APPLICATION_OUTPUT/Contents/Resources/default_app.asar" - -# Don't include these for now -rm -f "$ARGV_OUTPUT"/LICENSE* -rm -f "$ARGV_OUTPUT/version" - -function plist_set() { - local plist_file=$1 - local plist_key=$2 - local plist_value=$3 - - /usr/libexec/PlistBuddy -c "Set $plist_key \"$plist_value\"" "$plist_file" -} - -INFO_PLIST="$APPLICATION_OUTPUT/Contents/Info.plist" -plist_set "$INFO_PLIST" CFBundleName "$ARGV_APPLICATION_NAME" -plist_set "$INFO_PLIST" CFBundleDisplayName "$ARGV_APPLICATION_NAME" -plist_set "$INFO_PLIST" CFBundleIdentifier "$ARGV_BUNDLE_ID" -plist_set "$INFO_PLIST" CFBundleVersion "$ARGV_VERSION" -plist_set "$INFO_PLIST" CFBundleShortVersionString "$ARGV_VERSION" -plist_set "$INFO_PLIST" LSApplicationCategoryType "$ARGV_CATEGORY" - -# Rename executable -plist_set "$INFO_PLIST" CFBundleExecutable "$ARGV_APPLICATION_NAME" -mv "$APPLICATION_OUTPUT/Contents/MacOS/Electron" "$APPLICATION_OUTPUT/Contents/MacOS/$ARGV_APPLICATION_NAME" - -# Change application icon -ICON_FILENAME=$(echo "$ARGV_APPLICATION_NAME" | tr '[:upper:]' '[:lower:]').icns -plist_set "$INFO_PLIST" CFBundleIconFile "$ICON_FILENAME" -rm "$APPLICATION_OUTPUT/Contents/Resources/electron.icns" -cp "$ARGV_ICON" "$APPLICATION_OUTPUT/Contents/Resources/$ICON_FILENAME" - -# Configure Electron Helper.app -HELPER_APP="$APPLICATION_OUTPUT/Contents/Frameworks/Electron Helper.app" -HELPER_INFO_PLIST="$HELPER_APP/Contents/Info.plist" -plist_set "$HELPER_INFO_PLIST" CFBundleIdentifier "$ARGV_BUNDLE_ID.helper" -plist_set "$HELPER_INFO_PLIST" CFBundleName "$ARGV_APPLICATION_NAME Helper" -mv "$HELPER_APP/Contents/MacOS/Electron Helper" "$HELPER_APP/Contents/MacOS/$ARGV_APPLICATION_NAME Helper" -mv "$HELPER_APP" "$APPLICATION_OUTPUT/Contents/Frameworks/$ARGV_APPLICATION_NAME Helper.app" - -for id in EH NP; do - HELPER_INFO_PLIST="$APPLICATION_OUTPUT/Contents/Frameworks/Electron Helper $id.app/Contents/Info.plist" - plist_set "$HELPER_INFO_PLIST" CFBundleName "$ARGV_APPLICATION_NAME Helper $id" - plist_set "$HELPER_INFO_PLIST" CFBundleDisplayName "$ARGV_APPLICATION_NAME Helper $id" - plist_set "$HELPER_INFO_PLIST" CFBundleExecutable "$ARGV_APPLICATION_NAME Helper $id" - plist_set "$HELPER_INFO_PLIST" CFBundleIdentifier "$ARGV_BUNDLE_ID.helper.$id" - mv "$APPLICATION_OUTPUT/Contents/Frameworks/Electron Helper $id.app/Contents/MacOS/Electron Helper $id" \ - "$APPLICATION_OUTPUT/Contents/Frameworks/Electron Helper $id.app/Contents/MacOS/$ARGV_APPLICATION_NAME Helper $id" - mv "$APPLICATION_OUTPUT/Contents/Frameworks/Electron Helper $id.app" \ - "$APPLICATION_OUTPUT/Contents/Frameworks/$ARGV_APPLICATION_NAME Helper $id.app" -done - -cp "$ARGV_ASAR" "$APPLICATION_OUTPUT/Contents/Resources/app.asar" - -if [ -d "$ARGV_ASAR.unpacked" ]; then - cp -rf "$ARGV_ASAR.unpacked" "$APPLICATION_OUTPUT/Contents/Resources/app.asar.unpacked" -fi diff --git a/scripts/build/electron-create-readonly-dmg-darwin.sh b/scripts/build/electron-create-readonly-dmg-darwin.sh deleted file mode 100755 index 5e881cbb..00000000 --- a/scripts/build/electron-create-readonly-dmg-darwin.sh +++ /dev/null @@ -1,60 +0,0 @@ -#!/bin/bash - -### -# Copyright 2016 resin.io -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -### - -set -u -set -e - -OS=$(uname) -if [[ "$OS" != "Darwin" ]]; then - echo "This script is only meant to be run in OS X" 1>&2 - exit 1 -fi - -./scripts/build/check-dependency.sh hdiutil - -function usage() { - echo "Usage: $0" - echo "" - echo "Options" - echo "" - echo " -d " - echo " -o " - exit 1 -} - -ARGV_APPLICATION_DMG="" -ARGV_OUTPUT="" - -while getopts ":d:o:" option; do - case $option in - d) ARGV_APPLICATION_DMG="$OPTARG" ;; - o) ARGV_OUTPUT="$OPTARG" ;; - *) usage ;; - esac -done - -if [ -z "$ARGV_APPLICATION_DMG" ] || [ -z "$ARGV_OUTPUT" ]; then - usage -fi - -# Convert temporary DMG image into a production-ready -# compressed and read-only DMG image. -hdiutil convert "$ARGV_APPLICATION_DMG" \ - -format UDZO \ - -imagekey zlib-level=9 \ - -o "$ARGV_OUTPUT" diff --git a/scripts/build/electron-create-readwrite-dmg-darwin.sh b/scripts/build/electron-create-readwrite-dmg-darwin.sh deleted file mode 100755 index 24e3c0f7..00000000 --- a/scripts/build/electron-create-readwrite-dmg-darwin.sh +++ /dev/null @@ -1,148 +0,0 @@ -#!/bin/bash - -### -# Copyright 2016 resin.io -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -### - -set -u -set -e - -OS=$(uname) -if [[ "$OS" != "Darwin" ]]; then - echo "This script is only meant to be run in OS X" 1>&2 - exit 1 -fi - -./scripts/build/check-dependency.sh hdiutil -./scripts/build/check-dependency.sh xattr -./scripts/build/check-dependency.sh tiffutil -./scripts/build/check-dependency.sh osascript -./scripts/build/check-dependency.sh afsctool - -function usage() { - echo "Usage: $0" - echo "" - echo "Options" - echo "" - echo " -n " - echo " -p " - echo " -i " - echo " -b " - echo " -o " - exit 1 -} - -ARGV_APPLICATION_NAME="" -ARGV_PACKAGE="" -ARGV_ICON="" -ARGV_BACKGROUND="" -ARGV_OUTPUT="" - -while getopts ":n:p:i:b:o:" option; do - case $option in - n) ARGV_APPLICATION_NAME="$OPTARG" ;; - p) ARGV_PACKAGE="$OPTARG" ;; - i) ARGV_ICON="$OPTARG" ;; - b) ARGV_BACKGROUND="$OPTARG" ;; - o) ARGV_OUTPUT="$OPTARG" ;; - *) usage ;; - esac -done - -if [ -z "$ARGV_APPLICATION_NAME" ] \ - || [ -z "$ARGV_PACKAGE" ] \ - || [ -z "$ARGV_ICON" ] \ - || [ -z "$ARGV_BACKGROUND" ] \ - || [ -z "$ARGV_OUTPUT" ] -then - usage -fi - -VOLUME_DIRECTORY=/Volumes/$ARGV_APPLICATION_NAME -VOLUME_APPLICATION=$VOLUME_DIRECTORY/$ARGV_APPLICATION_NAME.app - -# Make sure any previous DMG was unmounted -hdiutil detach "$VOLUME_DIRECTORY" || true - -# Create temporary read-write DMG image -hdiutil create \ - -srcfolder "$ARGV_PACKAGE" \ - -volname "$ARGV_APPLICATION_NAME" \ - -fs HFS+ \ - -fsargs "-c c=64,a=16,e=16" \ - -format UDRW \ - -size 600M "$ARGV_OUTPUT" - -# Mount temporary DMG image, so we can modify it -hdiutil attach "$ARGV_OUTPUT" -readwrite -noverify - -# Wait for a bit to ensure the image is mounted -sleep 2 - -# Link to /Applications within the DMG -pushd "$VOLUME_DIRECTORY" -ln -s /Applications -popd - -# Set the DMG icon image -# Writing this hexadecimal buffer to the com.apple.FinderInfo -# extended attribute does the trick. -# See https://github.com/LinusU/node-appdmg/issues/14#issuecomment-29080500 -cp "$ARGV_ICON" "$VOLUME_DIRECTORY/.VolumeIcon.icns" -xattr -wx com.apple.FinderInfo \ - "0000000000000000040000000000000000000000000000000000000000000000" "$VOLUME_DIRECTORY" - -# Configure background image. -# We use tiffutil to create a "Multirepresentation Tiff file". -# This allows us to show the retina and non-retina image when appropriate. -mkdir "$VOLUME_DIRECTORY/.background" -BACKGROUND_RETINA=$(echo "$ARGV_BACKGROUND" | sed 's/\(.*\)\./\1@2x./') -tiffutil -cathidpicheck "$ARGV_BACKGROUND" "$BACKGROUND_RETINA" \ - -out "$VOLUME_DIRECTORY/.background/installer.tiff" - -# This AppleScript performs the following tasks -# - Set the window basic properties. -# - Set the window size and position. -# - Set the icon size. -# - Arrange the icons. -echo ' - tell application "Finder" - tell disk "'"${ARGV_APPLICATION_NAME}"'" - open - set current view of container window to icon view - set toolbar visible of container window to false - set statusbar visible of container window to false - set the bounds of container window to {400, 100, 944, 530} - set viewOptions to the icon view options of container window - set arrangement of viewOptions to not arranged - set icon size of viewOptions to 110 - set background picture of viewOptions to file ".background:installer.tiff" - set position of item "'"${ARGV_APPLICATION_NAME}".app'" of container window to {140, 225} - set position of item "Applications" of container window to {415, 225} - close - open - update without registering applications - delay 2 - close - end tell - end tell -' | osascript -sync - -# Apply HFS+ compression -afsctool -ci -9 "$VOLUME_APPLICATION" - -# Unmount temporary DMG image. -hdiutil detach "$VOLUME_DIRECTORY" diff --git a/scripts/build/electron-sign-app-darwin.sh b/scripts/build/electron-sign-app-darwin.sh deleted file mode 100755 index 4b830812..00000000 --- a/scripts/build/electron-sign-app-darwin.sh +++ /dev/null @@ -1,100 +0,0 @@ -#!/bin/bash - -### -# Copyright 2016 resin.io -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -### - -set -u -set -e - -OS=$(uname) -if [[ "$OS" != "Darwin" ]]; then - echo "This script is only meant to be run in OS X" 1>&2 - exit 1 -fi - -./scripts/build/check-dependency.sh codesign -./scripts/build/check-dependency.sh spctl - -function usage() { - echo "Usage: $0" - echo "" - echo "Options" - echo "" - echo " -a " - echo " -i " - exit 1 -} - -ARGV_APPLICATION="" -ARGV_IDENTITY="" - -while getopts ":a:i:" option; do - case $option in - a) ARGV_APPLICATION="$OPTARG" ;; - i) ARGV_IDENTITY="$OPTARG" ;; - *) usage ;; - esac -done - -if [ -z "$ARGV_APPLICATION" ] || [ -z "$ARGV_IDENTITY" ]; then - usage -fi - -function sign_file() { - local file=$1 - ./scripts/build/electron-sign-file-darwin.sh -f "$file" -i "$ARGV_IDENTITY" -} - -# Avoid issues with `for` loops on file names containing spaces -# See https://www.cyberciti.biz/tips/handling-filenames-with-spaces-in-bash.html -SAVEIFS=$IFS -IFS=$(echo -en "\n\b") - -# Sign all executables -# See http://apple.stackexchange.com/a/116371 -for file in $(find "$ARGV_APPLICATION" -perm +111 -type f); do - sign_file "$file" -done - -# Sign `.app` and `.framework` directories now that -# all the executables inside them have been signed. - -for file in $(find "$ARGV_APPLICATION/Contents" -name '*.app'); do - sign_file "$file" -done - -for file in $(find "$ARGV_APPLICATION/Contents" -name '*.framework'); do - sign_file "$file" -done - -# Restore IFS -IFS=$SAVEIFS - -# Sign top-level application after all -# its components have been signed -sign_file "$ARGV_APPLICATION" - -# spctl manages the security assessment policy subsystem. -# This subsystem maintains and evaluates rules that determine whether the system -# allows the installation, execution, and other operations on files on the system. -# We use this tool to simulate whether the OS would accept our code -# signature at the moment of installation / execution. -spctl \ - --ignore-cache \ - --no-cache \ - --assess \ - --type execute \ - --verbose=4 "$ARGV_APPLICATION" diff --git a/scripts/build/electron-sign-darwin.sh b/scripts/build/electron-sign-darwin.sh deleted file mode 100755 index a0f39d08..00000000 --- a/scripts/build/electron-sign-darwin.sh +++ /dev/null @@ -1,62 +0,0 @@ -#!/bin/bash - -### -# Copyright 2016 resin.io -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -### - -set -u -set -e - -OS=$(uname) -if [[ "$OS" != "Darwin" ]]; then - echo "This script is only meant to be run in OS X" 1>&2 - exit 1 -fi - -./scripts/build/check-dependency.sh codesign - -function usage() { - echo "Usage: $0" - echo "" - echo "Options" - echo "" - echo " -f " - echo " -i " - exit 1 -} - -ARGV_FILE="" -ARGV_IDENTITY="" - -while getopts ":f:i:" option; do - case $option in - f) ARGV_FILE="$OPTARG" ;; - i) ARGV_IDENTITY="$OPTARG" ;; - *) usage ;; - esac -done - -if [ -z "$ARGV_FILE" ] || [ -z "$ARGV_IDENTITY" ]; then - usage -fi - -codesign --sign "$ARGV_IDENTITY" -fv "$ARGV_FILE" - -# Verify signature -codesign \ - --verify \ - --deep \ - --display \ - --verbose=4 "$ARGV_FILE" diff --git a/scripts/build/electron-sign-dmg-darwin.sh b/scripts/build/electron-sign-dmg-darwin.sh deleted file mode 100755 index 25f26357..00000000 --- a/scripts/build/electron-sign-dmg-darwin.sh +++ /dev/null @@ -1,75 +0,0 @@ -#!/bin/bash - -### -# Copyright 2016 resin.io -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -### - -set -u -set -e - -OS=$(uname) -if [[ "$OS" != "Darwin" ]]; then - echo "This script is only meant to be run in OS X" 1>&2 - exit 1 -fi - -./scripts/build/check-dependency.sh hdiutil - -function usage() { - echo "Usage: $0" - echo "" - echo "Options" - echo "" - echo " -n " - echo " -d " - echo " -i " - exit 1 -} - -ARGV_APPLICATION_NAME="" -ARGV_APPLICATION_DMG="" -ARGV_IDENTITY="" - -while getopts ":n:d:i:" option; do - case $option in - n) ARGV_APPLICATION_NAME="$OPTARG" ;; - d) ARGV_APPLICATION_DMG="$OPTARG" ;; - i) ARGV_IDENTITY="$OPTARG" ;; - *) usage ;; - esac -done - -if [ -z "$ARGV_APPLICATION_NAME" ] || - [ -z "$ARGV_APPLICATION_DMG" ] || - [ -z "$ARGV_IDENTITY" ]; then - usage -fi - -VOLUME_DIRECTORY=/Volumes/$ARGV_APPLICATION_NAME -VOLUME_APPLICATION=$VOLUME_DIRECTORY/$ARGV_APPLICATION_NAME.app - -# Make sure any previous DMG was unmounted -hdiutil detach "$VOLUME_DIRECTORY" || true - -# Mount temporary DMG image, so we can modify it -hdiutil attach "$ARGV_APPLICATION_DMG" -readwrite -noverify - -# Wait for a bit to ensure the image is mounted -sleep 2 - -./scripts/build/electron-sign-app-darwin.sh -a "$VOLUME_APPLICATION" -i "$ARGV_IDENTITY" - -# Unmount temporary DMG image. -hdiutil detach "$VOLUME_DIRECTORY"