[CI] Support for UML

Brian J. Watson bjbrew@power.net
Sat, 18 Aug 2001 21:26:51 -0700


--============_-1213927283==_============
Content-Type: text/plain; charset="us-ascii"

Kitrick-

These are the latest instructions I've been using to set up CI on UML.
They are by no means set in stone, seeing as how I haven't succeeded yet
(due more to lack of trying than any fundamental difficulties).

I'll be on the road at Caldera Forum and LinuxWorld until the 31st.
During this time, I'll only be checking my work e-mail, and not 
necessarily every day.

I'm sending this e-mail from my home address. If for some reason you
want to reply only to me, please use my work address:
	Brian.J.Watson@compaq.com

Thanks. Good luck!

-Brian

==
1) Apply ci-linux-2.4.6-v0.5.6 to vanilla 2.4.6 source:
	tar jxvf linux-2.4.6.tar.bz2
	tar jxvf ci-linux-2.4.6-v0.5.6.tar.bz2
	cp -al linux ci-uml
	cd ci-uml
	patch -p1 <../ci-linux-2.4.6-v0.5.6/ci-linux-2.4.6-v0.5.6.patch
	cd ..

2) Check out tag v_2_4_6_5 from the UML repository:
	export CVSROOT=':pserver:anonymous@cvs.user-mode-linux.sf.net:
		/cvsroot/user-mode-linux'
	cvs login
	cvs -z9 co -rv_2_4_6_5 -duml linux

3) Generate a patch against the vanilla 2.4.6 source:
	diff -Pru --exclude=CVS linux uml | grep -v '^Only in ' 
		>patch-uml

4) Apply the UML patch against ci-linux:
	cd ci-uml
	patch -p1 <../patch-uml
	(resolve conflicts, if any)

5) Apply the attached patch which adds CI support to UML:
	patch -p1 <../patch-ci-uml

6) Copy the attached config file into place and build:
	cp ../config-ci-uml .config
	make oldconfig bzImage modules ARCH=um
	cd ..

7) Get the RedHat 7.0 root image from:
	http://prdownloads.sourceforge.net/user-mode-linux/
		root_fs_redhat_7.0_big.bz2

8) Make a copy of the root image for node 1:
	mkdir 1
	cp root_fs_redhat_7.0_big.bz2 1/root_fs

9) Mount the root:
	mkdir mnt
	mount ../1/root_fs mnt -o loop

10) Install your modules into the root:
	cd ci-uml
	make modules_install INSTALL_MOD_PATH=`pwd`/../mnt
	cd ..

11) Install Cluster Tools 0.5.6 or later into the root. Follow the
    instructions for Cluster Tools to do this. Be sure to add a line
    like the following to cmd/Makefile and libcluster/Makefile:
	PREFIX = ../mnt

12) Edit the /etc/cluster.conf to specify whatever virtual network 
    addresses you want, then unmount the root:
	umount mnt

13) Copy the root for node 2:
	mkdir 2
	cp 1/root_fs 2

    You'll need to change node 2's /etc/cluster.conf accordingly.

14) Install the UML tools, which includes the uml_router networking 
    daemon. Start the daemon. As an alternative, UML supports a virtual
    network using multicast. Play around.

15) Bring up CI under UML:
	cd 1
	../ci-uml/linux eth0=daemon

    Last time I tried this, it panicked early in the boot. I haven't
    figured out why. Probably something boneheaded. ;)

16) Once you get a prompt for node 1, try running the cluster_start
    command. It'll set up your network interface, as well as 
    initializing ICS and CLMS.

17) When you got this far, bring up node 2 in a similar fashion. Once
    you run cluster_start on node 2, you should see messages on node
    1's console about it joining. Run the following on either node:
	clusternode_setstate 1 UP
	clusternode_setstate 2 UP

    Now try running 'cluster -v' on either node, and you should see
    that both nodes are up. They should also be able to ping each
    other.

18) Declare success with CI. Please let us know how you did it.

