Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Equinox » Discovering Hook Configurators
Discovering Hook Configurators [message #65470] Thu, 27 April 2006 15:15 Go to next message
Marius Slavescu is currently offline Marius SlavescuFriend
Messages: 67
Registered: July 2009
Member
This is a multi-part message in MIME format.
--------------020504000203070601010906
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

From
http://wiki.eclipse.org/index.php/Adaptor_Hooks#Discovering_ Hook_Configurators
I understand that I can create a fragment for org.eclipse.osgi bundle
and by providing a hookconfigurators.properties I can plug any of the
osgi.hook.configurators.

I tried to do this, but my classes are not used at all, see the attached
project.

Please could you advise how this should be done?

I'm interested in how I can use the ClassLoadingHook, to control what
bytecode version is loaded, I will have different implementation of a
class with the same name packaged in different JARs in the same plugin.

Thanks,
Marius

--------------020504000203070601010906
Content-Type: application/x-zip-compressed;
name="models-classloaderhook-osgi-fragment.zip"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="models-classloaderhook-osgi-fragment.zip"

UEsDBBQACAAIAMtZmzQAAAAAAAAAAAAAAAAwAAAAb3JnLmVjbGlwc2UudHB0 cC5wbGF0Zm9y
bS5tb2RlbHMub3NnaS8uY2xhc3NwYXRonY89C8IwFEVnBf9DyG6qm0NrEamg Q5VSZ6nJo43G
l5gP0X9vVYouOri9ezmcy4vT60mRC1gnNSZ0zEaUAHItJNYJ3ZaL4YSm00E/ 5qpyzlS+aUPv
nQC9vZGjRJFQZzklj/J1Rt9JrrEjta0ZcCWNA3YQnqkqIG/adbYqst18nZez ZZ4Vf9iMAMa1
BWbhHKQFsVGhluh+qXTwJvjOtpf4hOPo8/s7UEsHCNUcnNKlAAAAMwEAAFBL AwQUAAgACADL
WZs0AAAAAAAAAAAAAAAALgAAAG9yZy5lY2xpcHNlLnRwdHAucGxhdGZvcm0u bW9kZWxzLm9z
Z2kvLnByb2plY3S9U01PAyEUPGvif2j2LtSbB7pN1PSmMan+AAqvlMpXgG30 3wvI1mzWTZqY
7O3N8IYZ4EHWn1otTuCDtGbV3KFlswDDLJdGrJr3t83tfbNub66J8/YILD5B YF66mLoTe0UM
1dBaLxAwJV0AFF10yCka99ZrpC0HFZANQhJcerOIWa3BxJbgvspsdQgF4AHa dVLxrQOWUYWP
SUoNL8wfOQ5flENAaZsdfMh4LooW/G+aJKZedDlGqBgPCYJHhhdFOPKImPWp oCc6o6/jgJ6p
kXsI8WFe2y07gKYzmk4/s+HqvxEq0w9eco+dh9r9A0Y38Ko6Ic1LWczupWlK MJgQc5lm6sRj
eV/nwOcPNfzA31BLBwivJoBpDQEAAP8DAABQSwMEFAAIAAgAy1mbNAAAAAAA AAAAAAAAADYA
AABvcmcuZWNsaXBzZS50cHRwLnBsYXRmb3JtLm1vZGVscy5vc2dpL2J1aWxk LnByb3BlcnRp
ZXMrzi8tSk7V01OwVSguStbn5covLSkoLQELJGXmAQWApF5mXnJOaUpqMVDQ 1zXEUdfTz01f
J4aXSwEV6GERSytKTM9NzSvRq8jNwSKdkZ+fnZyfl5aZXlqUWJJfVKxXUJRf kFpUkplazMsF
AFBLBwi9V5vaawAAAJ4AAABQSwMEFAAIAAgAy1mbNAAAAAAAAAAAAAAAADIA AABvcmcuZWNs
aXBzZS50cHRwLnBsYXRmb3JtLm1vZGVscy5vc2dpL2ZyYWdtZW50LnhtbLOx r8jNUShLLSrO
zM+zVTLUM1BSSM1Lzk/JzEu3VQoNcdO1ULK34+WysU9NzsksKE5FqDXWM4JI pRUlpuem5pUA
2UCePhIXAFBLBwhOaISKSAAAAF4AAABQSwMEFAAIAAgAy1mbNAAAAAAAAAAA AAAAAEIAAABv
cmcuZWNsaXBzZS50cHRwLnBsYXRmb3JtLm1vZGVscy5vc2dpL2hvb2tjb25m aWd1cmF0b3Jz
LnByb3BlcnRpZXOtUbFqw0AM3f0VAi8tpGenQ4dAhzQtNJBCho5dLrbiE707 HXdnm/x9Fbuk
kK0QbU+89/QkleVNqyhhw+EUqTMZ7pp7eKzrJ9i+fEg7Bo46E3vQvgXOBmNS IlhbC5MgQcSE
ccBWwaehBCFyF7Wb+EIH3TTsgvYn8h04nTGStkksdETBrTAGTVYfLELvW4yT SmguAR8n8NZY
Cglh3x8sNbCjBr3AYalq8RkNNeYyhjCJRnK0lHKkQ38Ov5jSSPNvlM4iNTmH VVWN46hwnqE4
dpXFTtsKg30YlrUy2dliPpKfHTmmleBzXV/pAchTlg1hvd/OU12w6NDniVDc 9nVlYZi/VcP+
SF0vGSTaM3wVssVloxxyUMHqfOTolOMWbVLk5cJeW8WpI/WKw8bqlHasW3nT u3gu/m3y+6Vr
o6L4AVBLBwjeLqO4PQEAAK8CAABQSwMEFAAIAAgAy1mbNAAAAAAAAAAAAAAA AC8AAABvcmcu
ZWNsaXBzZS50cHRwLnBsYXRmb3JtLm1vZGVscy5vc2dpL2J1aWxkLnhtbNVZ W2/bNhR+doH+
B04IUCCIpVyKYSjsdmmaAA26rWizvQa0RNtMZFIgqVxa+L/v8CKJkiXZTpM1 A/JgiYc8t++c
81EZvbtbpOiGCEk5GwcH4X6ACIt5QtlsHPx9cTb8LXj39uWLUSb4FYkVYnhB xgEXs5DEKc0k
CVWmsjBLsZpysQgXPCGpDLmc0XAq8GxBmApQQqY4T9U4mOQ0TcIrLGSAJliS hIpxEAag4eWL
gVaSEaHunRYtcAuCNzjN4XHn+61cBtHbDknuS/I+SSziuSerH3ukWerJstRK atlfhkN0whcZ
TYlAkigFMZMhGg7bTrrCNzg+wzT9i50KwUV55hSnkrRrN3s+kEk++8imvNzB WY/4P0RMOBy4
wfEpn53eKcJ06kv5EN62i8fO1WMxK6V7DPnKcxFXdhyERz3CF1jMiPKEDwth rOaIJuNA/7ic
cK7iFEupnzRoBoPRFGyC4CODpJ3v+rhwzhdkGaV0YmUGI8riNE+IU7mrAWgV DEaRO8Coi/TB
rUCoaUaCTDuMaodRzpKUnLeExRrs3naBsNrdiJPbbd/27n4PRp5U9pf7a8ZX 0FbmRHcCZdSU
cEZYIsFpez4l0mUg5iyhCkCECtUglOYzyi7IIvOV6eLX7854mhCxjKyULLMk dSKrQxryZcZK
hfa54XC7attrlsUZbTbb3iSIhE4VTq3K6oTq2GW0Uft7XK/6jWu619isQFv3 pshfbj/AOh8m
REKTw8pvGE3lo8iCpw1JHnQQnY6DIoYiZwyaZ9DjedF9qi7o5eAqUSAgSHj+ 4aLoyMcJzpRz
aI1ZVkOeJVgR0xoqsBfYl7GgmTIz8r2WRmpOkI7KkLI3aLtxiGAFYYasQiQp aHWugzCBV66X
eXkpM7u4hsU+AcxUjNMUWQ9rE7dDYgalT0Q4gQRnWKiyHOEBL1yIvMyH7Wjy bYlKUDtd9ukb
zXQole64VUn5qNqwtMpQXr4OD8N9m7OSTjRseciJATJTgbP0vhih6HZOGJyr S1heU2guNn+1
Ebs+g304/D3hagV7OQNDZLXoIfFEEA0g8H5rCOrT1oMuMmIAjLXoW5EsB7dZ aAxtuwxqjS36
NxCPMLJ/2vrh68vDYjrUEqi9uDwySb853N//df/1wdHwAH7VRnoxxS1Hc63D lKw0gxZeARmw
RG0wMjPUALPXMTQF9sYZ0eytHL0eo1sGmkdr8lWuOjK21HkDFle+LzkdrDhq cszUl5wpqnHA
gOvVBrMdnitzHHZbf6r1c59NlBVeWy3YwmDgclG0VniPUsrMaR7ZKzoLCBaK C/7TyC0qBKWI
XVbhVwSaBlGnriEQTvSqI+g7332SunwVFMkU2w0ADQoT+QoVJzyDCUNiKC4s 7sEjG0pZwiLW
AopvgQklcugTHFBwK2jVGZzrNaJq4oLInck9VPfubqRZ6Q3eQ/Azw/E1npFw rha7VfQ0Rcju
WwqxhRt4RMf3ok0ysp3loZ50habV7I1bTV+bhNiF33QD7uiUxfqWkWpOp9ZY lbq3ng/dKHAd
wEeBHz1Qty4i/q16PXUxs39u5oY0XOQHuEwxQ8BmmuIJdNmK6Dpc9YXTiHTQ kmptveuudpve
d9tWy+PabHdYWFvuM3KFYTWzpMlwF8VqgXGH6AO5TmuneFwVP9BdelqWXzjt /ea5+lTcmDwX
/ji9OB5+/PMs2itr626R7s05v4ab4ZTOcoEVFzL0LlEtPq+vFUBsa6FsAOCO Mns+8N2sd/8n
gHBTYQURmzYLID7/g0Bvwtqee8DjlGDWPzhPtMgP3fn5tJy7ugD37PTFLEE6 0Sg2V7mk/Uq2
dnQ68W1mWWPLo17Fn1jFqhcPum3DHQZCNG+tseaHqToavtidkEyqCZTWVySu 2AgtG3CoPuvL
kg7A13sJ1n02d6LTN5GCIES3XFzDxQkaqrvzhodDerjhx0WPyxRXl8/l9+fK DufkJw7Epbzj
6Fj5m8z9NNOmURg0EIQNigaSENqMrqkc+40Ca9TD5Y0pTHVEy2JwHwEejYj+ lC9odRL6sz+z
dSguzHsqtTby66+IKxeelonhERvv2Kf7gGhoQccHxNpdz9K8J/gUOIrcf1jh 6V9QSwcIbSQS
QSIGAACVHQAAUEsDBBQACAAIAMtZmzQAAAAAAAAAAAAAAAA6AAAAb3JnLmVj bGlwc2UudHB0
cC5wbGF0Zm9ybS5tb2RlbHMub3NnaS9NRVRBLUlORi9NQU5JRkVTVC5NRo2P QW4CMQxF93OK
XCARoK5mV6ShrVTakUDszeCJrDpxlHgk2tMXGILUXdf/v+fvLUQasag9YC4k sTVLt2jWUzwx
2u09fGSrmnxAwNZsMviAUc0o2ez7fW8+dy9k8KwYr0Cp9d13OArTMGOSvcOB KRV0mjS5xKAX
RXBBTsjFSfHkxru8Oh4jntzqMrHetq9S9K/zilfqXQZg+gG9oYknT7Hpzkmy 2h6GL/D/GURR
MUfgWd3NVdvNfx4Zn/u31miesPkFUEsHCBmGrJvCAAAAUAEAAFBLAwQUAAgA CADLWZs0AAAA
AAAAAAAAAAAAcQAAAG9yZy5lY2xpcHNlLnRwdHAucGxhdGZvcm0ubW9kZWxz Lm9zZ2kvc3Jj
L29yZy9lY2xpcHNlL3RwdHAvcGxhdGZvcm0vbW9kZWxzL2ludGVybmFsL29z Z2kvRGV2Q2xh
c3NMb2FkaW5nSG9vay5qYXZhrVhLbxs3ED7LgP8DK+SwCmTK6aGHGAXqRC4a wC/EaS9FD9Tu
SGLNJRckV45a5L93hg9ptZIDuYlgy7tLzsw3r4+znrz+vp/TE/aavTfN2srF 0rOiHLEfz89/
Yh/e3eBj2xgrvDSaCV0x45dgHQ8il0qxIOKYBQd2BRVnn5bSscaahRV1kEAB JsrS1I3Qa6kX
rBYerBTKBSXCAj6pcM9KSCVmClirK7BBDjfWjpl5uLkqlWwcsPt2pmTJrmUJ Gm9Xb/h50PS0
lOVyY0qCQynEUknnrZy15MI4IMKHW2PCB+Gl983byeTp6YlDtMONXUwULISa QKPOVm/O+dLX
KuxOEdNRsbHubXhCn37QzpjU0qO77PL+QzRfNwpq0D5sIMHv+5mcnjSifBQL YOjCxh3f+IY3
Svi5sTWvTQXKcakxxFoobtxCXpyeIDZjPfsb48Ol4R/urj6X0BDOA4u6af2D tyDq3qIGz2+E
IkNQ/f7x+jkltA+Xe08dlK2Vfs3vrfFQktzU1EL2pTGjil9aK9bXmOJDi1MZ pIVdH1pF9Q1Y
j4WCq5v1bsgoKHwmHIhKNJhm/g6vp8KLi+O2/2bMI1bJXC5arAZjXyD2ERZU t+sjRWbYMwrm
UgF/Fy6v9PHCS7Tn+HslnLs2osIeJQRHCiuUgBiZjQY41tMkHAQb4ZcvQd2X vREaS/5rludI
SfBk7CPf5DPE6vk6O0JFx+kpEF14+Ip8KDxEKufg/FWkgVB9TSS1krSxKaz6 2diyhmP9tTHr
Fxr79/Rk4IhgSuRiuUJQbGaMAqGRjlA9KNOQshukAfYzmyMbE+y+DHY32vjz L1bBagpz0Sq/
ifeB7dt+I4Ftf6EF3SoVHM0yhHDwsHYeam5az1GH9koXwwPOc6LQYjQckc3B ZMLeL6F8DIdC
iCoaoyOHrK2ZN8wBMDknDDGgBJcBsTViWYoVBgNA4/pcajyzApLgaVCHABDw AnxyYF0Ms5Xh
mPwYXbDJ5NXt3e3Z7fXD2ZtXJI/miiz8Q3R3FH0cYEmnq8Gh2HvbhtDjB7mQ KVPGgwOVwBPD
R1nvKO3qh5YaochieRPh2d2YUcX1wYGMRq8Do/5qTU2sWhQxMKPdhHLcVwxf D0eHQjH4whAL
HsXFwTOAQQ7MsRh2/f9C3/RFv/iTOieVVcpjN3vp0SOsx3m5ilb/EKrNaB7S qZNohLkaoaT6
RG295SKCoSjjxp3QupqXVJ7Z/mVZgnMFmicZGhEGFnxrdUf7NrLFiHexB9A7 aJMOcn5Co9sA
546PQZ8LDYGTGO6lmak0ekVK0V/BFAYyPqxrceagEUgUgNOZecQpCkkB2wbJ QVDgo9L4/UvC
GqY4WiQlLkYxyqZ9pLAOXRj25qGnby+KBpnJM8lDutkrgZQ3Up/ylXD1uJTv SZLImA3HwwOl
+iUQ0iRFkQgnYF/IFbJDs20dOle3kBPZJcydDguNSD3c2tz8nVXS51JXd/Md CmnLEZ2pigbV
DXP2iIRW0AxHPTruLnLrB0PheCyky02DPuCYp7YKsHLlHilIx0tlHBQ7vZbb uTMNbpsY2fjT
3fSOqs1JmtuVWSwoV/ieALlVc7YCtIvUuyn3s7UHTDkuUZ8EIsjp1njYjvOG wOR07cZsd2DY
kny4HbPOCBRof92RyP1dx7/JDfRiapjGt5tYnUefTDuw8wmVvM2Zi2WW3U3H sKiqIHSfYReb
UZaVzVU8rDaEVTYHXFga55Mb6HMaTZkzrS2hwssx6082eTHcjF52Bu8D7rm7 GSJ2/E0OYPlV
13JmcTYoNlAjyLRDydkt5vtbE9I1dEw+OvMb0U4snc7De3xB1Th8fCOsr6k+ AmVvvGYldrzv
Pim6q01QPGYHZlM8TOJF7pK9EonF0SmobpawD+OrxqbltoGp/ldg9j05Jh4r I6t8xsh/oOrK
92M1273vefbCLnjGZmc23QnDPmhsI1Lkiu5bHlt2bl7el1FhxhCovT9ojjJZ G42HAMr0puPE
IzQ2Uw3gGv2HIAh1sW1YoIOgoBPtALJiNIoTPwYBf/4DUEsHCNnsys73BQAA thIAAFBLAwQU
AAgACADLWZs0AAAAAAAAAAAAAAAAdQAAAG9yZy5lY2xpcHNlLnRwdHAucGxh dGZvcm0ubW9k
ZWxzLm9zZ2kvc3JjL29yZy9lY2xpcHNlL3RwdHAvcGxhdGZvcm0vbW9kZWxz L2ludGVybmFs
L29zZ2kvRWNsaXBzZUNsYXNzTG9hZGluZ0hvb2suamF2Ya1WTW8TMRA9N1L+ w4hTgoJTkOBA
Ty1FAqmgiHJDHLzeya6p17Zsb6KA+O+MvZvF3VBII1ZJ64+Z8XvPM7NZPv2/ z3QCT+GNsTsn
qzrATMzhxfn5y0X8+wreX32gTWeN40EaDVyXYEKNzrPkeKkUJEcPDj26DZYM PtfSg3WmcrxJ
HuQAXAjTWK53UlfQ8IBOcuVTEO6QVkqy2XCpeKEQWl2iS35k2Hgw6zR5K5S0 HmHVFkoKuJEC
NU03z9l5irStpaiHoyR68iIspfTByaKNFBYJES3+PoyH5FyHYF8vl9vtlmF3 DjOuWiqsuFqi
Vc82z89ZHRoVrXvZdBfXOP86rcRnrNkzkFoGYguXq/fd6Y1V2KAOySA6/t9n OZ1YLu54hUAM
BjbBBsus4mFtXMMaU6LyTGpSWHPFjK/kxXQynRA64wJ8I4GYR9E6GXZs5UxA EeFem4ZLfXHf
jqRV7NI5vrshrfMwOYB4BCu4R15yS6KxKxpf88AvjjN/Z8wdab6WVUvaGvcI t09YxSTYHelS
UAIqXEuF7CoN3+rjnWs6z7M3int/Y3hJCR8RHOmsyAM7ZYYIeCzT3jk5Wh7q x6Ae+37gmhLo
byevqb5xa9wdG+4zafVwrhwRIiN9jbH2AqZ0sl3Ji7i97wNjiX8Xlofx3gLG 2QM/ppMzH2tQ
xNHZ7c4HbJhpA7OOykLp2ZMHDmKxomfzJ3OCdvaTvj26Yhfwy9fY+wR6n7xm t9QiqOVpIrrY
GyQWcewXcP+yuq1huoAs/QC7pfEVUfNM/+fwaB73kPZ8zpbL0oCmNk9Wce4w tE6DbpXq+WaM
jVHI6cVQlinIao98NnQDEDauyEi2F0PYP7CojQ89E6LddwbwpnUCSxouYJxY +800OYH9Ieh/
SLCmVxYeaNCTWktd3sjCcYozwO+A9xZKFh8pDU5Amsc+5ZqyqoIKQ5dU2eKK 3sGaMvrxyP4W
7QSgGyPLmEwxtp/lnRvqbHLaZXdB97DyeEMqZB6z+NthfoBw1JlBOKQela3M 8l2bpFjAH9oa
lP1gX+QH6d0ldlYMeTZRG+neUkPHOEGUQ/AnX1r/I0d+xzKPN5aruD8fkTuB wgPnPsCDcNPn
F1BLBwgVU8AvPwMAAEULAABQSwECFAAUAAgACADLWZs01Ryc0qUAAAAzAQAA MAAAAAAAAAAA
AAAAAAAAAAAAb3JnLmVjbGlwc2UudHB0cC5wbGF0Zm9ybS5tb2RlbHMub3Nn aS8uY2xhc3Nw
YXRoUEsBAhQAFAAIAAgAy1mbNK8mgGkNAQAA/wMAAC4AAAAAAAAAAAAAAAAA AwEAAG9yZy5l
Y2xpcHNlLnRwdHAucGxhdGZvcm0ubW9kZWxzLm9zZ2kvLnByb2plY3RQSwEC FAAUAAgACADL
WZs0vVeb2msAAACeAAAANgAAAAAAAAAAAAAAAABsAgAAb3JnLmVjbGlwc2Uu dHB0cC5wbGF0
Zm9ybS5tb2RlbHMub3NnaS9idWlsZC5wcm9wZXJ0aWVzUEsBAhQAFAAIAAgA y1mbNE5ohIpI
AAAAXgAAADIAAAAAAAAAAAAAAAAAOwMAAG9yZy5lY2xpcHNlLnRwdHAucGxh dGZvcm0ubW9k
ZWxzLm9zZ2kvZnJhZ21lbnQueG1sUEsBAhQAFAAIAAgAy1mbNN4uo7g9AQAA rwIAAEIAAAAA
AAAAAAAAAAAA4wMAAG9yZy5lY2xpcHNlLnRwdHAucGxhdGZvcm0ubW9kZWxz Lm9zZ2kvaG9v
a2NvbmZpZ3VyYXRvcnMucHJvcGVydGllc1BLAQIUABQACAAIAMtZmzRtJBJB IgYAAJUdAAAv
AAAAAAAAAAAAAAAAAJAFAABvcmcuZWNsaXBzZS50cHRwLnBsYXRmb3JtLm1v ZGVscy5vc2dp
L2J1aWxkLnhtbFBLAQIUABQACAAIAMtZmzQZhqybwgAAAFABAAA6AAAAAAAA AAAAAAAAAA8M
AABvcmcuZWNsaXBzZS50cHRwLnBsYXRmb3JtLm1vZGVscy5vc2dpL01FVEEt SU5GL01BTklG
RVNULk1GUEsBAhQAFAAIAAgAy1mbNNnsys73BQAAthIAAHEAAAAAAAAAAAAA AAAAOQ0AAG9y
Zy5lY2xpcHNlLnRwdHAucGxhdGZvcm0ubW9kZWxzLm9zZ2kvc3JjL29yZy9l Y2xpcHNlL3Rw
dHAvcGxhdGZvcm0vbW9kZWxzL2ludGVybmFsL29zZ2kvRGV2Q2xhc3NMb2Fk aW5nSG9vay5q
YXZhUEsBAhQAFAAIAAgAy1mbNBVTwC8/AwAARQsAAHUAAAAAAAAAAAAAAAAA zxMAAG9yZy5l
Y2xpcHNlLnRwdHAucGxhdGZvcm0ubW9kZWxzLm9zZ2kvc3JjL29yZy9lY2xp cHNlL3RwdHAv
cGxhdGZvcm0vbW9kZWxzL2ludGVybmFsL29zZ2kvRWNsaXBzZUNsYXNzTG9h ZGluZ0hvb2su
amF2YVBLBQYAAAAACQAJAPUDAACxFwAAAAA=
--------------020504000203070601010906--
Re: Discovering Hook Configurators [message #65493 is a reply to message #65470] Thu, 27 April 2006 17:43 Go to previous messageGo to next message
Jeremy Volkman is currently offline Jeremy VolkmanFriend
Messages: 14
Registered: July 2009
Junior Member
It appears as though the Adaptor Hook version of the framework doesn't
ship with 3.2 (at least not 3.2 RC1), Try checking out org.eclipse.osgi
from CVS trunk and using that. Also, make sure you specify the
"-Dosgi.framework.extensions=<your fragment bundle>" VM parameter,
otherwise your fragment won't be hooked in.

Just a thought: OSGi has native support for running multiple versions of
the same bundle. Package importers can specify which version of a package
they're looking for, and dependencies between multiple versions of the
same classes will be wired up automatically. Perhaps you could change
your architecture to use this mature and well-proven part of the OSGi
framework?
Re: Discovering Hook Configurators [message #65537 is a reply to message #65493] Thu, 27 April 2006 20:12 Go to previous messageGo to next message
Marius Slavescu is currently offline Marius SlavescuFriend
Messages: 67
Registered: July 2009
Member
Jeremy thanks for the quick reply.

In my environment (RC1) I have the
org.eclipse.osgi.baseadaptor.hooks.AdapterHook and all the special hooks
provided by Equinox, they are registered in the
org.eclipse.osgi.baseadaptor.HookRegistry and then called later.

I tried as you suggested the
-Dosgi.framework.extensions=org.eclipse.tptp.platform.models .osgi.fragment,
but my classes are still not registered and called.

Unfortunately I cannot add more bundles (however this might work for my
case), we already have too many, I've tried to find an alternate
solution for my problem.

Here are more details about the problem that I'm trying to solve:
- I have a set of classes that uses org.apache.xpath classes extensively
- SUN JRE 1.4 comes with org.apache.xpath packages
- SUN JRE 1.5 comes with com.sun.org.apache.xpath packages (the content
is almost identical with 1.4, basically this just renamed the package
and removed some functionality)
- I need to be able to run the same function in both environments

I though that I could provide two implementation (one for 1.4 and one
for 1.5) in two different JARs in the same plugin and load dynamically
(at runtime) the class with the implementation that works with the
runtime JRE. This will be the easiest solution (if possible) for me,
because once we will support only 1.5 JVMs I will just leave the 1.5
implementation and remove 1.4 one, currently we need to be able to run
in both environments.

Do you have any suggestion on how should I go ahead in solving this?

Thanks,
Marius
Re: Discovering Hook Configurators [message #65707 is a reply to message #65537] Mon, 01 May 2006 19:15 Go to previous messageGo to next message
Thomas Watson is currently offline Thomas WatsonFriend
Messages: 503
Registered: July 2009
Senior Member
> I tried as you suggested the
> -Dosgi.framework.extensions=org.eclipse.tptp.platform.models .osgi.fragment,
> but my classes are still not registered and called.
>

I tried your project in my environment and I do see your classloading
hooks getting called if
-Dosgi.framework.extensions=org.eclipse.tptp.platform.models .osgi

You also need to make sure your fragment is co-located with the
org.eclipse.osgi bundle (I need to update the WIKI to make this clear.
So if you are developing and self-hosting your framework extension
fragment then you need to make sure you have the org.eclipse.osgi code
in your workspace. Currently the bootstrap code (in startup.jar) only
searches for framework extensions which are co-located with
org.eclipse.osgi.

As to the problem you are trying to solve. This may be solved with a
framework extension hook, but I'm not sure I would recommend the
complication. Can you just have two implementations in your plugin (you
would have to use different class/package names for each implementation)
and just load the correct one your self at runtime depending on the VM
you are running on?

Tom.
Re: Discovering Hook Configurators [message #65791 is a reply to message #65707] Mon, 01 May 2006 19:46 Go to previous messageGo to next message
Marius Slavescu is currently offline Marius SlavescuFriend
Messages: 67
Registered: July 2009
Member
Thank you Tom.

I agree that the hook method is complicated.

Although this will require changes in the downstream users of this code
I will try to put both implementation (with different root packages) in
one JAR and dynamically use the right one at runtime.

Marius.
Re: Discovering Hook Configurators [message #69110 is a reply to message #65493] Wed, 28 June 2006 16:33 Go to previous messageGo to next message
Alexander Bieber is currently offline Alexander BieberFriend
Messages: 44
Registered: July 2009
Member
Hi all,

I have a problem that might be related. I'm using 3.2RC7 and created a
fragment to org.eclipe.osgi. Using the osgi property
osgi.framework.extensions my ClassLoadingHook is successfully added.

Now within its callbacks (especially createClassLoader) I wanted to
instantiate a class that is provided in a jar file. I've added the jar
to the classpath (project and manifest) and the fragment compiled. But
on runtime the classes from the jar can not be found. I get excetpions
like this:


java.lang.NoClassDefFoundError:
org/nightlabs/classloader/DelegatingClassLoader
at
org.nightlabs.jfire.base.j2ee.osgi.RemoteClassLoadingHook.cr eateClassLoader(RemoteClassLoadingHook.java:49)
at
org.eclipse.osgi.baseadaptor.BaseData.createClassLoader(Base Data.java:88)
at
org.eclipse.osgi.framework.internal.core.BundleLoader.create BCL(BundleLoader.java:655)
at
org.eclipse.osgi.framework.internal.core.BundleLoader.create BCLPrevileged(BundleLoader.java:644)
at
org.eclipse.osgi.framework.internal.core.BundleLoader.create ClassLoader(BundleLoader.java:316)
at
org.eclipse.osgi.framework.internal.core.BundleLoader.findLo calClass(BundleLoader.java:339)
at
org.eclipse.osgi.framework.internal.core.SingleSourcePackage .loadClass(SingleSourcePackage.java:37)
at
org.eclipse.osgi.framework.internal.core.BundleLoader.findCl ass(BundleLoader.java:388)
at
org.eclipse.osgi.framework.internal.core.BundleLoader.findCl ass(BundleLoader.java:352)
at
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loa dClass(DefaultClassLoader.java:83)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319 )
....


When I take the classes (source files) from the jar and add them to the
fragment directly it works?

Any ideas?

Best regards
Alex


Jeremy Volkman wrote:
> It appears as though the Adaptor Hook version of the framework doesn't
> ship with 3.2 (at least not 3.2 RC1), Try checking out org.eclipse.osgi
> from CVS trunk and using that. Also, make sure you specify the
> "-Dosgi.framework.extensions=<your fragment bundle>" VM parameter,
> otherwise your fragment won't be hooked in.
>
> Just a thought: OSGi has native support for running multiple versions of
> the same bundle. Package importers can specify which version of a
> package they're looking for, and dependencies between multiple versions
> of the same classes will be wired up automatically. Perhaps you could
> change your architecture to use this mature and well-proven part of the
> OSGi framework?
>
Re: Discovering Hook Configurators [message #69823 is a reply to message #69110] Thu, 13 July 2006 20:25 Go to previous messageGo to next message
Thomas Watson is currently offline Thomas WatsonFriend
Messages: 503
Registered: July 2009
Senior Member
Hi Alexander,

If you are using a jar'ed fragment to deliver your framework extension
(the one you specified with the osgi.framework.extensions property) then
you must include your classes at the root of the fragment jar. In other
words you cannot use nested jars to deliver your code for a framework
extension. If you must use inner jars then we can go into how this can
be accomplished. It will involve an "expanded" bundle with an
eclipse.properties file that indicates the extra jars you want to
include on the Framework classpath.

Tom.
Re: Discovering Hook Configurators [message #70056 is a reply to message #69823] Mon, 17 July 2006 06:45 Go to previous messageGo to next message
Alexander Bieber is currently offline Alexander BieberFriend
Messages: 44
Registered: July 2009
Member
Hello Tom,

thanks for your hints, we found by accident that we can not use nested
jars for the bundle. Should have posted it here ...

Best regards
Alex


Tom Watson wrote:
> Hi Alexander,
>
> If you are using a jar'ed fragment to deliver your framework extension
> (the one you specified with the osgi.framework.extensions property) then
> you must include your classes at the root of the fragment jar. In other
> words you cannot use nested jars to deliver your code for a framework
> extension. If you must use inner jars then we can go into how this can
> be accomplished. It will involve an "expanded" bundle with an
> eclipse.properties file that indicates the extra jars you want to
> include on the Framework classpath.
>
> Tom.
Re: Discovering Hook Configurators [message #71683 is a reply to message #65707] Sun, 06 August 2006 16:28 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: heiko.seeberger.metafinanz.de

This is a multi-part message in MIME format.
--------------000207070200010705070806
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit

Hi Tom,

I followed your description in the WIKI and in this thread but I still
cannot run my hooks when self-hosting.

I think that I did all the basic things right because when exporting the
fragment with the configurators and hooks to the plugins directory of
the eclipse installation and adding an osgi.framework.extensions line to
config.ini the configurator and the hooks are called.

But when self-hosting nothing happens, although I imported
org.eclipse.osgi as source project into my workspace and put an
osgi.framework.extensions VM argument on the launch configuration.
Further I added org.eclipse.osgi and my fragment to the list of launch
bundles.

What else could be necessary? Or has something changed?

I am using eclipse 3.2. Attached you find my hooks fragment and a test
plug-in just to start something.

I hope that you can help me ...

Regards,
Heiko

Tom Watson wrote:
>> I tried as you suggested the
>> -Dosgi.framework.extensions=org.eclipse.tptp.platform.models .osgi.fragment,
>> but my classes are still not registered and called.
>>
>
> I tried your project in my environment and I do see your classloading
> hooks getting called if
> -Dosgi.framework.extensions=org.eclipse.tptp.platform.models .osgi
>
> You also need to make sure your fragment is co-located with the
> org.eclipse.osgi bundle (I need to update the WIKI to make this clear.
> So if you are developing and self-hosting your framework extension
> fragment then you need to make sure you have the org.eclipse.osgi code
> in your workspace. Currently the bootstrap code (in startup.jar) only
> searches for framework extensions which are co-located with
> org.eclipse.osgi.
>
> As to the problem you are trying to solve. This may be solved with a
> framework extension hook, but I'm not sure I would recommend the
> complication. Can you just have two implementations in your plugin (you
> would have to use different class/package names for each implementation)
> and just load the correct one your self at runtime depending on the VM
> you are running on?
>
> Tom.


--------------000207070200010705070806
Content-Type: application/x-zip-compressed;
name="osgi.zip"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="osgi.zip"

UEsDBBQAAgAAAGKTBjUAAAAAAAAAAAAAAAAFAAAAb3NnaS9QSwMEFAACAAAA YpMGNQAAAAAA
AAAAAAAAAA8AAABvc2dpL3Rlc3Qub3NnaS9QSwMEFAACAAgAYpMGNbN+hoWw AAAAQgEAABkA
AABvc2dpL3Rlc3Qub3NnaS8uY2xhc3NwYXRonZA9D4IwEIZnTfwPTXeLbg4g MQYTHdAQnE1t
L1CsLfaD6L8XQeKkg9s9yXNv3rswvl8lasBYoVWE52SGESimuVBFhI/5ZrrA 8XIyDpmk1tbU
lS2MPgTKmQe6CMUjbA3D6KV0Y1DRhuLgu860GnRtCgJMitoCqbgjknrFyrYC 2WXJab1P89U2
TbI/0moOhGkDxMDNCwP8IH0hlP0Vpb2rvRu6nb2QPOjOh34t7On9jCdQSwME FAACAAgAYpMG
NXsLd0DwAAAAngIAABcAAABvc2dpL3Rlc3Qub3NnaS8ucHJvamVjdL1Sy47C IBRdO4n/YLoX
dOcCazJj3GlMOn4AA1fElEeANn6+gK1jYyaZhXHFPec+zn1AVhdVT1pwXhq9 LOZoVkxAM8Ol
Fsvi8L2ZLopVOf4g1pkzsLAGz5y0IUZHdkQ0VVAG8AEZLyTBGScHM0qBDiXB vZXYrorPIXiA
fhpZ88oCS74RyfArFqGaZ6bTMk4gYLW0HtCZB8SMiwZtaU4A99tCzKBONKmL rBcxHhIEP6n8
S9dyQFuq5THO/fle2YqdQNGXiHbT9yuPpwyNg9uqOlA+bjtNva8bIfUuR6ZN p/fPhMF5brGP
Ob2dFO9/Yfi/rlBLAwQUAAIAAABikwY1AAAAAAAAAAAAAAAAGQAAAG9zZ2kv dGVzdC5vc2dp
Ly5zZXR0aW5ncy9QSwMEFAACAAgAYpMGNcBsHrTqAAAAqwMAADMAAABvc2dp L3Rlc3Qub3Nn
aS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnOtkrFqAzEM hvdA3sHQ3TiF
ZAh4KGmXDi00IbtrK4eKzzaSc6VvH12SDoWD9ppbDAbps/7Putu6qh6OjTJL tTDrpVmbldo8
bXfq3pjVfAY+YmHQheAABMkD6w6IMSe7mM8yNfq75CNU7TOBHG3BCKRD9v2l hVQ1H0vJVG1A
du8Rwm+9hbKUtRpT5yKGZ9c5wdlPRwlT87/unWvYQrrh/Z7wCCLDuwrhDQ63 415y3SOjhJ0E
d2ZhxPplRWEFL3P+1VaLzCL36npz+Tke63yY8ipbQxgEP1bZMG+6nOetGLlX P2fqCVPl61nD
2U5QSwMEFAACAAAAYpMGNQAAAAAAAAAAAAAAABUAAABvc2dpL3Rlc3Qub3Nn aS9idWlsZC9Q
SwMEFAACAAAAbJMGNQAAAAAAAAAAAAAAAB0AAABvc2dpL3Rlc3Qub3NnaS9i dWlsZC9jbGFz
c2VzL1BLAwQUAAIACABikwY1lonKinUAAACcAAAAHwAAAG9zZ2kvdGVzdC5v c2dpL2J1aWxk
LnByb3BlcnRpZXNtzTEOwjAMheE9Uu6QA4BzAoYOIDHAxNgldQ24lDhyYs7f iA2Jt/3f8ibO
wBlXm6mGQ7gcb8P+fD3F3ehd+B38safICyXf+WGammiFolJIG1P1bkkdUN6F VwLRmbRfgHdV
TJEAelXFuKRPit6JtWLtqxPnDhtQSwMEFAACAAgAYpMGNQAHzeYsAAAANAAA ACsAAABvc2dp
L3Rlc3Qub3NnaS9ob29rY29uZmlndXJhdG9ycy5wcm9wZXJ0aWVzy8jPz9ZL zs9Ly0wvLUos
yS8qti1JLS7Ryy9Oz9TzSM3JyfcAqnBGUsDLBQBQSwMEFAACAAAAYpMGNQAA AAAAAAAAAAAA
ABgAAABvc2dpL3Rlc3Qub3NnaS9NRVRBLUlORi9QSwMEFAACAAgAYpMGNSgC v9KwAAAAIAEA
ACMAAABvc2dpL3Rlc3Qub3NnaS9NRVRBLUlORi9NQU5JRkVTVC5NRlWPywrC MBBF9/2K4L7B
xy7iRlG6sFoouJ/WMQ6mmZKkon69xRof63O5594cLJ3Qh/SAzhNbJSZynCw7 ezSY5m/4YdNI
dtCgEnuvSWwc6AZtiKi8NxUbqodI6Lsl97mIfz1f08qA9wWEsxLym7RHdkpk SBcWJWKFTqNL
ojDN2Acl2GmJtaHW40s0r4bx1+HQYjSTUzkexdYt12DoAeF1tjWdJpusby27 kBZQX0D/rX4C
UEsDBBQAAgAAAGKTBjUAAAAAAAAAAAAAAAATAAAAb3NnaS90ZXN0Lm9zZ2kv c3JjL1BLAwQU
AAIAAABikwY1AAAAAAAAAAAAAAAAGAAAAG9zZ2kvdGVzdC5vc2dpL3NyYy9q YXZhL1BLAwQU
AAIAAABikwY1AAAAAAAAAAAAAAAAHQAAAG9zZ2kvdGVzdC5vc2dpL3NyYy9q YXZhL3Rlc3Qv
UEsDBBQAAgAAAGKTBjUAAAAAAAAAAAAAAAAiAAAAb3NnaS90ZXN0Lm9zZ2kv c3JjL2phdmEv
dGVzdC9vc2dpL1BLAwQUAAIACABikwY1H5QVNnUDAAA7DwAAPAAAAG9zZ2kv dGVzdC5vc2dp
L3NyYy9qYXZhL3Rlc3Qvb3NnaS9IZWxsb0NsYXNzTG9hZGluZ0hvb2suamF2 YcVXTW/bMAy9
B8h/ELKL2wXufUOBrmvRHrKtWA87FD0oNuNoUSRDkjtkw/77aMl2VFt24qJD jQBxYpIiHx8/
nNNkQzMgBrSJpc7Yx+lkOmHbXCpDftInGmtICsXMLr5T0kBimBRXckuZQElf rjCMx5+UorsF
0yb0kMssYyKLF/gNyj9IqiyGhLNcg3UiXlINNKW5kSq+xPsrauje5KD4shAp hxXjEF/a22th
1O5I5bWUGx1/5lTrhaQpenuL/xypzFEDnL+NBRtnBdOg25WyVcypWY/xuq37 hQrM6dDJK0W3
8EuqTdygbLHqz3HH+a4JL+gr4JBRAzbJZ6en0wk5JRe0MGupyC2wjST3AEtQ 6Gb57Gw6ubgv
8lyB1j+oEgi8jmaC69nJdJIXS84SkpTQoDLnsp0ggghz2IIwmnSe/Sl9IHjl ij2hT0QbatDe
ignKiSMjWXy7ubn+Ts6r306hvOIMjJOJgkfH1q1S6itCGp2c2JDtcc7toFZ0 QtCtUupvLe5Q
Ki9ESgOQQbqEifouVzJBCC0GkS1fTrHi7o1CROeNfXvMcmfg4XE+fE6Qli1D LyjHMRZ62I3E
cGghdzy4XVSYaw8Il2kHAhGYpnmV/ErYprC817VfaNApPa9Hx8GmPGszXp8h yEG16zdTlSbZ
uhK1NNiTzbEwZmIlo1mYbn5gJKGcQ/rBxnQ+I+/tTcnAmr0KTKGEc9sGWD17 XdbRNLU43dV9
y1Hv+URopfwAOUf1ygrUMaSqh0rIq96J16ZcoGUVIllDsoG0bFw+LaXkQAXp QuV41gxOkuRl
62cBLlYETvKadw05a1atpTYVszoUrCMmWhYqgRQnam2n3fVrETvmx1O0E2PF 03gWoOaKcl2O
idfvhQhsumBLRdUuOmrBOMDQnoZTZcU/zaW0AdyHupLmbFmOi/HYescMoSoK zv8LqDjnXLfz
hv0dVdj1oh58PEEypD26E/YbexNkEgW4XHjRevPX+/dQkzpqrRpvxCWtXeiH 7ITW8Ll7LfD2
iofHntS3NmHShcgbsuW+jYtYbskUHqBOpN4tSVotmd1WFwyWpLafNUO7eq0g tjz3I9NfFnCR
cK8TzdwfX7GdoN+EnUwwwyhnv8GNagflcF8Mv8+8hDM9/HiSLCU9nu17qN9A SkIGiqlZ1571
3PG5CvvSSRhuT/j5B1BLAwQUAAIACABikwY1SQ8qc04BAADtAgAAPAAAAG9z Z2kvdGVzdC5v
c2dpL3NyYy9qYXZhL3Rlc3Qvb3NnaS9IZWxsb0hvb2tDb25maWd1cmF0b3Iu amF2YYVS0WrC
QBB8D+QfFutDInihz1IoSNGHEEG/YDXrefXMhbuLpZT+e/dy2gYruATCZXdm dubS4u6IksCT
88I4qWZpkibq1Brr4R3PKDqvtNBGStVIUfKb7HDGWClop1XrqMeLLTrCGltv rFgac5ybZq9k
Z5E/MPBC/RC2Jqmct5+9VjGZpAlM4BU7fzAWlqSOBjZEW7K8T+gVadJ2W612 sNPoHI9obW71
gdU1najxPHCzG3wFJeBqrTqjJ3AePfPtVYMaonMoV4vF2xpeLucICCUk+TiT 3ZUW/VphqsIT
ZXneGwvIaC4UG3RE8DCbYaRPWNfBissewq6R5lc5zqz3G3M7G1XDL1t0HZiv MDgMDvlfXIFi
2BLMMQ9mS4M1/zSBI2voI17Jv84gicAUAxaq2ZtsdP8SmZ/q+2xilM+gKMbV qppW5Wb6PI4W
v9OEnx9QSwMEFAACAAAAYpMGNQAAAAAAAAAAAAAAABQAAABvc2dpL3Rlc3Qu b3NnaS50ZXN0
L1BLAwQUAAIACABikwY1s36GhbAAAABCAQAAHgAAAG9zZ2kvdGVzdC5vc2dp LnRlc3QvLmNs
YXNzcGF0aJ2QPQ+CMBCGZ038D013i24OIDEGEx3QEJxNbS9QrC32g+i/F0Hi pIPbPclzb967
ML5fJWrAWKFVhOdkhhEoprlQRYSP+Wa6wPFyMg6ZpNbW1JUtjD4EypkHugjF I2wNw+ildGNQ
0Ybi4LvOtBp0bQoCTIraAqm4I5J6xcq2AtllyWm9T/PVNk2yP9JqDoRpA8TA zQsD/CB9IZT9
FaW9q70bup29kDzozod+Lezp/YwnUEsDBBQAAgAIAGKTBjVrJTV99AAAAKMC AAAcAAAAb3Nn
aS90ZXN0Lm9zZ2kudGVzdC8ucHJvamVjdL1Sy27CMBA8U6n/gHLHpjcOJkht 1RsVUtoPcO2t
MYofsp2Iz8drkpYIVeoBcfLu7OzOPsw2R9POewhRO7uunsiymoMVTmqr1tXn x9tiVW3qxwfm
gzuASK8QRdA+ZXZGZ8xyA3WCmIiLShO0GC0gRoUzBmyqGR0tRIdSsVDoxPvq dCsbDwJjM1bc
l1yEW1mQQdAFRUC02kcgB5mIcCEbvOclAcJvCzmDB9VhF0Uv+3QKMHql8i9d L4FsudXfeeTn
+8o2Yg+G30R0mH5ceb5n6gKcVzU49eW2cepd2ylt3wsTN43vnwmT85y5lzmj jYo/f2H6yU5Q
SwMEFAACAAAAYpMGNQAAAAAAAAAAAAAAAB4AAABvc2dpL3Rlc3Qub3NnaS50 ZXN0Ly5zZXR0
aW5ncy9QSwMEFAACAAgAYpMGNQE2pjbsAAAAqwMAADgAAABvc2dpL3Rlc3Qu b3NnaS50ZXN0
Ly5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmc62SwUoDMRCG 74W+Q8B72JZV
sJCDVD14sFCL95hMl5FsEmbSLX17Z6sehAVdu5dAYObL/F/m6pFQ3R0aVdVq uVhd16v6Vq0f
XnZqWVU38xm4gJlBZ4I9EEQHrDsgxhTNYj5L1OjvkndftEsEcrQZA5D2yfWX FmLRfMg5UTEe
2b4F8L/1ZkpS1mqMnQ3on2xnBWeOliLG5n/dO9uwgXjB+z3hHkSGswX8FvaX 455TeUVGCTsJ
7szCgOVkRGEBJ3P+1VaLzCL3y/X68+d4rPNhyka2htALfqyyYd50Oc9bMXKv fs7UE6bK17OG
s30AUEsDBBQAAgAAAGKTBjUAAAAAAAAAAAAAAAAaAAAAb3NnaS90ZXN0Lm9z Z2kudGVzdC9i
dWlsZC9QSwMEFAACAAAAapMGNQAAAAAAAAAAAAAAACIAAABvc2dpL3Rlc3Qu b3NnaS50ZXN0
L2J1aWxkL2NsYXNzZXMvUEsDBBQAAgAIAGKTBjXedSU8aQAAAKkAAAAkAAAA b3NnaS90ZXN0
Lm9zZ2kudGVzdC9idWlsZC5wcm9wZXJ0aWVzK84vLUpO1StJLS7JL07PBNF6 WYlFCrYKxUXJ
+lmJZYn6vFz5pSUFpSXYFCWVZuak6CfnJBYXpxYDVSZl5ull5iXnlKakFgPN KMgpTQeKVOTm
6MTwcimgAl/XEEddTz83fSxy6O7h5QIAUEsDBBQAAgAAAGKTBjUAAAAAAAAA AAAAAAAaAAAA
b3NnaS90ZXN0Lm9zZ2kudGVzdC9pY29ucy9QSwMEFAACAAgAYpMGNcw9/gmB JAAAfCQAACcA
AABvc2dpL3Rlc3Qub3NnaS50ZXN0L2ljb25zL2FsdF9hYm91dC5naWYBfCSD 20dJRjg5YXMA
pADmAABYbDaInFfR3bXGzJuou3a45Ivk9amaxXDD6ZLDy6OVtmrL1aq6u5K9 xKDJ0aPN2rGa
m3F1gzkiLxiLuGTFzInb9KNoeDaYp2bN2axkgka+wZovPiBIXC+No1yLrWLM 26SpyIRmeUSG
lEzc4pPa0o2kpnh1mFKcu3F1gVC1vHnT65XS4bF6iEG2tIu305fO8Z3S8qPV 4b7U9anR26s5
SibR4bmAjkPK7ZrR4o3b9avY8ZvL7JWjw3TR4b3G4IuiynXU7JzZ7Zmy04Ox w4Cry3u83IvV
5b+955Czy4Ox0Xyr2oGm1HzO76HH0qnE7ZarqIJ9p1m924TV4bmrw3q0x3rJ 2Yi904ywsIS0
24nU5JG904OqyXV4kE7M1J6z24Sjwnu6woLg2JKqw3W6y4LE05K9zImhz3jF 0aPC3JHJ0pPN
3JLD5JPAxnuv4ITh7KbL5JrK2Zy20orL45O+v4nU4ZqwzYzF5JmGjl/c3JFt jUvA2Z/U5bem
tHHc5Z/I4K7SyIgh+QQAAAAAACwAAAAAcwCkAAAH/4AkgiR/hX8UhxSKZYtj FFqPVVZVVT6W
lpVRmlpCSUlEW1s8JycKCh4eHQEmJlx5eRkZISEAtbUcuLm6u7a9ALS5vSEW shl5XFwmAR0d
HqYEg2HSI2Ej1tfXWSNZ3Fk43jjhOJc+m15ankmhPKOmHheqAciwsrO2u7o0 +MG+ALi9FgLK
YnEs2bIOFxTwIUDgjyBp07BhUzFCRTduKsIhGHdJk6Z06taRcpdqVStYs2jd 2qWvJQca+vD1
0lXLQq0QsYwhU4Yw4UICKRw+hFhNYsVtFrmFyzgOQcdNUdKBEjOqFCoPAQLc MfEqlkp/LGGK
HftyX1kOvgLOysOCVdZmCv8ZpgAjdGjRidYoYsTBFMfGjuW8RE23ruopVFlP 1ruXb+wGGhsi
j4WZizJNADZnRdDJRQSzCyX48EmRYgiYOQ9JTLuLt9s3cX/JeUyCLqQoUlYR s+LqdSUux5GD
C3882TK/mrIKilh24YJooCnmnB6kGqLRvBez7PDb1JLHKFq8eCICit3Iw/G4 olTZGHJwCRsk
wIcvGSZxXraIxSrI3PnCFC2AcdocdRHF2lHZicOdbJqIN15hI02AiiqsuLIY WC/ZF5l8HHI4
XH0xHTdMLMhk1ZxofFwxVwtztEgdUSPgYZRSGXkTm3flRHGOg6D8YJ4ph2W1 SlfsVeZefB0m
OR//fWT9k18sLHTGXGgpXhFgi3MEZVcYeBy4jWt8acSRdx45+MkWPp53VQBQ sEJPkRm+p+Sc
wYl1WS37cXFHViWAlmIKVwzYYgrUVVeUjNZoc5GCDM5Wmzo/bHGAmoiZRKRv Gs6paZ12OokZ
TiUG0FxoV5TaAotzMNBigVxWg2g2r4ETzlMNPvoJET7yMKkpEmK125uYHqmp kpyGiNYvOKGg
ZwAQgFZCqVaC0YKqc2iAWmqtWvPqNl8qOGsVHqHTiVRo6lqKAhMc1qabKAW7 4bBJFhtTfiEo
e8cdzTormpWnplrttdV1GaNEOGwTjqzjZMLJuONF+oOPux5WqZu9YfjS/7vw yhffY4/hl+y9
zOpr6qkMsMiAtVtui03BLCvF0SYMkxdKpLq2w6sHUKyrnizuIpmxxiDy8/Ge +Zbw7BOn9suA
qho4FIZqAqs8AsvhTK0gJVGMu0SPaJY76QE360Yxzxhm+jPQ93lar573Nms0 H0+MPK2qJ//x
dKt4yCh11VVnocbLOnZCxBIO85DrpOeiizMUlq5nsdk/B+1kvSiAXHQJccud 6tIMCNVl3teB
Y7XVs/pQhI6eEI7mw7p+fW6vOP/qeNkYwyuccbZQ3rbboT2RedKc1z0I6APD ajUe3j7lhRJK
LEH4wwccMAriYWOlM7Blu3d2fZfpvjsERvsu9//cSzcdzedGeSuOHGpYUkQB XnghhPOEmwF9
9CeAXf312Bsp56ZB08dN6nUvfEEAfOETH784t7lCCCJvekMUy0ZAAhxUMBxy uEQBihA/5tHv
ftGjXrp6lbPGka0xPqMTp2gyi8oVsFkI9J34kjY3DdTNgQ8EHfKQpz4cZNAS GyxAG5anhCTU
7wch/BqQTiEhxu3GBDkpklhSGK9iBSMlBTTgAY2Gud+Rr3xNwyF1kHfBCv6t CmNCQBCx0MHm
HTGEuNHfBGCnM96c8Dc0iBd9bmesAWZRi1xUIPCCdzI2GEIQVaCOBXGgBjQ6 sn3uK0AB2Li8
D4IQf6YoxRwXx787Xuz/Q8Pp1LxamMUDbrGLXiTkyZqGCEQg8pWUoAQJKHEJ NLyvCJRknhF/
YD8kJjFic6TjurqSAcYcCZTEwR2yXPg98IFPkCQjpAY0YEg2tFIRsYzlLLNZ iSJ4E5cdNOLz
LokbXqGriXWkh29uF8pOTc57zXwmNFVpQw2kwJCKUMQhqkABbmYzCuU4Xfzk Z0RcPcyXvwSm
hND5q4pdrDiTkUkLmanFLcpQbqos3z3ZwFFr5vOj2KyCFkT6nawJoRNbO+hB k5i/1y2Uk2NT
CUSL85t3huCPpjzlRfn1Rc7ZkDQdDapHIaGFohr1qCc96a1UikSE/pJXL80Z u3iWoZnGJEQD
/0QBRXOKwC5CK5rSnCZpgCpUNoyBo1qwJlGRKpWthWJ10HNq9KC6SanaERiW MdY+skrRisZw
nj1dpT3ZMFagUoENVEjsGKiw2MYuFiS3AkXXmJrQuW6SoXb0R4hcotdjLXOr XEWlF3tqQ8F2
lDQMgc5hE8va1i6WtUSggmTfCtcDXHKu58RsVyxmFhHB06/P9OpXMzrN4lIg qKhNLQFay9zm
boEIU9hCdCNVW9sm9JwemEDO2gQLAHR2r7kjYClzykVUji94pa2nBvLZ0cMy ZCE/EYN85UsF
MWxBttGlQnRpC1eVXjeYi6NYb++ELPG+MLTm/WpgwbjKj7aXsO9FEf9D5kth MUzBvhaWLs36
a90kjjC7ds0Db/HjC1Ie+JQJ3CkN6XkywSKSvYhFLBUIIBpTPGfCFZbvFjDc 35UmNJja5W4G
jtMPYSSLbRUt7xOEO7KMlq/F0wzHNkVa1NVSIQU0NoVPfsIQdrCDKl4Wg4+Y 6tQT1HWYYCly
WmaRAXslWck7bTJx1VtcClowlo+oMmvFkOXmOCMuJ+iyl9kx5rhWFsjrGrJn 1ZyZI+/uAigW
rYIXvErBFhdMsTzqa+srXz4o4ALvcAYpUutl6bWudYeeo1RFvOi0ZEY/9mIW DAMpw8xhVJpQ
tvQ0tZGUcGS6qGNIQmIvTBUCnAIecMFNoPP/J70QyhVswZTqkPthk4BgxgJs PsZyROUszCX4
vMSFcnGLq4Jyu+xb4CkqEoQNXTAbWwHMCMCflR3HyppZ1TljdX5qcm214ETb zOrT22oNrVuH
e9wI10AWglBui2QEkj4AF7DXDd0Ls4MAJ4DHW0Qdx3rP9QDRbtO0r03ygGD7 yFLiNq1tzVOw
sjjhCFdDEGbecDlk4Yem04QQ0EHxHXsZ4/BehbwzSQrE5Q+qIIaCiPldbZMH JAL/llIHBP6s
UtmahpSuNMwRXoWZM7zhN8e5N3U+LpkNGui+Usafl0jXIJvAJkx3ur/ZYhBu 74vlK3byk7ee
8K57HQgNt4gcxH46/5MKDhRf8DJuUtGKZRAd6W7Pj9yfPpA8mGDbIpt03p3M d4Q3YJpW8DrN
y72DLCBADghYwyUKLz+lkod15hpJByokbyDjOwDF7LfTI3BygpSoJ6S6Ah+w nnX06rrzYxB9
EABP+u04xSkFMJ1AWz+/10Ms9qdwkwmaIaEO5IwLkjc57y0QARb4ngsm8pPm iw/Gzk+zAZ//
vAaSP3MdLD/wO9gB6lPvA0mOPQqUdFIpdX1Gdwry8AomsF1KVxO7R35QRxBt wRP+USUB8kWb
w2Dt537yN25DEAT2N3NA8HXNhwAkyH/Rt0HfxEZCUEQq1TrlNAHykCfgx4Di 54Dmxx8Iof8Q
pbIiJuMvxqdrx+d5GgB/Qzh/oqcCIqgC+Xd6JdiEJNh/KNh6ztNLZXZObYIT KtGAEbCFLBAB
yJAMPbEvAoIqLeJTCReE47aBRfh+0wQG9eeBgMd8O6CEO1CCa/B8PlCCkjRJ 4eQ8/oVbqsYV
4cd7W8iF/MEc/7EiLVJPq1Qt7rd18LeB8dcAZaB8DCeHdViHTmiHz7eHHWRJ IIRdUDCDu1eI
5Rclv+cTQCEo0+SI1qKGjxh/RSiLa6gFXmd/QMB8SkiHm+iEd9h/RTBEREQ/ vWRZQbZ0T+eA
hoiKB5EQqygojuiKj5hwkyiLkfh5fmd/SKgCgDeH+aeJvdiER7D/h23QBszj RktgBmYQQnVF
g8rIhagogXEhIItIAeulAQOAj9M4TQmQhkQYibOoATJ3i8uHiZkYjk64h1hg judIjOyoXaRI
fu9ofjuxDM6wEFQwIIpQXPk4Tfn4kePWkfnYj0PYj9V4jUPYADKnAx+Yi/i3 hAjZhORYjgzp
RuoIcpskYqVYiKiIfhapAECRkYxAAQMwAESJjyKpj0VZlPiYAP04ACSZklIJ kESYBRXggfan
A7nYjUqIAODYi3e4h5JEk+XoQeq4jqpmC4RoiuZnA3V3kct1GvmklB/JlEtJ l09Jkk7ZACa5
lygJf0h4lctXkLv4jTFJguMolmTZkDcZ/0wmQINsyQJu6ZOoAJQEAAZlMJRE uZR3WZQJUJec
+Zka4JQJwJcleY2o2QAqcJUsCYcG+ZWbKJaKuZjN05hzlHtryZOouBzN4Bxi wFhgoAic2Zmc
iZRQSZojyY96uZelmZqr6YFwyI3d+I1O0IvjqEayKURkaY7piJZz1HQTKZlu mRWVyRBD4AhE
uZnD6Zmf6Znu+Znw2Y+kWZp+iZoaEAQVwJJZqQMq8ALNB5sleASJmZ3aWZa1 6Z2PeW2meIqT
aZEeEGhCKZzrOaFL6ZRQeZzzWZKkmZqRiJ+tCQRaqYtLCKAIIKAEWqBkeZbB pJPvyKDj+ZN8
8JuZKaHqOaHtaf+hFxqf8jmfkdic14if0ImLueiNhrmJAjqgsrmYU4iTE1BM TxeZLypvzsAD
U4CZEjoAXTCc8BmaN4qhOrqh9MmhQPqhIOqS1BmOR0qgtKmiBwAFDAilNiAC 6AcF2QWhYzCU
A5AGFFqhW5qj8/mlzUmfggp/V5mf+smN/UmH+VedTpimSDqWNMk8tpmgucmF DQqjYnCewqmn
A3AGw+kA7pmj7HmcXvqnPCqoHqqfIRqH37gDjIoA1XmkJvqoKNqdOImMymh+ kikC21aZVHqn
ipAGeuqpoSmqW2qqpWqqytoA+smaWvkCgHcDrWqdBZCmSRqp3RlMTrqg5Xep dDoBEGr/pZzK
qUUJqqGKowkAqsiprOwKpkBqqCzpkiogrUvIqIzqqGrKkNmqXW+qm7u6cQpw Ar+JnnmKpVpq
rKT6p8narn9aAfCqlSHqn0BAnfYaoLNarbNZjukYPfyqoLoZp3MKFwQwBUiA p2lArANgrheq
rp7KsC7LroWqqqu6AxO7qEZ6sRg7k2aJk5S6oOKZcr46BVTACGRgsJ/6mQ5g ri+7tKY6pofK
nzcwsdJaseJoovlqjrbppE96iv9qkeDKA4w1lMLKmV0Aqg5goWdgoUy7tg4r s1vZn0TqqiT4
qiWKsY9qoLZJC1vLoCmXbJnqCGRQtFmapQ5wBmdgtp26sGvL/7As+bAgCq01 e6aNiq+zKalm
EExNB6ch6wwjy1jBWpSDm7Qpa7akebbzWbgJkLaLO58Oi5UQ65IvMK1OQLeI aa0DSpO22rHh
aQNx2qsPSgCZSrRp0AWDW7ZJm7Sqm7R/arqqq6xn27zKmqpYCQSQG7WtSrUl Srk6u7Fz9HYe
a6kvmmy/WgZkwKnEO7rHe7jp6pTKm76p+76r65Q68LCr6p/0uqjVmb8Wm7M6 qwTqOEcsCqfb
Jr5hSwFjS7wOULbGe7bH+7xpe7iqC72Gu76G2wSpa8FOicFtK7OQS6ROAJN0 O44iXK23W5sc
G8AfG6cAK7CaKqzni8ANHMMMnK6Gi/+8EZy8GWy40Mu686ufucif0HoD9Dq7 sNqo2cu/2mnC
APy9bdm75Mm5JCu8WArDMlzFEIy8TvnAypsATWDDXPzFGJyqPky9kWuztCur tFqW3Nuk39ut
ccoTzXACVFqyBjzFVFzFVqy+hVvDhdsEOjzBGby+FvyBH6qViXq/RXyzJ8qQ tlltAsybojay
d1q+w4vAC4zHVuzHDLzHXJy0GNwEoOwAFnwGTSCYBemSZYyQ1pqdeIuWbooZ ArzCPHCeVlC+
xHvLDgAHmLzL6Yq8ouzHC0DKX0zKoFzMf/e2+ScH+seEqVe7tCqbXsCd6why j7m3TTzAovYF
ROAIeXrLXQD/B3e8y+kbw8XsyaDcycWcznSgAutcc/q3zHKwBvIsz0EEhf43 SQWgI21EODxb
E7EspQErBiVrBS7szQ28AActzkmL0H7cxX7cyb+czqB8c2E3eBY9eD6gemgQ fd6Egt6EBSCN
Bfo8UEW0sdQMy1DKqyscxQTtzVSM0F2A0AgtzqEMyjKdzlxs08W8AE3gN2rw 0z4ASWjgA2hQ
1N+UggDoBSJNSQMlPyXtS93rzzzJuyrdDFA8BORb0AatwA0c0w3cxce7AGIt 1l3M0+Us0U1g
1k3gT5JQBUVgBVpQBFoQBXHACXEgBHedVHqtVFJxP1EdnuLpu0AZxbZs0A4g 04gt/9aYnNaH
LcqHnc7EvNNkDcplYAVwDddlAGzqJgRIgASc3QmdvW5IQATjQR6mPYDQNgHg Z81UvXG/S7K1
XMnevAAxXdu0LdPHC9ZjfdhjXdZpLdGTvdNjMNzEjQRU0NlDYNzGTQRDAF2m TQQgQB7R/dzk
EV0/MkerPZFUDcmm8AVTEAdZTbwfQLxiHdNjXd43vds2fd5kbdbundbBzdNg cGVUMASlYd9T
kN/6vd9TMLJfYGEX5t1i8AVbkHhgpknZRYopjM3dDduF7dK2fdvp7cnn/ds8 feEY7t4XDt8L
UFjK9eEgzhBfQAAjPmhhVmoR4gGr7bPb/ZNyPAR1YMBpAP/Ot8zevc3bHJ7e vd3eO97bOi3W
IR7kyrVspJZaIw5mPIBxCK7i1xYC8NjiyabNlV2+NE7eEW7e553APZ7eOW7j PA7kqcVlyrUQ
gYZxH17mBHBxSa7mSt4r2b3gTxywX3CegfvNs33eWO7lXm7hO97l8A3fWPbh PyHmqUXkyrXm
Bp7mF7fkb/7kTiy+IFDZaaAGs53nen7pXX7pXj5WQi7k//3fAx7qUwDqVHEA aKfabdziLv4F
IDAGdT7bHzADC/ABmr7nmc7ety7W9n1l9p0CUzAEU+Dr/M3f3j3qwx5d/20Y EtLoEWADge0Z
lXkCXzDQMy7e5D3eGFDrYp3tX67/57ku1sQ93Md9nsmNBEOQ3Ofe3M3N3NTd 7uRhODzAKys+
1b3L3dJOBHVQ5zT+AbE+69q+ANz+75f+ANlOAXCtBZldBmOgBcTNCZ19Up7t 2Z8d8Xtd2hCD
LtVsAV24hbzrxNE+7XXQ0uDM77S+ALLu5QEf8AKv6RjQSI2EBm1t2Vbw1pYd BTUfB3GABTif
8yeFBXt9UgalPxm/8c/uGSLLAwNNBnAw8iR/8ued7VAP8Jeu8tqOARjwAD+d 9e2jBjA/1F5v
S0cd9h8N0uDk1PwMNtWcwioM0NKOBPmu9F1A8v0+1lYf9XaP8gBv9VKv53pv 9exMB3QgB29w
0RYtz/E8/88bvdHvg4IevUHxMz9IpAAB8Clcu932Puf5XskkL9ZOz+13z/d7 T/XsDfVXjwFH
CAR0AHhvsPqrj3qHf4ewvwaymrOLz0YmPfkAUH4uyqueAWpyju/lS+lNv+19 n/dRT/fIX/d5
L/Uq/wDG/wAPsHwVsJXUH63zisibKM8lesSe2DzR4wHYpvG7z+DSHulWsPRx z+8zMPcz4Pmk
b/ykX/fyv+3MT/DyD/0PUAFu4LD5CQhAOkBAL4SEN0A3N047CDtOCJKTk0dH BQVYSktmBxMW
ABkRLCw2piKoAR0KCidfQ3FWZF1dHx8zMwu5Mxi6GL+9C8ELwsW9wMQPwMe/ C/8Pzw8LFQYV
1dU6FTo6MC/d3YvgTuKRkZQIl5ibPwcKGRYWLKOlpyKqHq1fRHVkZHBwtrZ0 7eK1LNgyYQWX
Kfv1rCC0B9QMSLQGowIMGDpeZDT0AtyicSDHWcLkRUmnA3kAhBgVwZQNVPU6 XMAHoo6VNP4A
zvjgixivXMwQIitITOhCDA8fSpxIzVo2jNy8fQsXEiQ6TesOcAEAL948mPZa nQCBRNY/gLd+
YiB4TGjbhMAWNmSINCnTpk4rctso1WNVqwXabDpwwARXeV9Tdbh34sSUsv3O 4prMjJdbuArn
OkwKbWlEvNWgatPYsTTVkAicYCqwqZNhC4jp1QvAeCz/kjiRdQrEtfYyZs1x lXHmvHQaaIuh
MUqd+vGvE3TqDngIAZtU4tm1v9jMbWsyQd7G2AKbIfeoXKR1h3u2Bvqi8uWl nTQHmXqkpk4K
3oWwLjtAgJmNaWdTTmmpxVszaxVEkHDlCSdAesNB5FlT7W2zV183dORcJJcI llUGocjjUiq0
ifUFCHG40E93O3nXi1pwNVReXBByJsCNE06TV2jbwMccI39doskShKUU20tg rULTPiuy6N2B
ax2lFoMMychghDjmqCNFFlm4XIbz0fdcOkusEwBX/NHjXwAm1mSFHmcVSNkv vCjD25XnKSPA
A3tG+MyeAqwX0Y4WXeSjaUCG/2QfJ9JZsBJ/MMUE4InbEfgkb+Q9MGWmVkKD no3Q3ChqjhTm
BRVp3oDJSJjijOQhO9SJqKZ/jFEaB5xoPZngDAKw1amnet7Ip42ijkqqUxS5 90JUGMqXqEiZ
DNaOSmmC9Z+JdeCGq5xRkvegqOkhRV5dGPSJJaDFepbDRMjqVcGyzH4jr3yo ncMaowE4Wi2J
qzQGQk1kbHspnz9pKhxSDz5ULp+AJlXswxOuu2W778HARLOrJiqJkGUe0AGa 8yA5W7+uoPim
ZAVqWm65nP5Jrp7Dnvtwlushy6V78crb0bPQemjGdF2RIjJ2AdakYpxPPphp wg3x+uew5jaM
7sw0H/9LsaEWw+fEzmGeM+Q6eegbsrUXFJ2tHttyeyOvnz7d58Izh0q1sUtJ fFxohRp66NbP
nsPxOiKIfZ1/JNeEm6W49LrWjeHG/OfUc0ceaN2Ut1toj8tq/Q294tiLlXTU 7Ttym3W4kLZ3
onLasNyRMyz55OpWk4PNeSvr46qccxjtDz+0I7ZsRI/lpsCT9dqr40u7/vrc NdA94d14K8vN
xV92Q5+Q0XHxqNAiq9KB2SrqkesKvFIN9fKSN++8ROvmILHNOHt5MfWbX/+3 x4L3pwo+2qVI
fPnle5jy0PewFYhKfREzwLoUSDu9SK8bTMgQ1zRmCSxgoWMKCMH2SpEk2vj/ CwQuOJlOyEfA
Eh5Qfetj3+wYCD+cTQ9DfVvDEYpQBCyAYB0n2Mp+xsYv8J3OgAE0oeRWoL4a GLFqEZsYciog
g9oZ6mISbI4kZFhDLwgBhx1wlKyS1C9buSAnLTKgENGHwnQlsH0VmJ01mogc ZVGPCRGk1xSp
WEMhEOEHPDgB0GJjLZl8YSx1KJ3ASBjEMd6oiAJo3hEP+TwFUkNiarxa1uCY MTvYAQEyRAMN
sRAHO/7gjzn8HQv6+D3hCVJ83VmBGA05syOWUZGNdOTsIpmcvMERiouwJCbX oEkaxqGTSCDC
F/KogA6EjnsdLBulTIc0VRbSkERMJCIPCbtGQjKN/zuCARBw+YY3WJKXvSyC FX4phGCCQAwE
aIwCWJA/Ln7Pi9siISsfZkQU1iCasIwl+1hYDRkA4SLbZAIQuvmGNRgUDZoc JzmRwFAiTGGY
BChmCKhlHVJ+8JQjXKUQp3nIRSYykfp8ZDa1GdCBWtIOCLWCOH8ZB4YydAhT gOkfA8AFFKBA
gyKKlPfK9q/SmS6jYtQoARV5QlfWU592qwYQKnAIbRLUDnJAKBqsoNA6uHQI MB2CQxVwh5re
4R6B2+Eo3emvbP3UFuRTpQCEujx8FmuR6utBD0LKQDcw9Z+HICg4p8rSq2YV qwS4wB0GW8rG
TEesYx2ZTEzpgi+iVZVq3f8oUes52Rr0wLIhrYAbcnCIvHYTpVO1Qhla+lKs ZjWdgh2sAr7w
UB6k8wRhJYVOO0BbnhrurDNQK2RFxda3HpCak02kXOcaS812dqAERSg/FFra rIKAABEd7B14
SoQhgGAKU+BBHg87ysTO5gKLNdpZPwDZ8hqwt2+FqzQ/asThEndCdnXDUglB h25GdbmibS5g
h0AAPkBAuhcgwBBc6tI7fuEAOdyhCBK7U9v6FJXlvdF5I0fEMkqzeT2Qpnvf uxQ3yBcIfQBC
feWgBjWQIbRl0C90oXsBCHDhDt8jAFkIjAQh2JgId+RBBvcTKcX6UbxoI695 l6fIItfzo3IV
wHD/ldxhD9s1xHSQAx1KTAaqlmEMSDAtf1d8gtRO9wRYzbJLfylOTt4YjyJQ sE5VcQEHmw7C
59WtAKRgwODac5EZ3rCS5WoAJ7shxH2gg6DVgIYqjxYMWQbsitP538GW4ERY nXG2qErDSlvw
imZoh5oVI5PFBrKxcDbvbu95IylUdr0YzvNwY6BkJ/chCIGOMpUpUIYrYzUF i+6vl8tm3TAH
ctKVRqhBZ2hBECzhCwHgcY8bDEiMknetqpSCtKlJ549K+8hIFu6G5frnPsS6 xCamta2HgOtF
l2DX0DUtEn5NVStIdQ2XhLcMj2DBMp3gpt5dk0zavMyzinq9a7X2nmtg/2op CIDVNYiBew+u
8B54e9BqSAMZaD0GMJC73NDlg5cDwId0+7oOZaD0u09qB3J4zoY/MCYK8l3b NiugJg9+LGTp
HG2Cz5ngR8ywkhu+4Rj4vAcxGMGg05AGils8BRjnQwkaPV0+TEHAIBhwIEWu BzSQXBx+uaSQ
hLCEBHs3Jvsu26d/6gchz5zOBS+4ZXtgcCmwfds+53kM1EACohsdDEhfscYD MNgAlGDF6gY5
VU+sB4Na8g0eWQQTnLWxGhp7Oitfc9hfPvZQR3sF0jY1ztnePLcffNUxcHvc 4253CoDh9Ek/
t3Q5Dnhfh9zdCD1pNyNI+1vishyZ8MINk53vBv+LPeZmnznmr835DLNa4XsG uhR+zvweUMD0
qE/BFXTd6P903ONSfz1C9XD42dfe9vPbWauiBYJ7o4ALkm9zm0/gU39Ddg+Z z7xlkW9whdsf
6HK1P89Pj3ek80HjAFYC1ydgQ4BoteZuZGAH3EdQ4NeA4fcCEcQIdkBvWMB1 09F7LTcTQKYH
fuAH5kVwmvd2y8dww7V8oxd3QBcDKdB/StcBfXcBfHAFSJcCBTgGY9BuJwYH dsCAtmcxLvSD
87MIG1OBQvAFaYZ+/JKBBFB5tuCB73dt8SdtPud2+ad/P4d/KpgCGld9AiiD NHh6NlgG/EAG
agAHBPUG25SG7iEDMCD/A27Ihu7BBE8ERU4wgRWoBOaHhIqlfhegHY1lOh2o SnsgiGlngqGH
glaIiEBnBOfGd01HADNYgGBwgPyABmogBwTVWdrEBGzYiZ14EZ3IiW4UR55j Rx7AAiiACncA
dpMHQqAmPoG4AnsAglK4fIZ4gri4iDFwBwEAAQI4g/w3BrVGBlWQBiX2BvVF B4QgUGvoT2/4
hm34iT8IgRpihxVIBHewcqu4h+rHfn/IgR7oB4Moi7OYebh4jlhoBOp4ASUA jGD4fBRQBeAm
aMqoiUAgAzmAj8/ohtG4j/zoQqnyHPRWB0rAAzWVCrzoewH2YLAoiHswizWw B0ZwiOd4gurY
/wMTqYL8BwbC+HxpII9qQI/1eAic5T5M5D75qI/+uJIuBEcdYQcyRIQKEHlJ GHZ9+I3g6ISy
KG17UJEnKFcTGZQxwH/wSAFpQAIhSY8hJl8e5j6blUYoiY/uo5L+2I/QGIcQ WIdrUEdJ4AHn
x4sJmYEa+Iplp5MP2ZM9aYvoqI4xIJRGAAbwaIxJKWje1gdM2ZR1g5J6mY98 uZJV2YYX4ZKM
4DUV+APZiIT6ZpMKwJAd6IRnmZY+2ZZu2ZYxYJRHmZQj4G1+5mGOtE/ts5d6 6ZfPaJWAmTUS
SGxCkEOpmJCEM3lLSJax+JgWmZHq6JZsaQRpgAdKqZlORleeuZdS2dmXojma cEhJHEKEOTRW
iWmT3og2jSmODykFEtmTtGmblCmUdFmXfuabC9SZoCmV+piSfgmYxRlBMIkG MvmVIsCaGbha
p/ScjzmdtelzQWmbQamdnOkGvqkuKqRA3ymcw3mV01OHqAkCF/CVAcCKbXZu LwebHRifo3eb
9Tmf6miXnLmfsbRAn/mfUSmeVVmc1ThDnUQEHXB+68l3DcagX+Cgj9kDEjmh klmbMhoD+omh
dNU+KvSfVBmggWmeW4kFdeBQAWCiCdqaC8oKIIQ2OQmdZymjTvqkRhAIADtQ SwMEFAACAAgA
YpMGNWpv9oknYQAA18cAACsAAABvc2dpL3Rlc3Qub3NnaS50ZXN0L2ljb25z L2FsdF9sYXVu
Y2hlci5pY25zbL1neKTXdef5Vs5IhVwFoJBzzjlUIadGAw2gG51zIDuwmx1I Nvu+bxXQid3M
UZQlmkESlahIibJkSbZkrmzLssdyGnvW9jOene87u8/ut/2dW02N5nmW3WiA QNU978nn/M+9
F2eOnb9sGH/292eudHYYxu0/M/jPMTk+M6UStnhCxd1TU/F4Ih43E0Y8xf/b EvxjJMx4MmFM
qbg9Eedrlbgd3+b1+lVmwhFPJPg579/mR/Jj1yTfmpyw/LZg0ApkBIOhUEZG ZqZ8ZGVlJ3Os
sDM3Ny8/P1VgFG4XbRfaCgrMfFWg8q08lWuFzRyVrbJS+oVGrgq7csKJab9P +e0Bv18FjGAy
Q2UaWWa2LScnFbazkFVwt9BZVFxcVJwqshUWmgX2/PyCZL6ZZ8tlPSvHnZ2d lZ2dE97JkfVU
rpnnzpmMB3xBvxXgGVUomWHLZEGVYwrFPKtAVinaKTYjVrG9qKjwQYHKM3KT YXtOOKxy7Kwl
j8lHris/Ly83nrD8RmA7lMp08KNHi2zLIskiq9gWiVjRZMQotoqMQr20xQPm wasKG7zY5MOe
m8tnW5gVM/Jy8/PCkwmfLxDwB4LBZMidmSWiy7ZyeAOPpxCWvbCwSBXfYeUU KydZWRWYLOzI
Z+VtvaaXNcM5OeGcsJWr8u3hxATCC5lBM6QyHLJekhc58rT87IXFMLsdVSUq akRSUUckUszz
2ouLWVOe2il85t4N+3PzcvNYUv7CQJ4jPy+RsAL2UFDWzVRZxu8eU9RaGCoq Ko5GS+SP/E2V
miW20tJk1Cp2FkWKi4pUob2ggPXNvLthH2vzV9YWHbH0ZMIM2DEfK8MlpiMi MORn+c6CQvSt
InbW3i61lZVZMavMWV5eVlZqRVXEVhxRxQaL24qKzEJDzCtX3ijKdwsRPlTY IV+Y+f5EPBAI
hjLESk3NgZljD4dhzpafr5dIRY0SVZaKGeU7MVtFhYrZS0sQlTMahbc0ISfW V4gOPCJ/WTeV
a+V5hRArCRX8RQVd0MARzExbFsamzTvPKODdRcURVioxSrdjtvJyVemuqqio rKqqSFYZlSpm
lKlSO+ITvUAnWSjmc/vRA+ZZuUaele9IxMWSvbK+9jMxAVk/pwBTKY5ERAVl ZbHy8ory8u3K
nSpvdW1NdVVFeSymWN5WUpJE88KMWego0ObpEttAUDw9FKBi5jsKIKNCNpGU XTuzyhUPVIWq
2AsLJZAor7B4/koev6YmWeuoqamtVXVuiFVXVpQnYyjLxMrgRLRvK8hHzrm5 O3lufDYf40JT
ELIXEHowVBFVloU+5DkM6BhoPQM6pWVlIqHq6pqaalVjq6216lStUWc2+Ovr 6oSzyko0VW6P
xeBORX0iuKLC4oKC/J28bUIDHgcZd8FU/Pf17hdl5WORiEysq6RMxVzQ0TzY 6uuSDWaj2WA0
qWZXY4PQUdX2qsqKZLk7VoaB4+nFqmAb0y0sLLDgLE3FhdSgYgkvyRw7JHDW IhUpgIsYiq6s
qa2rr6tvbGpu5m9La4tqNVqs5khLW1tzc2NjfV2tSE84qoRYrKwUUgpdSWiy 8vEzJSrL1xHU
yidKIziX2EE2DiOPoAqSxcFoSWksVl5RiULqG1WTo6W1rT3ZZrbb2tpUu6ez s6OttaWpSTWE
YKsGyfIP1lFqlRjYuCLCmPkBBINwCpBQfsFtKCVgSsGTBPQCiBRHSsoggsAg 0tDU3NLS1tnR
1dXZwT9mt+oMdHX19HZ3dbS3tbU0q0ajwaoLiWGUx/BcLUCz2CHrExeKCwtT sGTLE57iiYyk
eI2V48UUoAUpFS0qgVh5ZTXqqW9shh/o9PT09vX39Vn9TvnUrwb8fT2dEGxt bWluMhtC9fV1
iFITLEuL0Ye2iySeSGS25RfsQC4eSmLg2XipCmfmQU97KOoS3lRtRkNjS2t7 R1d3V2/f4ODw
iDWcNTIyPDQ8MjQyOjzQ19MFi6o11NKCBJqb6mqrq1CcWeYkbkSgaBWJI/8e NZgzshTcVZMY
C4oiQglSwlgDjLV2dPf2wdbw6Oj42Njo6JgaV2P+8fGJibHRgb6+XiRrtJut gbbW5kYxfiwF
ryZKlZhkBxXBqYvRH2kHW8n3IN/8gnj8d0SrRKBCNIYtYut1DRhhR3ffwMDg yPDIqJQEFAVJ
aoHg5GR8bHRwsL+vFx6tzqyOFvxAu1tFBa5WVgpBhCoE7QRESxSIixekFehI x3B/bq6mV1Ze
Va1qAxh+W0dP7+DQyNi4mnAlZmZnZ2aSs7GZ6ampmbm5mcTY6PDQYH9vb09P V293d2drUyNK
rK2tVpW2WLkqIzgTvyLJYkI1gQgV5icLKF2szCTEisKauRKkiZdhJm1dPf1D YxOJyWk145id
X1wyF2oXF5cWFxbmZucW5mcmhdzQQB/0usVY21ubmoSeMKnKDRKNo1Qbqk4u kr5SBXiCzhx3
cqaFXHG0tLwSMWIkHb0Dw+OTswtLu1Z2LS+vrOxe272ya9fu1bXVldXl5aWl +amJ0aHBgQFh
r7unp6+nux3XaGpsULW2miqzwku8RrAljwhammCygHCfhcFsE+QjeQWFEeII BJta2jt7hkbH
Zxd27d6zubmxvq725PLvnrWNzX1bezf2rC4vTI8P9/f3Wt1FXV3d0OzEFQk7 n2mxSrIOGYeQ
iWsUpSBlS8QpyCQl4gtWbpkmV1FVVVvX3N49OBqfXlxZ33/w8JGjRw8dOrB/ /0HzUNbR4ydP
HtlaXZwZHxACuHpTbXNLm/hLR2ur8IcKRaI1NXW1VWI42vnx6UixkHTE49kk sCTlUJ/4QzRW
UVVdV9/S1T82NbtrfevoybOPPX7u3KmTx46eOH3y7IUL5x8/dXh9KT7S193e 2twkGYDQXOdo
hKjZWihO2NhY18D36+tra3B+CKJDqe+Qp3Z70jOytKg7OvNhsLQc/uoa2/tG p5f3HDx29tKN
Z27deub6k5cuXnriyRs3rl88eWD3XHykpwOPY9lqVRXC6QgOuGx9Q2NTi2oK NDY2NOi/sGjG
XGVQJMlHvKQhwih/Sfy4YY4uBCzJbgVthcXRssrqOjywa2Bibu3Q6YtPW3cf PP/w3rZ69pmn
kveta2cPri1NDkO4ifXhssqq9GEi5eSR6tp6q9EHwUYEXF9TZZULURK/GcmU 6CY0iXUF8YQU
qbq+MQt6CgsJbbGqmrr65rbe4cnlfaeu3nru1be/+IfvfO71Fx68+Mp98/rj W7vikGxraWpA
iLU1kt1N6oiKSiQpIbEW1xK6TS1NjXXEH35GMCD8pCvJ7UJHEQndos7Ny7cK +ygKoYmMa+oa
WrsGx2ZXD19QD97+0kff+/53Pvrw3Xe/8NL2U+cOLIz2dRG3WVI0V1tFEFUV LgIN+jPLHNgE
Og7VN7bwWKSs6ipdy1DJmLqSsQpdhHVN1pFHQk4V95ECyyqq6xqb23tHEoub J67eefPL3/vZ
Lz/95c8++f6Hbz2wLuxdHO/XibCZNdNkZeFKBbt2eFJlGWL5RCwxspqaSiKC S3OKwwhRs1AV
OQoLaabCrtxcTLc4Fa2RNI93NrZ09Y3P7No6+8zDL3znZ7/5u3/6x7/+5Q++ 8rk7lw8uTgx0
S8IwWswmG65f5xSqVcnKPC1ICMSwR0oEeZpHYUg4haiWLzUuGdpeiBGH3WQr YivVZBfsSoFR
WVvf0taNOe05/Lj16oeffPqf/+1f/+nXv/jBh689dWwlMdzb3dnemk6PTc1N EDepahySsFR5
SEK65KJKyWDVZpVJpaNLHQw5WZwliixKJCQl52O6JToSl6qyHkyjtqG1vWco Pr9+5ELy1fc/
+fP//G//+z/+1S++9/6DC/sWJvBUiTxQxTXFWpGm+Gx1UAhXCtelBAUVc5dL 1UONV+kXWejn
iep2yowsRSOJuK4GYFiXhPpZyyuq6pta2/uGJxfXj14wX3r/40//4Z//4W9/ /dOvv/nskZWZ
8WHyM+UOkQjacF2vSzmikVWlKu1EI1XmKy0pKxX7JkFVKgRhxKgiSyw8aTUa jcfzSKDiNiUl
sUqpJWIYYy1m1dU/OrO8cezirRfe+c6f/u3f/uYvf/n9L969sG95egwxSx3U 2SG2RYzCeT+r
6xCtWZm2LlXiwlSIwRZUnVoIZqkT1hBFdKCkRCgLYalFJCZWV6Leahy3s3to fHZ54/BjN+5+
7hs///SXf/qz7/3h/auHVucTw/3klC7VmSlm3aqjhs6eNWa1DYeqdIhYVZlL 2rMYhm5Vuggl
fC9F4RyS+FFaGk/kUSKRgqKusnKq1XpV3VPTANWe4YmZpY3Dp6/uvPHNP/rx H33yvQ9efObM
3uXZiSGowi9yfqTjhnTOrrGqDbiVwlz6AGdMQomqlO/ZeRCrzIglS31iuIkE FkXtoqINaLay
Gk01N7VCsn9kfGZhz4ETTyTf+OjbH33jw3efv3F6/+75yTGqkh6zK0NXss1p vSJjJS1INboN
SOSQMhPdViQrrSo7YcqiuUqWSgXhmJrML0pCsJ6qv6KmFVV19/QNDI6NTS+s bh2/uP32V7/y
pfc//9LNMwf2LM3ERwepu1S36vJQW0Ktsd5soEFQtXaIKVgKSpwSatRydCKV Jt91SaCmZIlt
lzrLhB79lgSNiI8XVTd1DJC71URdYmZx977jT7zwh59/+81Xbj91anNlcXpC E6Qo6e7GeqWc
haRqsBMUpFKosaRTlBil2x1bGRST1S6SOVI1Y07tGarMGZuK5xOiTMJFpYTg WE1L78jk3Pws
RdfSyubx62+89fLz91OXj+9ZnJ2eGB5SfUav1ZctdUK7RAisJ20/Coph6bG0 T6KviLAp/lJj
l0CNQVfAKK1rzCt+OxnHY+4UlRdHSivq23uGE4srq+u7d+/Zdyr1xot3dp69 cnTPzPT46PBg
n9lr9fvgk3TT2NhEu+UgaUPPIPx46VjTucUqcVI+ViFWO4nBrDQqUvTmVIOe hPgI9bwCwqmh
rC+J1TZ3EIhmVw8c2b9+4LGXX7qdVBePrSDS4QFaBBqGXtUfHBigAOtspwVq bkCwEBUmDbSW
K31ymir1u8SZajxP+KypNvGW8hg/VBWEiDJnIgHxncJaat/i0vKaxlbqsfHZ xbWD55545qVt
69aVo6uJkUHISmVJUW/2uynfezraKRjs1ApmQ4CUk+5fifRmuUOoWiUB6Xal 14UmxmtUmOU0
0lgtrkndYCssSBVGiiNl5bUNzR1dfYNj8dmlrQsvPVDPPHl6bWoADrsNgoCd itbU0tXZvLFR
Sb9c34CAJeNYLKzK/Y8YlRijKl1VAAWaUWlAJVR4KNYICWGAqO2CCKE3VgHV ts7egZGJmYW9
F15OPXXt8YPTg10dZqero6Ozs7vX7PP39iBfiFKJmQ1OiIp43em2tsIqz0kL F98rlSZE0xQ3
cojcVamfMqZ0EpoaTDELotgRKZFqvrO3f3hsZn7jxvPqyUsnVoapn+lnfZCl 1RSPUT2BbjrA
liYoExDMOleaWboHISydu0Q5VZItkVfLGPXyWBo66CuTAJiIg3cJrEOXLdCT lBG1jTS3vX1D
Y4nF/dt3r19+/NB8X0drW1t7K51hR3e36jV7MiTotzdjxrqaAEQIN1AfiXJp rqnZ8Feoq6iT
bqiiyqzxCnEKqPKYSfDluSQQZmm8TeX140JF4mdVtQ20TN19g6OJxePPWTcu nVufINCCFwjt
zu6uTqIEUZ+GSSTeTElR76ijoFUN7vpaDSSYRGCstmwBqdPNlFDWQJfqNV1H iS4k0QrrWRpE
lDxL8RghScA6qa5HyC8/8crT18+f3DVMXiPoqjZbe4fkGqTf1Z2OxE0UjUrE Xt9AqyjBHuOF
OJYkbYabUlBSmVnjoLAkZNgpL1SpR9J5Ip5J59EsEBoFHK4sYtem1jc0PLXr 2RdvXHnsyMJA
G3kNNKOtvb2Dv6pTdTl1W6NAMwiQBGUv5iZtv9Q0BCU+bCJ1D7RLhXNVE6qt Er7LYpJs+VmZ
A7nTg1QI7bTKY7QETa0gDAPDU2upezcunjkw2SMd/k6bHY1b7XaCMsBKA/6k 6uwYGS2I1E3E
BoCvDKo4aXIITZEyUjypgkJZngQzS0IvLqBghWY2TVB6kEYh2D88u5m6fe3i 6X0TnUBEqsVo
NducmmOzzQfz9FOYNrVbqgaKVKWaohuK0lWpQn9xqfgUApagzJMgXKkqY4g4 TVUAeWJWcWmM
ar6hsbW9C7+a27+TunL+5J7hjqbGJrPZAJiyY2Sq1SFZXVGrNpr1doonk2rC LZWb5HCK8+xI
RGrvgsIS3RFhz5DlcaQ8KzNj9HdQDYM7aJo4Pf0HRiWgQ//I3P671uXHju0e aINqM1ibatmG
LtgUgJEYMpZs1tgkzTrSKJ+JLTlKEa1V4ItgS0BXlZJmVdl2rJEIKUWTgKBR XajRdAi80dtP
Z758+M7NS+cOLfa3SqcGLGZrbt5uMZpNIqOB0drJPTqjCdiQJuXTJSj8CZaS UUwTowEsSXJU
a7E2PlfEEgkxV2GMn2tEBX/VEMfYeGL3kds3L589tNgLeFJf32DBopM6GFah qhCoRhulVkpX
RcJeWKCjIlC+vPzcQqSFl+JB5bYY0He7JjkVF/CtnNBCKyfwFJFxCMBoIpGY mt1z/O5N7HWu
i1ggUKNqckJP2tQUfFrwKeHYJeklbT0qlqcTnrTJhVAFmC/CNIAkYtSlUrzF /OWVVMjxBGVw
mSrHwGiYpcunahqGrCAsq0fvPnP+LGSb8Ag3LSKNE7STlEowatRZ9TYxHkUp ClUr5heKJYKN
5ecxXCmkuq0QAFw7LCQ70iSpJQpoPYSwtNx19U2QBc3oGxgZnz9w++kLp/fP djXS7eMUtMQG
TNrqSer8Y9UZkHNKe1X5WU9HnRuFZAFgN6EOokrSrpgs/R79RKySzCBNs6DQ +WXSMAvMKYUw
OQBUYyC+Z+fGhVP75rqB3+pMSkGjMUmSk9TK/9Up3MOR7l9LUJtuVIRLKIZz srNyiuhZdBfx
GZ8wXGmvAgLPtGWDupSLo1B/C6xEAITbzu6xFevp86f3zfU1US/U1d2GPQMh KyRaZ1IR4h1W
tQeX1IWLKs0sgcdHBLNyioWUQ/rKdACKBcFRCUrgWMD6RIQYvEoBHiEOEzk0 zcH5WzfPn9i3
2NdUA5Ymni9aJN5J3QuXaJICTZKoZhXr1ISJBSD7MJqdlREuLgNAU4QIA/FT sla7E3EGFgL3
lOoUQ3ODViXyNbV09E8+a50/vX95oJlmOwkCX5/iH+gYtUnUSEkitFSFwB/p rBWBR6SanZWV
mVFQ8qh9RbKqLAvPJwACrtQCRsqMBJI6s+gIpOMCAFrP2Lk7F04f3DXUWldd fZ8wni4DU5Az
JHnhk2D2aUyumBggKoRYZgac6e5C9EhzHhNoU0CVhsmEjGSQaTlpVJMjh6et p6m1e+jA/Uun
D+0eba+XSUmqzoCcKST5gENRSnV1kuCDpnIkVUM0Py9HaAaDmUXpjhtxQjOH WFMrkEpbazwh
M1etyUgYHELjLWQdCQ3Nnf0Lt66eProR7yKO+qQrg0nSlVm7rQcaSBReLUKo AGWapvYNSIZC
gYxiaUfhACM2y3p1u1rb2NbZBmguNLOYtOIpUi0ITY27NgBAxM9fP3ds70xf o7Ta5MZqj/4M
6e2a29VRsRtga8TKWI0kCUVcI4vxsT8nYtIXC8ESqyysZxgNbe2P6MFkDi5S hrWCQJTq/IUi
W7tGTzx7/vi+hSH8I03Pzud7OtbQDZqVWSDWmjuhlYd9ZqkMJ8Pq/CjUGJX8 jlpVDRJtE4mG
ZGwq1IoRaQG+IZaKwBvbekY2rctgghNtdfeqLZJTTarajWBEOGZlkZR5QLia K2q5bOQYDPiz
i8CqKDVQYLIsSzITuEVb4jNCMnuIfkYnBm6FQ/SNrlo3Th1an+psJO2YNH0W xYsDJyBb0M9b
lbqpD9Dp6llDUWE+k85ADpoL+v2+PJ5ZKBolKQQpoCqJQnOmFSexJgI2L5mS lru+qQ0Ucnr9
qWfOHSHQtNZW71RJ2q3x4N9SJlfdqZTOSMweGyFmy8A5MzOUEfB7fTp2iKHA eqrMRyivkrwk
cz2DCT6zAJFkkQApJWWVNfUwNzS9trRr/fqFo3uXhzvrGX4SxMi9NUk+36tU ZX6dBAsLmKrm
qExfKBiCThYtSBKNSd0mnYKM1FBKYzO4dcijdx2kdYaBlJRVAzgOjC0sJEZ7 +8dOPHnmwPpk
fxMoKoKs8ksBrAG2qqrblU161iaoLdBpOlCzhyHoD/g8fqnD4QxTxQSkXmQ+ zKRQEFgwuFBL
miqOgO+BXtfQ2o9NzST6ZBLWu3j5/KGNORye3CYmUq2xASeljNiKUwaCxM5o WoFMLPPIStlI
FQ36vK5sWstIVJW6pDgH2i3NkAfQKGzVZJxhucpoTDshOGBZdWPXQGIu3t9F jdiAV/SdefLY
vl1Tfc1g0trhqs0KU1c2oI0N6X5EdJkWso6iuLzP5wpE+R6hOd0UMDgDNDFL 7ZJAKlxx6AYh
XJ+ZlZNbUFxaUds2Mjo2wKSmgTENPt7UPnnq5MH1pbFuYVo4BEoU6ImeR8hK Y4mdkOH+Z66A
Mibr9fjy4ZhkD24TBQ0yS6T/FCRXir54QqberYTXcH5hSXkdiONAB9i3pKHy culnGruWnjix
uTI11ForSKLQFg+xSD7Jimwd4XTEEeuVgKMy2BeCoJ3hCAWeTLUhK4BnqsQB VRRtpydSQfZk
ZBMForG61u6e1noqQJnfq1hYpgBVtU3dG6cPbuyaIT3DJamQOoY5sYTxCrek KphQkUqqDm1Z
WRlwG/D7PK5s4jtgmwYXBbsHdStJ8C9fijfBcCgjK5wLszUtHU01VbGSiMwv 2Ykg00kEWlXb
3LN5/OCeXZM9DcxWkK2uTREXnX26TtX9biRd82BbYtchNtdAPaNEZgQyDVVR e3rMzAzRFgV+
LC+hFSVM5BdEygSrLS9Lh06pxfRwlLRXnllR1zpy8NjWnvmxjvoqylI98L8d C6YHPNIT5OWy
vcchZqX8Do/bx5CJQTbYIhtlVLErKuZXnIzklCTi2WJMSLM8GkE9jNJzKyGX bhn05Lemvn16
6/j+5Znhjjr0LR0NhrQTC+hpvEz8C/LCKjtfMpeI1+d1B2FQ2g6pIFWxAynI JwmVAorlFgu6
S4OGUZD0MIkcPMlkkwMwizie0GVA0zKxegh7nh5pZZwEWawCsVowi6TsUFZs xcGBVJYrA99g
45KPoEfD4JT5OQicF5ERWOBkuyiTaFIcnyyUnkJCW5app8FmbqluykS30nw2 ds1Oj8/t31yY
HGqrrYAogTyZHp2lRfsoR8MqvGLCvhyRd3ofi95lgpYi1mfbYoLFxYmpfCEo 5YuVYTDBrKDG
pUQRolClJqrrGB3r7+hf2lyfjfe2VBMQS5JlDRLwNE2tf4K+2K8m6vUFswqI 6fmyT0hMQ29u
Aa0xmZXqgSl5ITFJKUhmT8lGEkrcLKKzTIZUIUB+WVVty+hoa31dQ1d8z+ri RH9LXSU9IxuH
ZLCcJWMsaUd0OEanAdNny4A9r3wzV++1KfALWA1RHq9wuyDA/yUmKU3QQ8AM 2kIhMyM3M1M4
TW/2KIqWVTX1jXeQBTLr2yZXd89N9FH8lQsGImNQUALKPNkJEw5LoQdRLCmQ kYe2ZLuPFQ7l
Cqu6lxVF3GU/VSKeCliyVSYTDmsFwaGexnajVQ0Doy3VMjaLVTX0zC0vTg33 NNLNleFO2L8q
MPLNsC0nW+kagdAbzM6VYMxuEiM3FWY7hMr3SZks3luQf1vms0m/k51iyCLk JvPoYjMckAos
EqvpGm6uoOSm4K9tHgFIHiNYVVcQAXSRJVUW++2CsAU5nz+QES7I387dCZt5 AYG6NBH6Z8Hc
fIk4VuWXXWmKbVnBwCPuggIQhUk2Ve2DtURB2QdUSgFRUdc+srCUGOyUZFMm zwsfbCuidoWc
CtoystlAJkqTfW0Me9kAp3f5mHpDi94LFBK15scTmrDPnwwoZGpmZkh+K4yW N480IDY9Jiiu
phirae1LTCfGBjsaCU8AAumSBGvL5E8OCsA82MWHR+f49Oa4sCRp2cjGvg+m aHnJ9P6weJz9
hgYfMOoPaKLp7Ys5+UWxlp6aUiIUTpxPQiyvA6No7h7o72lvrYdqhIgu+8xY MM1d+D6zcwau
2W4NouXlsqOO/WghsQj+xhM+ePNZfhMytpCmlJUdLiir66jWDT87GQW9iMaq BdXQG1CYD9fE
oqhP751ig1au8LQtOxOzksQcg7LfIGp50Jz2C+wmHk/5TPhxYieSM/0ZWTkF xTUtZdCwGD/7
oQQQVxHDsc1oABisJB2u85iJm2yf285JZsuWGCuLvUXpksqpzVoMU7YyKogk LF8KTrIQGmaS
kZNXVF4TlRSX4nHceaSOWGkkxSYN2bCIGGS7V/h2jpGdzJL4Y2SaWXYM2KQ3 SzOBIHmAsCMn
HI/v+JJ+WwAeaHyygCNqiqQPyk5B2YO1k6UjskkJpxaYGOHKHsUkG0Bl+duZ Ck9UxNUUw+8s
vdEwEfcSJfnj9bE08SsQCGXmUCUW5/EO2RCKleSxnQOlsqPPjiQtntbMTkmI Zrlkhl3282Xd
zvZpdEAvqXwOWdJkyaxARma4oLS0QGIseTszM5nlRHRg52x9w81ssivVlp19 J0sHiodEYUv2
UEJcBMpeLo/y2n1+P2GOJf0INTObKr4gJzPDCtmk6BKZebPDeelKQmTJzolH zwfLbG7d1hv2
eKkPC5b4gBbNLEd2TiJuevLT7BPRtI9lZuUVF4azMzOSbOg0M8hfOcgynP08 eqE4Ik/cpnxn
seA2Czpl8xyfFZulMnkODMD0mN7cz9YTceYX5tGqIlsryDZR9nK6cSNElfMA njPvsp6NJQgp
GH/yd2um2JKrl8VuPQYyzZLH86N4mt/MEOZFMHCILZsU+WKOsPYcOn4+ZLHr mEZOW7kRtEIu
2dopUd+OCkg38UTK4/B6PCyKPENZufn0Y4FAyp8K+GWvsuw0JRw+l2Hnf+7w aKQMFdxh53GK
j9+tByN0TRmZ2KXH5kVNfn8oK5yXJWW6b5vFCJGEKtnFmAxJvaMVxjPBaTB4 n+onGXBiccHg
7ZBE7xAJiiATj99mLYnEOWHWCvi3fTYpH+Qf3sgm2zts4kXwPGoq6EQOweBd FrMjEpMFRY+K
pzTpVNjWGgzS28UTtz0ZXq8wmyV1JvrGPA3/jghAqLKazo2BwJ3gbf9O4EW/ R7+ZH6sgspHk
EgqE4gm3x53ykOUxwyy+7/UlsU4fCxEmJdsFAw9k2/e23/Ld8dt8vrvyz44/ rFf4/VU8Hrfy
YHnwyUJs70YbTq9oxfTxv2KRKAPaLyEAO1y9IPGYH96GOwNOfUgsEXezjtvk XRJt6Aafw/rk
dQ4EGLAQW4oPxfMZPNEOSymvzeNRhFv3IxtVAa88mt+fSLiTSN7lE759D/nS ybpe3u3wodsv
8HgeHuq2z8J6eD7T79RLKGJSIOl3IRyko5nyoRM/T/ayJ8TXcMNCfF94g0ct fLus7L0rXk1c
9m5j4yl0jNTYfOgx3QYP6SLX8i7lfomfoi9v2hNMr+KHdpa7i/hdrA3J+/wo yWryOD7Y8xI5
XDyQh+e0s4jptiOph3ohaG57UnoVF8+lY5VmKSXCMR+tVSR8iDmJKqbiLheL PeJmx/28fpJt
zw6rCFGv4Uny5TaPqNx3EBCrIng+ghJg/b5HC0Dc47HgznTDsnzwEp7cgzx4 JJNVXvSk3IZL
nMAFPf1wsk5mgkeAHREvnHg82+4HHof8720eWZT62cPfdyvXjsfNgsIcP0NH 3hCvxFweLckj
yDt4jts8g/LdE5XKEooHesDSpsfpdsOy4pW8Rxba8WaKWYpgIS+L//4qOzqk uF/k/ZgOT2AT
uzT5sERyIt0db/DRAm4PnPCjHSzOdNMEyVKKLy2+ZXledDvkPcptc7m2kUXS ec8dEkP3JBIu
jwuzdL/jMp07LsNpOpTTsO0Yt20Oh9NpV7aUoWw2h+1lw0dvzKNDijXe4OW3 XYbDNEzntmGz
uR44eSHvfNVwxadcTrcLI3PZnM5tXoj0nJZr22kzWNzt4CGcHBZxGo47ht3h tL9kOOU9aRZT
8s+r8s7n5J/bhs1hf4+V7xmO+Ljb8wWePem6w7IOTprYTcNwbetF7hv3nJYR sDsdBosnpsen
OThiTKTiOxwqkZ2m+ugJ6Y8TJlb8nj5Xwh5SvmfKDyc5bGIkknzzQRyhTPEn PpNTXALYIq2y
4CZ6kwyVjBxn4ESAtLIG23fY5a53dkf4WkVvR27L3n7ZuhV1SLudoguNWvJz gRoidGlM1aMl
xZH/YXjtTpcYVbRQf439uL3F0f8TQSMi8Y1I9P8yPEiLL4vTX7p5QzT6Pwyb HaE6PJ5oMV/b
HHztdkeK06/mNZGIfMnqLnc08n8bhk257P/LV/8PIudn0fTn4sij/+czSohG /l8De4mW/P6n
SPqbEXmp04CCfHa4I9F30ZDjN4YTZUWjXzSIccQ2HMr5lwYGFI1+3nDZXZ5g DnvGHXlZQTdG
4rhnGPZP9I8jnzM8docnlJNfLCPS0uK8LOXP9tntPLRD3MSNddrtto8NzDEa ecuotgcz8gCE
aoDWmxtqy0vywYYzgl5/RkFFdWVZUR7tlM/rSNkN2zcNuzPCW5qDlHZ02O09 /VJUN9bGimWv
MMBdR1tDrLggDVdIE6b7eWX72qM3lmVHq5vY9jUxu7AwPz0+0NlcX981NDE+ 0FJLQRfO5+hO
JhUS6DQdAQk+4HfbPtTvfdOocIVjjd2jU4tr+w4eOrC+NDk60D+3vjzd11hR UsD4kLFbwXa+
j6qSvjMj4HN9SeTK1P4No8TmzS9vG1lcP3zm0tUnnzhzdO/K5tHDq4ne+ooS OnoV8VM/yuEk
aVxVHpufpQEK+T1u2zuGGz0YiF2WCRZUd0+un7ii7j14cE9dvXTp6tl98wAb 5WKYGo5h0zF1
c36SkyV0L6zhtr1v2OTdDZ6ckrr+2cOXd1577ytfee+t55+/e+PYnqn+thoB 1vRgIqJ32Mq2
03wpZFWeJz25CLjeFSFEXzeiNn+4tHlw+dQzL3/w8Y9//MOPPnjrzpXDu+I9 bfV1sis4SJMq
kG76LIXihEMAbeZk5WQFPRjUF363jC8v1jy8fObmWx/9yZ//5f/2o6+9efvK gYXx3o7m+mpQ
sNAj0O0Rzshxprz08SKV48wGYPWykKuk5HWj2pZdVNU6Kgt960//4i//7Ecf vpa6sDE71ttJ
p6UnlXqHleyeECRKFgrpSSVPhYKDPvfnxQlKIq8YpQ63Yc+JVrUOL5+8/sqH P/300599590X
bp5gO2B/T1sTs6uQnqgKtKkBX+lO2JNLve/WAJnP+Tk0Lh71itGK9/vyS6ub BhH4/Xc/+emP
P/7ymzuXD63MTQz2tDFh1Xvw0+CxHtjoPemm7t9d6D7oc70uDu8kVKTXc/my C0sr67vi62eS
X/jGR1/74I17V09uLk2P9Xa1sSdTNkDVVAL5aERY1hNe5dCYyvVKHytrOl8z 7IQc0mAkeh//
I31ZRqPDGwpzTKKmbWT5xM7n33vvC2/ce+bswT0LbCGWzU56ixw7QirSZ0ps cihBmrIg6tDt
cWZGwG1/VSKVJONI8X3DxZIZUpWUeEM5uUBXsYa++dP3X3nlpfupa2f2r+9i 17dsKVVNHmbN
slk4vSVNpvM5dKPSBEv5n56D+N2yuNtFjVBc9BzBNCigM4V6tsotzMsvrula uHD37k7ymSun
9q/tXkiM9MrpEdWcxQ7yWr1nAxgerA5HQyhmbkjWFqsEMQ/67K+wuMdFmVkc eWiU+0A3NHyE
8+QUlHfse+rmU09eOHV4bXlhdnK0v7uzQ7GdQs7ccGQDEJ5dkbI0xiDn6uhg WV0vLghG0Gt7
xXA7ycYs/oIRC+WBeZQUhHOzcvLKep+49sTjpw7tWZ6dTkyMcgKFvRpWm6e1 uQFPAiouzdDP
LOdo0hKRw2legpMAYz43C9vI3L6iyItGxJORCwgai4RzisoXrjx+6sjm8tT4 2OjIILvdVaut
rcNsz2trZd+1CEP0+AiXA/nMzQL/eHQMUGJewEdlIKWP2x+NvGxkuzPCpfUt VSWxupPnjx9Y
n58YVH0O2eynWmytbWZnRkdHW3N9bTUzHu0Xqkgf2JKHDWlJSCzF0/xuvSzl TTT6mlHsyC6r
6xtMnD22f/eM7GyWP7IRqLm5zerM4csGWfIRJCzYmkAIVjjjd0sCDoZ8tpfI O8pj90WibxpB
T2HH2XNbguPLPo0Gr2ydYLtBa7tsN5Il2RjHAFgiAfpy6cNkclaQ4Zd+Shqf kJ8l3ZSrHl+k
5C0jmNFy4dDq7GA7Q+Eazo8VyMb91rYOfVhI1qvU64nd6mOVHKMMh2QvlCiJ jtbrtL0gyZon
LGK5gGf0sY2lic5aUG/20ZYQoZiPN3HegRMQrS2iH4HdBCAEYJeQAKTAUUN0 TpdNB+r32J6n
PHCyYCAafcsozFg6tj4z1FjBUFOfzGFcxyCe40Bmi6+JfWQgz6WCGfpZUfb2 C9IjUAmPaGV7
CFroxWl/TqRIceHx6FWL848cXo731oLzyLxA77XTZ7XY3qka3ZyOqmCbUvog IHMugA+NqxKc
HYKkmVkeSZ2kesfDNPMByfN1HRc2Fkbby0F6H50AE5kyxJetb0QYbUE6b1hp 1hEmcB9Qik9m
TNIye50PRTnaNJHm7MW12aHmMhl8lJoxG7tSquwMi1W9V84CiKmXyAm4dKR+ tKRAJirbTlZT
ma6QdJEu1qRvY01Yz946s3uqr16eUY/MZAMc89LqZI1PFsTEJbYWesQiBdlN Ik2VzfBU8EqZ
aXpdzxleCjW45yHfROUHju+e7KnRNSITMWaAbHtl662q9stmM9xRRkuC9Qj0 r9HiR4BW+jFN
Js7IUpa1UyvSZ0YjbxhBe86BgyuJzkpOilCnylipzCrPlO2XMifTSUAzDiqr z0uqXI9EU4l5
ClRCpq9uSmzWlKDtlyol21F8aGvXRFsFliJPq/fqJ5layOyC01MMPx4tqA8M 6nPXv7egz+dx
3jf8v1vQsN2l0UjZsxx2u6fy2NbyWHNMRip6j3h6K77e3lfCkTfBZ9PnsgnQ WqiZwDXpMo7Z
Iu5IhRmwOdICiJTYXJbNZrebtBICBwTCAnUEQ+G6k1tLo81lQqaYOl7JSWJT DnuwPMOFAuoR
mzw6xQQZBlQ+WzSna0WxhPtGTCp4qlTitUCuwCEZJBrgsLAgrCJTVRAsjDad 3FoeaSwBDy2S
HoHt9wy39HjKwit2CAYyDHoEe+b8LiCkB3iwgKC60KZ0+tGodP8aYIBYRiZY mgwB9AAjt7j+
5ObCaGOU1fTgAFrSh1gRN8Ui8xcqPQ57YdscjRU4UwJvOEdHcz0/EXpC0P1A MqiQi5DkDBo8
EKuqoxuLow0RJMFRU86eM8PTJ+Qe5TKGCPpYtBxrB0OmNHZqhaiQW08/vS5Z 1OVC72I9QUfx
kY35kaYIT1GIsDn8JtLQy3EaWwybU9l3KEkYzGezTQLBAinpx9MruWUlKVT9 9ux9++ZGmqI5
0mLYscZtDsxQl0r6TgL+pzg9i/dRykkFQtJiLWEVGAYOXfcMl45lLnCHEp0X Ng7NjTRHckD3
C+SII7HV1OiyHHZMinvoE8acMJcxWB6ncmR0xP4DMQwFhkMD5L7LqoJteOm8 vCWEH9/ayYXx
lpJcxsr6UDdlg6QpPWaSdkACmFvPjwTmF0E6ZF2VGUwPciWe+XxO1nUL5uZV lLSSc7Li5xfH
O2K5gMX5enbKAV4ekgPW4sO5+XpJIprcQSCxwo5Pq4yAbncE6/D7HHcJO1m5 4cwAjTONJmvW
nl+a6q7KAwTVUzfEwBLg+eC2rKePsjuwAx4yhS2xgZAmBig8JFi6z0lw9Np5 UBdY9aMHZdGM
7ANr0701BVnYLBcS8Ig7tC56ZhEWayTwcIGDynfLYnqcY/pdPreHJMYD2jxA V24HRikdXcAx
eWBusLmYGQzPostqiVsUPDKwkz8c8Y3KkEMSmd6FJ8aI/WgDd/v8OC+xRxAd oMcIXai/98TS
aHtJDpFEr2gPi7S25dAVD8dyqoDDSSJhvZpYkJiQy8sTukmJPhzU7eGKhQi8 Blw1p/fE+yrz
GJzhDrDEagL1J2Xuy2wkiq700ef0HgGZAWqFeIGtAvaHEmhdHnBDMfAMuz2z /NjW1GBDYUZG
NquIFllFcb8BwwRJpQyh9JxLTseqsEabGSoK2OcRMC29IMEwlBGhmsp2erIK yhr3HJ4fbS/L
DDH5SE98WHNHn/BPMiKB3wwpeWTcpROqcOv2AgF63Ta9HraTkRktednItdk9 4eKq7saqms2V
iZ6a3FCI8aQoJL3kjr5PwC+LaVcRcB5w2ac8DpfPS4mi04o3lBmNvmAU2+ze zIKytpbqqNcw
hvfRcUbwgSypOk1mL2iazzKLsvKCYnp6vi3wumKcx+4OnjDg4Ql9dqmk3b5Q hFraG8wpqWxs
qcnzmEZW3tbceHd5Hvh5th7Z5VtMTSTRcz6Uuwd4bj8Wqat+HlaBpcvUlIWd fnlawAmbOHeg
KPLA8Hky80ub2uqKsrwpIyO+NdXXUJIdCmTxvHm5t5kUJcMlMjdCR+kmQkRJ ktJP6nZ6Mjwv
6VbITZ6K3Dd8/syi2vrastygc8fIDk3PjrZWF2UFGQPgythdMl2MJcMypdO1 Y5icSvMg5gjw
LAr3Ol1Bz4vCPxYJFhOJ3jFAlMOMbquLMsWbMsvWpnpaYnlsvZOxZzhnWw/b pCBDHvIFozLG
MzhhSOYeRDEP7W7A9xKQG8UKmGs0so0D+YP5kYqywmyf7YGR3Uxz2VSRzcAH 7es/KpzUQ7f0
XC+HUo9RHGu6tLGzqN0V8AIsiqYEEY2UWIbP6Q5k5UdjkSz/S0awbWaiu6kE /TNslXtcwj4C
uCQrGbJmM/jN1jMkJmfYFMNIWdH3slFE6pcmzUO+BCH0+EPZOFxultdOvR7K GZwe6a4ryvDr
PWqpHLl3wmSKJgurLBlp6VxDMA8QgoA7PQHpHByWS3kz/CUR/j+T3JCXA1ry qhGyl/RPj7VV
58vchOsYsp/L8svVNDpAiNPocRiG6KdTAswC/6SlDvmiERm8saMj6LbbXifw to1PDLVUFBD4
HDxBjgxdt/VklNUs2BM7TA/VZDEaUQMMMEtDiL5oscx2Al6XzfaGEc6qr45W D/U11xQx1AiG
MuWympQeteGakkTForFArx9EPOClG8+hWHI5QaiRWHFWBlW+w/amkRMqL8/z ZtT19TZX5GUw
sCFWyO4KmcsxUs0weConvsEkzi/otWDSgAY2u8ME/nV5o0U+l+NtIztYVZnh MGy+ku7elsqi
TGjLjr1Upj0kFuYRMUlcRn8aofe6HSAPgLpJcGRvtNjxecPpjtTmAzZnOCo6 upoqCzPTYybG
pU49bEL5AZdfgEeJKlIyvUF+dKIyVkDUbxvAymXlGfakwUyktrOjrqwgUyaE Mu+U0VcGQz4D
dTN7kjGG1+ayvwn6ZHea4KOUeAJUumyeopqQ7bbhK+nrbK6KhEMyQTNDeWRT HW1lRk3293hd
3oDX9jbvdyEHxq2eEt7u9BdVhiSXeWPtvQ0xBq7MchQjR96X8ss0B2zd53kH I3G78TLqkSgJ
3uHMrw0/MPzhuqb62orCbIgy9BFSfOY1bvf7YDO8R3w0GnG+DhTrL4iFHhhF TsKWnw1IkUhB
ZgZPJvleAGe36ysoiYLHpcMDb3H4CsoyHiIyry0Jn1yOE/J8D9MmMFHXRiIu jM32Ih+evEiI
ntLl+jl5ySUgC800cL7TSWQExMrO99PCOj/RVSNtIi/xk7JdCoMCpX/OcNq9 OQU+8GJgSsOZ
cmUwgYlGZCLgANR2Uoy4nIGs3IDtN8a2pH/JDLyA4QAkQPfv0H55Atk5Xtvf 4NkpuEZZbOOT
0YYlL3AkDRQG6OOz/42R55DajtUFQ8csokUMPVCK0+ag27BkrYycLJ/zP9F5 mq4A4zbxJh45
WszCvM5wpAyPQ5YLuux/qzkyMQddONEpexWa4o9dEcUcDi+vA936O8N0+fVw S2o29lZ6TZ4f
d7VhGQSPnKDH8VtiMmlEl54ykaL8Nb12HiBJSUFyycwOeFgITM90mXqKCD0v HmKTl8gELJSJ
vzvtvxVtKD2yxPJEHTLeYrpD3NIpOkRU+HvB+fVgM+kFmaVVkTmauCzMykLu v2PGolwyr1S+
cLRE2hn+itBkRs5X/6DjDSCS/seCsShNjx7oWX4XG2fJaAqV8ChUqaRI14/l 6VOIGx7dMo2l
ecG79AhQvDdIUt12W8x45NU/YfSww0zRyytdPCLhySRtMQN24Ni+HXdKRjtO mymvdn6sMYgU
kyibjN3tkYh4g98t1y7JrV4+ZmBuT9K947Tb5JUfG07Mz8bcSDhgQoavQQcW 9MDVkK1H4lBM
M5kWYh8umEW6dqfb+QNNa9tl6bcJI7R7cn+YKx24LJl/WgwftTdaomikYDi/ T87QQzV+ENJq
xh70W2UXEBGD8SpRjwmnXaBVJ1NM53cNBZd39XssPUqNRKBhBRCCTB3dem+F jFvF3vVb7iEQ
p/M9I4k4vDJi1JbAsJnXRUvSMvTbUbSMImW4ypvTBA1mcwaVML3xewRcp+jX yaRO/5QZaHoF
MpiMs7WmTe893utmCMdLnA6X3b4jnmOXeG0nMtK8yypMdlyuJINHlKgnlMXo kyk7ATbpu088
dCNMVM2AcsfOzNH9Gu9zOW7b78j0z0IH0prBg6e4hJodjb7GtinZFWAibcuf Ymh/32d5LT2M
hakk8s+QOE2B6ooWpnckEVXvB9DqHcksstNHdlHI5gJLz/9lWC7zf8t7F4vI 0lLDR7Ck9NYC
k6x2nw+xK+W7z5M7RAiWTPyxee9DUftDMST+uiOFEspJZewo8z8MJHnTNnsF 9I4F0bNfT+bZ
NuC9A9fKE5BIQwOrcQNe7X1DT61ZVubu6enxXRlnMzc1tUllEx2Bipzwxx+Z RXJrwQ4dPsgF
zTj/yJDRpN2/p0eRdn05iL4wI1q8w6wyGbEz9+Kmg+h2hIRWJCdtS/Nzbt3a VmbSMk1lmhaf
rFumsmymmbIUaVy+wUfKcvOFfK34aYopMa/mFbcU2uK7t27xtWU50q+232I1 K0OWTFnPpkxL
pUwugmji/pTWVtWWxaFKzrP2yvnz/n5uOxoxRx1y+ZDJlHYyObUznZqSSW1q 3DHGLUhq0DWg
b88xu4wOBZIsJ804KMjBSI5kWRyQr2H/dawqVmGlmhrkKhiAYc6tcp1SF0e4 +rl1aIiblEat
cTtnyNSkbWramrFzJ1By1jk3Nzszb844p7kaSK4jmhgHCB+F6PDg4IDqN/pU j7cLABf8trkx
KecTVUMJZ1u4XEK29gN2xlKqqakVgmC8bWC9Xaon3NsLW0PDw/p03sREPDE5 OWVOGzN35rcX
7PPzs9wTNM0lh2rCGLNGfUNDPB8X9sjJYjsXPak2TmM225qazSY3l3UJMbM6 KNOpatOUA4xN
HNb0yg1YPX0QUoMOLokaVWPM5ycn1ZRveppLjubnF+bn7yyYi7b5eXPOPjsz raY4TD4xNqZG
jWFzyM7lBqpXdakOO4d8VbNfNh3KsU9EynVU+tBCdWVVygLB5hBqm49jwBzB 7UFhajAwjDhH
x8a4yGlqSk37ZubmFxYWl5YXl+4t25YWkwv++ZkZLdL4xIQaCyFORMopdbmT qNvsyJFbWDhj
i5b0ZSzguXKmtqaK4c4ts7mZi0s6kp35cvEWyuO9QmwCapPT03Nz5nwOtJZ3 7eL2o+Vdu7kC
aXV190py2Vy0L8zNKBjlCFhcFKlGPEPcLSV3HFgdRpvVWiwU5XIiuaBDX8VS XVNpWqD+ba1m
p79LjLIfc8FYxnzoLTE1PcPw11x0Ly1z39LKirnbWE2u2VZ3qxX/7hWuW2Iy jAmZ087JNK8Z
o1zbNTjIdVZyXUUH9tqEfOU8MdLV94Lo2+QYNlqQZYgj55o5RC93Yw1xHZca z+d85eTU1Cx3
R8EmVHetrK6tra5Ze4x1c8O2vp7c41uFc016Ts34p7lDa0Ku8RobUUPuwX7u Aujpsjqy2zk5
rmnLwE/OK9daNVnKZHzQro9z4xtQVUM2oRqKY6MzM5jN8uLy8m616lzbI9c9 bTg3NzY2N9Ve
O5+sDf+etTUEv7Sordg1PS1sqzFjxBpyiXq7O01YtjhLLH4oR/g4k3/L5CK1 LhzDLST7B4bU
iHsUf0efaiZLTEdUubpnz/rm5t7NTWuvud/cMvalNgs2Vrnk6jMhz2BPibgM qrBfNxGhm3Pp
ZocdPs02B7bbYNZxYrG2vaZWmfCItWoedYgZHsUTMVd8Y17Ldffa6iqM7d23 tW/fAXO/+8CB
gwe5bcrayuE7m5vrXKvFdVpp9WJU7sTExDiU1VBILiuDdAeXkUDaasvhVAom LBcQcFjOMtO8
utKU1UghrMbjCHcWymK3K0h2Y+/erQPmQfvhQ4eSh+2HDh5UB9RB+4EDe9Wm a12YXlYLdoKT
mglMJYSwXAZHROqzcQ9Al10blhtFyklts75NbKrOsro65IYxcRtheXQEjuOT cKydcwW6EN7a
OnDw8GF1VB2xHT1iHrUdOawOqcM5Rw4d2NqH8Nf3rML3IvqdUbO5U5Na3ulw SLjulStYVKdN
yBfrU+JyC4smbv6euOE6MEqsTQjtxcVlteJbW9+EZWgLzWPHzWPWcduxo+aR tqPHjh49sH/f
Pi4TW1vdvUuuTSN0zYmqH/GdJs31A1xw0dXNcLKw7f+fsBhWbJSoRJjAkBe0 UW1s7t2//8Ch
w0ePHzt+/MTJUyfVCfsp/j1lP3n8uDqmjosE9kf3bXKZ2epuLFtubpvV3qyl PjRAxOuzceFF
j+o2252Mzzlx3GBg2kGY7u6RS884GD2kRgvH4HlaboDjcrYVzfG+/QeOHDt2 XJ30nz5z7rFz
Z8+cOX3mtHmm8vSpkydOnj554thhueIM5je4uwRP37XMThPcGdZH1bBBCjJ7 jR7V6+XGCWae
EDcbA/qiH0shkt4+1W8bGDJHciE9NT2H67LG7o3NrS0IH1XHyk+cOg3lx889 dv6xx86dkWfg
lrPTp0+dOXv6xNEjh5G8du01c3f2Li5t4bpeuQMQfyEjkSBccuFFT48eicoV i+kEUVt7S4k3
izMPIvQIp7PjmryEqrTEub/t2LGTp8+eVY+5zp+/cOHihdT5bCRw9hzPcPqk 0MbeNtR6EY64
e9cCGWoyTRypSzaUTNM3LneoyG2Lj2gL56aJkT+iLamBA+mTmjZ+tYnA0fUx 0TRXuj124fwF
9YTtyhPJi+pC9uPnHzt/4fGzp04cP3z44IEtApu5HlhdWYLvac24GrVzdd52 fxCqBO92fXMe
h+g9mqpc69LnFo5J7WqsBF0vLIma4fbAIdR84tSp0+fOX7h46dLFJ540ryav NFy+fOnixQuX
Ll547DRUj4mTcWvexiYuvsztgNNTk4/CyuCgGrD9LxWH3BkmpNn7YVqadD3J UEiTC8c16T0I
+tBhuD167PSZx85fvHT5ytWrTz557fp1dS15Nfzkk5cvP3H58sXzZ8XauExv /9aW2pclMXVh
fpb0LB42PjKcHBQ7g2eukNGiJnarRk73EVGkRqPGGBgkoJCdxsbj0/MQ3rv/ 8OEjkD1+CrJP
XLl6Qz3lun79qZvP3rSest2AvLoSunb18oVzZ8XGjxw8cMDcqttcQ83kjWmy 88S4eJdwI/4l
xZ1c0COXbHCtimp0NjRAW2HdG3j/wGekF5ZXN7awrGMncJ7HLj5x9dpTzzyr bj1785mbt5T5
7DPP3Lz5zNNPPXUdKQj1s2dOHT9+FFXvxxv2be5ZlegyN6PTJbp2insPSpFn 9Wajb825vpEI
4n19asAzKKqmGFBjFROJ2UUEDvWjJ7Cs8088ee3mLSu1s3N7J5W0rOR2Uqlb OTzLszdv3Lh6
7crFc6fTpNVWJvaxbwPmJW3OSp1J3aeobbmnUfUXw7y+GpK7TaQq0tWJZYnM B81hmxCvGed2
ydml3ev7uBbx6Omzj1+8fPWpm2bq9r3nHjx47u6d2/IUPITFFvtnn+ZOwcdO Hz98aP9eazOy
l6Au+WQXSXROaxzWJbBi52a/yd4MEhkVObWYXKtimbDMjaMjoyZPuDAxMTm7 tLp3a//BoyfO
PP7E1RvPmNu377/w4ksvv/ziC88/eE7I37t7996D5+9tm89cu3SGkLJ/HzlE XBrPIKAT1Ba1
0qfMuE/qz7TCTXw7j6s301sj5LYRTVrqPGvcnMiLT88t74HdQ9zMePHa07fM O/eff/l19ab/
rTdeffnFF1946aWXX1OvZr78cOfZqxfPnjx6cP/W5trays6ysWQtexZxLXwr rqZck2MjRLIU
5HI0OSmHRMSmKTWsGrcmiiQ5T88scg0koePYyXOXrqud+y++8sYfvKPejfzh F/7g82+/9dYf
vPveu597+bnks1cvnT52cEurc8lcNObNWYPqzz6zsKDm7VA1Z9xTE2PcLspF sZgWGTvcI3fD
6VvL0nQlZGECCWuyh4prDpvef/DI0eOnz1+5Yd178fXPv/PBh1//5te5G+z9 977wtY+/8aW3
Ht5OPvXE6eOHthDsrkWqAogIe1yiaiWMWTXPx4yLKDY5PmoNuKiziZ+qr1AT 1qV2c3ODaXEb
qr5EY5L2p392bmmXJnzsxJmLV55OPXz9nS99/dsf//CTT37w8Udf+/aPfvDR B59/YfupS6eP
HtzaWEubrg5YkyruxIbGx82xDJ3t5mb50bTc4moN2PFWroNie9IjyqrZgTEj ZyfF1/SMOb9B
Wl7evbq+D0ciejxx7dadF9/+4Bsf//jnv/z0z/7kZz/641/8+Lsfvv3w2Svn Th7ev7WxRyoC
1JmOlZMJ0iKlnIhwZGSMi12pVmcmJ+gtiJ+KOGb2O7idrlN1+CR+omhN3DWR mCJBWLtWV3bv
Wd/YOoiaz2hxv/T2hx//8S9+/Vd//Te//tWv/+IXP/jmF543r5w9enCfVCPU 2MQLqf+klSE1
paswyns+TcxKqo5PjIxsD9r6IWzXdNmMJAbWZFpa2vjPrhVrdWhtlWpgv44d F64+k7r/8jsf
/eiXf/mP//xf/uWf/ulvf/Un3/7ii9aV00f27xXXoc9g6dk5IUusio+Zo7kY sUSEoSHuqluc
1VXZ0FBy0DYghPt6IUy5rzk2b42NjscTc1yHptam1tc39lLjkiaOnTr9+KVr T+/cf/Xdb/3k
z3/7r//1v/23f/+Xv/70R++9ZD15BobX6TFwWipPaMMypB9V2/CrMCfPANcF zyIGGkiR9ZAa
tA8MUpu4051Op9kebFW3sI3Jybml1XWalWnK+b3kxqMnT5+5cOn6rZ2Hr7// rR//6u//7T/+
+//x7//86z/97pt3uFrl6AEpt6kBdq8sEivmoJ4mTktDjpDLzehU+5oHaFHG xseIyDwRsqDL
0oFT+qfuTnFuZSLx6emlXWt0LpszUmQT+Q8dOXHm3PnLN9TOw9fe++gnn/6n //If//0//vXv
fvnJB88988SZ44eoejeQO0FSl37oewrn0h3VKCkKKmaPn4uZ+8cTfG94eFua 534eCd4P02p1
dpqmVCDzSxjX+ubW/i243jpI7ILupSeftW4//9offvOTX/zNv/7X//j3f/yL H3/t9dS18ycO
b0F2D+3U7l1UbRQDYma6ApLOVTKTTouAHu6Bcdp2rs4btoTygNWX7M1C5qbF PXsQ1SXXfnWo
8QDMHjx0jPR06TpUH77yBx9+/Ivf/vO//PPf/8VPvv7m7acvnTkmVY9oerda di7hVwJFSCRR
Ez5NdVioqp6g1uggAsDS6XnsyNwcdJCSSIsGvPuoCa0paSuwMg+FiLgznUTT sROUQFeu34T8
y29/6bu/+od/+kcuyvz2HzxUVx8/dVTIw7LYGaKeV7NOsXGAF6h/Rl6uVwNr 6GjjBsqx4RE1
7NVQCgLB4qyBfC2VW+aM9MbkF+EezzqpTldSfZ17/OKT15+6lbr/wlvvf/yb 3/72rz/96be+
+NC6duns8cOauFr1QFybmZrxaIwCQ1OjPuFdbuzjassON6VAFzHGGsHKh10C X4gU1EBGWiVC
XCMParVpjXhy5PRjVJYXLlIKXbvxNPp+88s//avf/OZXf/zd97m7jn2bRyQ/ wTnUdy1DHGUr
ksY0vwOjUJsZ3KUbWnY2Uga09SN5NWLQA9hGxtSIfUx6e3/6nuxeS80sqWVz l1rx7t6zZ3P/
iXNPPKmuNVyl8HsaI3/r+3/x6ae/+PE3333Run753Mmjh6ShlTubV+WC6Ed4 hV/AGe1hcDaQ
pe/0pMOQEqR9cJwLyEe3x+zEO2vITbq2zNkFE5pqqZ4Sf33z4InzV566+cyN p56+fvPZ5Atf
+NmvfvWnP/zonZfNaxfPnzpCobmXIkCt+XBqoQi71nRUSmwdvxG0XFgo3LZx nVxLcw/1xoga
Myey8W/ddCHwwaF+05xesBbVkm1xUS237lrbOHTq3MVrZip12zR37rz01V99 +rM/+sa7L6Wu
XKCZObhfHHljDR9c271KI6VmfQJCSSWQGFeIMqCvxRbUAD65eaypbYRvjxnj yYlw2vppJ4Su
ZVLlLi6lFmoBH5ZJVkdPnnv88o1b9164e/e513/wq5/9+HvvvZa8ev7U8UMH 9++jd1u3wGTE
qEFkZqfNKYeGRUYNrLcsTVQuiNURurG5fxSoRqMRtOeCGfGyUe/wcN9An2VN z6lFRS1RRyxa
XFpb3zp8nFT1xPWnkrdf/9x7P//5T77/wau3nzx74sihg9Iyr+9ZN/f4wCpW uPlb8ILpoERO
8oOOIZgsV20+Iq6bGZya+gp0lcrHRhIf9XOzan+PacnN6Go+tVC2TPTcOnTk OKnq4uUbz+68
+eM/++knX3/r9o0zRw/so01Wa471VUx5TxCOV6gLdLHFb3zxwk3altVAoWAk aZ6h2tzY2ie9
sWRwM54HccSNyWtQV9E5clnoXHI+KreMb2yRq46fOvv4pcvXrTd//vM/+s77 L944f3RrU224
9nDL+Z7das1YVbtxJI1CAfdxeodjPKONunEUqOAzaTdxE3Bj+wjpcIqyB+Ji gYApOJvqdUB6
Qk2CYQl1NT+MR69LQ3Xs+MlTpynwb33xj3/68Vc/t33hxH40vCbEiTcSvXbr 0kAqMcnQGqnA
wGygQwM1GqmQ5pH7AkGiG+uaByeoL4U6LxUJSc8zqHo7u61bcpcaWJ+AUvP6 inXaVyI46fLi
pas73/jZD7/9/kvPnjlEehRwAsIWLo8bg0uJrkNCXOeLManoCc3g1bnphrml sVV+00Mj1AWl
U5MeAXO0TUDc2W2ZBJaJCsjPzArqt1vwCipgrlo/i5Pd//5Pfvj1d+5fO7a1 rlaHIU3ppBHQ
XcuCyAEP6QbyUboiPP1Pp5bYLT2kvu26eyQ+aU4FMRFqf2FdcPXedsj3A+li EtidkF+hdydV
Qx244tLTb/z8Bz/40pvJ84fo2nbvXuGPuctYVrvUsh2lC36uk1ZIWCdUkhVF 8ao7uzPdxslB
gerq9iFBxKfdczNTAiyoYYeEWdXbYlncKAeinJjUkOeulT1ofj9Gj+Yfu/T0 u3/yyXffe/Xm
uQMbuoNZUbvsYGLmUgb1CYInT4uPTfA7E9y6i5Vqu1bM7jPQQKhXcQdEYkrg t9kZKR4lvkjN
onqbLDNNXsC5GeBIjIrqEO7Jno9duvnVn/7ooy++cP3UvnVor5i7XJAFXDcX AgJGCnFp4YS4
tiXaOFt3j+qqkCt1AeXkiERFrKojLsTnZ3Tlql+pRY/kuRWYEvF3xFfBXbeo iWlBzj2hvvGT
T77++fuXjwtMQDFI4wjPxF9ikg9zp3mnwiNoHZLiSIAaKVO4QhhnFziypYnr SDn0X9EeB8Oe
WdBgFsEI8lLJ8YsChPzYqLY7QbhpE4GrpLGF/BXzOz/54Yevb58/tL5iLrsB 0kAiF6x5m1i7
fXI6ocZ9pIh0lBk2+w+Ks4vY079shIvx5S7+0pYJFp+dS+NJGlBK0zbVME0Q QBmNA4Fd/04D
qY2Pnjh55vEnre//5OOvvGKdPbSGd2sgcMGcD8goZU4C3ORUXKiLvWlNmv2A gmZ3TIjL9v46
uaU+VhZtnJiZ+R2YJVpXQ5w7E+LSes2i7uVdq8h8gxpRW9yZs+cu3bj9vR9+ 7ysv3Dy9X0AK
wUBhnPhCkaKmOSEq5gZhsuSwTVADan6svVwMro0ruBuYRMXYZR+tH4VxGQik OaeIGGpOE8fO
aLzWJMRISSyOBihIzXL5qvncd3/4vS89fOrUFuHcXHAAnc6pWZvA3rYp+j1z ghGBOWKwmEd+
B4oe4nQNcyRHX5RfWS670iN1I0I6PoltTqAjnX50q28ureDdsCuYIPw+9riQ VZczr1y/Yb34
gx9+7737Tx3fu2txXs3lE9CF6znpuHRkJZOxljnilfFRv4wBze7xNNtyGVSa OMerakamhbr2
SykipIaQsKAsGWdoaWtc8NQZoX5BXQ5fuXpNPfjBJ996//6NY5uSPCGdhOsp c9IdFyaI6WNU
YJq0NnMAYNUVlWEgIKg+fKFvtKgdlSojTooRv7BL/htugLRpEnlF38wawEQJ 7fIAJwEJzz52
4drtb//w2+/du35sY8lkiOOm+pdkovj1Z1ITgA6hPSrAIXPAzjyH33XT1ciZ H/ntKOhajn1w
E1te3ThzRA6rTkL6kaEPDTNgYeI6CmRFZhE0enmFe7Hxsn0C/R89fuGZb/3g W+8K6UVzzqAy
c0i/pRJOCMdp611phwH/kmJTcHfVVULtIr+JAf/SpNkeWR+fJq8leGhh28YQ d7gRqA7oanBw
RABhhi165LGE1a1vYHaHj5y7/tWPP3r/3o1j64vawhj0qoTF26U8M3ApsWuT WFZKAiOBiH65
j0Xf3ZffGJ+empmGKU2wUIc0gRCV1T8k4w4dz3FttVAnHiYM7z90+sqXP/4I Azu2B4R5dpqs
Rb7FP9JJm9ZaYdUGHmVqX5ZRr/wCDq7B4liEvhgxq7gVTrBHnHAiNWbDp0bd I8pEzNRt1WCx
mlHhVGZYGNqRYxc++P7Xv/zw6ZPrAmvr0fKknD+esEPSYv5qaZK2PjpI1b1X 16P8ygK4rRSq
SJctrVX90hDKQWTR7fgY8TQhVeOYqYgngzLQGpOJL14nMWW3jDr2HTpy+qUf fu3Lz988vbk4
OyWj0HQbr9WKwEb1iJD6Q4r63nEZUkK7RTjmOGAptAv1LYmNI0J8QlKNJg5Q hapnZiZTlgyX
BKiDOsTVbGQe6F2qh829h0+lvvuNr7xx68zW8pzANVSFcYpMa8wrORrohBau 36tDCCkDNcek
UKFOgDiRkx3berdxTtf4pLxdopga6wZHIfYmZujPTVOoY148E7xP0ayTQyAv Dn7w2NWvfPur
n08+fnBlgd9AOGlQICjEjWnSuw26YFl+j1NPFYABXBM+5FCeHEQr5qaT7JzM QG6/LKrnqRNJ
ANCM+NyuFYjqofAg9dJ4CfWapBYJ4sw6wP4Pnn/joy+/c+/CkVVynSJFgJxS +JvDiJlWgl8Y
BUmzq5DrtOWIFQ6kxZwvUg75S4aY2LvTE1zCTXiUzmdsnMZ6Ts8bZCgMflUn Ew6gQpkf8qt+
qJEPPP7wO19+73mu1V8QrEJMWfKSTLx1pkW/Zl8KCRcRpeUAKdeDxwiUcvef XK2V0TBGWRYV
9eq3ih+NCqA2bVpy762o2BwvQcM4FHQhS7I8eOSc9a2vffD602c2lrAONW7g QHZ6JpEvWJSe
k213R6UWSLsRWYl4UZjPtUhsqvUV9cfh16EVO06PK3FGPJdihOllmi7/y8BU ptHiVKCUaxv7
D584e/OrH33pc8nze5dnOKuYEqWaNMQYcnpCRYwiOncWS3AWMQu33HaUxwVb bIX3Vo8wa57i
SmyJrdJcIyOZkI6Nxh8Rxp2HsSqhjDfL8BDlHj5x4fKtL3zjgy++cO3g2gKE 0z2dVPpDDplM
mIAlRrfV1aIrkM9IczKNk5icCWUzmi+jC0fRdZPkMhpgUY8acgl185bqrsGk oS1cS6MwM7so
wOzhE2cuP3Ptxs33v/TF126d2FycmjA1afvIICAIdT7hymIUq+RXf0jJhf8Q Jwty5ZhqMOAq
HiFgPBrxwNYoILhMM3DA0VZLya8K0FTZoAJkNjOzuLy2efDY6cevPnn+8RPH zzz3lXc+d+f8
oV3TcQFazWEEPSA4nIxpzO5kFztoBVWWyxjLKTvkBlnudpQjbT5/i8RhYpUk broiB8EGuLCj
b2B0cMg02UQi42nZY8FjTcLsBr8N6cLlyxeOMwk9cOjyO+997sVrJ1bnp2QA qobAs9O/OMvk
9w2YnWXSRMtoqlo41reR5uo99RzpgOXxuJq0I2Y1rgvz4SG8T+8hIRkzr0+P sobYuDI1t2vP
gZPnrly7dOoI4AjZYvPICx+89er2pX0r07o3BUQ3+w3Ua1HrwO+j35DBEeFy SYFykZXcwZTh
97sy09tTEvRX5lhCfEnv5tG/Lq5XCMsv/pB0MZ4AGN08eunS+TNHtoA8VxaJ nat7z77w9hvP
q5Nr/BKQ4f5eeRchw6nH3aozJpfQSxMtv5JIzFpfhJ5mGnE7G4hxLohT9qhR lwzqKXr4nRf8
ArRu02IbREdnz//X3rl/VXVccfzyVIQgGI0pQZSX4AUu3AdvvCAvRRAFA4aY aE2sMXGZNDVp
Xk08M+ccHsak6WpW+lNX/9T2893H9l/oL+PShSJ3HvvM7Jkzs/f3Q9VQtUCA fPLZ0w/ffedt
6mUp5LVvc/vdr/71z78dfXF/E4wXFxa2r5yoY0vNZBri2kLd1vUMlfewQJDJ Lr3FtvaTpNWf
yHUtz3NIpzADTjuyyrG4JsV0RYEQpcrkbHVxZWPr7odPPn6wt337JushCwuO mym2uXMv+u3X
Xw6/eX9jaZ4XOI5x9Q7lOM2W6v9Yo+GhwLL1NGc1I5dHvyNyBxp+V11gArHP 4CaFgbKomrUz
ZazACSAMJSLEbGoOV7q19+HjB3uAytbYmrI95EWc1YzOb+3cf/7r31+mn+5c XahOzzDCiL4i
oGSHe19dRDLKjDGJHKoGmqWXK877WO51bhx45gpLkvPU3LLKWViIOimNlz1O dGZ+6frNO5yE
7WxtrK0uLforHXbew/py9frG9p2PXvz618NvH91amZ+zDV4NF3HwE9sVTaIk d7L9lSrOziey
7ODmptrmcrU6AxOQjkcL9Qw0vfsxRvHyuq0ulSM3qwuC27s72zfWV5c46pCD ZqLpSm15SQE+
23t/Ovztl/QvH2wuzhOw4yu1fDIem+CKyIgGllJMapK2AaZp0dTYNlylgzPz czoh4/2nmtla
V4elpHgycvPM480N3jsUIUNwTlRVTNHCOV034dqvrW/tPv3h5c8v/JcP1+dn he1gMpY8146c
h8lbS62Qtxey/063WbaRMm7OlphIePhk7jwHcyylBquxoBt7QM7zprWyrKOH aLpVGwN5tCwy
jbX0DZ72tZvb73/+2ZMvj45++PPDzXnOdyvFaKxfGdQ6neF9UXY2XWPTusxy Oxubzk/azfCb
2vjrt0CMME/sooOPFimkdZSrJa6EXl1CcEHRNGPbBJ0iuvl37Kr81jsfPb6/ 9+DrNP322f2N
uakpC+Ig2KwgPIB2AxLAlAK3ieNK87LxWFtnCSdPYeYK9OqhrRNt56qBZ+VR FCgUvBufmhqv
xKXjhKAYyzG7k7l8l6F5ZXn91u4fHu7evHHrvSdR9P2zh6DPjJJpYWiE7Jjy nz3ps8pfVAIa
gbFn8pPye4rjUiARJrX6ZTYFQxSJoGsujHg3VirLMYBFqcWf+0nu3VjROuj5 lZWN3XuP9jZ5
h9u688l3P3z3+e9vot7AZM4XhklZZ8GQkjRJzFqrTA+Y/IfWzuG5KnVNm4Xh QE6ywE03MlI4
UwC45wunRgiXI6Mc0xmVA6827iZrpmbi2ZXLC0vXb3/waHuDrTJTe+vu06++ efbx3evzQgXK
eQ0i1GsStdrP6zErna29Iz+Lt1UciR0XRmUc/VSjRgif8oUGxZF6Z1wDIjuj oivVEU/Kjt1N
N/OUF1c37z3cxqe4KyOLq2ub97/+6stPH9xenKmgUnwJWJ5kXLWZZ53INA1a 38jPzWFSjh7H
J8s4uTq8cxnAlBmb8AfAkDqidUO1eQJoh6NCs+X6EzxXZilwk68RrwebZmV9 7+GNqyxy1bzt
g69u7D569s0fH7+/c61aoW56a/IsvDVJjrLt5OneIoFoXERr2S8RuKZXWEyp W5aofIowOXF0
dFgJVWZw4BKxFMMNxGEAW41GiTKj+grvvrMK/oQDtPvRzdUF7eXZ+CmqbgWT P/6MeIf33l6r
jo/lJeTLGmXYYhTUL03oUimarMW1R6UThMjiWwkdGx3zxSZgB7hrdEPyhLoo uGfwuRvyw+eo
m0E+RhAvPw/whwZMzy5cvfPgxiIzMZoezmJ6q4urNxSnt3fv/l1OClHZmSyK jopad2GcaYuD
1GmF+C282TEK61RzNNRE6KXFRhqqVgcoGZ2p1nkhOxRcbIIVUTE3FpXayqBL F67evrdxxQoU
DPYcIK9lLr+5AWYzodeBTZ1w2k5a+0Ickk6mmB6aOYKbjNRa4Fi3IngZydhX fsBAmRaI6hx0
CSEPacEZNldC72QA2unq8vbdawgI+YlOTUqN2Xm2WEtcCmrjyL7fdiwz3uBP IvVEBIDWUgKs
k+GaPIGRx1BkQDtBkT01skDL/6r1YM3cED/EUMc7jIzAfS1VpqtL62+vMkEq 6XizIXA5yGXF
mEqnG3FyOg9hliokmxWzRpOUeaK2w4zxAzWDlw7zJxS7LPIvPRNpxQ2lw6c0 qCqTlxfXt5fm
pnTPx2ynAibANBGDOAFGSotOHTJfT6CqYxNEZ9gDOUxIW4FSnM5Cdw0zIAan BV9CqTjFt73j
33ngnIIqivc13DZSKE3MLq2tLc5I7IUH4sot+BmifWfY8+PBM5hVbjwR0or/ j0rgbxksuk8f
EmtIUv9RX5OU3CFJca4NKBKAJL2zlngiXS/VW50OO7ZS8yjS+tfWcLs4objo S8fp6ZRukyd8
qUHcviKRjPUMbq6tmWYgeIh78vnjFiCs0+OD3nrACf0XHULqqH9499+eSmEH mAV9GxWGbLk6
VVEBclGEaRPbOw1stsLKnCsTLT9WXywymRzlx+CLFJKbiBsH9EDYJOTLXR8a 6qhMQB1DFCSK
JbORmZQvYPaoB9V+vDjvdCOuEI+dUKR7scI2tVI8GquFv5oSq14nZQ7HQ5D2 fdpzJPD4wYVj
XZGHIQHhj9hcN3iSgocKxcnLiLnbfZQfqWXQRawrBYqcZEgwLRNg1ekr3qlN Tc1NQAGuz6N8
Lh5QcqHd+A1y686pAoZCPNhMy0eKE7Nz43BU06E6Bcv7kUbQNcLuRoUEGyQM xZgwYWfgQJTq
IZ9dMAivwGjnU2iBkqRyjsF7ONACs6A8OScVJlbsw6Fmyy7QAsgLrhv+0UJB E+E1TAOePjux
RCX7lHZJYBrmN5ISTRToNRsGLiYDLeAriiwB2ukNXorz+0MsNhJ1+YnRk/Gl RHwADCLmic8Y
pMClpFyCFEbny7dIzxAYEKLPwGto9w4xpfChCi4nHWJQeCyfJ4GAOPrhg6EG 0dgGBw8zbqHw
k747ybCmyjpDj0KiUmlHI2IboD8ZaAB0BppgK4yVUYvK88mMINSMg5LmjoU7 GxfmSOQUHosw
l0jwg/lxkjiSaJCT1HtnA9Ig0kDpqDU8LTo6b9p4UIoBX/DTw6UKx08D4FfU dL4ONgicJDBL
DjPgSzIWoafVyLYI1CdJi7gDUfRXOh0Afk8/j2wQ2G9UckZLoxw/ADwx2BIl gE5hhMhWEtNK
VR2tjnn4Ijb6Lk8iTdpxzHQy2HWj+EAGvANt7RldIm+RniDahNSL3MVUQJMB +3MRX8fYFlyl
L+mP++IeCHM9PamV6sjEqekQnltSBAdnJUsm2YR6jxHoXZPIIhlim1nTn/bF GpRU5i4e9hmq
RfCkWOgt2ZQ/nr4nIsIKTa18f3dGrHQOfC+2yCHSebFk6WJ/ApCyV5xTkdgM +N7H906IcCVg
m4Gu1Pl9munRaxH9nT6bXI2p8GdqMLUOtEJ/k4YQU4Cmxv2HfTW9YvthBXGW +lIePRw0Y4Tl
ziddcdZth9CRBDmcIOgSiYOjTYGt3pFbYox1sYyZiEjmRAKBpFm5sGJxqb0J D0f4QJEYEabv
kuwibMusUJ4Omgwm/ICKBJISFIpzjgbqtRTQRsE+fN++NVJ8Q99tszMxPqc7 pyZmFHor6Gxz
ptCjPYukFVqRRclKlElxLf05knD26emrTh/Q2SPrLJMclUfEIDtixKwwmj+b SsDaRKyPk/ju
PeUwAiPxxfQQGM7Mmf3e5lewQvO+kRWXdtUJAYK62VsM8RgEr1RokKOgdXoY aFdnef/eicuV
DU2equtNaBtG7O0WhKqnZ59HIcIVijlJZ4rVTC+HxllRmd4Db5bSwcaX9MKX MdyL602zB8t8
E8oVRSNPWfJBDkBHyiw5EKc8pqhD09hqMenl153v6YNj8A9jIMJtED7IiyZ2 1JWcI0H3sCOx
JtCAFFkNqeW3a18cu24QGlrtXuKDcwCAarrOx2SoJUjjCDLg6f+R1WTSBwk6 2t7y68kdT4B3
UW13T9Kb6z688KMJBLnOhGeRQoGok6xK9MbLM6iVA8UmnT4+aYLFLuJD4nnQ x1c+O+pOrf7o
XC3LwL55GClWJWcTE9o7QMNAIgYH7ZAUTrarAWqDc92cEBhxEmtR5E8X4vOg YwRx8TSEWZAy
xval1/fjmVTtOGivkWaBkQqaSM/1rgc02IVY4Kzu7heYSx90PPwcsIE6KcKk SHLkXk9O/dxG
Ut1raOubPAFpeMn3ceRqiPx1+0rZU3Zeg+XwWZqedy/4e52+YRl9ztfzt+dR 6nJ8lo/FLvc8
Rf3XxVEc8ZEvpp4+yeUWjv87/AoWCBYIFggWCBYIFggWCBYIFggWCBYIFggW CBYIFggWCBYI
FggWCBYIFggWCBYIFggWCBYIFggWCBYIFggWCBYIFggWCBYIFggWCBYIFggW CBYIFggWCBYI
FggWCBYIFggWCBYIFggWCBYIFggWCBYIFggWCBYIFggWCBb4v1vgP1BLAwQU AAIACABikwY1
9o8cm1MjAABGaAAAKgAAAG9zZ2kvdGVzdC5vc2dpLnRlc3QvaWNvbnMvYWx0 X2xhdW5jaGVy
Lmljb+18CXxNV9f+CoKKmRJzKiQxvRJUgyolaM1zKYoaa4ghRBAuai5qnoUY YkjMQySIIUEi
Mc81z2oeYlbr/6xzs9Od0xvK9+vv++v37t+7e6979ll77X322ftZz3ryEtlR WsqcmYzPzvZE
I4nI0dH67+jURPfwm5OT9d/L0hJtSk/k7p7w74xEP3xKCfc7UedURKkLqfud aPQnRN5u6n4n
WoZ+nnqo+/HvwkQBVYjQhHCJ0I3Rj5TKdsZHkjIgbjuNOXWIfj4RS8NO7KNB x/aS/9FIGng0
igYeiaJBx3fRsJNRNOq3fTTqdDSNOxtH48/spynnDtGg/RG49yAFxT+kmQ9u 0MQ752js7aM0
+NJOGnF7Fw2/tZ1G/h5JUx8eoLkPj9CSp6dp7YuLFPbmOu3ghzTxbCyNOnWA pt27SiMvHyDf
uG3kvWcZ9TgZRO0jZlOX6EAadDCUJp6KpMmnd9KMO/to2dNjtOrJKdr84jxN +C2ahh6MoUl3
z1H/o1vJvYUXFa5YjDz6daSeG9bTzxHbaURUBA3fs5N+2beLAg7tpnlno2nJ vcO0+eV5+vVM
DA0+sJcmXPyNukQtpeLVy1CGzPbUPWgp+axaQX3XhtCA0LU0OGIDjdi1mcZH b6W5h3fT0iux
tOn1BRp/ejf5HdpFvpHLaPD1MEpbrRr1XhVM3osWU7cli/B9BfUPXU2Dtmyg YbAxJmozTY6J
oMVH99DKO4fplzO7afSZvTT7xXFqtXEilR9loZG7IsknOIj6BC+lfmtCyD98 Lf28fRN+D6Xx
u0Np8r5tFHQkklZd2U9j8Fx+3LKWaoetpmK+XejbRfPJa/ZcqjprLlVBrTV3 HtWcN5/qBy6g
xgsXUjP41GpZEHVZHUz+a9eSD/zpEL6G2m7dSIV9ulKT4CX0fVAQNV28iJqg tlwaRK2XB+Ge
JdQpZDl1WrkMc7KSBoavpwmRO6nP7s3Ubut6arxlHZXyHUiV5s+lOgsWUF3U OvPnU+2A+dQw
MJCaoO+miwKpzdLF1DV4OfmtWU2WTaHUZ284Tbl2lJY8OQ+by+hzS19aciqO Ru/ZQuOiNqGG
0jj0MXHPZpqxN4yCYrfTxkN76ODpw7T6xnkafyqaOq9ZQX6Ygz38nIp0bUdz bx6lqVjTE/aE
07hdG2kqbMyICqPA6AgKiYukHUfjaOtvR2nl3as09sRemnrpJEVwPK16c5W2 8CP6tFVjCsS6
WHAsmmbGbKFZeOaLcO/6A3toz/EDtPPUUVpx5zJtfHqLxp6MwRo+SpHMNPV4 NI3ZHkoH8b39
0unUfc1sCjgYSRtO76fdx+Jo+5njtP78SQp+cI22vrpH21/dp3En99HMS6co +NZdmro/hvbi
3vA3D2ht/FX4dI+WxV+g5Q9v0JKHN2nTy7v47RFF8VO0e0bH+SXewQM05EAk 9cdczbl2liac
PUK/wKcJZ/fTr2cP0CRcn3L+ID4P0vTzh2gqPmeePUizzx/Ge7Pd2AcePHx0 6HH8k6fPnr94
+er1H28uXrp85eq16zdu/n7r9p279+4fOnzk6LHjJ06eOv3bmbPnzl/YsXNX ZNTuPXujY/bF
xu0/cHDN2nXrN2zcFLo5LHzL1m0R2xcELly0eEnQ0mXLVwSHrFy1euKkyVOm Tps+Y+as2XPm
zguYP2TosJ+Hjxg5avSYsb+MGz/h1569evv06evbz6//gIH+gwZb2rT9sV37 Dh07df6pS9du
3b171G/QsFHjJk2/a9b8+xYtW/3QuvLXVap6Vate45tva9aqXaduPXePUqXL fF72C89y5St8
WfGrSk6fFXQuVNjF1a1I0WLFS/ynZOYsWbNl/zRHTsdcufPkzZe/ANmlSJnK PnWatJ+kc0if
IWOmv+6I7/eL7LPY2gnbd+I+uyCFbRt2dnaUIkUKSpUyJdnbp6LUqe0pbdrU lC5dWnJIn44y
ZHSgjJkzUOZsmSjLp1kom2M2yp77U8qRNwflzJeTcubPSY4FHCmXUy5r/SwX 5f4sN+UumLTm
cc5NeZzz/KXmdc5LeQtZa75C+VDzU/7CqC5OVMC1IBUo4kxORQuTUzEX+qy4 K6obFSxRhJz/
U4wKlSxOLu4lyM2jJBUt5U5FSpeiImXKUJHPPydXT09yKV+eCn1ZgQpVrkSf eVWl/N/UoLy1
alGeevUoT8MGlK9xQ3L6rjE5N29KLi2akWurFuTauhW5/diairZvS8U6t6fi 3TpRiZ5dsH97
UxnsBV8M708VRvlTpXFD6OuJP5PX1BFUY+ZIqj5zLOoEqj5rIlWfPYWqzZ5G XrNmYN+biTqL
qs6eTV5z5pAX9r9qAQFUfX4AfYNaa0EA1QkMoPoLsS8tCqAmi+ZQ88VzqEXQ HGq5bD61XrGA
2q4IpHbBgdQxeBF1Ru2CPbFbSBB1D1lK3bD/dVm9grqsDaZuOBu6rwsh7w0r qMfm5eS9dSl5
R6DuRN21lHpEraCeUSHUK3I19Y5cR313rKN+EeuoP/bLAVs3kD/23EFbN9Hg baE0JGITzodQ
Gr4D+/yOUBq9M5TGYL8fGyl1s1HHRIbhLAunIbvDaQD2zX7R4dQ3Oox8Y6SG o26hfvu2kJ/U
2K3UX2rcVhogdb/UbQk1ggYc2EYDD+DzIH47jO9HUI9HkP+pbTTozDaynImg Ifj8+eQ2Gnl0
G40+tI1+wf0TYrfRRJw/k2O20jTsizP2bqVZqHP2bqO52CPn4WwL2LedAmJ3 0vy4XbQAe9NC
1AWHomjekd005/gemnVqL834bS9Nxzk89
Re: Discovering Hook Configurators [message #71889 is a reply to message #71683] Wed, 09 August 2006 21:32 Go to previous message
Thomas Watson is currently offline Thomas WatsonFriend
Messages: 503
Registered: July 2009
Senior Member
Hi Heiko,

I am able to reproduce the problem you are seeing with the projects
attached. It looks like startup.jar is not very smart about figuring
the development classpath for framework extensions. Run with the -debug
option and you will see the following printed to the console which
describes the framework's classpath:

Framework classpath:
file:/C:/workspaces/newsgroup/hooksissue/osgi/org.eclipse.os gi/bin/
file:/C:/workspaces/newsgroup/hooksissue/osgi/test.osgi/bin/
file:/C:/workspaces/newsgroup/hooksissue/osgi/org.eclipse.os gi/
file:/C:/workspaces/newsgroup/hooksissue/osgi/org.eclipse.os gi/
file:/C:/workspaces/newsgroup/hooksissue/osgi/test.osgi/

As you can see startup.jar blindly stuck test.osgi/bin on the classpath.
In your test.osgi project you have configured your src/java folder
to have an output folder of test.osgi/build/classes. So your class
files exist there not in the default "bin" directory that startup.jar
expects. To work around the issue I suggest just using test.osgi/bin as
your output folder. Also please open a bug report so we can fix
startup.jar. Thanks.

Tom.
Previous Topic:Equinox beginner
Next Topic:Deploying servlet in a solaris environment
Goto Forum:
  


Current Time: Thu Sep 19 10:45:35 GMT 2024

Powered by FUDForum. Page generated in 0.04223 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top