19) Tackle SSI. There's more new system calls for which to add entries 
    to UML. Adrian Cox will have a recipe for how to use GFS over UML.
    SSI requires the use of a ramdisk to join the cluster and mount
    the GFS shared root. This will have to be faked somehow. There's
    probably other issues, as well.


--============_-1213927283==_============
Content-Type: application/mac-binhex40; name="config-ci-uml"
Content-Disposition: attachment; filename="config-ci-uml"

(This file must be converted with BinHex 4.0)

:$@0[EQCTCbeMD5eeE@`!2cmr2cmr2cm"!!!!&)!!!!!!m@BM#L-J3A9dEfeKG'P
MB@aXH5"RC@jPFQ&dC@3JE@&VC5"MEfjQD@Fk)'4[ELGd)'9NDA3+)`T$6dj'58G
I990&8Ne24%8pH3SM)%026NC*4ep*8d%JDA-JEQpd)(0PG!SM)%026NC*4ep63P9
6)'Pc)'j[G#"cCA3+)b"$6dj'58GI8%0*)'Pc)'j[G#"cCA3+3dp14NP(Ae9*4$%
f2AN+3dp14NP(Ae*A8d90AeK$5%G"4%4I38a(6e**9%K02AN+#L-+)b"$Ef4P)'e
KG(9bDA4j)'aPGQ9X)'p`G'P[ER-+)`T$6dj'58GI49K349**68919%&-2AN+#L-
+)b"(C@jPFQ&X)&0PG(9`#L-+3dp14NP(Ae084%P2Ad026P026%8pH3T$6dj'58G
I6N982AN+3dp14NP(Ae0C8eC*8%-pH3T$6dj'58GI3P0%Ae"56d0&8e0I380$9$e
j#N026NC*4ep6@90$9%`pH3T$6dj'58GI3NP14Ne8Ad&2993pH3T$6dj'58GI3NP
14Ne8Ad9-4Mej#N026NC*4ep#58j'694I68P63cej#N026NC*4ep96NPB16KI8&4
C8cej#N026NC*4ep96NPB16KI8&4CAd0298j826)e0JT$6dj'58GI8e0-2AN+3dp
14NP(AdK28e4'8ceY#L-J3dp14NP(Ade$6dj66da&)'Pc)'j[G#"cCA3+#L-+)b"
-Ef&NB@*XC5"YEf4eE'8JFh9`F'pbG!SM#N026NC*4ep06d496%962AN+3dp14NP
(AdY06d3pH3S+)`SM)%4PGQPMCA-+)`T$6dj'58GI3Na,Ad4&9Pp93N3pH3SM)%0
26NC*4ep#6%YI4%9@Ae9#4&p6@8j$)'Pc)'j[G#"cCA3+3dp14NP(Ad*-5ep%49C
I6%p28$ej#N026NC*4ep#6%YI4%9@Adj#4$ej#N026NC*4ep#6%YI4%9@Ae*"66e
j#N026NC*4ep#6%YI4%9@Ae*"69p659T&263`16B+3dp14NP(Ad*-5ep%49CI58j
*9&*%2AN+)b"$6dj'58GI68e"8&"&8L"TFb"ZEh3JFf9d#JSM#L-J6Q9dGfpbDfP
ZCb"[F(4TEfjc#L-+)b"$6dj'58GI8%&$5d98)'Pc)'j[G#"cCA3+)b"$6dj'58G
I6N986%P15b"TFb"ZEh3JFf9d#L-J3dp14NP(Adj&9%C*6&4&8L"TFb"ZEh3JFf9
d#L-J3dp14NP(AdC*6&4&8L"TFb"ZEh3JFf9d#N026NC*4ep96NPB2AN+3dp14NP
(AdP1493pH3SM)%026NC*4ep*8&p098a8580"8e3JDA-JEQpd)(0PG!SM)%026NC
*4ep*8&p"4&C"6N0&4&p56e9849)JDA-JEQpd)(0PG!SM)%026NC*4ep*8&p36P!
JDA-JEQpd)(0PG!SM)%026NC*4ep1494I59"*8#"TFb"ZEh3JFf9d#L-J3dp14NP
(Adj&9&p*8%G545"TFb"ZEh3JFf9d#L-J3dp14NP(AdP1494I4801)'Pc)'j[G#"
cCA3+)b"$6dj'58GI8eP1Ad026dY*49-JDA-JEQpd)(0PG!SM)%026NC*4ep*8&B
f)'Pc)'j[G#"cCA3+)b"$6dj'58GI5dK89&"%)'Pc)'j[G#"cCA3+)b"$6dj'58G
I3940)'Pc)'j[G#"cCA3+#L-+)b!J#L-+)b"$6dj'58GI59"B)'Pc)'j[G#"cCA3
+)b"$6dj'58GI394"6%XJDA-JEQpd)(0PG!SM)%026NC*4ep%4801493JDA-JEQp
d)(0PG!SM)%026NC*4ep#8NP%4d8JDA-JEQpd)(0PG!SM)%026NC*4epB-M8JDA-
JEQpd)(0PG!SM)%026NC*4ep-39"#)'Pc)'j[G#"cCA3+)b"$6dj'58GI6%a$)'P
c)'j[G#"cCA3+)b"$6dj'58GI6N98Ad4*9N959#"TFb"ZEh3JFf9d#L-J3dp14NP
(Ad9$6dj&9#"TFb"ZEh3JFf9d#L-J3dp14NP(AeG"6Pp56e9849)JDA-JEQpd)(0
PG!SM)%026NC*4ep1494I4N&69&*2994&)'Pc)'j[G#"cCA3+)b"$6dj'58GI6N9
8AdKAAdC-6eG$6dj88Np-)'Pc)'j[G#"cCA3+#L-+)b"4Ee-JB@jN,fpb)'CKDA)
JFA9PG@9TEQF+)`SM)%026NC*4ep1494I8d0)483JDA-JEQpd)(0PG!S+)`SM)%j
PG(G[FQXJC'9fD@0P)(0eF("[FR3+)`T$6dj'58GI6N984%9@580&8cej#N026NC
*4ep968aI6N982AN+)b"$6dj'58GI98e-Adj&9&p&9%K&8P4"8#"TFb"ZEh3JFf9
d#L-J3dp14NP(Ae906&p1494I8da*8#"TFb"ZEh3JFf9d#N026NC*4ep968aI6N9
8Ad4"48e26Mej#L-J3dp14NP(Ae906&p1494I680"8e3JDA-JEQpd)(0PG!SM)%0
26NC*4ep&9%K&8P4"8#"TFb"ZEh3JFf9d#L-J3dp14NP(Ae496L"TFb"ZEh3JFf9
d#JSM#L-J4QPXC5"cHA0dC@ec#L-+3dp14NP(Ae&96e4"2AN+3dp14NP(Ad&99%p
'8ep'8ceY#N026NC*4ep"99424P-dAdC62@d+3dp14NP(Ae*&590&8NC6AdC62@d
+)b"$6dj'58GI8N9*8d954P0I3dK&3dXJDA-JEQpd)(0PG!SM)%026NC*4ep"4%C
6AdC6)'Pc)'j[G#"cCA3+)b"$6dj'58GI384'8ep'8ep59b"TFb"ZEh3JFf9d#L-
J3dp14NP(Ad&'4P0I4P-JDA-JEQpd)(0PG!SM)%026NC*4ep)4P0I4P-JDA-JEQp
d)(0PG!SM)%026NC*4ep#4P0I4P-JDA-JEQpd)(0PG!T$6dj'58GI4N&8AdC62@d
+3dp14NP(Ade64%p6AdC62@d+3dp14NP(Ae908d428ep'8ceY#N026NC*4ep@4N&
8AdC62@d+)b"$6dj'58GI48C6AdC6)'Pc)'j[G#"cCA3+)b"$6dj'58GI5NC'8ep
'8b"TFb"ZEh3JFf9d#L-J3dp14NP(Ad0538e'8b"TFb"ZEh3JFf9d#L-J3dp14NP
(Ae408%C6)'Pc)'j[G#"cCA3+)b"$6dj'58GI8N&04P-JDA-JEQpd)(0PG!T$6dj
'58GI590216Bf-&p'8ceY#L-J3dp14NP(AdT26%P&9#"TFb"ZEh3JFf9d#N026NC
*4ep058j*@&p'8ceY#L-J3dp14NP(AeCB4P0I4P-JDA-JEQpd)(0PG!SM)%026NC
*4ep19%C6AdC6)'Pc)'j[G#"cCA3+)b"$6dj'58GI6P4'8ep59b"TFb"ZEh3JFf9
d#L-J3dp14NP(AdK34P0I4P-JDA-JEQpd)(0PG!T$6dj'58GI8&*23ep'8cej#N0
26NC*4ep%49C'8ep'8cej#N026NC*4ep%49C'8ep06e919$ej#L-J3dp14NP(Ad4
&9NC6Ad4&3P9()'Pc)'j[G#"cCA3+3dp14NP(Ad4&9P"88ep'8cej#L-J3dp14NP
(Ae&1@$4'8ep'8b"TFb"ZEh3JFf9d#L-J3dp14NP(Ae&1@$4'8ep59b"TFb"ZEh3
JFf9d#L-J3dp14NP(Ae*268C6AdC6)'Pc)'j[G#"cCA3+3dp14NP(Ad9B9$*I4P-
pH3SM)%026NC*4ep6@90@AdC6)'Pc)'j[G#"cCA3+)b"$6dj'58GI984'AdC6)'P
c)'j[G#"cCA3+)b"$6dj'58GI984'Ae*A)'Pc)'j[G#"cCA3+)b"$6dj'58GI98C
6AdC6)'Pc)'j[G#"cCA3+)b"$6dj'58GI98C6AdC6AeG5594&)'Pc)'j[G#"cCA3
+#L-+)b"1CA4hEh*V)%CTE'8J8hPcG'9YF`SM#L-J3dp14NP(Ad024%&I4P-JDA-
JEQpd)(0PG!SM)%026NC*4ep14P0I4P-JDA-JEQpd)(0PG!SM)%026NC*4ep14P0
I9M-JDA-JEQpd)(0PG!SM)%026NC*4ep56dp8Adj'8b"TFb"ZEh3JFf9d#L-J3dp
14NP(Adj'8d3JDA-JEQpd)(0PG!SM)%026NC*4ep14P0%AeBc)'Pc)'j[G#"cCA3
+)b"$6dj'58GI8e918P"$)'Pc)'j[G#"cCA3+)b"$6dj'58GI6%p$5d3JDA-JEQp
d)(0PG!SM)%026NC*4ep668*I4P-JDA-JEQpd)(0PG!SM)%026NC*4ep13e"I4P-
JDA-JEQpd)(0PG!SM)%026NC*4ep13e"'8ep3380,494I8dP(6NP14b"TFb"ZEh3
JFf9d#L-J3dp14NP(Adj$8%C6AdP23e4-Ada23dY*6NFJDA-JEQpd)(0PG!SM)%0
26NC*4ep13e"'8ep69&*26NFJDA-JEQpd)(0PG!SM)%026NC*4ep13e"'8ep14P0
I6P-JDA-JEQpd)(0PG!SM)%026NC*4ep13e"'8ep28c*I6P-JDA-JEQpd)(0PG!S
M)%026NC*4ep13e"'8ep668&-6%428b"TFb"ZEh3JFf9d#L-J3dp14NP(Adj$8%C
6Adj-8b"TFb"ZEh3JFf9d#L-J3dp14NP(Adj$8%C6Ad9B9&*"8b"TFb"ZEh3JFf9
d#JSM#L-J8'&bG'PdD@pZ)&4jF'9c#L-+)b"$6dj'58GI8%&59%P858p1Ad&%9N&
13d9%)'Pc)'j[G#"cCA3+3dp14NP(Ade64%p6Ae""8P4*9%P26Mej#L-J3dp14NP
(Ae003Pp16&-JDA-JEQpd)(0PG!T$6dj'58GI6Na62AN+#L-+)b"1BA4TGQ8J6'&
ZCh9KCf8J8h9`F'pbG!SM#N026NC*4ep16&0I4%9'399-9$dLDA0[1$Je15da)JS
M)%026NC*4ep16&0I3dp%49""4d9I0$-h)'Pc)'j[G#"cCA3+)b"$6dj'58GI6Na
6Ad024%9338G&AcFc0b"TFb"ZEh3JFf9d#L-J3dp14NP(Adj-8ep$6d4&8%&(49m
h0c8JDA-JEQpd)(0PG!SM)%026NC*4ep16&0I3dp%49""4d9I1$8`)'Pc)'j[G#"
cCA3+)b"$6dj'58GI6Na6Ad024%9338G&AcJe-L"TFb"ZEh3JFf9d#L-J3dp14NP
(Adj-8ep$6d4&8%&(49mi068JDA-JEQpd)(0PG!SM)%026NC*4ep16&0I3dp%49"
"4d9I1$8h)'Pc)'j[G#"cCA3+)b"$6dj'58GI6Na6Ad024%9338G&AcJf-#"TFb"
ZEh3JFf9d#L-J3dp14NP(Adj-8ep$6d4&8%&(49mi0M%JDA-JEQpd)(0PG!SM)%0
26NC*4ep16&0I3dp%49""4d9I1$Bb)'Pc)'j[G#"cCA3+)b"$6dj'58GI6Na6Ad0
24%9338G&AcJf-b"TFb"ZEh3JFf9d#L-J3dp14NP(Adj-8ep$6d4&8%&(49mi0M3
JDA-JEQpd)(0PG!SM)%026NC*4ep16&0I3dp%49""4d9I1$Be)'Pc)'j[G#"cCA3
+)b"$6dj'58GI6Na6Ad024%9338G&AcJf0L"TFb"ZEh3JFf9d#L-J3dp14NP(Adj
-8ep$6d4&8%&(49mi0MNJDA-JEQpd)(0PG!SM)%026NC*4ep16&0I3dp%49""4d9
I16-f)'Pc)'j[G#"cCA3+)b"$6dj'58GI6Na6Ad024%9338G&AcNe-#"TFb"ZEh3
JFf9d#L-J3dp14NP(Adj-8ep$6d4&8%&(49mj-c)JDA-JEQpd)(0PG!SM)%026NC
*4ep16&0I3dp%49""4d9I163j)'Pc)'j[G#"cCA3+)b"$6dj'58GI6Na6Ad024%9
338G&AcJh0#"TFb"ZEh3JFf9d#L-J3dp14NP(Adj-8ep*8dmi1$8jAcJJDA-JEQp
d)(0PG!SM)%026NC*4ep16&0I3dp%49""4d9I-6)e-5"TFb"ZEh3JFf9d#L-J3dp
14NP(Adj-8ep*8dmi1$8jAc%JDA-JEQpd)(0PG!SM)%026NC*4ep16&0I59021$J
e19mb)'Pc)'j[G#"cCA3+)b"$6dj'58GI6Na6AdP66cJi06PI-b"TFb"ZEh3JFf9
d#L-J3dp14NP(Adj-8ep*8dmi1$8jAc3JDA-JEQpd)(0PG!SM)%026NC*4ep16&0
I59021$Je19me)'Pc)'j[G#"cCA3+)b"$6dj'58GI6Na6AdP66cJi06PI0L"TFb"
ZEh3JFf9d#L-J3dp14NP(Adj-8ep*8dmi1$8jAcFJDA-JEQpd)(0PG!SM)%026NC
*4ep16&0I59021$Je19mj)'Pc)'j[G#"cCA3+)b"$6dj'58GI6Na6AdP66cJi06P
I-6-JDA-JEQpd)(0PG!SM)%026NC*4ep16&0I59021$Je19ma0#"TFb"ZEh3JFf9
d#L-J3dp14NP(Adj-8ep*8dmi1$8jAc%e)'Pc)'j[G#"cCA3+)b"$6dj'58GI6Na
6AdY256KI8L"TFb"ZEh3JFf9d#L-J3dp14NP(Adj-8ep,6dNiAe8JDA-JEQpd)(0
PG!SM)%026NC*4ep16&0I994'1#"TFb"ZEh3JFf9d#JSM#L-J5f9bEQ9X)'KKBfY
TEQF+)`T$6dj'58GI4%9#98G6@8dpH3T$6dj'58GI8&4I8&*2@&NpH3SM)%026NC
*4ep(8&*24L"TFb"ZEh3JFf9d#L-J3dp14NP(AdG$6eBJDA-JEQpd)(0PG!S+)`S
M)%0XGA0dCA*TEQF+)`T$6dj'58GI@$JfAd008&K$5%FpH3T$6dj'58GI3da98e4
&8Mej#N026NC*4ep$6%e62AN+#L-+)b"*ER4PFQj[C'8J3fpYEA9ZD@0KG'P[EL"
6G@*cHA0dC@dJ+%P$8bNJDA-JFQ9aG@PbC@3JCQpb)%0-69-+)`T$6dj'58GI580
62AN+Z*m!!!:
--============_-1213927283==_============
Content-Type: application/mac-binhex40; name="patch-ci-uml"
Content-Disposition: attachment; filename="patch-ci-uml"

(This file must be converted with BinHex 4.0)

:$("KG'0S,@0T,A9YE!!r2cmr2cmr2`%!!!!(L!!!!!"3I'4TCQBJ,8jeFL"MD5e
eE@`[BA*MD#peE5pMEfjQD@FZD@iJBfNYG@eX,A4PFh3[BA*MD#peE5pMEfjQD@F
ZD@i+,5dY)'0T,A9YE#pKFQ0S,h9Y,f0[EQCTCbjTEJP8G@8J5R9X)$-a)$%a1M8
i1M%`)$)`-$%++bXV)'0T,A9YE#edCA0d,f&bBfJ[G@d[BfpZCQPR,QPZ#94eC5"
+G@`J-c%J-6Bk0$3k063J-M!`-3T!3#!Y16FX-b!V16FX-6FJ3%!+)'4PF&pLEfp
X)#G&EQ&LE'8JCh"bEfBJFh9`F'pbG#FJ3dp14NP(AdG38Np')#4$6dj'58GI4%9
#98G6@8d+)'4PF&pLEfpX)#G&EQ&LE'8JCf0[GL"cGA"`Eh*d*b"$6dj'58GI4d0
29L!N3dp14NP(Ad4&3P9(8eP0#L"PEQ4YC@je#LX++feKD@jYC@jeAfp`G'P[EL"
ZCAKdAf0[E@ePER3++f0[E@ePER3J*d0XGA0dCA*TEQFR#LYNC@CTEQ9IBQp[E#"
$6dj'58GI@$JfAd008&K$5%FJH3SVBQp[E#!R3faeFh4PFQPZCbFJ3dp14NP(Ad0
-990849)++fPQ)&XJ)L4$6dj'58GI3da98e4&8L)J25!LH5)JA6XJG'KPEJSV)#"
LEfpX)#G$6(9cG'9b)%ePE@*PFR0SDA!J8f9bGQPMC5!S3da08bNR)%026NC*4ep
$6%e6#LXJ)'PQ)&XJ)L4$6dj'58GI3da08b)J25!LH5)JA6XJG'KPEJSV)#!J)'0
[E@ePER3J*dPZG'9bEQpNC5"$EfeYG@jTBf&dD@pZ)&0eBR0jFh4PE5!S5806+5"
TFb"bCA&eDA*PC#"QEh)J3da08bF++b!J)#"NC@CTEQ9IBQp[E#"$6dj'58GI580
6)(N++b!JCQN++fCT#LX++f9ZC'ePER8+C'PQCL!Y6R9b)'0T,A9YE#pKFQ0S,h9
Y,fPZBfaeC'8[FhPcC'9`,@Nc1$B[FhPcBf&XE(-ZD#"MD5eeE@`YG'9cG#pKFQ0
S,h9Y,fPZBfaeC'8[FhPcC'9`,@Nc1$B[FhPcBf&XE(-ZD!SY,5dJBfNYG@eX,f&
bBfJ[G@d[D@jME(9NC5pcHA0NCA!YD6-i0LpcHA0MB@aXFbjS#94eC5"+G@`J-c%
J-6%k06Jk-6!J-M!`-3SV+bXJBfNYG@eX,A4PFh3[BA*MD#peE5pTEQ0XG@4P,h0
jFf4PF#eT-cJf,h0jFf0KE'ac,QJ*9(9P)%TeE#!c-5!a1$Sb1$Sa-5!b-$!a#N"
!)#dc15`j)#Xc15`a-L"!3!SJ#9XJAep18PpcCA4QFfGTC$-b)&dJ25"cHA0IFf9
dCR0RD@3X)&`+)!PE)&pI6P*IF'PfEh4IFQp[G#"G)$dJFhPcAh"TGQpdAh*[Eh3
X)&`+)!PE)&pI6P*IE@PZBfpbC5"G)$dJFhPcAfeTEQ0[FQ8X)&`+,3PE)&pI6P*
IE@&NGQPcC5"G)$dJFhPcAfeKC(CTFf8X#LX*@b"IAdj5AfeKC(CTFf8JA5!p)(0
jFepYB@4fDA0P,#"F#LX*@b"IAdj5AfCMER4X0M3J+b!a)#iZ,L"IAdj5Ah0cDA0
jFb!Y)$%JA5!p)&`++`N*+(0jFf0KE'aID'&ZC'aPFPpd)#ST)(0jFepZD9pcHA0
MB@aX,#"F#LX*@b"IAdj5Ah0cDA0jFb"G)$dJFhPcAh0cDA0jFb`+)!SY)f4PCQP
ZC5"-3908Ae0C8d0"6%`JAep18PpQBfjdE$Bd#LXMC'9QD@jP)%a"8e4I8eP63d&
-6#"IAdj5Ah0cDA0jF`SJ#L![+JSJ)#SJ6hCPFR*TC'9c)'C[FL"&E@&MFb"cEb"
dD'&d)(GP)'C[E'a[Gb"-D@jeFbGc)(4KBQ*TEQFJFh4jE'8Z#Q4TCQBJ,8jeFL"
MD5eeE@`[BA*MD#peE5pVCA*ZC@`[FhPcAf0KE'aIG'&LE'8ZBb"MD5eeE@`YG'9
cG#pKFQ0S,h9Y,fYPFQjPE#pcHA0IBf&XE&pdB@*XC5jM#LdY,5"MD5eeE@`[BA*
MD#peE5pVCA*ZC@`[FhPcAf0KE'aIG'&LE'8ZB`P8G@8J5R9X)$-a)$%a1M8i1M%
a)$)`-$%++bXV)'0T,A9YE#edCA0d,f&bBfJ[G@d[Df9bEQ9X,h0jFepMB@aXAh4
KBQaP,Q-*9(9P)%TeE#!c-5!a0MSe06S`05!b-$!a#N"!)#db-6FX0L!V-M%h,$F
J3%!+)'9iG'9bEL"cHA0MB@aXAfKKEQ4XCA*IG#"cHA0IE@&NGQPcC6X+)'9iG'9
bEL"cHA0MB@aXAfKKEQ4XCA*IG#"cHA0ICQ0ZG'`f0$X+)'9iG'9bEL"cHA0MB@a
XAfKKEQ4XCA*IG#"cHA0ICf9dC'9ZG(-f0$X++f9iG'9bEL"cHA0MB@aXAfKKEQ4
XCA*IG#"cHA0IFh0TFhPc1`SJ#L"PH(4PFQiJFhPcBf&XE&pSB@jNE'9bAh3JG@e
IE@peER3l#L"PH(4PFQiJFhPcBf&XE&pSB@jNE'9bAh3JG@eIG'PYC6X+Bf-!!!:
--============_-1213927283==_============--