Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Buckminster dev » Buckminster Roadmap
Buckminster Roadmap [message #32945] Sun, 24 May 2009 15:02 Go to next message
Dann Martens is currently offline Dann MartensFriend
Messages: 65
Registered: July 2009
Member
This is a multi-part message in MIME format.
--------------040500080108040501010300
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

Is there anyone from the team who can comment on the current roadmap?

What is the state of affairs in terms of p2 integration? How has/will p2
affect some of the plumbing?

How far away are we from the following click-and-play scenario (see
attachment)?

This is the idea:
- a web site announces one or many component specifications
- once a .cspec is invoked, the browser application helper uses the
operating systems' stereotype to process this file; e.g. *Open* with
Eclipse.exe
- if one or more Eclipse workbenches are open, the appropriate instance
is selected using IPC (some interesting progress on that front lately,
in Java land)
- the target workbench offers to populate the workspace, either the
existing one (separate Working Set), or by offering to create a new one.
- any missing plug-ins required to build the source code are downloaded
and installed, as well.

I'm planning to make some updated versions of additional actors
available; is there a policy to decide if such actors would be included
in the actual buckminster package, or would they always remain
separately available?

Best regards,
Dann


--------------040500080108040501010300
Content-Type: image/png;
name="buckminster-azimuth.png"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="buckminster-azimuth.png"

iVBORw0KGgoAAAANSUhEUgAAAwwAAAODCAIAAACe+xEhAAAABGdBTUEAAK/I NwWK6QAAABl0
RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAATLrSURBVHja7J0J QFVV/sff47Fv
sokboIKC5gIIVmqLCphl2ipRzb+0DKZ1prHSalotRzNbpsZJK7VmLAZrKq3c QG0SLAVBXEFB
BRRkl+UBb/3/7j1wvdz3eOzwHu/78XU799xzzz33nMc93/c7v3OuXK/XywAA AAAAQGtsUAUA
AAAAABBJAAAAAAAQSQAAAAAAEEkAAAAAABBJAAAAAAAQSQAAAAAAEEkAAAAA ABBJAAAAAAAQ
SQAAAAAAEEkA9BIxMTFyuRz1AAAAACIJAAAAAAAiCQAAAAAAIgkAgaqqqtWr V9O2rQTJyckb
NmywuPuim6KSd+0oAAAAiCRg7ZBWCAoKoq3RoxkZGTE8YgnFIr14YmNjhUMs 5datWynDhIQE
Jr8owFLSofz8fJYyiEfIkOUm7NIpcrmcJWbFo93IyEi6rqDqmHcUHaLLCSdS zGoeyo3iWTJC
OFEiDU0cBQAA0M/oAeg/Vq1a5clDAcOj6enpCxcupG8pbSnMIqOjoymGTomP j1+/fj1LEBgY
WFlZyY7SIYqhAB2lSCF/4Vp5eXmUkk6nZCxMydifw549e9hVKMOIiAgKUCYU L1xLSM8SUCQr
j1A8Vhi6ilBmo3dh+h4BAACYAxBJoH8geWFCHpEWaUs6MFFCpwsxy5YtE2LY USFPpoSEHCjA
FA+Fk5KShLNYmMQNO0RXp13KVsjQUNsJAotgkkgQSeIrdlAMQSoBAABEEgAc zNZiVB7pW4w3
pE6MygVD1cI0DZMp7CizKrELEYaX1rdYj5gqonMjIiIozBKzArCrMz1E2QpG JoISi7Nl5itB
JDETlFEoT0OR18GjAAAA+hj4JIF+gBRGVVVVfn6+UU9tpmPyeTqYG/PvEWLY iBtBObCjkkuz
NKRImN80baN52EVpl42mMXsS6SSKEftFsWTyFuio0asbwk6kBJJSdeQoAACA PgYiCfQDe3hI
WzB/bYlUIrGSl5dH29jYWNIl7c7/YlrKqDRhYkuSWJAgTBUx9+qFCxcyKw7t Ms0knEI6qbKy
krYUL3iXUybrRbABOxPQuZGRkXRHwt11/CgAAID+AcY00I8InklGB5gEuSB4 TAsDaiRKhGTM
J4nFSAbjJD5JpMxkLUNs+hYXJfHYGZ3ODEjiwbWrg9O8rhLG14RBPaNpxHfB /I2YADK8RxNH
AQAA9CMQSaCfYUYamWiGmgTSK0y4CK7ZzGhEZwmz2wRdIhFJJDvamt3GYFYl 5qOtb/FAEhyM
mMwST6NjZSB1RWmoVJSeYuh08ew2sUhit0Ypjaou00cBAABAJAHQbFAxYUph WoTJICIpKYkp
J1I5bDjMqEgScmbyyPASElOT2Adc0DFMSNFW7GnOnKxZtmKVIxFJlJUJL2zT RwEAAPQvcn3L
pGUAAAAAACAAx20AAAAAAIgkAAAAAACIJAAAAAAAiCQAAAAAAIgkAAAAAACI JAAAAAAAiCQA
AAAAAIgkAAAAAACIJAAAAAAAiCQAAAAAAIgkAAAAAACIJAAAAAAAiCQAAAAA AIgkAAAAAAAA
kQQAAAAAYALbPrhGalpaRXkF6hqAfmfBgvmoBAAAMCORlJZ6MCc3F3UNAEQS AABAJBlh1uwo
VDcA/UVm5pHqqirUAwAAmKNIGjJkCKobgP7Czs4elQAAAJ0CjtsAAAAAABBJ AAAAAAAQSQAA
AAAAEEkAAAAAABBJAAAAAAAQSQAAAAAAfY8tqgAAMyErK6u2trY7OUycONHT 0xM1CQAAEEkA
DBz+9eUXX36xqZuZeHl5rXpn7ejRo1GfAADQfTDcBoBZ0H2FRFRWVh4+fAiV CQAAEEkAAAAA
ABBJAAAAAAAQSQAAAAAA/Yt5OW7/99tvVaomw/jJoWHXXHNNamrq5ZKSu++5 pws5Hz58OO/s
GSErNDwAAAAALEkkybjpOd5zbrnF6KEZM2Z0Lc+SkhJSSJBHwLJY+vyyd99Z xcLZx06ETp7I
wmvf//tf/vw0C3/6+eb4JYtRVwAA0BtYxXCbSqWiraurK9obWBBr16xOTPqW hSdPmvD6m29T
4NZbb3tk8UMs8vyFgnff+RsqCgAAeglLWidJGG5TqZr+++23QWPGlpQU19fV CcanrKys06dO
NncqLXYjOquw4AIF0lIPpB92YKN1J0+ePH3qFBva8w8YGRoaShKKdvfv219X V3f7/Nvt7R2E
DCOnXjtmzBh8V0Df89orL11/3dRRIwMo/Kdnnvzq3188tOgRj0GD2NGP/7Eu NzcXtQQAAL2E
BVuS8s6eCQ0Ni7v/gXHjx9Puvn378vPyps+4gWJoSxro8OHDMn6QjnYpQFum kCg++2jW5NBQ
Snn7/AUks/bt20sKiYQRRVLg8OF0GT9IRwqJJBQUEugvSAOREmJh0kbvf/hR XGyzT15i0rdr
16xGFQEAQO9hdpakysqKxK+/Ese05Uvk4uoaEMD9wqbt2bNnL5cUU0ohpq6u jpRQUFCQl5dX
6/wrSV2NG38Nkz6urq6RU6fu3rXz5MlTYWFhQ4cOpUzoxJOennl5Z+kSU6dG 4lsC+hFSQpGR
U5k2um3uHBZ5/kLBa6+8hMoBAADrEkkmHLcNUwrhqqoqpo2EGJI72Uc5a5BE JFEMOyrKx4vE
UGFhAYkk2iVBVlRYSDpJxhuf2LgbAP2IeNCNgYE2AACwRpHUNZhr9o/btxmN N4yxt7cXRzrY
O9TV1Qm7fv7+lZUVgqUKgP5l/h13iRUSERIyDtUCAAAQSR2CiZ6777mnXcMP SykRT02qJmHu
m0rVlJd3lvKpr6s7efIkVg0A/UtwcPBTTz4hiXzs0UXphw9tWP9P1A8AAPQe A2QJAE9PTxk3
lHZZiCkoKEj8+ivaSlKygTY26MaorKwkPeTZMiqXmppGu9NnzPAPGJl9NIuO 4lsC+pE3VqwU
zEiffr5ZiH/xxeWkn1A/AAAAkdQOY8aM8fLyPno0i6kiUjYUHjJ0mOF4mZeX V9CYsadPnTx7
9izt1tXVpR8+7OLqGho6mXaZA/i48deQlpo6NZLi0/kpcgD0C0ufXyZMZzuQ 9lv8ksWCTiLl
9NwLL6KKAACg97AdMHcy55ZbsrKy0lIPpKVyu6SEpk6dajQlxbu4uGQfPZp+ +JCMXydpeugM
e94tiSJJbDEPbooZP/4aSnP48OG2sgKg95AMtK18awVt333nbzHRs5ltCYNu AADQq8j1en1v
X2PNmrU5ublx9z+A6gagLWKiZkpiftqxS5jz/94HHy199hkWFr+u5PyFglvm xIhnuj2W8Hhs
7H2G+aekpJSVXv7s0/WoagAA6CC2qAIAzJN5txpfC2PtmtVYRhIAAPoAG1QB AAAAAABEEgAA
AAAARBIAAAAAAEQSAAAAAABEEgADjaio6O5n4uPjM2nSZFQmAAD0CJjdBoBZ sPylv8648eZu
ZuLn5zd69GhUJgAAQCQBMKC48cYbUQkAAGA+YLgNAAAAAAAiCQAAAAAAIgkA AAAAACIJAAAA
AKAn6WvH7aqqqiNHjqDeAegbpkyZ4unpiXoAAAALEEkqlaqs9DLqHYA++4tD JQAAgGWIJMat
t827564FqH0Aeo9vv9u24+efUA8AANBl4JMEAAAAAACRBAAAAAAAkQQAAAAA AJEEAAAAADBA
RVLCH5+Qy+VoEqNQzVD9oB4AAAAAaxRJfcx7H3x0//0Pmo7poLbrwlkAAAAA gEjqGd5YsfK5
F5YLu4lJ395227zuZLj+nx/Pjo4xHdMRaq5cOXIkvfrKlR682e7fHQAAAACs RSS9/urLtTU1
wu6+vSk7dvzc5dx+3rk7Nzc3Jnq2iZgO8s9P1v1+6JDHoEE9eLPdvDsAAAAA DECRlH3sBHNO
uu22eSRcKOZA2m/MV2nD+n+yeNpSWMZ76hDnLxSw8Kefb6YPS0CZUFZtXeWH 77+PT3h81MgA
ozFs3I1dizJkCd5YsVLeGmbsWbbsRU8PD5aGLkofZgeiBHQKk19CbuyOZMYc sASvI6N3x6DC
hPBQCfHdBQAAAKxLJC289+7hI/zWvv/3vLyz8269hRTSxAnjv/7PN3To1ltv o8BTz/zppx27
KEwxtEsfQeu8+87fvvt26133LNzw2ab9+1IoK6aTnnthOQkUYUSMAqRC7rjz TuGikpjk3Tun
Xnc95XzNxEnxSxaT6KHIu+68g12OPkufX0Yx102bYVh+uu5rr7wUPWcuSa7X X32ZdM+zf3p6
3DUTxHdkugbaujsqId1dwuNPzZwVtfTZZwT1BgAAAIDewNbcCvT+hx/dNncO Ba69duqNM6al
pOy9Yfr1cbH33H+fzD9gJAVYsh++/562wi4jNzd31+49TFVcd+3U0MkTv/zX v959Z9XJ48d2
7Pi5oKDIYxI3KLb1m++Cg4PZVRiSmJ9bXuZA+W//4bsfvvsvBSZPmkAfijx/ oYBkEOkY2hqW
n8rwa+pBKjMTTKRshF3xHZmoASqG0bujEn719VdsXI9yJsH02KOL8A0GAAAA egmzsyQJSoUp
iUsXizp+blzcA4LdhQQN6RiSOBRe909OqTCJQ+xN3pPw+FPiEw1jZLx56UDa b1OmRCYmfiWO
f3H5i6SEVq1+p61iCBpo5qwo8W4X7kgM5SZ4PlEYTksAAACAdYmk7uDe2nva P2AkqRkKkHIS
lEr2sRMkeqKjrjpoG8YwpyJPD48bZ0yTKKRPP99MMRs+2yRILgAAAABAJFkY hQUXmHOPmO++
/yEu7gGxxJHEkEK6/757r5s242j2cb1eH5/wuFhOxS9ZTDEY5wIAAAAGPLYW VNaa9tYi2r8v
pfrKFTYmRYJmx46fX3/zbRnvRVR08RIzJn317y/YpDMBScy+vSm0FfyNakTu 3suXvRAcHPzi
i8u7fy/DR/jJ+Il7rFTCrDcAQFceDrW15/LPF126pGpq6vur+/j4hIZOcndz Q0MAAJHUP8TF
PZCY+NXU664fPnx4XOw9IePGy/hpa8OHj/jLn59maXJzcx+4/4GHFj1SW1v7 7jt/I0Hz8EN/
oPhb5sTQoXPnL5w8dZoCc2+JFrJlyyOJY1jOJJtCQkJIMAnDbR/+/R+kupY+ v+y33w/Th2Lc
3d3E3t+dIipq9uuvyh5d/HDC409RaUmoUWklZZDcHQDAKIcOpxcWXbphxjRS Kn153cbGRkdH
Ry7Q1LT/lwPDhvj2cQGskIsXL504eaqxsWmw7+C+v3pVVfWIYUPRyhBJ5siL L7105Ur10mef
IZlCIumRxQ/lnD61ds1q0haCjIhPeJzkBTMCzZwV9eKLy5kf9/w77jp5/JiH x6Afvv+eThcv
/GgYQ7kx1UJhUjBr3/87XbT6ypXXX32ZYuiK4lLp9fqu3c4N07klBr7cvJEy J/33+aYv/vXl
l8JRo3cHADDk1wNphUUXH4hb2PeXVjY0MJHk6OAwd07U8ZOnftqxK3r2LAcH e7RLb5Ccsk+n
19900w1U4X153draOjc3VxY+czb/m//+MCdmNgyHVoK8y918x1mzZm1Obm7c /Q9Q+PLly/v2
ptx627x77lrQw3cil5NIWv/JOhNp3lix8q477xA7JBnGADAw+Pa7bTt+/mnW 7KghQ4bQbkpK
Slnp5c8+XT+Q7rG8vCIx6Ztb5sSMHRPY91evrKry8vQUxxQUFh06nDHzpht8 fLzxDexxNVxa
Vt7jHUcXGvrKlZrdyXsjpoQFjh6FdhnwWNcLbl975SWJHjKMAQBYCllHs2nb LwpJxg++SGIC
/P1uvGE69aCk3tA6PauGj2YfmzxpYr9cvba2Trw7aJD7/NtvPXHy9NGjx9A0 EEkAAGCm1NbW
9uPVr1ypMYwc4jv47rsWkE46dToHDdRT5J87R9v+GsfUaDSSGEcHh/nz5l4u K0tO2YfWgUiy
DPR6vemxNgAA6A10Op2kByWdlJmVDZ3UU1y8eMkMSzUneraLq+tPO3Y1NanQ RhBJAAAArtLQ
2CiIpLZ00qHD6agoS0cwGUpamZh23dSRIwO++2EbdNJApX9mt1VUVBw/eQq1 D0Cv/pWhEnqV
ppY1mbQtfaeNjY1EJ/30866amn3RUbNQXRYN890mkaTX6xUKhfjQxGu4FVtI J911xwJMbIRI
6hkO/f4bfVD7AIABgE6rFcISnXQP75+UnAKdZNmwZiWJJOemg2uhkyCSegtX V9cJE7ESFwB9
9xeHSugNGhsbhZ5Sq9UZdqgCc6JnQydZNNVXrihsuLZuGW5TmNBJ0bNnYQEI iKSu4+LiMmkS
RBIAwLJRNjTY29ur1Ro7O1uNViN5lkInDSTkcrmNjVzWymTYpk767/fb7r5z AXTSgAGO2wAA
0KWfmLa2Go1axlmStKSTtFoddaJanc7Qj5vppCs1tZgxbnGQDnZwcCCdxDe0 TqPR8q1M7azX
ioZZBZ00ffr1mO8GkQQAAFZNbW2djVzO+k7qODuik+bddktpWfmvB9JQe5bU 0HW1CoWiWSTp
OHnUrk6KiAjHfLeB81uoj69XX1+fn5+PegegbwgMDHRxcUE99DjiBQa1Wk1b D1XD+W7//W7b
qdM548eFoA4tBaaQ+IbmhBHXwhqhmRXw44ZI6knq6upOHMdS7gD0Eb6+vhBJ vYT+qmDSmniu
GtVJFIZOsgjUao3QxJzpiIlj6CSIpF7l2uuunz79etQ+AL1HWhoW2ujN33v1 9Vqtlr0g3HDM
pV2d9OW/vnJ3cxsxYjhq0twbuq5Op9Op1CrW0NyaWB3WSeXllT/v2HnXnQtQ jRBJncPb25sJ
bQBAL5GTcwaV0HtoNVq1Ws1EkoElqX2ddMeC23fu3D3vtrmYBmX+aDQabpSN eeiTQrK17aBO
mnnTDMxqtHTguA0AAF1BRai52W22topm320N60bb9+Me4jt41qybMQ3K/Gmk FlKpmLGQtS7X
wDodH2rfj3tO9OyGxia8nQYiCQAArIjaujra1tTU0tZ3sM9VbdRhnRTg7zdp 4oSfd+xEZZoz
TY3cy2eYn76jo6Om8zopJnrW2bxzeNsxRBIAAFgLbvxS5uwdty4uLkOG+Opl +s7qpCnhobZ2
9jAzmD9q3mTo7eVpq1B0Vic5OjjMu/WWQ4fSy8vxOkWIJAAAsAJcXLk5gyUl l5mNwdPDI2j0
qKFDfN3d3dzcXF2cXZydnKh3dLC3t7VV2CgUNvLmhy1zYxKbGQ4dzkD3abY4 ODrQtrSsnLYK
hWLUyABXF5fO6qRBg9ynT5+WvBdLiUIkAQCAFTDS30/GO6lkZB5lOol6UJJH 3l5eJJioU+Sk
kouLE0klR0eSSnZ2toSNjY2w6I5gZqDtrwdSUaXmiafHIBm/wt/l0jLWyiOG DwsZO2YYKeLB
Pt7eXp5enqSMWVvbU0OTKFZQO9tI1PDYMYEknmA1hEgCAICBD0mfkQH+rPtM Pfj72bz80rJy
pVLZ2NjYpOq0L/bFS8WoUvNk+LBhDryQPZ2Te6n4ajM5Ozs7tRgLHThxZMd0 sIKXSPKW1djF
UNqso1gm0MKwRRUAAEAXCAocTdsLBYVarbagsEjGOyc5OVK/ac8bjRTUS1Ln aSO30ep03ORw
vV6t0VAfSgKLEtvZ2rm5uaIazZ/JEyccyTpKrXw658y58wVenp4eg9wdHB0U NgpOGNnZURpS
RpL5/0ZRqTCZESIJAACsRieNGD4s79z5psam6itXZPw0KDk/1GKj0MllcrVa 4+TESaKmpibh
TSYNDY1cpKOssqqKpBKq0cwhLTslLPTk6Zz6+npqx+KSkvKKCicnJzaKqlCQ IOaMRtTo7L0l
ClsFfR/UavWgQe4sB5JVqEaIJAAAsDocHR0njB+HehjwOum6qRGXS8vq6uo0 Wq1ti9FIwcNG
1tzd3Egn6eifyBvJy9MTtQeRBAAAAAxwhvgOpg/qASIJAAAsBvbDnX7NS+YT mT+WWGYAIJIA
AMDygOawBkHMxrYsq6HxzbRcsAQAAAD0T8eJSgAAIgkAAAAAACIJAAAAAAAi CQAAAAAmwLgq
RBIAAAAAwEADs9sAAAOTnNwzRRd7+J1okyZe4zvYB3VrVjQ0NFwqLunZPD09 PbAOJIBIAgAM
WFxdXT34V7j3IE78a9eAWVFbV3/+QmHP5qnRaCCSAEQSAMDiERaTlLVePmf4 sKH06aXLdR+2
dg6Wz+k+bq4uo0b692yeeNsagEgCAAw0sGrfwFbDwmKSYrXq6OgYOHqUOath maWtfgkE4LgN
AAD9IOZQCQBAJAEAAAAAWCQYbgMADEwuFZeUXC7t92JMCZuMtgAAIgkAAPoB ibeHsNvQ0Fhd
fcXciscwdKwBXaayqjrr6LF+L0ZY6CQvA3dvjKtCJAEAgDkyfNiQHl8CAPSv 3BRrSiFsJkKz
rbmKwjRGCGKIJAAAMBcceVAPAx4vT49ZN9+AegC9ARy3AQAAWBiWMoyF4TZL B5YkAIBlIx7F
sKx1kjAEAwBEEgAA9AONjU0NjY39XgxP+EX1mKaUGfVJsjgpDyCSAOh5HoyL mz9/ftyDD6Iq
QEe4VFJSUFDU78WYedMMw0iMwnQfwWpIapjaut/LM3zoUEdHB7QLRBIA/UNV ddVDjy7589Kl
zzz55EuvvIIKAS2/0Y3HeAwaJAswx+J1/CgwUV3CWKWyocEc1DB93xwcHNDQ EEkA9A/33H2v
79DhtraKb7//fv2nnyY89hikEjCBp4cHfVAPAx43V5fJkyaYQzEMI2EyhEgC oI94NP6xl199
ZcGCBaGhoadOn35n7XtfJX793tr35sydi8qxauuCTN9ujFlhI1pJ0syLas4I w222tnZQw6C3
/lpRBcCCiJo5s6a21s7ezt/fPyQkuLKqev6ddz0YF1dSXIzKsXapZFHr9WFe WxerrbWm1DNn
bjP+WIpwBxBJYCDw8KJF2dnZep3e1cXF28dn2LBhg318vtv+4+zZs3bv3In6 sWZ5JG+BzYEy
b2SsqDJMegJdYvny5XJjJCQkVFVVsTRbt24VIiWnUxovLy86RPlIDgUFBRmN N3rFyMjIDRs2
DOyqxnAbsCTmzJ1buDBWNVVlb2/v6urW6NGo0WiprykovHjPwtgXX3geXkpA 4PyFgsLCi/1e
jBtvmCaJ0el1aJ0uq2HDXa1GU1Nb1+/Fc3dzVdjamih5jwvipKSkhQsXCruk V0gPZWRkpKen
C5Genp6kltavXy8+kVJSvCCnBChlfn5+REQEBVatWmV4RcqZjgq7MTExTIHF x8dDJAFgFlwb
OaW0tNQ/wN/B3s7ZyUnl5qpRq3Q6fU1t7etvrzxx4sSWxETUkrX1neJdrU4r HDDD4pno9XuE
1atXJ/OwXeq9li1bFhgYKCSgTpTSUC/IdqnPo46W0gjdZGxsrCRP6lCX8bBd Ly8vw/6VJaus
rBR2qbulzpiuZfRCPVGxzQFSSMdPnOr3hp44YbynZ3+6RlFbU+NSnVPrR0dH s0gKUJuKYwja
pbYQmkYskuirQm1E3wEKixVYWyotKCiIUkIkAWAuREZEJO/b7+fnZ2dn5+Dg 4Ojo6OzqqtFq
dTru1/k33/9QMmvmlq++HjpsGOrKyhk5MoA+VnXL9Mueuknq5Pbs2cP00PLl yyMjI2mXGQCo
d6Q01PkJ4ox6SkpDgkZsbFi1apVYzRimodzE5gpDmNiijjkvL49JNJYJFYl6 1i7LzVaWJJm+
xXHb1t3drf97U1tb04K4D8pAOlXGj6YJMdRSVOdikUTtSDHUxBKRRGcx8UQw +1O7IoldjnIb
wH9TEEnAwoiKjknc+g1JIoVCYWdPcDpJpVJpNc066cDB36Ojo5KTU6CTrAXJ KsyW5eXTc6VN
SEigTo70kNAdUgfJfuvTIaZpqF8kySKWKSSGmPlBYnASQ4e28khGbdqCumG6 IhWDaTUhE+qG
mRGr3d63g5qJBVzNYwkAo9BDycam73x/qeYF7SLAjEnC8Flb9U/fAWogdoi2 tEu5tfWVEHQV
+5oN4KcLHLeBhTFn7tzKyiqVWi2Xy0kn2drZklBy5JSSo7Ozk6ODg72d3Zm8 c7Nnz8KUN6vU
S5ahkJig79nekXq1aB7Jb33qHYXIKh7JuaSZqN5Md4d0lE7soM2AlBAlNhxZ E4/Z9YAgpjrU
m/38tl5QwyaqnQSQ4XeAFA+zHgkiSZJAiKdWZoeYVBLGZNtSSLGxsUYbGiIJ gP7Ex8dLqVTK
beT0E83OlsOOlJE9Z1dycnKiLcXknbsAnWQ9wsjQn9fcp7e19Js9peqYE5LR zi8+Pl6wIlDn
R71aZGTk8uXLjfoVmRBhpLc6aDOgwlBiw8IwxdZlM5LlNnQvyXfSKOK5ZtSm wkirxJJE6od9
Q6gdBXORpMlIRQmuRewUw5lr9M0RLufl5cUUttFv3YABw23A8vD28qqvq/P2 9lKQSlIoFDYK
OztOIWl4HBwc2PPoLK+T9u7dh3E367Ee6XQ6Ybf6ypWamtp+L16Av5+JMvdU 38kUj2ScxRD2
o5/5BjGXFOoXSfqYdrxl6cXTnWjXcC1pwZOJCtNuSczNFNcHX84eR5jdtnXr 1oSEBGrHtow6
pGNIBrFhU6MilRmNlvNI4sXpJbPbrAGIJGB5REZEnsrJ4ddm40fcbBX8ljcp 2dlpdTot78et
1+lIJyU89tgPP/6ISrMWkST6+X7lSu3FS/1vSvT3G9FmyWX9sKQkG/NiHifU cTJrAQXEjkqS
zjIwMFDiyt2u43bvNHQrcSmE6+qV585f6PeGHj1qpKuLs4GY0ysUvb7SKdMx sbGxMTExe/bs
MVSolIAOsTFZo47zTAyJD1FiNnOtRxzIIJIA6FOamppoq1DYcGNuCvpnc1Uk kUJysNfx6DWa
Hckpd9x+O3SSFTJokJvZlq3H+0vDaU2mEUxHzMma+WUL3aFEEnWhMJ0ay+to pcn0RkWSRqOu
NYN1kqgYhs0qLLTd22qY2o5ajalbQ//66OhoahS2PJKhKUjssi1WxhRD6rkP 7IIQSQD0MGq1
Wsa/vInzTOJ8k2wUgk2J/s/5c9uSWuKeozod6aSVK1ZgncmBirj30XGN3hx2 d3Onj1kV72o5
RW5JPdVHUu/IhlQMj9IhUkWkh2JiYiQCiK2Lw1xSespmwNbgkazNI1gsqBhd VmBCdelEdhln
Z+fx44L7vaGpGCZasw8shmw0jRSP0fFTNmHNaM0zl23D1qcYluHAds02DRy3 gWWKJBUnkvhX
bMttOIMSU0mcTCJ5xKskDjYMJ5fJXn97Jd5bMnBFktTAYCkuvT04BEO/9alf FC8jKUDCSJi4
RFvDKUts3ngP+ppQn0rlMbpWoeFKlT3wW19hO8jdvd8/VIze+5JXVVWx14CY TpaUlEQ1zxa1
MjQmGXXZZqsoGXVKo8RGvzCwJAHQA5QUFz+39J0rV0qv1FQMcveedv24HrTl CC924FSSnDMl
sRUBSBwpFBobbvRNodUqdFpbnU5nq1CotdpFjzxyJCMDTtwDUiRd/WKIHLct rvDdZNWqVdTh
kQoRZtrTLntPhTDjidIwzxUKMFXEFsWmHrQHXU+on16/fr3kQtRzswt1w4x0 VVPyJkMLaGit
RiOzs+t+Q1OVinNYxWOYjDSNsOg5hcWniFcQZZq4I7MH8vLyTF8RliQAOiqJ xKaaPzzwbHDI
+ILCk94+Q0Mn30TbHbsODB3q37PmHLlM3vymUF4l2TRrJRtb3rZka2dnww29 8XPgbGzKK6vu
uy8WLTWwLUkajdYizEjUx3ffksTeOSr+oU9iiDllC+8fpb6Q+jlh2It6yvT0 dOpxhbncJFzi
4+MN542bhs1uM0QojOGFkpOTqZft7IUMW1qshq3QZAhgSQIWydJnn137/vss PHvWHQWFuctf
2ODtM5o9ykikXHut7mjWvv97eMnOn7eFR0zpzrVqa2ps5DbMjMQpfaaNeI3E 6yF+1E2r1Wl1
9H+9zlar0yl456SDh9KXPbd09btr0V6gf+mRGexGf9y3u2AjW4a7raMSe4NR xC9o6/KFuqmG
LUV29PhaDwCWJGBJrFyxgrbrPvrYzd2djWQ9uvgVUkhPP/l3T+9RGo2uSaVp bNTU1TXVK9V+
/teFh8bc/8Cj3bwoXcuWt2CzlVroPyaQmFBSMBclPoI3JjXH0JZSrlu/ITPj CBpuQFmS+Lnh
zdYFC1iDudUSksLsJ9DBtmYBtUaDhgawJAHzhYSRl1fzvNB1n6xLTk6R8YNu W7/96E9Pr3Fw
8lCrtSSS6EPPCY1aq6WwVjdhwr1HsvaQTOmmMcnBwZ4FeNdtObMqsRE3Offh /JO0pI+4Fycp
bBXcyknM5t+k1jwWvyQdOmkgWmX45bEsZI1BGz0zL1hKgc3DKmN5hhm1Rg1L EixJwOpI3LKF
FNL27dtfeuUVUktBowOZGenxP74SFnqdf0CYlpdHTCGpmjQUUGt1TU1anVY/ elTY+k82dbMA
Do6OghmJLQVw1YWbFBKzI/H/bG25ZZRsbW2ZZxJ947NPnFr23FI04gDqOy1v dhv9JcjgqtLV
htZbFIK8Q1tDJAFrYf8vv8ycPbuujlvAbdeunbfcMpfF/3Z419xbHtVq9Rrq BLTNColb01Gr
UzVp1WoubvjwKcdPnO7O1TOzMt1cXSWRpJaaLUkyfn1JppcU3DAbSSVFy2Cc nH8j97r1G/Ba
t4FlYGCWJI2FDLZxDuZC4UFHG7plMUlLcc+XyHe0oCWC4TbQFQL8/ffv3cu0 UVZ2NlvPevfO
nS7Orj6DA9X84Jpep1ertEwhUYBzpFZrKWxr41hRVd7NAri5u0sVEqkfebNd iYW5ETeN1oZf
SEmu09Eu50Iul9OzqkmtwetKBpKBgQUscf4/+s7OCmILFZdoZ1iSgBURGBi4 /5df7r73nsQt
W8YEBbLIjz7eOmE8t/YG5xqi13NSibcnqdU60ky0S5H0E9DJZYxGrerO1XPO nLXnHbeviiRe
FbH1AJhCanHk5j7ciBuvmZhbEgXolB3JKVhecmB0mZa7mCQMDF3TlNywveWg VmvQ0LAkAesi
7sEH8/Pzhw4blpl5ZOzY5hcCFJfk3Hzj3aSPODVEWy2nljRavY7TSbSjV/OC SVl/ycnZscuX
LikuVjY02tpyX13h3Q7yZuekloUlOcOSXNayKoCWc9+24YxJNja8htPSjwOd TPbSyy/NmTsX
rWnByFvpjCaVyoK6oubX5qDv7Ig8Yltds587NyXEchzer069RFtDJAFLeDTr s8/XfH/4clsJ
3ojr0FuQAgM5A9KVmtqZN9/MYi5euhAy7iaNhrMjsec/893WqPlBNx0FuAdF ZeWp4UN9u1z+
/Xv3OtjZMa9t8UNHzry3WwxLcmFVANqTyRW2Cvr1yaQSMzfRQyv7xKnELVtI 8OFbYaF2heZA
S3/JXtVnMX+JXK8p02N2W9ca3dIEBxQSRBKwGIU05dNMmVrbTZHEtEXxpUte 3t4spr6ulv+x
J2MjblpeKjHHbeoPSDuRYKJAyeXsp57oui7JzDwyZIgvP02NPXokpgUmlnhL UrNaEsxLzW8v
YaNwet6Y9O57ayGSLLenlOlb7bK5ApZ1F+g726slwRbD1xW/r1Kr4ZQE+gb4 JFkRJFbaVUid
pa6+jo1YZWYcGTkyiLsK11Fx13rvvXs44zhz3NY0+24r6y5VVRc98fRTXb7i /379lVRPxpEj
2ceOFRUVCcuQ8AKJ+z7bNC+b1OySxEskuUzkqyRv0U0yfjmAxC1b8N2woI7m qi1B+GJzo7t8
36lSsbBFfFivr4NzUjs6kq8WNq7aMrvNgt5Jws/wVUkc0QAsScDsaFLrHOxs 9h2veDVsuOTQ
m1mXuiybBIeknNOnWB+m4Rf0o8fB4MFDL15K9/IM06h1KjVnWaJD2ce++GP8 ki5cqKS4OOGx
x345cEDZ2ES7BYVFwqGgwMCgwNHMS4lppZblJZu1EZWnZVVuuU2LJYkO6fgH 8PsffgBjkiUZ
FQSFZCAverYT4t76x70z2Uaj0arV6p6/nZaeXqwJ2DgyaNXWouWRdM0i6aq4 tBCpJ2uthtHO
EEnA/MxItP3LHYGS+EWfHO2OYUlwSCI8PXz4p75Mp+We/2GhMQfS/j03ZrRG 68R7cOuOHVvv
4qJ47Y3XOnuVdR99/NIrfyV5FBE89pYJE+8PDfWWy8srKnedy9+Xn/fziZOF F85PDg/3HDRI
kEkt425ywaGbXxFAI4y4sV+nVCmZ2ce7vwI46ONeUxyoq6tzdnbWdMaZ19ZW wRzYFPwqo/R1
UHDvQrblAiS3WyZCMkTTlNS8t7VMxU/PVKs1nK1UrxMWPerc75YmlczgJW7Q Sa3aV9ZqlErX
4rjd2NjY/avwGtiWfRnoH/s1xXz/tVoNPbJ68HZ4ZznxWDAXRENDJAEzwslB YRhJCumLM9yS
Rf6eTrQtrGrobLZiG4ynx2B++omeLbQ9Zuy8yyXnv/th+ciAUL3MtqrqgkLR 9Mv+vZ29xMoV
K15/e+Uwb+9Pnnn29skTVVdqbTXqRmX9ME+PONuxsSP89owc+eqBA+npGVPC Qt2bdVLzi0r4
JQBsmtVSi1xiT0NZi/s2xb3+2qtYM8n8u85W/5PJBCNMQWFRSPBYDT9ZQMZW zGrpBZkSslGw
tdZl/GIQNiL9IzMaaltakXyy1cv0dvZ2emER5ZaBFI2WU2n891/D9+hafty5 nTelCDZRfcsM
Tb77tHI1bLDD/1/VMnuxXZMhNRT/FJCLm55EEQXs7e3EzwSh2Un+sqXUxMtk q1RNrGWZOFar
OF2r1XXu7TdCmWtqaiR3CpkEkQT6js92FxRUdugH1vwpvlODPcQKKfvPU29f l1nYjavX1NZW
XynXaPX87DbOR1un0UVGxo8JKrhQ+PvxE8mx985f98l6yVkP3v9saem5C4Vn fAePGOwT8M9P
VrDXm0gUUkiA/46Vq3x9vJVXahrtFE42cjuNul6lsrOz09mqbvT1/W9MzD17 9hzLPnb99Gl8
N9m8rKSsRTEx2xInj/hf6syUJDzp9v96oKS4WHJpYP64u7uVlJTk558bMsSX OiH+5TPNHZ9M
LqFZJutbvWlULoguIdTl3/fc62/kNnobPfXGfL9oJ/ac0VEvy3eXumb0lVXV NbU1x4+foHNH
jRzZWg5ac+dpRA27ubkV8w09dIhv9ZUrzN7W7F/I1bwNazn6ArRqeZncUBAL qoW3EXJPBqPW
O/6dyXpbOzv+e9UinhwdxNqYe8kuv6QIm6KobWlviYSqV9ZTygsFhUw9i1rX yhsaIgmIiP/0
2ChPp5fuHdPZE3OK6hMST66aN+b68Z6mUz5+4IKmvv1FGj+7ZaxEIR3/y7Xu zt39Jri7uVVW
lanVWs5Bmzcm8WJJ7+A4LCDg9pOn9koU0pLFf/1p1xdjg64JDJwYEhLh4OBy 7NivYVOuvfeO
Bz7+ZDVLk5lx5J21azmFtPqdIbyC0SkbHJ2cG2tqdHqZq51dLT2YOIOBYqS9 /csR4U/s+19Z
aZnPYB/xhWxaHqDNxiXeF4RQ8Q+syRPGu7i4HDyUvvGzz1565RV8US2LqRFT zp07r1arf/01
1c/Pb/jwYZydoMUaJBfrJVkrqSTeu9qLykQnteDg4NDU1GT4Kq7W61ayHk8v Mi8177SkEzxr
WCeqb2xsrKiovHjxIus4J0+eiNY0AbVs7pkzlZWVmVnZYaGT7exsmWehpLU6 qcX0dDJTSF3z
ZmPiiWliykAhOJkxqdSykmRTk/pS8eUTJ05yN4JfYhBJwJDfTlV9err07Wkj u3Dut78V/1Jc
02PWplvGPjonQKyQjv3lWhdjI3Fdo6mRfjLpVCpusTe9tnlem6qpxqb1NMq4 hX/6JfW/Sxa/
6h8Qxp5O9HgZHTQjcuqZrxNXuD1v/7c1K2T8KJiysWltfIIvW2WAexebooF+ uMllCvrVyD8T
6ScbPajsdLJoN/dhbi4V5eUSkdTcofGDINSbqlSqJlWTlvfQWnjnHVsSE1eu WEEi6Yft2yCS
zBu5yLjQLGfc3d0WzJ+3e3dybV1dEY/F3ZWrq+uM6dP8/EbIW90paMX4ccHH jh9nsvLy5cuk
mZycnFu0rkj0tgRbfhBdjRcklHhXLK1sbW2ZYBXMV+KX6QqRBkeFSL14KFCI JzVM2q62ln7Q
cSN9M2Zcj9aESAL92qIu9j/fOc7ooWsC3Eb4OIoV0tE/T5VzlpgeeCh7eXvz v481jQ2kk7Ts
HbdqfhnJy6WHJ11z9YfyU4+vJoW0/LmNdg7uarWu5Wc2Z+Dx8AiYP2/Z51+8 Ght317Dhw3Yk
p8y7durNY4P1SiX1jxqdVnmlxsXWVm+jqNdq6eMil9fwT6Jaud5Rp/dwdqpW aZqfUGwujFar
ImWk1jQ2cTRyIo7zsR0y2GfNqlXMoYq00TvvvZeZffy9NWtmzY6CB7eZSiR5 s4MKp5WEHZnM
d7DPHx6MKy0rP3fuPDvcbLaRtayi1Pxd4IY2mr9qLQvvNO/KW/o5UR9ovASG GxmbG6DnA7KW
cd3mI7Lmod7mUEvU1e56xPBhfiOGtx7hgztvsxoWGppZekgNZ2cfzz52nP6e CwoKLe6uRo0c
OXVqxODBPnK0NESS1bLym7OvZRezMa8gL+c3ZwQ8MHPEV/svPride+n9ywcv vJxRpP/bTElK
mb3i7Qg/NhLHEj8fPmJN5kXaFQLTPjty9yivb58Ob7cMvnaKmCmD2zoqUUg/ Hrrs5+04K9RH
bGpSa/V2nZdNc+bOLVgYV1fbqNFwdmZuOptaq+ZW3NZeKDi4/IUnWLKS4uJv f/j4gfuetXcc
RCqKDVEwKzX3GhONbtAg/3Eh01999a1b587msr1mor6pSW5DT8n66ppae5JS jRptk8qZHp4a
TZ1a7ayXqbXaRp2ODjnb2tZwmWjUnLlIpWps5LYqNcmjunrOLUDGObA73H9f 7OtvvCF4IP0x
Pr6JX1Zg+SuvOq9cWV1VhW+yueqk5mERcffJtA1JpcE+3tIXuLUsP6g3MAyw oTDJKNlVI0Ib
XbdM1soIIVJFzUN8YruFvLWx4uqmtTEDCsmYGjaikxwdHK6dGjE1ckpZeXlT k6r1uKesdVNf
HeuUsfVtmQ6W/ms+3ryRi814+pYWbfnHFYObCCLIXbnMSAMbtGrzeCAnhQ3a Gn/REEnWBekb
kkH/iAp64rZRtHvPR5kkdyLGeJBOChziTCrn7WkjmRIihUQpt8wfR4eE3VE+ TmyXeD+37PSz
zVZZD0dbOnpwyZR2fZLaJflImdgP6YffSh7afXZ37ASxQnooyt+uq4aloKAJ WUe3BgUu4Gfq
co8mbtr/8Q119eXlZWUszRNPvDo26JrgkBtVpMVa5sGxRbpJVHG7MtmYoFk/ /vzWiBGcdLtt
zBh9fb1Mq5E5OjbV1NjIZA2NjS56vbqxQd3Q6EjCSq3SabUuWq1Ko6klPaTR KJVK3mzUVFdX
X1dXRwHmRens6BAX20oeMYW08ct/CbvKhlae73T0kw0b8N02M53E92H8Dusc mXhifRWvf0Qz
9+Xyqz1na6nU0q+KO0256XlTLaJIL3SS0n5UNNgjbNuUR617TeijdnUSa1rf wYPFilf4X1uC
+OoalLLmsCClTXzNRLZCuWARFKRwezpYPJ8WahgiCfBkFXGjzlGTm604Jqw+ r2UX3z3KS5BE
CTEBJIPo9AdaEiz29wjxc+nxEkZPGfxZ+dg3DhWd+Mu1NUoNKSTx0Q/uDA4N GmTXjaG3d1a9
cv+DiyoqCp1dvBzsBjWqruTnHxw+YsSM6dcWFDabxw/+vvPpJ9Zyrt06vZqb Ma3X8u9607Ws
HaDT6lxdRzg6ulZUcHpusIO9XqOSNer1KlVjZWWTTObpYC/TaJrq6mWNjU2N DaoGpZ1KdaWx
4UpTU25ZhcJGXpuTq1aphOkljvb2s2668ZZb5hpd5jszK1O8e+O068S7Z87k 4otthj1o88CZ
SCrJpQlkzROYWFpBLYkmN0mG2Druuiv1bpEZ+LlcPSrtH43KI3SZbbeySCdd XSJBEMTCQblR
QSyMuhoxIekl8xxbaeGrQ6OG/yQuTa2lsKx5LVsT8giNDZFkrcwK8VqTefHb 34qrGzWPzvQ3
oXLUb97IDEiUkgJrTpRIEoziVy3qDR6dE0AfCvx2Wjqo1E2FJONH3AIChgYE uDY1qTWa4qHe
brNnPzxq1KhTp07WVFXL+NlqLs6u3j6jm3jPbjYkx+QReyGujnf0ppQjRkwq KOCccPV1dTK1
SubgcFHZcPBysYO3V7C6KdjWzlmmb9JrbTQavVan0God9frEWu4S/n5+nh7c UknhYeEB/v6R
U6eyt6YYJXHLlvr6enHMfffFiXeHDhm67qOPu/MSFdCXUknWhlpqtj/JWwZo 5K3W2mm1wJ+h
f3hLtvpWxiTRtVqpIplhT9m2NkJ/2SE9qufNSrI2BbG8eQ3rFkEsmBhbmYyM WpAMhJIgj8Rt
LfJDay2LTWsjNDdEEhBz61TfLfXj9p+p/PR0qeBR9M4fjPhQC15Kj43z9XCy +/nua25LPNbv
5bfrCfdthY0iMDBw/PhrxJEqlbqxiRvGWv9JYuDocdy7bznPbp1KpeFnwOnZ e9x1Ov79bmrO
zOTi7FNXV0GnnLhcMsF3sL6x6cDlkkc+/JBi/vP6a+M1mip10+/DfGV1tbde vKjT6PQK2abc
PGd7+6+//nr8+PHOzs5tlZCEWuLXW/b/73+Z2cdvnHbdvFtv/Ws456n97X+/ /eGnHUeOHBEn
9vMbkX0sm50Fh26zlUqyFvdrIar5vQ9Xl8PRi1LqhVOudpWdMSZJOj6ZaCKV 8TQiKwg6y25I
pfYFsWB8aiWFW74SMgNZLKhjSS4ySf5GRkXlphpd2sBocIgkwPPAzBH02cDP +V+TfJ5JJUOd
9OCuM0FezmdfnsZ2c4rqB0wNjB41yjCytKzU3Zmzq128dHH48ECNlltqsknF LVDMLbDHvxOX
La3EDb1x9iS9k7NPQWEqHUrJy7vGyUnm7DBGp9u9c+ecuXM9J08+lJGuCZ10 X9yDJcXFaWve
ur6y6uXCwos1dYsf+j86RSuaxytA536xefOBtLTi0jLSRnfMX/DDD9skq0eS SJKMr4WHT3n/
ww8oUFZWmrhlC17xZv5qqU3BJBNG4FqME3IjvaH45SftCyRZm32izIhfLnrK XhfEbWjilpaV
G9dIpi8r0U4dl8JocYgk0CbXj/f8dryn/MX9eQYv+iD9JFNp7x551Qs742z1 gLlxdze3s2fz
xJYkZX1damra5s8/p3BVddnY4Ckata6pib1oS5jUpuVH3HR6nUyt5lahdHAY bGOjcHGwX3/4
8FOjRjapGr0aGo5kHCoJDa1saAy5e2F4xBRSSL/8598jqyrWlV3+LOtE0MiA +IQEo3ajn3bs
yM07Fxw0Oi524bNLnzO6svbM2dxkurN5+Ubvi8TZsueWUpriS8UwKVmQYGrp E/Uyg77OiCGh
LXlj8kptn4A+sq8FsVHN1JJSb6iJO2vN6kDTo9EHGjaogp7ihX+fJlX01f6L bHflN2dJDEUF
cWLI082ettWNmpyietJPti727+eWMQMSpX94L9cxVzcYf824B78Wdv5lpUUY nJ56+pmMI0dK
S0spfP78+d27dv1t9ZrYu+9mjkG1ddVNTQ2qJg1bP4kfcdOq+UltpJwohrMu 8asr2doPod37
7rvvUvWV5dnZl2trkmXcGwAyMzLiHnywrKz0k/fezVzx8py0g9/lnnv9tyNB Af4frVvHyuDs
wlmtVq5YETVr5nUzZiQmbQ2dNPn31NTjJ06ufndtW+8eoXhnJ8fi0jJxpJe3 d0nJZRa+UlNL
aQ6mpeGrbnF9qtwQWbMviTBrqSs059D2YdD3jStalKEVNjbSjwnaTdxm06NN YEkCbfDOH8Z5
fGP74K4zzN+IlJCwHECIn8tj43zXZF6kT/mrN/56/8Q//Pf0uPd/k/HLKb0x edhr2cV7S+uM
ZnvfjOFJJ8soT/EIndkSHjHlifjHvvrqKwcHh5OnT9OPt2efenL1u++yo4O9 RxcVnvfyuq6o
KP3gb0nzb1/JGZM07LVHnGbS8i994yxK3JCc6pMNG7Iyj3z6++Eres30hQ/Y u7uWnjr2wckT
cf/3EKmuJxc9tOy3Q6dLKyaNH0eX8PTw4JTZuXPvrVnz065dyobG8MkTP1iz puNu1yFjx2Rm
Hxe7H9FVBNlUy7+ckrkogYFmbQIDvWXlhmOpHVU0kD4QSaCHeOneMW29nW3D Y5OE9Xa8B9lL
5I5wFvNqEh+ixPufm2pBlfDX116nDwXsHbk5euHhV5dCWLNm2dzbFowYPqv4 Uq63l59GrZXr
ZToZtzY3947IlteYkFpqbLjo5OhIp3y/bftddyxIOpT545Hs2cFBrna2rg4O 750/l37ixJHs
46StFj/0f2yU7cft27dt23bs5ClnJ8ebZ8x4/Y03uzYulnP6lPhEyo0FSi6X 4BtuhexJTmlQ
King5Owc4O/v7UP/vFEtUMYAIgmAHobExw3TZv644007e7trp9zLm46aV0ji FpPk3omr54xJ
Wl15eZajg23UrJljxwY3qbmBSBd39x9PNntVOx89MWnihCWPPDL3ttto9+uv vkpMSiotK3dy
dHjo/ri3Vq4c2qW3SA4dMmSY7+U60aIAiVu2hIxt1q9UEtoOcndDO1oVWZlZ OblX3fkXzL99
wYL5qBYAIJJAJzhzsf78ZWXfXMvD1W5qsEdbRy81qF9NbH8JxAvVDX1T2szM I+JJYQl//EP1
6tKMzCO1dVXuHlqZXqbjX0ui4ZeX1HIvzSaZpD17Zv+///U582QaGcAt7LRp 40baLbp48XJJ
s0Wnqrp688aN23/6qaGxyXewzzNPPvHwokWTJk3qclGHDRu+Y0+Kq4uRBa4y M7ilAXbv3Bke
Dq9tAACASAKd4aM9Fz46Vtw312rHOalJs+Jwh9/+aKfovXKGT56YmX08MWlr VHRMSvKe9IyM
jKyjg9zcwiZPDgmZptboG5uaX0bLZp7wg246UkgXi3bYKBSTQ0OZLikuLRvm O5gJJr8RI1RN
qvxz+YI8cnJ0IHl0/wMPKBQ2QUFB3Slw8aVLhpFjArk8c06fmnnzzYMH+5pY mhIMSITF4hlO
bS/BBQCASALGmT95sIdjH1VmgJdjj+Wl1fVeOR/+v4czn3+eJM7td95Fgmnm TTe9++57zN3n
yT8+89vhsz6DZ7CFjNkLcfmXR+jqa88cO/bTtGnXvrNq1XsffvjF5s2U/obp 01meJcXF76z6
W+LWrcqGRpJH991798OLHxni6+vi4jpixHAHB4fuFLik9LIkZv8vv/j5cS5i +fn5jyxZ0rVR
PGDRNDS0srkG+PujTgCASAKdI2bKYPr0bxnS/jCpuk7d2bMixnr0UnmeePqp MWPHVFZUhIwb
L/GhXvLYoi/+PWvUyDtsbF35CF4f6XVVFYdOnPj+ySefVKmU1ZXci1MO8FPu H160SMa/bpbJ
IwrfGh21/tNPe0O1eInccosvXUpIeJMCkVOnQiEBAABEErBUTDgq9RdtDU6R Znr+L8/+45M3
x4y52dXVT6tt0uk0ZWXHS8vOLl78cFDQqKStSZOvmSCMtZ09c/ax+AA2Gz98 8sQVb67ojWEv
tiSSOOe6+jom7zDKZp0UFkpHrp2dnVAtAEAkAdCLJG7Z8tqbr08Jj1j7wbrs 7AOOTo7u7h6T
J4+bOZNz8T5//vypU6f//eW/lj77rIwbEtT9+fnnKUBqadnzL/Te62ZJhAkT /mX80F7U7Cg0
ljWjVErnN/hjuA0AiCQAepXt27fHPfjg/Lvm1ytrtiQmzp9/dU71qVMnP9+4 6e033hg6bNjO
PXsoprSce9PtIw/93+t8ZC8VaffOnTJ+PUlx5EuvvILGAgAAiCQA+giSI35+ I4T3xZ47f15Z
X+fs4nrkSEZGxpH8c+f+cH/cwvvui4yYUlvPraoQPnniJ/9c39tvTDt75ixt h/oOEWLghASk
U9ucMNYGAEQSAL1JSvKeZ5c+d8cdC0gk0ee77757d+17CoXC2dn5QkGhRqv9 6ecd9GEeSNEz
b/p5564+KBV738iw4cPRQECArbUtgKltAFgbeMEt6FN279zp4uK68bPPhvoO SdyyhWL+8803
RUVFFy5c2Ld3r729nYz3DaKPgn+JwNtv/61vCnbmDLcC58ybb0YbAQAAgEgC /cCcuXN/+d8v
v//++4q33npr5dslxVdX4Bw6bFjS11/fGh218M474hcv0ur14ZMn9vYom0BG 1lFOJM2ejTYC
AgYrSWK4DQDrAsNtoK9Ztmz50aysdevW/fWllxMee+yHH38USyg22T5q1kza 3jF/Qd8UKTPj
iLKhcZjvYPghATENSqwkCQBEEgB9CFNCpEvCI6ZUVlb9MT7+kw0bxAlKiot/ Pfg7BR5ZsqRv
irTj559oGzZ5MloHAAAARBLoZ9g4mtFFjzZ88omdreLmG2Z00K6TuGXL/l9+ oUBmVib3nba1
nTSRe83tzJtvnjl7dkcy+f13TpNdd911aBcgJie31bui8eI2ACCSAOhP6uvr U/btVWu048df
YyJZSXHxxs8++2H7tszs45JDQwb7HD6SRYGNX/6LtsFBox+Iu9/0ikdZ2dzU tltvm4f6BybA
cBsAEEkA9DWlpaVlpaVV1dW1dXUajebgoXSKfP6FF4wmTtyy5euvv96RnCLE jB8XEjx2zKiR
I11cuTfBNTU0arSa8xcuFBUVnTh5Ojfv3Otvr1z/6adtrdYtvPykz5zEgUWg bD3/HwAAkQRA
n2qjgoKCsvJyEkZCZEb6YRm/gKThMBnJo/c//EAwHd0w/fqIKVNumjnLaOY3 tQT+t3/f7uSU
U6dz/vz886mpB7YkJkpSpiRz63pTVlVV1Z6eHmgXwCgsLJLE+Pv7oVoAgEgC oHcpKrp4+vSp
hsZGw0MnTpzgRFJYeFvyyNHB4ZY50Xfddbebu3tHrkUqij5bk5ISk7Zu/f4H NwM/8Z927KDt
5LDQA6kHnBwdB/v4BIwcBbUEDHGGTxIAEEkA9Crp6enFJSWm0wiLOhrKo4ce XtSFiy6MjXV1
cfls0+aNX/6LMmdvRJHxY225eecG+3hHRE6lXdJtBUVF9CG1FOAfMGr0aLa+ JbBCJIskAQAg
kgDoXaqqqttVSMRbK9/etXvXyVOnumY9Msqt8+aVlZf9sP2nZS++KIikf3z8 MW3DQqWT/0kt
5ZzJpc+woUPHjx/v4uKCtrM2JO8kCQkORp0AAJEEQH8SNTtq1+7k3LxzNbV1 JaVlPSKPBB56
eFHqwd+KS8tWrljx0iuvlBQX/5KaSvHzb5/f1ikk6ehDUmny5FBYlawKZeuV JAEAEEkA9C6e
nh4kOEwYk0b4+3/yz3UHfv31UvGlsWPGtOWX3WXilzy6ctU777z33iNLlix9 9lllQ+MN068f
0d7UbipwWXn5pImT/PxGoBGthMLWw23+mP8PAEQSAL1NZGTkiePHC4qKxJPa xLi5u986r7eW
LIqInDp+XMip0zlTIiLKK6soJnZhbEdOpNJmZmXa29v5+vqiEa0BZUOr4TZn vLgNAOsDL7gF
/cCEiROjZkcFjhrl5OjY91df9sILo0YGMIW0ZPGiEZ2xEOTn56P5rATJEgCw JAFghcCSBPoH
e3s7kkr0qaqqvnSxqKy8vLaurm8u7ebuvnbt2syMDF9f3xGd7Pn8/NBTWgWG K0li/j8AEEkA
9DWenh7CokRs6W1SS42Njb2tmcIjIjpXTg+P4OBgjLVZCVhJEgAAkQTMC18e YZc0k0qlvlJd
1dDYjNH1J3tRwHl4uLm6ursPGuHnh6ltVkV5RbkkBpYkACCSADAvzSTjRrha TSgj2VRdzbkT
VVdVq9UqCrA3vrGjnRJSJIBsbZv/BBwdHZmD1CAPT9JDHvwWTWC1VJRXiHdh RgIAIgkAC0CY
X4aRL9B7SJbb9vb2Rp0AYIVgdhsAAEipqGhlSQrA1DYAIJIAAADIDBy3vX1g SQIAIgkAAKCQ
DF5t6+Ptg2oBACIJAACsnQIDkRQSgrfbAgCRBAAAVg+mtgEAIJIAAMAIOTm5 rUUSvLYBgEgC
AABAIikXIgkAAJEEAACtMfTaxvx/ACCSAAAAyE63HmuTwWsbAIgkAAAAMgNL Ery2AYBIAgAA
wCHx2g4JDkGdAACRBAAA1k5hYaHkhSQYawMAIgkAAAAckgAAEEkAAGCMnJwc 8a6/v5+zszOq
BQCIJAAAsGqUSmVW1lFxTHhYGKoFAIgkAACwdjKzsiQx4eEQSQBAJAEAAERS ZiuR5O3tjbW2
AYBIAgAAawdjbQAAiCQAADCC4VjbjBnTUC0AQCQBAIC1k5Z6ULyLsTYAAEQS AADIyisqcnJb
rZCEsTYAAEQSAADIkvekSGKiY6JQLQAAiCQAgFWjVCpT09LEMSHBwT7e3qgZ AABEEgDAqklN
O9jQ0CCOmQ6XbQAARBIAACQntxprc3JymjF9OqoFAACRBACwalLT0ioqKsQx MdHwRgIAQCQB
AKyebdt+FO86OTlFQyQBAFqw7Zer7vj5J/qg9gEA/YihGSk8PMzZ2bmXLieX y6Ojo/fs2YOa
BwAiyTj29vaDfYeg3gHos784VIJRlEplYmKSJHLBgvldyy0mJiY5OVkcw/RQ ZGSkp6dnd4RR
fn5+UFAQBdLT0yMiIvqmcrpW7O7frIStW7euXr06IyODwnTvq1atolrFVxcM ZJFEf0JRUbBm
AwD6meTkFMmktuioqG7O/KdeXAgHBgZWVVWRxKFAN4WCEOgbkdTxYickJFDi pKSkTp3VQTZs
2ED50y0vW7aMb69k8SEST3l5eX32bRHfKYBIAgCAgUx5RcUeg0ltCxbc3s1s WXcupvsdOYkD
pjxIJIlFWK/+lO1gsUmsCKadjp/VQUgG0Y2np6cbFY4kyPryCyO+U2BVwHEb AGB1bNq4WWJG
iomO6g1vJC8vr9jYWKOHli9fTkflcnlMTExbXT7Fk0ii7nnhwoUUZgNPYhkR FBREOURGRrJD
VVVVCQkJLFshkqWkXYqk9HRdSiZkQmGKYfnQllJSJJWZMhHKKZzLjjLpRjFC gA0ISm62rYvG
8NCJwlHBWia5dxJehvF0CrMqyXlY1VHmlKdhbhSzmofKxuLbStlWgQ3vlKDc xHVIu6wGhFtj
l6B4ZoLqVKMDs6LvLEnHjh1DdQPQXyjr61EJjMzMLMmb2ry9vft4Uhv1ndRD L1u2jHQA9c3U
ZRo1w7BenBQS68LFI24bNmygHjc+Pp5iqFdmeoJlu2rVKtoVIkm4UGQ8D8km 5uXDPIeo/yZZ
QL01y4d2DcfL6FwqACWgDOmKlCdLvH79erocpWd3ITnLxEUJClMCypb0H90I hemQxFRDRykH
ugS7HSE+KSmJikFlpgLIWoY1mTsUxdAplJvYf4vypwSUuemUbRXY8E7p0lQA qg3WLhSgbAUj
YjIPZUJnUQ50ddoye1gHGx2YFXK9Xt/b11izZq3kkQQA6Bc++3S9tYtFpXLZ 8pckZqQnn3g8
PLxbb7Rl9gPxcBj1ytS/ime0CWHqNamrpsSCtw2dTn0q9ayG2VLiyspKCjNb hdCtsitKHuB0
CbqoeIiKSQG6kFA26uCphyapQX28OGx4O4a9g5eXl3gITDJfT9g1fVGWuXBR dvtMVYivRcqD
MmFGIzpKuQkCTlI8ypnyp5phCaiQVAzmP8SMQIISaiul6QJL7pS50gu7JH1I CbE8WcHETcny
oRgqQAcbHVidJSkuLlapbEBdAwD6nY2bpANtIcHB3VRIAtQjig0ebflZM/uQ 0DsyCwozP4iT
sbE2cTJmlmDZ0i7raKnTFWwwLJK6bWbsMbwWCzOjFDPVUNcuUUhGIclCl6bE kiG/jtyg5KKC
oUh8+4ZjT2yiHJ2ygYcCzK5j9HKBPGyXmdaEoxE8plN2pMACdDqrZ6oTZrFj ZirxuZJ8KA27
wXYbHVijSPL390dFAwD6ndS0tKyso+IYJyenxY8s6qn8O2iYZ/2l4PQjqBBJ MtZ/M4kgFgSs
y2cGCTbuw8wh1GHTlhk2mKMx7bJsxV04C7N4Kkm7/shsKlmnHGhMX7RTLORh cpBuzagfN5WN
cmZGI0PEQ3VtpexsgdngI5NclKehw75hPh1sdGCNIgkAAPqdwsJCowsjdXPa fxdgXaNkdMmo
M5AkGUki8Rw36puZoYLBfHdIGFF/TLtM3DCJIJ6cz3prFs88bEwrJGaXYqYp w+WgTOiSti7a
BaJ5TFyaOQwZFUYdSdnZApNuo0OCYDVhihPy6WCjA4gkAADoa5RKpdGBtn55 Uxvr76njNNG5
Up/KXIPFwzHMeiGMuLHel7SRsOKi0PVSZ8zG5uh0NmIlSCtml2KXpi3tMluU 0WJIhJqh5cOo
LYQN5LV10Y5LSUGjCIN9RlNSbdBRJlxM59lWyo4UWHKnrOpIAxnmJh6kE/Jh g6emGx1AJAEA
QD+Q+J+kwsIicUzPDrR1ChIuzEJDvSaTO9RzS+Zwiee1SfpyZsCg02UirxqW MjIykvXZQiSb
QcbGy5g4Y104S79s2TLaZX7TbHYbm7wmVhXMyYkCTJ8Zao7ly5eTfBGfZfqi HVRIQUFBgjsR
nU4xglZjpYqNjaXrruJhc+/ZvTPhYtR7qa2U7RbY8E4FkWS4eBXzAaeULB+2 ggOVv91GB+aI
HgAABjS79yQ/uiRe8jlyJLMHL8EsMYbxzG5kGK6srKS+lplGmHWBYiQZUrwk kqBIOosCwmwv
JhRYnoJVg73EQziLwiyxJJ7Iy8sTzmImKMntUDk9eZbxULxQqvT0dJYt5SC5 QRMXNawryYns
XuhaTEzQpdlUMvFRlgkdEkrCaoygs4TEhjm3ldJ0LUnuVGgLoQDiWxN89tnQ nlBd7TY6MEP6
YgkAAADoLzIzs/6x7p/SAa+oqLi4WFQO6DLMl1yY0s9oa+kEYLlgxW0AwICl sLBw46bNkkh/
fz8oJNAd8vPzExISJEOTACIJAAAsSSG9s2atxFnbycnp+eeWonJAl2EvVCGd xJZdQIVAJAEA
gIWhVCo//sc/DRXSC88v7Y13tAGrIjAw0PA9KgTzcEL9DCTgkwQAGIAKac27 ayXT2YjFix+e
MX066gcA0EFgSQIAQCEBAABEEgDAKhXS9OnToJAAAJ0Fi0kCAAYIbC6bUYX0 yOJFqB8AAEQS
AMBKFZLhXDYoJAAARBIAwKrJycn9+B/roJAAABBJAABwldS0tE2bvjCMh0IC AEAkAQCsl8TE
pOSUFCgkAABEEgAANKNUKjdu2pyVddTwEGb7AwAgkgAAVkpbE9mgkAAAEEkA AOslNS0tMTHJ
0E2bvXXE398fVQQAgEgCAFgXSqUy8T9JaWkHDQ/5+/s9sngRFBIAACIJAGB1 mBhiCwsLJYWE
N9cCACCSAABWx7Zt27dt/9HooQXzb1+wYD6qCAAAkQQAsC7KKyo2bdyck5tr eMjJyemRxYvC
w8NQSwAAiCQAgHWxJzll27bthj7aMt4J6cknn/Dx9kYtAQAgkgAAVoQJAxIR HRUVFxeLWgIA
QCQBAKwLEx5I3t7ejyxeFBISjFoCAEAkAQCsiJyc3I2bNldUVBg9illsAACI JACA1VFeUZGY
+B+jrxmRwUcbAACRBACwQpRKZXJyyp7kFKMO2jIYkAAAEEkAACskNS1t27Yf 2xpfgwcSAAAi
CQBgdeTk5G7btr2t+WsyfpXI6OgoGJAAABBJAABrwbT7ERESHBwXF4sXsQEA IJIAAFYkj7Zt
2270DbUMJycnkkczpk9HXQEAIJIAAJBHzWB8DQAAkQQAgDxqxfTp0xYsmI93 jAAAIJIAAJBH
zYQEB5M8wvw1AABEEgAA8qgZTO8HAEAkAQCsiMLCwj3JKe3KowULbod3NgAA IgkAYBW0u+4R
5BEAACIJAGBdmF41G/IIAACRBACwLtg711LTDkIeAQAgkgAAgKMjjkeQRwAA iCQAgBWRmpaW
lnrQtOORjJ/YHx0dFR4ehhoDAEAkAQAGMuUVFcl7UkghNTQ0mE45ffq0GdOn Y2I/AAAiCQAw
wMnMzCJtZOJltAwnJ6fw8DCsmg0AgEgCAAxwmOkoMyvLtFO2jHc8io6OmjF9 Gt65BgCASAIA
DGQ66HUk4x2Pps+YBr9sAABEEgBgIMMmrGVmZrXrdYSRNQAARBIAYOBTXlFB wig5OaXdYTXC
39+Pm7MWFoaRNQAARBIYgFRVVW3YsCE+Pt7T07OzR7vP6tWrIyIioqOjjR7N yMhITk7uvasD
AaVSmZmV1cFhNWY6iomO8vf3R9UBAKwHG1SBVUEaJSgoiLZdOLp8+XIvLy+5 XB4TE5Ofn8/S
066QniQO7cbGxgq5sfSRkZEkfQQRFsNDiQ0vQdrIdBlA98nMzNq4afMzf3p2 06Yv2lVI/v5+
ixc/vHrVykcWL4JCAgBYG3K9Xo9asBJ5xJTHMp5OHSUSEhK2bt1Kh5iOoZi8 vDzakgAiwZSe
nh4YGMjCFE9pKP2GDRsoPcVTgCQRpYmIiGBainKg3BYuXEgJWGSnCgO6po0y s7I64nIk401H
M6ZPnzFjGoQRAAAiCQxkSKMsX768Lc1h+iiDZA0JoFWrVrEEycnJMTEx69ev j4+PZ4dI7pDW
oXySkpIoLElfVVXl5eVF8XRUnCekUh9QWFiYmnqwIzP5GWFhoeHhYZiwBgAA EEkDn6CgINIo
bekM00cFSP2QXqmsrBRcheRyuSB66BCTWUIMS5+XlxcYGMjSMyMT5WAovygx qS4muQwvzaQS
XZcZrkAvaSN/f7/p06eTPMKENWAmtOsfSc8NeqoYfW50H9P+kfCetB7gkzTA IZlCzxp6lNC2
s0cFmAcSczBisEcYOyo8pIQAS08KTEhPzxSjl8jnoQeNIKckT0lWNqNHgVFt lJiYtGz5S2+8
+VZySkqH1oGMinrt1b++9uorMdFRUEjATDDtm0jPE+baaPSpYugN2QXvSdP+ kfCetB5gSRr4
0J99QkICsxgZ/vQxfZRBDyNm7JEILDZJjbkrsZj09PS20lPOCxcuFF93+fLl 9LSii65atUpy
XfYjkhJQnpRPW7PhACMzMysnJ7fjdiM2Wy08LAwvoAVmKI9MjLO3O0zfljdk F7wnZd125QQD
AT2wDkhqePJQoINH6SGyZ88eCpCIoa9KUlKS4YmUgA6t4mEB0+lZtkwtkfSh cGeLCgSOHMn8
fOOmp57+06NL4jv4+ejjf9BZqDpgzs8o9hhp67lBW9IxRnNgP9KE09n4PqUX DlFY/HQykV4M
+xXXVsFMHwWWDixJVkRVVRX76cNMPobGG8lRLy8vimS/t+i3F4WZgzb7Pcee NRQvE810o3gh
PXMXYOkpLDh3s6WS6HRD+xAlY+sLsF9mljLen5qWRtu+cXZm6xsx01FH5qkx mDs2FoEEZotp
/8gNGzYkJCTQE4OeG4bWIwHT3pDd8Z6UtecfCe/JgQoWk7Qi2G8dEi70aKDn kUSCGB6lRxKJ
HvYjiWQT87CmpxU7xB4x9EBhxiSCfgjSI4aeZRRD6ZlVnKUXFpCk9G35aLOj lJJOtyAnpI2b
NqelHSQV0qsiia2LnUXaqANrP0IbAYuD/uSZI7bho4kdpUjmwmhCJAnekEaP soebzJj3ZEd+
YbKyGb266aPAooElCYAuUlhYSAqpsLBIxnv5fPT3D3rjEqncotg57CrQRmAA Y9o/kuJJ4tCP
Lvq5RQmM+ima9obsmvekaf9IeE8OeGBJAqArpKalJSYmCQNeFCBB0yNLL7IB Nc4Ru2MLPzJI
pYWEBEMbAcuFOSkyzbF69Wpm2BZrF1IhJI9I65C4Yd5FzOTMLEzRPCR6JCpH UGCUM3MSYPkz
pdVWeoawjJxR+7fpo2BgAEsSAJ0WMRs3bc7KOiqJv+++2JjoqC5nSxrrdE5u ZwfUME8NDDxM
e0/KRHNjmTqReE8aekOyGW2yznhPmvaPtFDvSdAFYEkCoBPk5OR+/I91Rg08 OTk5nRVJpLfY
1H3adnD2PsPb25sJo5CQYDQKGGCY9p6U8TYnEk8bNmxgTkUS70lDb8iueU+a 8I+0RO9J0DVg
SQKgo4Jm27Yfk1NS2krQcbekrhmNZPy62Ewb4ZVqAADQB8CSBED75OTkbty0 2bSxx7RbUnlF
RQ5H5zyNGMwROyQkBCtiAwAARBIA5kK7BiQxp3NyJSKJLWjU2elpMn5AjXPE hrMRAABAJAFg
hnTEgNQ6PeeW1OXRNCIkODgsPGxcSDAG1AAAoN+BTxIARuiUAUlAoVDY29t3 djRNMBrRFrP3
AQAAIgkA8yUzMyvxP0mdmm7WBWA0AgAAMwfDbQBcpbyiYtPGzV0YJusgbOp+ SEgwjEYAAACR
BPqNNWvWDrA7ev75pb2XuVKpTE5O2ZOc0tnBsnYR1sLG9DQAAIBIAmZB75lD Bh69Mb4WEhzM
tBFG0wAAACIJmB2DfYdERUUNgBtJSUkpK73cGzkXFhYmJib1rKC88847bp93 G75+AAAAkQSA
RVJeUbFt2/a0tIM9nrNOq0X1AgAARBIAlkfvuR8xcnIw0AlARyksLFQqGwbS Hfn7+2FaBkQS
ABbJtm3be08eNYskeIMB0GF6fLy733n+uaV48zREEgAWRmpa2rZtP/b26kfN OiknF09JADrO
hImTBsBdlJaW9pL3JIBIAmAgyKMWkZQDkQRAx5k0aSCIpGPHjkEkQSQBYBkw 36PUtIN9KY9a
RBJG3AAAACIJAPOjvKIieQ/Jo7Re9T0yJZLglgQAABBJAJgbmZlZhYWFzs5O cXGxPt4+LNKb
Qh1b7Voy16a8gvvXLH14+5CyQVlYWNS+ToJbEgAAQCQBYFaEh4fRp8unSxbI DpEFm5BB/Dbn
alhkQCKtBpEEAAAQScBaKCwsLCsrq6qqKiu97OHped1113t6elJ8fX39kSNH LhYVUqSHh6ev
r6+fn5+9vf3Arg2mgSRKSKnk7EzlFeX4tgAAAEQSGPioVCpOA10sUqtUQmR1 VdXevSnz5y8g
MfTrr/+jXRZJn/Pn8g/9Lhvh5z9lyhQXFxerqitnZ2eSTSbsTwAAACwFG1QB aJfjx4+T7iGF
RLrn1tvm/fnZP3/4wXsUppicnJz8/HwSRo5OThRJh+6+594xYzmJcLGo8Pff f0ftgQ4SExMj
l8tZOCEhISgoSM5DgdjY2IyMDHHiqqqq1atXR0ZG/j97bwIYV3Xd/7/ZZzTa vci2LC+yLO8r
tmWwjXfWQBLAQJNCoE0hv6Rpk6YNztJ/aRsI0CSQpmmCSwqBBAhmSQEvYGMD tvGGFy1etFm2
FluLtc9o9pn/ufe+uXqaGY0kL7KW7wdFGc28uTPzpPf195x77rnymI0bN+Ic AgCuLMgkgZ4p
KT5N35944icZo0fJO1evXv2HV14+UVQY/nGN3W6fPXMGfd12y/q6+ob//s3z 5JPq6uoyMjJw
DkGfOMN5/vnnxe1Nmzbt3Llzx44d1113nbiHHBV9X7du3WOPPZaWlkYWqpnn MgEAACYJXF3o
35vq6urRo0dr/Y3WIRGrbly2dcuWdL5krKmxcfmy67WPyoMTExPlgKmpqRFl 0QDE4ZFHHhE3
NmzYsGjRIrJKZJvob4kcEn0nz0QmCWcJxMTr9dIfSX19PQVv2dnZ8n6n00n2 mu5M4+BEAZgk
0DcKCwtFfuiEokyanE1WSdxfcfbc5EkTtUc+8/STccapqa6i73V1daRKMuFE Ay5duhQnGfQJ
mUCi72SV6MYbb7wBhwSiIbWpqqqqqanRdr4uLSm5+ZZbFL705PChQ16vR9xv MpszM8dnZmYi
eAMwSaBXHDhw4GwF+6doztx5hQX5dFv8aLXZ+jpUevqIpqbGQwcPiB9zpuaW lZbQaKRiK1as
GPJr38AVZOfOndIqbd68OS0tbcOGDTgtINohbd++Ta4vyRyflZOTU1hQQEJE xjo7O/v4sWPk
kJbkLXW5XDXV1XS/kDgEbwAmCfTBIf3lAw+uunFZ0clTv/3t826X69bbbr/l prV9Xaf2zNNP
bt2+Y+vWLXT7nns20IAVZ8/9/BfPUoR38OBB8kk44SA+mzZtou9HjhyhG2SM HnvsMfEjckig
OwUjh0QBHrH4uvlCsj7OyvrDKy8fO3a0pKTY6XRQ8PbI1x8Wx5Mi7d23n1wU 6d7kyZNRPQlg
kkC3UKSldUh0Y/bMGU//9AmHsyOiGqn33HbL+pUrbpAjTJ408Xv/8F3ySTXV VSRnCN1AfB59
9FGFJ5Ae46CCBPSGO++4XVsYQGr25pubKdhr4RmmPI3s0GH0tcnlOnSw0el0 4tQBmCTQLZWV
57QOSWDnXM6wESOQJH3jG48+9+xzZMhgkkB8QqFQ9J3Z2dkR7QDA8MTr9RYV FZUUn7bbE5fk
5ck8kLOjI+JI0hxxo6PDNXFCZPlRU1OTUCrtgPMXLEChEoBJAlpYi5qJE8Zf 7ZeZPHGC1WZz
X6OtZ8FgZ926dZs2bdq8eTPKkoa5Q9q16yPRw9bpdOze9VFqWpr4sbKyevbM GdqDI36MNEmN
bHPGvXv3mE1mGkoMuG/vniV5S7XL4sDwBM0kgYrVaqXvL/3+lauddv7Vr39L DikVUyfgkhCV
SY8++ijySXBIFG796Ec/XLlqtcLb/dOPt952+8oVN/RptAe/9kDO1Fyf10ve iEb4zne/Q/aI
7j908IBYUAmGM8gkAZWFCxc21NfXVFe9/ef3Hvjq/b18VsVZNkkX0RogDlu3 7ygrZbvA5uVh
rg1cChTcv/HGG/fee++iRYvWrVsnuwOkpaWJ5pNgmDikzPFZD33tAVFXNG1a 7v79B+6/b8Ml
FFCKFrgkTaWlpV//q6+Jpri5ubl/eOVlsTgX+SSYJDCsEdGSyWQSqeYFC+bF P76uvuHDHR+J
hbXyzvT0ETlTp95ww9L4me3rFs7funWL2+Wqq6trbm4mvSMBQjsA0Cc2bNhQ Xl7+9NNP7+Qo
vLgbs2/DhKKiIpE0Eg5J3Llk0UL6upxhb7tlvUJfYVbduKyxsXHb1i3kkzIy MobbHpQAJgmo
MdnevXvr62rlPUvy4rkcp9P5x9fekK2PiNS0NJPJ3FBfx1sisa5IOVNzH37o we7iObp/9eo1
JD3Hjx0V95w7e3b5ihXQILBjx46Yt2NC3hp5o+FJS0uLwmuxe5/AvjTu/vKd paWlZaUlDocD
AgWTBIYj1dXV5JBEy7WampqmxsYv3vmF7g4WXY5EwfWkydkRbUWam5srGGdI U/79J088+OCD
3QV2t9y0tqCgwGazpaenNzU10fHFxcULFy7ErwMA0CMmk4m+f/TR7vhJ68uH FE/UBiDVDZME
hilkjBS+Va122X98h5SalpaXtzS6Y43YCGn27Nl79uxpqK/b9PzzCQnfiali FJP967/8WA77
xBNP1lRXXyuTRFHpc8899/jjj+OPAYBe8tJLLz300EPX6tVJZOrr6woL8rdu 33GbZoLsyuJ0
On/zG5aqpBgSDbpgksBwxOv1iu3VFl83v2dZ/P0rwiGtWbM2TlxFD61du1Z0 7v7tb59/+qdP
xE9TT540Uexe0tzc3P9KRA5p1apVqamp+GMAoPc8/DDrWH2tfBIJRWpqGkVi BQUFPZoktnHk
qeKqqurGxsampqbMzMwRI0bMmJ7b41RdfcNFUXM5adIk/MZhksBwpJn3FKE4 qcfp9rfeeZfs
lN2eGN8hSZYuXUraRCr2x9fekDsAdEfO1KmHDjbW1dX1s0kSDik/P3/lypX4 YwBggPsk0quD
Bw+0NDePGp0hNq99+KEH49ujiAJKQkyfKXyhyW233x4ng04uauWq1Z98vPv4 sWMnTrBS8Vmz
5xD41Q830Cdp+FJfX888Sk5Oj0fu3r2Lvs9fsKD3c/OimzYpVF19Q/wjc3Nz lXAxZv87JPwZ
AHDJPumll17qn9fyer0fbN8mekUKh7Qkb2mc1f4ff7rvsR/8SDik1LQ08jfL lq9YvWbt/AUL
J03ONpnNTU2Nf3jl5aee+XmctnB3fekOq83mdDrE654oKjx69Ch+78MNZJKG O66eOl8f+vyo
2+Wy2xP71KTfbreTGJ2tOHPk6PHe1A34fD44JAAGnU9S+iWfVF1dzSK6qbkb v/+9opOnOjpc
s2ZMi+OQyADRjVGjM2bPnq1dXyJvnz59+sSJorLSkmd+9uz3//G7MbPpdKfY z2TUyJEdHR1P
PPFkRcUZLDGBSQLDhezsbIqNKNgqKy3NW7r0lpvWxlSKqiomT5MmT+7r+KNH jyaTFKduYOv2
HR/v3i0m/kU+CQ4JAPikaMQSE5Gfjr+ojYI64ZDiz45Nnz6dor49ez6tqa6K 45O0ryWqJ+vq
6rSuCwx5MN02fCFRWLZ8hd2eSFf+tq1bKs5VxjystLRUOJ6+ji+kROyLFJO3 33qTXtpkNpOc
9Y/uwCEBcDV80tWedxNLTGZM7yGUcjqdL7/cs0OSArhmDUWGiTT49g8/6vE9 zJk7VwlXKQCY
JDAsoFjqjjvvvErbqInITNuVOyZ3331P/5RDwiEBMBh9klhikp4+osctR8jr uF2uUaMzeikp
ZrN5SV4e3aAoscfqyWnTcmGShiGYbhvWeL3e4uLiq7SjLQ1O3602W/zDCgsL s7Ozr3ZD2zgO
6ZNPPtHpdPhjAOAyfZJydebdwutwx/d4pFhiMnv27N4PnpGRIZbL7d23/+4v 3xnnyIkTsriS
NON3PaxAJmlY88H27SeKCn1eL0Vp9oSEmMekp6dLnboEaRs/vtty70z+EL2B 7du3CUfV/w4J
AHAFfdLVyCeJ5iClpSVvvfNunHxP0clTYolJX+fuRUFkQUFBnGNo8BdfYhN5 qaloLDm8QCZp
+HLmzBmn00FO5fbbb4uzN+T48eMPHVQaGhqmT5/ep/FFrWVmZmZ3B/zrv/yY pOf997eWlZYc
PXpUVGUCAECESRJLZbdt3UJff/nAgzH7GxUXlyq9SzhFINbtirKnmHz/sR/K sgGsbhtuIJM0
fBGzbHPnzo2/e/Z1C+cLBenTrBxv582WxYmJ/O6YPXPGmjWr5Zu5SqSmpn78 8cfz5s3DLx2A
q8eLL754lZa5UQS1es1aUT3Z2BivzFHs7NZXTL3oADdr9py77r4HW5TAJIHh gigDEg1I4pAx
etScucxe9KmRGi91cqSnj4jvwJRwi4FLWD13pXzSypUrQwCAXtPPDkkVooyM qzfVFb8m0sZL
EbKzs7HTLUwSGEaImfvScJ/+ONx/3waRTDpz5kxvRq6rqztRVEg3HvzaAz0e LEoB+mEDNeST
ABh0OaRwKFX13rvvnq04c5XGb4lbcylm4t579//27NlzVasnAUwSGFiZJLs9 0e1yHfr8aI/J
pL98gG2TdOjggdOnT8c/mIzUvr17Fb5vQPy2b8xO1TcIAeqfPknwSQAMOodE vuTwoUMiM33X
3ffcctPamIdlZbFqpEtYoi9bDHR3wHe++x1SM+GWiouL8RsfVqBwe1iTOX58 SfHp/fsPJCSw
hfrFxaXd9d1edeMyCub4do9Ha2pqIpr9C5xO59GjR4XpIU2Js7Xt1u07Ro4c QS967Fg+fxtZ
/ZbHFj4Ji90AGBQOSeElAV6vZ87ceX//7W/GOUws0W+oryNT1Sc9qaioUPhO 290dQMEefX3x
zi/86Ec/Likpxja3MElguDB58mQySYUF+fQl7+yuWcgDX70/KyvrzTc3kwzt 3lWXmpY2enSG
KJP0+Xz19XUyZX3rbbfH6ThSdPLU22+9qb1n0qRJ/fmp4ZMAGCwOSQkXDPW4 y2TG6FE5U3PL
SkuKiop6vwaNHFUFn8W74YYeVtc2XLyooAUATBIYVqSlpd18y62kKaQUPp+X XM7u3bu6SyYp
PJ+0+Lr5f3ztjYKCfDo4eiJ/Sd5SirfiN8bdvPkthW/NbTKxaC9mUgo+CQA4 JClT9L2sF9WT
X/jCbc89W0KBH4V/vVyGdvDgQZ/XS+6qx9qAyspqpacSbwCTBIagT1qxYoW4 /d677zqdDvJA
cWbKSCPEo0UnT4nGJIJp06ZOnjihRwXZun2HmI9bs2bttV0qIn0S/gYAGLAO SeGbh1BMRSHZ
oc+Pxl8tS0Zn5arVn3y8e9euj0hhevRJBw4cIDmy2mz33XtPj29DLDG52utw AUwSGKCI3pJ0
Y/26Nb05XszT9/VVVq64YevWLW6Xq08p8avqk5577jn89gEYmA5JMHp0Bpmk 48fze2wpcteX
7igrKyPrQz5p1qzZ3bXA1RZQ3nPPhsmTJsYftq6+QaSyxve9WSWASQJDgcrK c0xi7r6nR724
HOx2+ze+8ehzzz5XUnx6IPSuJZ/0+OOP47cPQO/pZ4ekhKsnCwryn3rm5wqf euuu7zYpzPf/
8bsv/O/vCwvyjx87evZsRW7utIyMDJnkrqurq6mpqag44/N6rTYbOaSY4wi+ /9gP6Xv6iBGi
Iqo/l5gAmCQwsNDpWD+IGdNzr7reTZyQnj5CtvkHAID4pKWlzZo950RRoaxM 2rply+Lr5sec
36c7//7b39y6fcfWrVvYJN3BAzHHzJma+/BDD8YpoPz4031CpsR3uz2xT1vn ApgkMKTQ65lJ
eun3r1AcdvWKE51O5zM/e5ZEJxXd/QEAvWbOnDnZ2dkOBysJOHTwIGnI9g8/ irOK9rZb1q9c
ccPhI8fz8/NLS0vc4cVxmeOzcnJyli+7Pn7KnJTqzTc3K3w3ElGHREYNaSSY JDB8ycvL2+V0
1FRXkYmRPumVP75eU1MTP96KLzR/fO0Nl8v19b/6Gg0oHBK9hMlszsvDdrYA gD7A+9/avV6v
yWxSnEppaWmPx6+6cVmc2bQ4OJwdwlfRIP2//BbAJIEBBwVJa9as3b1rF5mY f/23J+7ZcM+W
LVtFYeOPfvTjW2+7PU5rgJi89c67u3fvEkJDAz74tQc2b35LOKTeLDwBAIBo ioqKWpqbrTbb
t7/1jav3KhQW3nX3PW+/9eaxY0e1JU1guIFtSUAXn7R6zZrUtLSmpsZNzz8v DM2o0SyK2rZ1
S8W5yj6Nto2vYqPR7PZEGvC5Z5+DQwIAXCZtba30/cEHH7zaxuW2W9bnTM31 eb1ijg8MT5BJ
ApE+iUwMWxxbUz16dEZeXh7d8/prryp8zX/EwVu375BtcKOLAyjUI5NEo4ng r6LiDA24cOFC
xGQAgEsmEAjS9/37D/TYDuAyqTh7rpqn0gFMEgBdfNLSpT0XDJGCaHcXGTFi RMTc//jxWWWl
Jc3NzRkZzBsNhAX/AIDBDinJrl0fFRbkb3rhRdn21ul0Hj5y/NLKj+QIJ04V S+NF+vbzXzxL
Yd6kydmoSYJJAiAeYsX+U8/8nMzTjOm5ooh7x85d9H3UaDZbf7bizO7du4VC CbXKz88nh2Q2
WzCzBgC4gpCkLFmSt2/vHrG2n3wSGZrf/OZ50qgDBw5c2iqTjz/d9+abm8kS HT++9Kt/cW99
w0XhkFLT0hDdwSQB0APz5s/fvesjMj2iSQl5pszx48WeuGSbTCZTTU11TXXV L3/1301NTTWa
BPXiJUuwaBYAcGXJyspakreUTBJ9lZWWyqZrJFA/+tGPu+sz2R3ff+yHcgQx YIerQzika757
EoBJAoOAjIyMu+6+p7q6uoaoriJBEZoya/YcUWC0YMHC48eOCduk8PRSZmYm CRnKjwAAV4Ps
7Oy0tLRduz4SWjRpcva0adP27tnjdDoSEmx9Gip9BMuUi35Ie/fukQMuXLgQ DgnAJIFeQWKR
zaHbzc3NDocjMTFRTqXR/WSk6urq0FMEANA/kP7cccedFLylceieBNaMLYZJ +pd//YnMcEfn
mWw2djw5JNIuMSB0DMAkgcvSpuhKI5IVYaEAAKA/gzf5Y4fTSd8vXmzSHlN0 8pS2BuDAgQNa
k1RX3yBuiCUmEQMCAJMEAABgKDB/wYJ9e/f84ZWX33xz89SpuVOnTp0wYfxn n7H67txp02fP
nv3ee++WlZZ8/Om+kSPTi4tLCwoKhH+yJyZOnz4dJxDAJAEAABiaZGVlzV+w 8OzZipbm5sKC
fFklSUybNs1sNk+enF1SfJpclPZZop4JZw/AJAEAABjKTOc4nc6qqqqWlha6 4fN58/KWikUk
CxcuFKtxTSZzWlraqFGjyFfhpAGYJAAAAMMFskTdTZ/N4eAUgV6CvdsAAAAA AGCSAAAAAABg
kgAAAAAAYJIAAAAAAK4kKNweynQ4nYWFhUPjg+C3CQAAACYJXDGcTseJokKc BwAAAAAmCXTy
T//4PZwEAAAAACYJRDJtWi5OAgAAAHDJoHAbAAAAACAGyCQBAAC4xrz+2qs4 CQAmCQAAAOhk
6O2elpBgw691yKALhUI4CwAAAAAAEaAmCQAAAAAAJgkAAAAAACYJAAAAAAAm CQAAAAAAJgkM
HjZt2rRz506cBwAAAIMOtAAAsdm4ceORI0fE7Q0bNjzyyCOX5pAeffTRHTt2 4HwCAACASQJD
BHJIMgO0bt26S3ZIOJMAAAAGKZhuA1cFOCQAAAAwSQDAIQEAhoJwoYASwCSB XnFpU2xwSACA
fmbjxo3rw5D+QLjAFQQ1SeAKh2IQGgBAf4ICSnD1QCYJwCEBACBcAMAkAQgN AABAuABMEoDQ
AACGPCigBDBJYDA5pEvrPAkAAAjtAEwSGOIO6fnnn8eZAQDAIQGYJAChgUMC AMAhAZgkAOCQ
AABwSAAmCQA4JADA0BYunBYAkwQui4hW/UeOHNm4cSMcEgAAoR2ASQKgi0Na v359c3MzhAYA
AIcEYJIAgEMCAMAhAZgkAOCQAABwSADAJAE4JADAkAEFlAAmCfQ3Z86cgUMC ACC0A8MNI04B
6I1JQigGAIBDAsMNZJJA34DQAADgkABMEgBwSAAAOCQAkwRAT1x33XUQGgDA QAYFlODKgpok
0FuHtGPHDpwHAMAAN0naH+GQwGWCTBLorUNKS0vr/VP6dDAAAFxx4JDA5YNM Ergsh7R58+aI
0E2aJJnx3rhxY/TT6R7SL3gpAAAcEoBJAkPQIRHr1q1bv379kSNH4gwS/SgN 2NfU1JBEp9PR
CRTzmIsWLSJbKRwnnZns7Gx66LHHHpNnic5zRKM8+VwAQIRwwSFdcV0iUaIT S+6THtUeHPH0
p556ioQLJgnAIXXanR59UgSkXzQ4znCElSQNEspOqkR+6Omnn960adMbb7yh lSQSIHmbjsd5
AyCmcOE8XHFdIqtEirR58+YIG0QHkHPSnv8hdQpCAMSC/m1uamrq5cF0ZO8v DLrehvapI4GO
8xm1j4psUPRteaRIKYlfhLBK0QOSYNGR3b3c559/Tgf0/lcJwKBDGzmQEPX1 r10bB8a5lAY1
dE7i60AvdUlKPQlLd8LVG12K/+iAAoXbIDYbNmzo/XSYyCf1xifRdaiNOYZe 1LWeo12B3MtH
oxHTbRS9UegW5zAaTQwbM5lHv5qnn356ypQp9B1/1WA4J7/pOno6FtrjN27c uD6Ke++9t5fX
7MAkvgL0SZfoXFH8LMaMf2R8XYr/KDJJIDRUg5X4PmkI55AoriJbKcyljLF6 fDR+JokoLy8X
z4qTSerx1UXclsahG/hDBUMyk9RjDqlPCW+tLYh5TQ2WMxPnwr9kXcrOzqYx 42eSLlkVBxow
SaCffNJQdUjkY+Jc6vEf7VGMtPdrK5NkfRKsEgD099zLWbZL8ElvvPHGYDwn Yu1wdxf7ZeqS
NmCLPmMR82iD3SrBJIH+8ElD1SGJekaSjJiXd/xHL80kPaUh5qQ+vZY4srtz LqwSxYL4WwVD
AxRQxsz0dBcLXb4u0T3aTBK9nFaXyIH1VZd6VK1rCFa3gStM9Hq3IVyHJMTo DCdaeeM/2ssi
p4jVIj2urRUvJ2xQzFIAepS+Y3UhGEoFlJcjUEOvgJKu/Z07d4orPbpC64ro klZe6PZl6lL8
R1GTBIZyPmnIr2WjTyqUVHQW6dOjPUZs4rniiXFqkgSydp6eFR1Yi+UtQtGG 6hIeAK5UPmmw
Cxdd4zKfFFMNLlmXRHsFmaaKU5PUG12K/+hAACYJXEUZGqTT+ZdAeXm5MDEU 1EZnm7t7NL4Y
yay4THF3Z5JkhQEdEzPXLQsUhrxnBeDyfdKQuUziX/iXoEt0mPBe0tDEMUnx dalH1YJJAmCo
IaOimJIU/WiEGImmbYQoRI1YsBNdkySCOZHoFoufY+qUyGDTYeiWBECPPmmI BRL0GYVEyI5r
l6xLjzzyiLBcWqmJrkkSsXF8XYr/KEwSAEMZUhOSgN48qhWjiDl+irEi8nDR q9tEYomOjN+7
MmZyCwAQ7ZOG9iLcODrQoy6RN6ITFR1rxWzw1qMuxX90QKGL+SEBAACA4YBo bHjkyJGh3eoW
XBowSQAAAIa7T9q5c2efVskBmCQAAAAAgOEL9m4DAAAAAIBJAgAAAACASQIA AAAAgEkCAAAA
AIBJAgAAAACASQIAAAAAgEkCAAAAAIBJAgAAAAAYqBgHwpv4j//4OX4TAFxz srKy7r//XpwH
6BIA0KUBZJKKS0rwdwAAGFBAlwAAxgHyPkaNzli7di1+HwBcK15/7VWcBOgS ANAlLahJAgAA
AACASQIAAAAAgEkCAAAAAIBJAgAAAACASQIAAAAAgEkCAAAAAIBJAgAAAAAY EBhxCgAYFFRU
VBw+fOgyB5k4cVJeXh5OJgBg4OjS4sVLJk+eDJMEALh0nnnqibKysssf5ydP Pg2fBAC4fJqb
mzd+/3tNTU2XOc47b21+8qn/GJg+CdNtAAwOrohDIs6dO4uTCQC4fIqKii7f IREXL16srq4e
mJ8RJgkAAAAAACYJAAAAAAAmCQAAAADgkhl8hdtvv/WW1+uJvt9sttx1991x nnjy5MmC/OM3
3XxLenq69jb+CAAAl0NTU9OHH2yP+VDWhInLli3rpS7t27evrrY2vo4BAGCS eiA9fcRNN998
OSPM5ODXDwY13/unx372zFPidkHhiXlzZ4vbP3/2P//hO98Wt//ndy898vWH ca76gekzZs6f
P/9yRohvpwAYFGx64cW/+euHovVnz779y29YKm7/4/c3/vw/nh4UHwfTbQAM VkhlXn/jLXF7
7pxZj//bE3Tj1ltv+6uHHxR3nj1X+bNnfooTBQDoN8gVkfKI2+SWSJFERCcd 0tbtHw4Wh6QM
1T5JJ0+eLC8vczoc3YV3ESluOnJ8VhbdQw/ZExPnzZs/YcKE6KHS00dMnzFD PlRZWVleXl5X
e4FuZ4wZO2/ePEzegX7mX/75h0vzFk+ayP4m//7vvvXqH37/4EN/lZqSIh79 r1//d0lJCc7S
YNEl7XTb22+9lTVhgtfrrao8JxRm8eLFiYmJ4sjjx4+fPnVS3I54SPsqWRMm Ll68yGy24OSD
/uQHG3/w2mt/FLd/+ON/3rZt699+65vix5bW1v/6z18Oos8yBDNJwgBlZU24 /y++csOy5SQl
JCjxn9LU1FhdVfWFO+6kp4wZM/azfXtra2uFDaKhZsyYSffTF/knesjB1YcO oNt0QzxENz7e
vVs8BEC/QR6InJC4Td7o2V/+6v571YqW1994axCFa8PBIfVVl8rLSskk0fHC Nu3evUuUY9IT
z5SXC72ih3xeLz2kfZUpU3LoITqArNLHuz/GyQf9zOuvv/o/v3tJ3F5+w9It 2z4QgRzxy//8
NXmmQfRZBmUmiTzN66+9GnHn3HnzRZnR6VOnyM2IKG3ChAnl5WNJUHqsFVgU DsUoJqutvXDq
1KkxY8aINll0QxzDKgbCRQOHDx+iV1m9erX4kW689967+fn5qCoA/Qw5oUWL FgtvdNstN4k7
z56r/Jd//iFOTn9CvkdmdyRydcgl6JJUGLPZMm/evA8/2F5WVk4qV19XZzKb hF7RQ7JAk4I0
5sMmTBRKSAeQrNGzyDmhBBP0M498/eH169YIbyR1aev2Dx///340uD7IUCvc rq2tpWArKzwj
JuxLjwOSGGlnymj8Op5JIntEqldZWUnxXE5OjkxokxhRiDYlZ2rEuxLPAqCf 0U66CTDR1v/E
Kdy+NF0aM2asRl7SyQ/V1dWR3RG1AWVlZSRE2lcU+e+MjIyYz8IvCPQz2kk3 ZRBOtA1ikxQH
cjP03WQy9elZlq5z9na7nRSNvsgk3bBsOUlMeVmpiBGFDopXoTvpK+oNeFAB APqZO774Za1D
IqZNm47TMth1KeJ4CtJ8fBzheKqqqupqL5AuUYw3ZUoO3Sle5fPDhz7vuuGo eBYA/cyadeu1
P6ampMycPWdwzbUNQZNkNpuZKPh8lzOI0+kkoyO8zgTO4sWLm5qaTp06JaxS Tk6OciVW/AJw
+eTm5sqiSMnf/PVD9C/lpud/g/MzZHTJ4XCkhRPesolJWVkZuaWC/ONkocSr UFw3YcIEnHNw
bbn//q/IRgCSH//oB+/93zuDK8k91Aq3x4wZQ+amlq84Exw+fPj1116tjTsR RuqjbVDZ1NSY
FrVOLT09fdmyZTQ4WSjSI4re6uvqtAd8+MEH9IVrA/Qz//rvT8o0kiyWJH7w g43kn3B+Bq8u
aRWGgjTSKO1UmoACtnnz5gkRE9WT2g1H6Slvv/VWjxXiAFxxfvpUZ/MRqUti ccng+iBDcHXb
9BkznA7HyZMnhV5UVVZmjBkri69jQlKyb99nwift3r2bnj5jxgyFryIhiams VFs+0JhSp2bM
mEleat++fVLy6Me5XK0A6De+90+PyeVsez878MjXH5Z6RM7pH7//A5yiwatL JCkkLMIAfX74
MAVmOTlTZDwm19Lm5+eTA5swYQIFb1Nypp4+dVK8ipA1k9k0c+YMnH/Qn2x6 4UUZuf3iuV+R
LhUUnhA/3nbLTaRag+izDJ3VbUo4zyyy0OXlZaLvEanG4sWL4w9IEkP6Qn5I 4U1H5IKU+fPn
m81mkiex2t/OVossEXNt9J0eKi8vF+8kPX0EvXp8yQPgyhIx0fbkT/6dvv/s mZ/KRSWYdOtP
Yq5uI+66+25SmEvQJVIVckJCYbImTFy1eJWoAVi1elV+fsH7770rDiPJWrV6 tVyca7fb5avQ
Q6tXr0GVJOhPtBNtZ89Vfu+7f0c3fvrkk7KIe3BNug0+k9SbjY1i7jqivTP6 gMWcXg4lEOVK
uCTAteLZX/5KG66JikjROUluV/KDH2z8ePdHWOl2VaGYSjRLu0xdimggQlFZ zJYiZHq60ysF
ey6Bax25aSfafvpTVYhef/3VNevWC/MkJt1uv/XmQfGJjPilAjBI6U5lfv4f T6ONJACg/6F4
bPKkiTEfeuTrDw/GfSSxdxsAAAAAQAyQScLO2wCAAUdv6goAAFcbZJIAAAAA AGCSABj2JCYm
4SQAAABMEgBDh7959P9d/iC33HLr9ddfj5MJALh8VqxYce9991/+ODQIDTUw PyNqkgAYHNx7
7330hfMAABhAwdsj36CvIfwBkUkCAAAAAIBJAgAAAACASQIAAAAAgEkCAAAA AIBJAgAAAAC4
ygy41W11dXW7d32EXwwA/cPqNWszMjJwHuJTWFh4oqgQ5wGA/qE3O0b3D8gk AQAAAADEYID2
ScqZmrvx+9/DrweAq8dTz/y8rLQE56H33Hrb7Xd/+U6cBwCuHl//m0cH1PtB JgkAAAAAACYJ
AAAAAAAmCQAAAAAAJgkAAAAAACYJAAAAAAAmCQAAAAAAJgkAAAAAACYJAAAA AAAmCQAAAAAA
JgkAAAAAACYJAAAAAAAmCQAAAAAAJgkAAAAAACYJAAAAAADAJAEAAAAAwCQB AAAAAMAkAQAA
AADAJAEAAAAAwCQBAAAAAMAkAQAAAADAJAEAAAAAwCQBAAAAAMAkAQAAAADA JAEAAAAAwCQB
AAAAAMAkAQAAAADAJAEAAAAAwCQBAAAAAACYJAAAAAAAmCQAAAAAAJgkAAAA AIArhhGnAPSe
UCh0mSPodDqcRgAAdAnAJIFhoT7dHRJTdiIGhDYBAPpNl7rTG+gSgEkClytA dHefIrboY4X0
aPVHDghVAgBcbV3qxjlBlwBMEui7BvXVFfXyJeSQOl2nBEGVAADQJQCTBIad BsV5afk6er1O
+34gSQBAl66tLkW7JegSTBIYvjLUGw3SHhAK9vaFdHqlx2gsGAxpVQkBHADQ JakM10SXot0S
dAkmCcAbxT44jvTQADEESNFFy5Y8UshTtNBIVUJiCQDo0kDWJYgSTBIYviGa OkkfjKE7oWCv
Mt6xFUqvEyIlRqZjulMl8d4gSQBAl7qYlWBsqblkXdJxkbkEXUL8BpMEhp0M RWtQHFfUO1FS
9No1I8GQJmhjhim+KkGSABgmuhQndXRVdUmMA10CMElQom5lKDpvFK1B6k99 L5zsMgyXEiFP
0jBFqxIkCQDYo954o2urS9paJYgSTBIY3EoUM3sUIUMRGhRTgOSYfY3YmIjw 56pPDAuTVCW9
Xi+8GiQJgGEetml1KRgM9miMrqAuRbilOLokapWELiF+g0kCQ9YexfBGsQQo eEnLbzufxQcR
AtRFmMKqJKRQBnDdSRJSSgAMSV3qOWbrkn/qmyvqvS5FuKW+6hJECSYJDBol 6tEeaUO0mBoU
PUBI292o1+jCWSBtFEiqEq1KIoCLI0lIKQEwtO3RgNIl1f1E6ZLeEDvVjfgN JgkMAiWKmcfu
bPKhD/cl6rz++fSXThcMBCM0qDv1kffFfFRqhHQz2sNEBlvKXxdV0lglmehW 9CGEbgAMPV3S
ipL0TzF1KcIYXXFd6mKYNLqkvnCULgUDMVJK8hWgSzBJYOAqUcxALWYYF+p6 Wx5GchAIhmJ2
Lul139tQVMTW2ZNNRopatxRtlcRhdEx3KSX4JACGmC6FogQqFLYswVAMb3Q5 uiQERGaAOgWw
G10Sx8fRJcRvMElgsAZqWhliGWPNfL/4f5EjVo+hy5vfIwaMoW7BzvArGEub 9DqdJkbUhfVH
TUSTiGjdkojh4khS50qTriklpLgBGIy6FNM8CV3qvLp5sCRKo6+ULmkFglQl PIK6fjYiiovW
Je1KWzqmu1S3Nn6DLsEkgUEQqLH/D4UbpimdzYqC2tS0poAxEGKjBTVhXLib SHTTttjRW0B7
f1AuqVUNUyDQxS2JGC62JHXNckdXAyDFDcAg0qWIsI1d6P2oS9H9A6Qu8WG7 uKUedUmbUuou
foMuwSSBAe2QQuqF31mHpI23RAZbxmdCN+jKlz34AwH+UzDU3StyyYixNYAU BZnQFhUGSjgU
07ol+lGvZpu6SJJBH5lSilkNgBQ3AINFlzRZH3ld96xLYva/f3RJuiWDQR9t lfRKKDrVjak3
mCQwOB1SULVHdCNaibQLOkJhwZHKEgzXJIXz26FgMBQzZx6KG7MJG6TGW6GQ iNLYm+mqSiJB
La2SMEOkjNGhW5ypN+gRAANEl+JM/Wt1SWaP4ulSSGqRzh8IqHaHSwyrUuLC dDm6JCb4pS7J
3FKAr2LRWiU6uLuUEnQJJgkMaCWKLmZk82vd2CMZrrFrmF3Ywe6UhdmXQDCk qZcU0V3MKC1m
3EbPMhoN3AYFpTaFJ9pUVdJaJSFJTHS6SSlpp96gRwAMwLDtCutS55q1kJCU CF0SCRu/P9DL
9xmtS/J+JiBBReSWhC6RVZKFAVpd6kwpKWpJAN0FnwSTBAZorMau24BwDzp1 pj8qUNNxh9F5
6UY0jVSzyuw+oUHqs/jMus8XjFpXouOSR4fEMEx6nncWcZsULxqIPJAYh9yS Xq/XyYCsqyQZ
DN2mlCJS3NAjAAaUQ9ImtukaFPkYrS5F2KN4usRkLcD/P1KXxJheb0BNOMnW uCFx+QdjppL0
eoPMJ2lNFRkmqUvRIRy5H65XXVLdiN9gksCgcUjqtUfq4w/5AiGjQR+hRDq9 2j5WNiDR7g2i
SpKaU+5sVUI3PB5fTU2L0+FubnI2Nra7XB56qMPp9vsCeuZjVPEaP36kPdG6 ZOkUjdIFZZEk
vRv6kctTSAoT/ShjOJ49UiXJYGQuyu+PkVLSh1Pi0aUA2lJu6BEA14roMm26 GCnECnBdUpRI
XVK9ULQuhdTlbMyOBINiSk3tJBkMtbW56uva2lo7HA5PQ30r6ZLeoG9rcSq6 LkvJpk0fT9+7
6FIwoA3kWBURE0etLtGbjAzhdGGTF53qRvwGkwQGh0OSWkN+xOfzsys5rDvq ZHnXuf9wx/3O
OgBpWZwOT011U1ury+Fwu92+jg6Po91FYzZebGtpaXc4OkiS1KZKOvWaP3yQ xXIvv6QkJFjH
jRs5OXvsshtnpqTYDFwWFX1QI086rj4kNwEuMuw2xZpSkgL+oEwpRYdu0ifJ UgBZyg2fBMC1
1aUIhyQWWNAjBgNdzp26pA3btKIkdEm7VI35kvAq+uYmR11tm6Pd3dLipOCN pKm9vcPj9jVe
bG1rc7LbHm+Qd1ISRonsy+GDp4QupaUlZY4flT1l3Oq1s0VUJnUpFFJ1id8Z CrsfvewCICbg
AppUt9QlRe010G38Bp8EkwQGhEPis+KaZrUBhU1a8etRtUrdTbrJiI1fwFXn mihE63B6WlvJ
CXkpuvJ6/c1N7c1NbR0dzDCRDInpMF6YJDq4aSwaSzK5SkurSkuqtm87OGFC xoob5+RdP1Wk
y0UGm0lHMBBWH6ZQaqIoLEkkVTKlJMJHWQ0QmeJW4JMAGEC6FNMhsQuQWRDF H1R1ydB1Q4/O
STe5oo1HUaJPkrvDe+F8a3u7y+lwkzqRCpHZYt6okcVsrg6P1+ujLykgIqYK arok0YCkYE1N
bYX55Vve/WzipDFr1y+cOSvTrymOJF0KBAJ60fab5bID4aZJLKskU90ypSSc X4/xG/LcMEmg
v5VIiWg0ItZo6LrEcHRJkxiRxaFL26DopSsS0VtUQxHF7fFfqGkhV0RRmsPh oSeKuf+WFofT
4fJ6fFwRDEYjXfjGsBiF+7yFdUjHpCWoqhQXpsrKuj+8Uvv2W3uW3zj3jjsX ibca4Kok9CU8
/a9+IlGuxN42lySRUhLVADLFLUuUInySyJZFtAaAHgFwTSI3cbF3lm+HV9T7 mFEi46CjEEgb
tilR5ds6bo/qalsdTo+jzUXq5POxoktSNrI7bpfX7fbSMUajke4xGChyCwhP I8oq1TZHsoVA
OBr0+vylpdUlxVUZY9LW3bRo6fVTpS6xTBLPLVGQKWoDpC7J2m2RUoouCUD8 NoTR4xQMLoJR
rUFC4YtZ7asWVC9sulyDXFMikttsSk6v/t7p0fr6NnJIFKI5nR461mRi17/D 4Wp3dAT5LJjR
RP5ILzLM3N8Y9CK3I67vmNe45s4Op3v7lgM//sHvP9tbIpaj0LBebyCgyihT FFFrKZRI3JDZ
e/Fx+D3i46sPBcIdeIPhTy2EmI8Wa6+DUAh/PAD0W+QmdUmbLjIZ9WLLI78/ GNJs0yZDOHHb
5/PX1raRQ2Kpow6vwgureSmSs73NKSyUkUkcU7JwKkgnBalLW22dXqtJ4RdT amubXnnpg39/
/LVzZy8KXQr4Az41IcVqA/hyFClHCg/qwuITfvNaXVIVVepSREeVQCimjEOX YJLAlRSjCIcU
f/Eas0J6nT8Q9PmDIU3jf6FfdLCzw9vc6Oxw+jxeP+mNkdkfndfr7+jwkNqQ KokvVY8Mwh3p
1YgqnEwSgqWL4Y660NzU/oeXP/jtf21rbHIGeNZaWCXSEL4IV/VMfn9ArIWh 7+IGLzJQ/Zzs
tNvFJ4VPC3wSAAMnctN6o0Cgqy7p1Cs9QpeEVWptdbU2s0l/t8fPojIjy4W7 3T63y0PqYyBR
YmltIUlCl9gNUiq1U7ZwWl0ruHVR8iResfZC49NPvvanV/fSO4ywSiyZHgiE VUg1Q1pdgk+C
SQIDyyFFrtYPKhHZo861IeJXq1PjLfVKlqWRXEQcDo/HzewRBVpGLjEkLl7y U8GQkeWNuGei
GwY1dcSjNl100BYjexR2Tp3fw81tiwrLf/705qKCKpIkYZU00VtnSkmaIRG6 MWHyq8IEnwTA
ANcluS+kdEhqB22pS0xe9DLPLXWJbre3uelOFrbxY0SFtc/rZ6U/9KNRTWSz QgI9+1GvF7qk
7iSiGiOdrruYTatLkj2fHP/3x19tanTyYsjIrFJIzS0FtboUM36LkeeGT4JJ Av0sSVqHJK69
YNdOtfI7qyXUqXGbvJ8sEV38FJaJZ1nMRiPXHaYLgQDTHYNwSCx64/lvPrHG l8oJDQpLktI5
49YpQD3/OTU3tb2w6f39nxWLXrpSkngkx1JKoq83t0e6iBQ3fBIAA1+XQsHO tLdWlNTrN9SZ
T+qiS96A2+MXNsNkMhhNFLnpxbA8UaTn/khnDE+zib7YGnekZrjjB29dHtF3 GqbaC40//clr
hfmV9AZkVolXZ4qUUqcc9S1+g0+CSQLXIFzTOKTODdc0vfzVdbCiQpD7JCEE dL16PX6RHybR
MZuNBiY9arMAoTvCM6mN+bsSDteihCgqXouY/o+A4sJXXvrg/945JIIzvwjL AkFyb2EBEm8+
EFGiJPWos56pJ58UoUfh3ishSBIAfbVB0Xd2mWiLpUvyaHEhd/7Do+Pd0Xhx JF2wbrdfXMUm
s4EcEn2xxJJcfUYHqj6JSVVn5MajNeF/wgJ1icGbwlqfuP7n+feKCqp4JkyR qW6/KjuBYOf8
Wl/it774JOgSTBLoWY/ExdbttkeaKX/1GtRsmc1/VFtjh8J5JrZEjBshD1vU H5TXtphBUyWG
VWQLielUHL5uX69NZet0ui4z/bouk2t94oOtB/789kFVWMMOT1Qpiak3pWuJ klaPpJHq0Sex
LuRd2yUgdAOgT4gVq+qest3tiKZ6pmCELoXk1iHSPKkKplol+nLzyI0udnU1 mZEJkZjcV8I+
yRBea9K5ar+LIF1u8CaeTvHbC8+/n3/snHjTqsiwznPsk2njN7nW5Er5pFBI gS7BJIFe6ZFQ
B7r8fN4AfbFlFlHhWih87XXaJtVcdHuBudw+Gs3j9sfsQqkGZ6re6DWl2aIE UislMfwQdyR9
vrbJJx0/dpZ/wKBIceu4MRIpbpkHukyfFDHvpiDFDUDfdUkEUUKXeLAVQ5c0 sUhIpm07oyC5
TyyfdRNPdzg8Xo/f7wvEvEKV8Cy/fBs6XZd5s4iwTet4Lk2XvF7f7za9X15a J4qr/HwCUE69
ibZJl+mTEL/BJIErAFtZZmK9zXhHR/ZFOhIMaMI1MeWv7mQUFFejmHeTX1KR yCG5OrwdTq+c
RKfLkMKmzn1nw2WJnZGNEnv7ydgXcEj0RAnK/SaV3qWWSI/OlNf7fepm3jLF fck+STsLEAp/
upg+CVNvAPTVKgldogvK61N1iWWYonRJG7kJlxBSdMGwQMkDyCG5XF63y+fz BcJPVPysH1IX
xyBkSpqhUDDc61/p+eKN1KVe4PP5X3h+S0NDG9MZHd+LVxO/yTw3X5Mb7JtP gi4Nxn+LcQoG
JrKPmdi5ljWZ9ZM0+EWLI71e0ymbF2iLfUVEYlx8V/ubMSMVaG91Ozs8JHDi OtT71J20hcYx
qxFSxUhe8ML6iKWv8roNBmNct9lTxs2YMYEera9v+WxfoSJKCWInnDp37RZj +vz+/3n+/X97
4mv0BNGijWSHPjT5JIXerT5I/4mKAt4yTi++i1aT4nhSm+62CIhufattNRlS N1ZR284plzRp
CMBw1CW+7tXvD5K58XnpKgrpRfZZ7ecY0uqS+FmqE9+LjXVTdHv8fOMjv5Et 8lcLtMUaexqW
TcD5AqoEhVPmwYC6TYmqIF0W1l26LgXlnGBYl5qa215+cce3v/NFVr7JTSG5 pN7rUjC8/64U
ljhbvMXUJdltEroEkwS6VSIZlpEemfUUwZGn8dOXyFTzmXvWuppfvrqgZrqN tc8X5oBfXfV1
7U6HR15ohoBIH4boevaLST2/sEqsNlHImag/CIZlQ0ZiYaujTSAFp8/I+vo3 1tJPhw6UfbL7
c52oqFR32+688pffOHf06BQatrau+ZNdRxVRUBli691+/787v/ZX63hfb73C 9gfgmz35AyH6
0dCzHnW3RYC29S3XrF5ZJagSAHF0SfbR5pXUbFM2j8cndEnOjkXoklQzqUs+ f/BiQ3uH08ud
hIGvaNMLDQs7pKCPFU2r0qQWLYUbFMn0kujBLYOvzuguFOqlLt214UaR4yks OHPyRIXUpeLT
lR/tyF+7ft6lxW9anxRn6xJ1Y81Yu7wpCnQJJgn0wiEp4bW1dDWZTQb68voC bpfP4/aJVBMz
Fj5FtPmXkQrfxVoXCIVIidraXKQ7JpNB8fjlBSxXavi5Enk9fjqGhYZqwYEq TMKQibk41UgF
oxrpataw+Pw+tkKXiYletogT0nrrbdct5ttxH9xftmvHofCGJGzn3UMHT65a M3/ipJE0uslk
lD6JTyb24JPE1iUxtwjQ89cXO0BFSFJMqwRVAqCXDkmrSxaz0WRis1GuDq+Y gRKtHUmX9Opy
EFWXuE9iulR7obW9zcVb/BuY//CTthik4KiuKMD2jmQCxWyTeicP5YIaq8R8 kpyqU0vDla55
ppi6pCaNQt/41k3iqF//cmthQanUJXro/Xf3Xbc4JzXVLpJncXySrG2Pjt+i t56UuiRaQ4nW
vkpQJ0RJKzvQpYEAapIGqBJFOCRFM+VP+mNLMCfYLaREdFm6XGxDbJInMjr0 FdT0hCVxcTo8
JEZ0gyXG/azJtdPJ6gA8/CkeXs3NCif9qlsi/H4uQ2yccCRHP/G1J+Ki5e9N FSRtyjvETIwa
+kV/rq4bF/jDjdfUAX7/v9vEB/f5/MLEqAWSAVHTHaM+Kbr1rWzpJlfZqFVK aqmoWg0gaidZ
qQGNHKt8MqIyAPUBALoU0yHxUkKxloRtW0aiJHXJ42Fpb1IYEYCF18yzJ5Io cRWisCwodcnh
cLP6JDdTM/ZEj/pEvwjeWLo7qP3i20uGRF+1YJjw+9WFNPNvEboUihWR8niP y1xALLJj/6O3
8fbmfWzfAn+wsw5SqE3XusmY63BD4ZZvEa0mpS4JqemiS0FF6FKE5kCXkEkC 8ZRI6VoUGVAz
sYrFajT4mc0lNaEDSVDCqz/URbLVVc3NzQ45Sxbi6W7R9iMsC8wl0AUuXJSY zvOzbrNMLcSM
G7t2AyH1ElZT3HLbNTEP15lRp+folACb2JL2KRzeFRefF8UEp09WklzpWS6a 7XkijrpwofGz
vadvWD5d+KSY+SSx8STfIDwk8tgBtrucjp0bEaeGN4/kd6pTbDJ6Y74o3FZF H65MlzEcv90Z
pWn1JyKMQyQHhqEuxdwTSe3yL1RAzXkoZotR5IS86tKQkC6gXow63h6ptra1 udGhYxepPhQ0
CF0S8iUdANMlIUT+ABkm0gTxxW0Mi9tYfXdQRFtBUSEgqwNUNxHWJTYl11WX OqfleGJbvGjN
haYA682m3Xc2dPx4SXnZ/MnZo4Vsdp9P0vGFb0G5Gy7dCPJlKCxpxM8e7x6u ykqMbLc4d2Gf
Jzqx9EmXIEowSVCiTiXSTMazp5hMbPdHvviCWSW2kkSvuN1+p9PV3uYyskk6 Y9AUMoYMXo8v
In4KcnfFd1JjcRvpEZ90E1Gg1+tlC098DBHJhefbtGFa5xvmtos7EFbo0/UD vvjC+yx/7nGH
NJ0LtKN8vPtY3g25Br2epY6CPjY/yCIznd6oV/w+hW2xwpaY8JZOzF3xTx3k ghZDkriLoqcH
1HcWfjeiKy+NoIj694Aitj7oTpi09ew6teRCNVq8m4te9vkFYEiKUoQudVnL ptElmdoQLoHu
MJuN2twPL83RNTd1tDQ7HA43Xb9mM1OlYCxd4pvgUvQW5IoUkFklr8/vDXsm Uic/Q8qSbCMX
ufBfrI7jIR/5Er66RVF3uvzBP20SuhReQKemnkXdEr3urp3HHvr6etIlrzdg 5MWgzJzx/pZ+
t1dvUAVA7N1E2hXWJe6KgkoovOduQBFOUaNLGgGN0CVdsLOBuJ5P+MjJOOgS TBISSFEJpG6U
SCR1dTwbzOfH6MpnjT1IWuiAmuqmiw3tdBhdtD6T0Woxe/V+IUbyihJzZ0Jl uOiwL5/XR8Lk
Yd+9Pi5JLJLzM3niE3B+tSwpFKMDSShcECAX2Ukx4tt8s5grSGLBO3irnz08 yrmztZVnL2ZN
GCEiKsJoNNDD+oBOjOkKqoVH5PlIQoTmkkFS2KdmYSivfWQranQszguKNHi4 W5Kq83pehmk0
Gtkmvrznr7qWJCq9JLJoQmL9naUQiqpirDu5kf4ZEC4tqs0vAMMisR2tSyE+ C6aEZ8bFdccn
9Jku1de3Nja00dUSCBhJUSxmk6Lz+dhmbTq+hEJ9RR4psRoAFrAxS0Q3fG6P lxeJc0WiKI65
pIBP9UmBWNGXJoBTYi2BE/FQyM9qi0RVp9rFWydXuh0/VqIo6+kl9Mwn+fR+ VgYaCoR0Ph5S
edkEnNQl9lBIRGh6Hq8pWl2iR33eQC91SWy+Ep1eiq9Ler7pL3QJJmm4JJCU rlNsUptEIY66
zRnrBhtyOlykPmlpiTNnjxfjTJs+ruB4ZXnZhba2DpPJJMyQEhKrcLXLKIJy 2S0dQBfp1KlZ
mVkjcqeNEQcc/byi4kzd3k+LHO1OVh8QCHf4iEwkKUJaQtHmiaWUdTeuWjB6 VDJd0QX5ZScK
y8W+cFK7xI33393/4MNr5dmwWIxOhzt9RNLCRZPFPbUXWs5WNDT7HIl2q91u 1XNJ4hGYXlRC
qGkjvvb4fPVFk9mUk5ORmGSVT68939zucI0YmZSUnGBi+0MZTWS5gkyYgpom dKRyNFpbu4t8
W1KSbcasTPlpThVVNzW1Z4xJSUqxJSRYyYOKXaW0PYHxhw2GWAIpfmI7WpfE j472josX28eM
TZuSM1qMM33GuIP7SyvPNbS3ky4ZgwkhEbnx/dwidYlltckA+fy2BNPUqWOm zRg3LjONHm1v
c5eWXDhyuKyoqIJ0idd9q7rUXfekCF1iP3XVpZ0fHm6ob9IpnbokIEO2fevR 5Sumq/tdWsjH
6JxO95gxqbPmTJDCcvpktdlitFrNQpfoo/FqAZZfEtaStYDiC/TOnalLSbVL oSbKy+qaGh1u
tydClwwhXjnQe11qdkycPJIUCboEkzTsEkjyzkBAtSFyI1j6One2ft78SVOn jY14ibnzJ9DX
+ZrmD7YeDbCUsp8309YbTQa+vEMJyxkrjiaLNG/BpKU3TI0YhAwKfd1979LP D535za/fa2pq
EytEut+joGvzyfCPt952Xd71OXTjV89tOVl4RsRqXc9HqLS06sZVM8TP27Yc S0qyXn/zXO1B
Y8am0pej3f3pJydGjko2m82kjxQ2BYNq6kqso6mva7XZTIvzciLemXi6uP3Z 3tMjRydzUWNZ
br8SVHtQ8Yy7P6SUlV7IGJO6ZGnkIDO4upEsknecNHm01WJicsb3vBMBJaoE wLDSpVBIKolq
oYK8RvtMee38BZNyp4+LeIm866fSV0nxhd0fFVDU5fH6dSwDEluX6HpctXa2 jNkESclWoUt0
e/fOol/98h2eD+a61G0tczgg63pRSl0qzC+/WN+saBySurKEb8stdWnLe0cm TRodoZNCWGov
NB87WjFyZDLFZlZLkKdzFF4a0KlLmePTrl8+LeKdTcnJoC+6Qcp2pqLOajUJ XWKpp5AuQpdO
FFXOnJXVnS6R32poaBs7Ng26BJM0lAO1iARS9BSbEl7eRfeePVO3fOUMOU5h fmVdbTNJzrjM
ERS00T0Ue91z37JNv91OPon1yzWbLWaTTmxEQmOyXBTL2t586wKtEtVUN9H3 zPHp8p5FS7Lt
L5rPVzvNZivr3RTLE2k/j6I5ImKlBr13hQmHmHHTyTUbHQ5Xp3jdvqC7E5iY ZL1x5aytWw4n
Jyck2Fk6h27Iku3W1o7UNLuMXEl3yM3QK9gSLFNzOz9gXW1Tu8ORmJgwLnNk gs1itphYpQHr
m8DqtMqKLyzOm6I9qw0NLTTIhImjxSCkiYmJ1iOfl44clZSSmkgjWG1mnc4o t5KCKoHBbo+U
cAVSnASSnGKTXUVEWrq6skHqEr8G66sqG+gamT5jvMgG5U4bS899+809er2B z1x30SXWh8Qf
MJkN9311OVkirS7Rxa69Z/W62U89+TJd+kyXwvnpUHTNo6LZx0mnE71LurZx CvoDFEYa2PwY
O07mb0KNF1vkYbffcV13J3DM2LScHPfx42VJSZ26ZDAERZ/N5qb2adPHyqz2 +fPNjQ1t9F4o
2BMnRChbeWklPbc7XSo5VUP+UqtL58832u3W7Jwx48alCb9VXlpbWlyTPiIx Wpe0PSqhSzBJ
A1eGnE7vmbJ6RbNgQdwQzda0cYzaeUxjM8J7tLELJsjW/3uWhP8tP7i/9Mjn xR0dTr8/0NbW
0d7eMX5cxjf/7oskKPQ1d+7kTz45zq45VtkdElvXiqWnZJ5Wr50jHdKej0+9 tXl3Y1Mz3W82
mTPGjNpw36pFS9irkGaR1bDZbAbWc5cV5gQCflZVwKE7SBRYnthkstkSxc64 4a1RgrI+mgIs
ej8mcmsWK5900wvt4mtWInsH7N9XXFZS3dzSToYmLTVl2fI58xZMEmqSkZF+ tuJCUpLHbrf5
fUEehrL/3B3uufPUNPjbmz+rOV8npJBC1Q8/0GeMHnHD8lmkSk6n2+HscHV4 SZwTErz0KQxG
sY2mrqmxfcZMNY9NinP0aLHb41Gl7ULtkcOnvnDn9fQG2Feivbm5nRtCVjzO Zu50YcsbrhJQ
0DkXDAZdqq9rr6tt7U6XRIuj+LoUCG+7QeKz/uY5YvBPdp8ozC9zs2Ug/tZW x5/f9i5YMP3h
v1mvsJKAsdnZ4woLyskh+SyRukRDf/nOJdIP/eH3H+/dc8zp7CBdSk5KGjN2 1H1/sWrGLJY+
IR9g0BusViuJT3xdSkhI1IlWSUqkLlltpuQUm5FFkVaRcVc76QaDySn2iDO2 a2dhTVV9w8UW
l9uVMXrkipXz6LPQ/VOnjT19urq+rtlud5PRUXUpvOeldEgv/W4HCZrwlawB ntk8duyoNevm
0QGNjfSIx+32RevShZrGpctyw4nw4pqaWlWXGpSKs1UJNvvdG5YxnzR1TEVF XUxd0vaohC7B
JA3cQI0c0p9e2yv/WHWabRrFz7z/Gi/TkwscxD2RuzmGblw5U1x4Rz+veOWl bf4AW8JKeqGw
Ran6quq637+442///g46YP0t8z7Zfczv9/PaQB1fS6/w4kDdqFHJ8xZMFCP+ 6Y97PvvsOL3V
9LQktvW2TufzeV79wwcf7Rz5wNfWjxmTZrEa09JSExISLBY26e33+SlkUf+Y jIa583KsNqvd
bh81Mp0CQ5EoZs3cfH7yRuKw9PTEJUtnJtiso0aPspIGmNTwkUVyPr/8bKdP nX/3nb319Rd1
4T2/21qd586dDwZvWnAdS7OvXD1r/2dFjY1t5FRSWlzCt9H9OVPVHFL+sbNH j55SFHWtBykF
nfymxraiovLc3IkNDS1er89ud3m9Cr0Nco8mo1Gs3LMnWsRZJYd08NCJACs4 DbEZflZRSTFu
4L139//FV1fTAdctzn7v3QPsERN7dRYLm/TRnXNhlcDAz2rv31d6+FDJFdGl Bx5aKW59sO34
e3/+tKsu6Y4cOWWxmL/yIDtm+cpZRz4/xZZo8MVlWl3KHJ8uUyy//fW2UyfL zGaDxazqUltb
2/88/+7U3Il/+eDa3NzxZG3S01Ntth50afSoESazSY3fgkGtLmVnj0lJtcXU JZ0mRX7sSMX7
7+9vbW7R6lLF2fPf+tsvi3d73aKc/31hW0KCNUKXbrplthhh6/tHyssqQ110 qaO+vrmwoHT+
gunnzzeSGrW2uDzukM1qMZmNUpfGjVNLBT4/VF5ZWc1ayml0yeN1bXv/yK1f YImupddP++ST
Y93pEkI4mKSBnseeNSfz3+bc15sKpM7W2P7OTmUUbrH+IP5gU2O7rGg+dvT0 9JlZgWCQLu+2
Vldzi5NtFBAKlpdV1dQ0Z/KrNynZfu7sBZIBj4eskkHHl3OQbZo3f5JMZb/z 9kdsqQh/HTqA
lXvzvHdBfvkH2/aLHC1FWka++y7rLRsI3vGlG8TT6RX3flqgNxhYlshs411J xL7fbBXGjFl/
LQ67cL5x23ufsQoEs1VEdeF2cCGKER94+EZx2IfbD7W1t/IyRpaKF
Re: Buckminster Roadmap [message #32981 is a reply to message #32945] Mon, 25 May 2009 06:29 Go to previous messageGo to next message
Thomas Hallgren is currently offline Thomas HallgrenFriend
Messages: 3240
Registered: July 2009
Senior Member
Hi Dann,

Dann Martens wrote:
> Hi,
>
> Is there anyone from the team who can comment on the current roadmap?
>
> What is the state of affairs in terms of p2 integration? How has/will p2
> affect some of the plumbing?
>
The P2 integration affects four areas:
1. The eclipse.import reader was previously only capable of resolving if it found a 'site.xml' or a releng style map
file. It's preferred choice now is a P2 enabled site.
2. We now have a 'p2' materializer and in the coming release, it will supplant the 'targetPlatform' materializer completely.
3. The buckminster installer is now based solely on the p2 director.
4. New actions have been added in the PDE support to support the creation of P2 update sites.

In essence, that's all areas where the old Update Manager played a role earlier.

> How far away are we from the following click-and-play scenario (see
> attachment)?
>
> This is the idea:
> - a web site announces one or many component specifications
> - once a .cspec is invoked, the browser application helper uses the
> operating systems' stereotype to process this file; e.g. *Open* with
> Eclipse.exe
> - if one or more Eclipse workbenches are open, the appropriate
> instance is selected using IPC (some interesting progress on that front
> lately, in Java land)
> - the target workbench offers to populate the workspace, either the
> existing one (separate Working Set), or by offering to create a new one.
> - any missing plug-ins required to build the source code are
> downloaded and installed, as well.
>
In order to support this scenario on an clean machine, a couple of questions must be answered:

1. From where do you get the executable file that triggers when you click on the web artifact?
2. How do you discover the running eclipse instances?
3. Once discovered, how do you select the right one?
4. If none are discovered, do you start a new workbench?
5. Would it not be more desirable to run the whole thing from within the designated workbench and thereby bypass
question 1-4?

For #1 we already have two 'installers' that we can start using Java Web Start or as an applet. Our intention is to use
that when installing things from sites like Cloudsmith (http://www.cloudsmith.com). One installer is based on P2 and at
present, it is not designed to install source into a workspace. The other is solely based on Buckminster and put on hold
for the time being now since we're focusing on the P2 integration and didn't anticipate any larger interest to inject a
working set into an existing workspace in the way that you outline.

> I'm planning to make some updated versions of additional actors
> available; is there a policy to decide if such actors would be included
> in the actual buckminster package, or would they always remain
> separately available?
>
That sounds very interesting. What are those actors doing?

If you want to make them avaiable by contributing them to Buckminster (i.e. with Eclipse Public License (EPL) and source
that resides in our SVN), then we would of course evaluate them for inclusion. If we think that they could be of general
use to the community and find that the quality is good, then it is likely that we would accept your contribution. If
that happens, and if the contribution is less then trivial, then we'd probably like your help maintaining it going forward.

Contributions are always done by submitting a patch to our bugzilla. A patch that is more then 250 lines of code must be
approved by the Eclipse EMO (they check if there are any intellectual property issues with it) before we can include it
in a release.

In any case, to get things into Buckminster, your first step would be a bugzilla so that we can review and discuss.

https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Buckmins ter

Kind Regards,
Thomas Hallgren
Re: Buckminster Roadmap [message #33016 is a reply to message #32981] Mon, 25 May 2009 15:13 Go to previous messageGo to next message
Dann Martens is currently offline Dann MartensFriend
Messages: 65
Registered: July 2009
Member
Hi Thomas,

Thomas Hallgren wrote:
> In order to support this scenario on an clean machine, a couple of
> questions must be answered:
>
> 1. From where do you get the executable file that triggers when you
> click on the web artifact?

The click-and-play scenario outlined in the figure relies on the
'executable program launcher'.

The idea is that the .cspec file extension is associated with this
executable; in addition, an 'application helper' is defined in your
browser to delegate execution to the program launcher. That way you can
trigger materialization from both the desktop, as well as from the web.

A small-footprint executable has the ability to dispatch incoming
..cspecs without having to launch a VM. It will ensure a very fast
response time, compared to the time needed to launch Eclipse in a Java VM.

That executable program launcher could be an updated 'eclipse.exe'
program launcher, or for the time being, a separate executable provided
during a transitional period.

Using POSIX IPC mechanisms, a newly started launcher can detect one or
more existing peer launchers, or, and I like this better, talk direct to
a specialized Eclipse plug-in, using the same POSIX IPC mechanisms, when
there is already a workbench running. I've found a Java library for
different platforms which does exactly that (JNI-based). I think it
should be possible to keep the logic in the native launcher minimal,
thus allowing the actual logic to be written in Java, as part of the
specialized Eclipse plug-in. I'm thinking POSIX IPC here, because
opening a network socket on a host has never been the best of ideas
(although you see it, a lot).

> 2. How do you discover the running eclipse instances?

Peer negotiation over POSIX IPC: Semaphores, Shared Memory. If I'm not
mistaken, all operating system targets for the Eclipse platform are
POSIX-compliant. The native code to do this is fairly simple, the Java
wrappers available to do this from inside a VM even more so.

> 3. Once discovered, how do you select the right one?

Either by generating a Dialog, relying on the user to make the choice,
or by relying on p2 satisfiability to assist matching.

> 4. If none are discovered, do you start a new workbench?

Yes.

> 5. Would it not be more desirable to run the whole thing from within the
> designated workbench and thereby bypass question 1-4?

I don't think you can overcome the desktop integration issues that way,
without launching a full-blown Java VM. I think that executable is
really necessary to ensure acceptable response times. If I'm not
mistaken, Azureus Vuze does something similar for .torrent files
(feedback, anyone?).

> For #1 we already have two 'installers' that we can start using Java Web
> Start or as an applet. Our intention is to use that when installing
> things from sites like Cloudsmith (http://www.cloudsmith.com). One
> installer is based on P2 and at present, it is not designed to install
> source into a workspace. The other is solely based on Buckminster and
> put on hold for the time being now since we're focusing on the P2
> integration and didn't anticipate any larger interest to inject a
> working set into an existing workspace in the way that you outline.

I'm not unhappy with Java Web Start, but launching a .jnlp file has a
totally different dynamic (and semantics) from launching a .cspec file;
you could always support both.

On a side note: we used a View in the Fuller tool set, called 'Radar',
which offered direct clickable access to the list of all relevant .cspec
files of the project. Perhaps the launch-able .cspec file makes that
View irrelevant; you could consider a variant which displays those web
links directly.

>> I'm planning to make some updated versions of additional actors
>> available; is there a policy to decide if such actors would be
>> included in the actual buckminster package, or would they always
>> remain separately available?
>>
> That sounds very interesting. What are those actors doing?

The *packaging* actor, written around the same time as the Buckminster
Subversive integration plug-in' uses a fork of the JBoss tools packaging
plug-in code. It needs an upgrade on both sides: it doesn't work with
the current Bucky builds anymore, and the JBoss tools project has a an
even better packaging tool. The packaging Dialog was modified to update
the .cspec prerequisites automatically (prerequisites).

<cs:public name="some.jar" actor="package">
<cs:prerequisites alias="input">
<cs:attribute name="eclipse.build"/>
</cs:prerequisites>
<cs:products alias="output" base="pkg/">
<cs:path path="some.jar"/>
</cs:products>
</cs:public>

The *feature/plugin-export* actor has already been superceded by your
own version, built-in to Buckminster. If there are still todo's there,
perhaps I can take a look at it. At the time, I had ripped out the
complete exporting code from the Export Wizard; it supported all the
features in the Wizard, including output to multiple target platforms at
once.

There is a 'versioning' builder, which uses metadata in a .versioning
file to automagically update all version information in MANIFESTS and
other targers. It is a candidate for an upgrade to actor status.

And high on my TODO list: the Javadoc actor; I'm not a fan of falling
back to Ant for standard artefacts in release engineering.

Best regards,
Dann
Re: Buckminster Roadmap [message #33052 is a reply to message #33016] Thu, 28 May 2009 11:27 Go to previous messageGo to next message
Thomas Hallgren is currently offline Thomas HallgrenFriend
Messages: 3240
Registered: July 2009
Senior Member
Dann Martens wrote:

> A small-footprint executable has the ability to dispatch incoming
> .cspecs without having to launch a VM. It will ensure a very fast
> response time, compared to the time needed to launch Eclipse in a Java VM.
>
I made some tests launching a Swing based splash image with a Java VM. It launches in a matter of milliseconds on my
machine so I don't think a platform specific binary will bring us any significant advantages when it comes to response
time. What I do know for sure is that building such a binary from source will introduce a whole new level of complexity
and maintenance.

The demand for quick response should also be put in relation to that the download that is likely to follow will be a
long running operation.

> Using POSIX IPC mechanisms, a newly started launcher can detect one or
> more existing peer launchers, or, and I like this better, talk direct to
> a specialized Eclipse plug-in, using the same POSIX IPC mechanisms, when
> there is already a workbench running.

It could do that using standard sockets (available in Java). The point I was trying to make is that an Eclipse instance
doesn't contain this specialized plug-in unless you have installed it which gives you a hen and egg problem. If you
force the user to first install things in order to make the installer functional, you've lost most of the advantage IMO.

> The *packaging* actor, written around the same time as the Buckminster
> Subversive integration plug-in' uses a fork of the JBoss tools packaging
> plug-in code. It needs an upgrade on both sides: it doesn't work with
> the current Bucky builds anymore, and the JBoss tools project has a an
> even better packaging tool. The packaging Dialog was modified to update
> the .cspec prerequisites automatically (prerequisites).
>
> <cs:public name="some.jar" actor="package">
> <cs:prerequisites alias="input">
> <cs:attribute name="eclipse.build"/>
> </cs:prerequisites>
> <cs:products alias="output" base="pkg/">
> <cs:path path="some.jar"/>
> </cs:products>
> </cs:public>
>
What third-party dependencies does JBoss introduce? I'm afraid it might be difficult to get the jars pass the
intellectual property barrier at Eclipse. What does this actor do besides create a jar from a folder?

> There is a 'versioning' builder, which uses metadata in a .versioning
> file to automagically update all version information in MANIFESTS and
> other targers. It is a candidate for an upgrade to actor status.
>
That sounds interesting. We currently have 2 'version qualifier replacement' strategies (revision and lastModified) but
the number of ways to update versions seems endless.

> And high on my TODO list: the Javadoc actor; I'm not a fan of falling
> back to Ant for standard artefacts in release engineering.
>
Neither am I. But I'm not a big fan in reinventing the wheel either ;-) and Ant has a fairly good Javadoc task readily
available, so unless you have endless time to spare, why bother?

Regards,
Thomas Hallgren
Re: Buckminster Roadmap [message #33088 is a reply to message #33052] Thu, 28 May 2009 12:44 Go to previous messageGo to next message
Dann Martens is currently offline Dann MartensFriend
Messages: 65
Registered: July 2009
Member
Hi Thomas,

I don't agree with some of the points you've raised, there!

Thomas Hallgren wrote:
> I made some tests launching a Swing based splash image with a Java VM.
> It launches in a matter of milliseconds on my machine so I don't think a
> platform specific binary will bring us any significant advantages when
> it comes to response time. What I do know for sure is that building such
> a binary from source will introduce a whole new level of complexity and
> maintenance.

Your mileage may vary, but unfortunately, I have a totally different
experience on that front. Even though there have been many improvements
over the years, in terms of start-up time and memory footprint, Java is
still a very poor contender, and for all I know, always will be.

I'm not sure why you raise the 'building' point, the native launcher is
already there, isn't it; and for all the platforms. I'm only considering
a temporary separate solution until we can have the needed modifications
merged into the existing code base.

That temporary solution can be java, for all I care, but for Java,
features for desktop integration and process management are flaky or
still missing. A lot of serious Java-based applications I know, come
with a native launcher, to overcome these limitations. If it's all that
great, why do we still have 'eclipse.exe'?

> The demand for quick response should also be put in relation to that the
> download that is likely to follow will be a long running operation.
>
>> Using POSIX IPC mechanisms, a newly started launcher can detect one or
>> more existing peer launchers, or, and I like this better, talk direct
>> to a specialized Eclipse plug-in, using the same POSIX IPC mechanisms,
>> when there is already a workbench running.
>
> It could do that using standard sockets (available in Java).

Using standard sockets for same-host IPC is not only a very bad
practice, there is no need to do so, at all.

> The point I
> was trying to make is that an Eclipse instance doesn't contain this
> specialized plug-in unless you have installed it which gives you a hen
> and egg problem. If you force the user to first install things in order
> to make the installer functional, you've lost most of the advantage IMO.

Disagree again, this effort should become part of the standard Eclipse
distribution, for two reasons: (1) you can't launch a source file for
editing in Eclipse to my knowledge from the file system (I tried it with
3.4.x), which is default behaviour for all other IDE's and editors out
there, so it's about time (.java or .cspec, who cares), (2) there
already is a native launcher, which only needs a few tweaks to make this
work. There are already precedents for such changes, impacting both the
native launcher and the main Eclipse bundles. These modifications are
beneficial beyond the scope of Buckminster.

>> The *packaging* actor, written around the same time as the Buckminster
>> Subversive integration plug-in' uses a fork of the JBoss tools
>> packaging plug-in code. It needs an upgrade on both sides: it doesn't
>> work with the current Bucky builds anymore, and the JBoss tools
>> project has a an even better packaging tool. The packaging Dialog was
>> modified to update the .cspec prerequisites automatically
>> (prerequisites).
>>
>> <cs:public name="some.jar" actor="package">
>> <cs:prerequisites alias="input">
>> <cs:attribute name="eclipse.build"/>
>> </cs:prerequisites>
>> <cs:products alias="output" base="pkg/">
>> <cs:path path="some.jar"/>
>> </cs:products>
>> </cs:public>
>>
> What third-party dependencies does JBoss introduce? I'm afraid it might
> be difficult to get the jars pass the intellectual property barrier at
> Eclipse. What does this actor do besides create a jar from a folder?

I understand, but I think these IP issues can be resolved, if there are
any. I have a lot of independent code at my disposal to complete the
packaging plug-in without 3rd party dependencies. At best, I'll just
need to acknowledge where the idea comes from. Kudos where kudos belong.

>> There is a 'versioning' builder, which uses metadata in a .versioning
>> file to automagically update all version information in MANIFESTS and
>> other targers. It is a candidate for an upgrade to actor status.
>>
> That sounds interesting. We currently have 2 'version qualifier
> replacement' strategies (revision and lastModified) but the number of
> ways to update versions seems endless.
>
>> And high on my TODO list: the Javadoc actor; I'm not a fan of falling
>> back to Ant for standard artefacts in release engineering.
>>
> Neither am I. But I'm not a big fan in reinventing the wheel either ;-)
> and Ant has a fairly good Javadoc task readily available, so unless you
> have endless time to spare, why bother?

Because you are stifling adoption of Buckminster, that way. Buckminster
has not reached the point, where it has become easy to convince
developers and managers alike of the advantages. The arguments you raise
sound like what I would expect from an engineer, and engineers are
terrible marketeers ;) Are you adverse to success? This has nothing to
do with reinventing the wheel, it has to do with value propositions.
Explaining to third parties that they need to trigger an external Ant
script to get something basic like Javadoc is like telling them your
product is not feature complete. And I think they are right.

When I made the decision to go 100% Bucky with our build system last
time, we knew we were going to have a rough ride. The API's were
changing rapidly; there were (and still are) a lot of QA problems on
your releng track. But the gamble paid off, and by developing our
additional releng plug-ins ourself, freezing the Buckminster code
baseline on the main branch you continued to work on, we freed ourselves
of the inherent risks and turned it into a success. Too bad nobody can
see the proof of that.

Look, I'm perfectly happy to continue on a private track. I do try to
contribute back in terms of actual code and roadmap advice to improve
the Buckminster experience. It's that simple ;)

> Regards,
> Thomas Hallgren

Best,
Dann
Re: Buckminster Roadmap [message #33123 is a reply to message #33088] Thu, 28 May 2009 13:44 Go to previous messageGo to next message
Thomas Hallgren is currently offline Thomas HallgrenFriend
Messages: 3240
Registered: July 2009
Senior Member
Dann Martens wrote:
> I'm not sure why you raise the 'building' point, the native launcher is
> already there, isn't it; and for all the platforms. I'm only considering
> a temporary separate solution until we can have the needed modifications
> merged into the existing code base.
>
I'm raising that point because a) even a temporary solution needs to be built, b) the earliest you'll get any changes
into the Eclipse launcher will be for the June-06 release, and c) I think you will find that the platform team is a hard
crew to convince.

>> It could do that using standard sockets (available in Java).
>
> Using standard sockets for same-host IPC is not only a very bad
> practice, there is no need to do so, at all.
>
On the contrary. It's a very cheap, simple, and reliable way of establishing IPC. It's both a common practice and a good
one.

> Disagree again, this effort should become part of the standard Eclipse
> distribution
>
Again, I think you underestimate the difficulties getting things into the standard Eclipse distribution. Especially into
the non-java parts of it.

> Because you are stifling adoption of Buckminster, that way. Buckminster
> has not reached the point, where it has become easy to convince
> developers and managers alike of the advantages. The arguments you raise
> sound like what I would expect from an engineer, and engineers are
> terrible marketeers ;) Are you adverse to success?

It sounds like you have been wresting with Buckminster for some time and learned a lot about how it works, inside out. A
major reason the adoption is slow is that too many of our users are forced to do just that.

What Buckminster needs the most in order to drive adoption is better documentation and examples. Not a short-cut that
enables direct access to Javadoc. I'm the first to admit that I'm a horrible marketeer but I'm also aware that one of
the strongest reasons for that is my tendency to dwell on details instead of looking at the full picture. Very few react
to that Ant is driving the Javadoc. Some would even consider the use of Ant a great advantage.

If you want to help drive adoption for Buckminster, then I would consider examples and how-to's a much more valuable
contribution. Real life stories about how Bucky solves problems would be very valuable indeed.

Regards,
Thomas Hallgren
Re: Buckminster Roadmap [message #33158 is a reply to message #33123] Thu, 28 May 2009 14:51 Go to previous messageGo to next message
Dann Martens is currently offline Dann MartensFriend
Messages: 65
Registered: July 2009
Member
Hi Thomas,

<disclaimer>Don't take it as a kick against the shin, only trying to
help by being direct and up-front...</disclaimer>

Thomas Hallgren wrote:
> I'm raising that point because a) even a temporary solution needs to be
> built, b) the earliest you'll get any changes into the Eclipse launcher
> will be for the June-06 release, and c) I think you will find that the
> platform team is a hard crew to convince.

I would trust you completely regarding that insight. But why wouldn't I
try to propose improvements. I'm trying to improve my own Eclipse
experience, and hopefully that of others in the process, as well...

>>> It could do that using standard sockets (available in Java).
>>
>> Using standard sockets for same-host IPC is not only a very bad
>> practice, there is no need to do so, at all.
>>
> On the contrary. It's a very cheap, simple, and reliable way of
> establishing IPC. It's both a common practice and a good one.

No, that's just plain wrong <gasp/>. But you do pinpoint why it happens:
'cheap'. Or in the case of Java, not much there in terms of other
options. Your line of reasoning would depreciate POSIX IPC as obsolete,
and I think that's really a bridge too far :)

It's not a good practice, and that's why there is:
http://en.wikipedia.org/wiki/Unix_domain_sockets; you're not doing any
Computer Science students a favor by claiming this is good practice.

I admit, your statement really surprises me. Better talk this over with
a beer, or something. Let's not get into fisticuffs ;) In the mean time,
I'll work out until the next EclipseCon.

>> Disagree again, this effort should become part of the standard Eclipse
>> distribution
> >
> Again, I think you underestimate the difficulties getting things into
> the standard Eclipse distribution. Especially into the non-java parts of
> it.

Look, I take your word for it. You have much more experience in this
area, than I have. As you see above, I've put in a request for
improvement. https://bugs.eclipse.org/bugs/show_bug.cgi?id=278210
I see no reason not to try.

>> Because you are stifling adoption of Buckminster, that way.
>> Buckminster has not reached the point, where it has become easy to
>> convince developers and managers alike of the advantages. The
>> arguments you raise sound like what I would expect from an engineer,
>> and engineers are terrible marketeers ;) Are you adverse to success?
>
> It sounds like you have been wresting with Buckminster for some time and
> learned a lot about how it works, inside out. A major reason the
> adoption is slow is that too many of our users are forced to do just that.

In addition, I think I'm also proposing features which would lower the
learning curve, by providing better (read: seamless) User Interface
integration for materialization, building, packaging - just click-and-play.

> What Buckminster needs the most in order to drive adoption is better
> documentation and examples. Not a short-cut that enables direct access
> to Javadoc. I'm the first to admit that I'm a horrible marketeer but I'm
> also aware that one of the strongest reasons for that is my tendency to
> dwell on details instead of looking at the full picture. Very few react
> to that Ant is driving the Javadoc. Some would even consider the use of
> Ant a great advantage.
>
> If you want to help drive adoption for Buckminster, then I would
> consider examples and how-to's a much more valuable contribution. Real
> life stories about how Bucky solves problems would be very valuable indeed.
>

All of these things are true, but the adoption picture is more complex
than that. You need more reliability and more features (customers ask
for), apart from better documentation.

Even with the most perfect documentation, you're not going to win over
too many minds if the update site is broken *again*, or if the most
simple things demand (perfectly documented) that you need to start
churning out a boat load of Ant mark-up.

My experience was that working with Buckminster, augmented with our
extra Fuller set of plug-ins, was simple enough to get a team of 20
people started, without any training. As I explained before, they just
clicked on an item in a list of available branches in the 'Radar' View,
went for a coffee and when they came back their workspaces were set up,
the build had completed and all packaging artefacts were generated. Just
one click (two actually, because - improvement request - they had to
press the materialize button in the .cquery form :).

And the build manager just ran Buckminster headless from CruiseControl,
on a 64-bit Linux machine, with the Delta Pack, using *exactly* the same
sources from SVN, generating artefacts for both Windows 32-bit and Linux
32-bit, while all developers were on 32-bit Windows, except one on Linux
23-bit. Personally, I have never seen a build system better than that,
and Buckminster made it possible. Why are we having this discussion,
again? ;)

> Regards,
> Thomas Hallgren

Best regards,
Dann
Re: Buckminster Roadmap [message #33193 is a reply to message #33158] Thu, 28 May 2009 15:45 Go to previous messageGo to next message
Thomas Hallgren is currently offline Thomas HallgrenFriend
Messages: 3240
Registered: July 2009
Senior Member
Dann Martens wrote:
> ... Why are we having this discussion,
> again? ;)
>
Because we are both stubborn engineers ;) Continuing parts of it over a beer sounds very appealing.

I'm very interested in hearing more about your Fuller plug-ins. Any chance you could write a blog entry about it or
perhaps a page on our wiki?

Regards,
Thomas Hallgren
Re: Buckminster Roadmap [message #33413 is a reply to message #33158] Tue, 02 June 2009 22:41 Go to previous messageGo to next message
Henrik Lindberg is currently offline Henrik LindbergFriend
Messages: 2509
Registered: July 2009
Senior Member
Hi Dann and Thomas,
A very interesting discussion, and raises issues regarding features I
also wanted for a long time (clicking on .java, .cspec, etc. to fire up
Eclipse or kick an editor).

When this has been discussed in the past, it has always come up against
the issue that there is reluctance to have the standard IDE be directed
from the outside for security reasons - and then the initiative has
died. The discussions have ended with - those that want this can always
install something that does this. And to me that is exactly the problem
- you have to have it there from the start to make it useful.

Maybe there are different times now - and well worth trying again. It
should be possible to make the IDE have an API (via whatever
communication channel the two of you will come up with over that beer :)
you were talking about), and make it secure.

BTW, really glad buckminster is working out fine for your team - and
really love to learn more about the things you have in the "Fuller" package.

Our vision has always been to support the "one click to get it all" -
the source, the tools, the runtime, the tests, etc. As well as being
able to do it all locally in your client the same way as when it runs
headless on the servers.

Agree that we could provide a better user experience regarding the flow
in the UI. Spaces project was one such initiative (convenient
publishing), now we worked on easier publishing to p2 repositories
(including build, pack, sign, and repo publishing). The UI is still
behind though. A lot of effort has gone into the p2 transition - and
when doing so, we have put in a lot of effort into p2 itself as we all
need it to have good quality.

A neat thing with p2 is that it is possible to install things into an
environment from an external agent - still need to find the profiles and
p2 data areas to use though. One thing lacking there is the central
point that would list all such locations thus enabling to show a user a
list of what is installed.

An alternative - that I have used is to do tricks with the internal
browser in Eclipse - getting it to recognize things like ".cquery" and
running them within the IDE. I would really love to do that from the
outside as well... We used RSS OWL to do these tricks as they done a lot
of work on the internal browser - we have some really cool things in the
Buckminster RSS OWL integration regarding RSS feeds, where the feeds
have .cquery links in them. We have not been able to do as much work in
this area as we would like to - the p2 work took most of our bandwidth.

Anyway, looking forward to continuing the discussion how to make things
really easy for developers/teams to get all the bits where they are
supposed to be...

Regards
- henrik

Dann Martens wrote:
> Hi Thomas,
>
> <disclaimer>Don't take it as a kick against the shin, only trying to
> help by being direct and up-front...</disclaimer>
>
Love that - those kicks are sometimes required :) (Well, as long as it
is Thomas' chins :) :))
Re: Buckminster Roadmap [message #34010 is a reply to message #33413] Thu, 04 June 2009 15:24 Go to previous messageGo to next message
Dann Martens is currently offline Dann MartensFriend
Messages: 65
Registered: July 2009
Member
Hi Henrik,

Henrik Lindberg wrote:
> Hi Dann and Thomas,
> A very interesting discussion, and raises issues regarding features I
> also wanted for a long time (clicking on .java, .cspec, etc. to fire up
> Eclipse or kick an editor).
>
> When this has been discussed in the past, it has always come up against
> the issue that there is reluctance to have the standard IDE be directed
> from the outside for security reasons - and then the initiative has
> died. The discussions have ended with - those that want this can always
> install something that does this. And to me that is exactly the problem
> - you have to have it there from the start to make it useful.

I'm on the barricades for that one - @see
https://bugs.eclipse.org/bugs/show_bug.cgi?id=178927

Technically, recent reports on IPC-alike communications schemes
implemented in Java seem to promise a secure solution. Check out the
promising work of Clark N. Hobbie in
http://www.slideshare.net/ltsllc/java-ipc-and-the-clip-libra ry - make
sure you take a look at his SharedMemory implementation.

> Maybe there are different times now - and well worth trying again. It
> should be possible to make the IDE have an API (via whatever
> communication channel the two of you will come up with over that beer :)
> you were talking about), and make it secure.

I doubt it. Yet, the thing is never to give up, even when it appears to
be an uphill battle.

"If You Can't Go Over or Under, Go Round."

> BTW, really glad buckminster is working out fine for your team - and
> really love to learn more about the things you have in the "Fuller"
> package.

It has been an epiphany. One of the things you learn, once you achieve
this level of operating ease, is how other components start to show
their limitations. In our case, the typical request-response cascade
during a conversation with subversion, over a high latency (500ms -
4000ms) network from India to Europe, proved a major bottleneck.

> Our vision has always been to support the "one click to get it all" -
> the source, the tools, the runtime, the tests, etc. As well as being
> able to do it all locally in your client the same way as when it runs
> headless on the servers.

> Agree that we could provide a better user experience regarding the flow
> in the UI. Spaces project was one such initiative (convenient
> publishing), now we worked on easier publishing to p2 repositories
> (including build, pack, sign, and repo publishing). The UI is still
> behind though. A lot of effort has gone into the p2 transition - and
> when doing so, we have put in a lot of effort into p2 itself as we all
> need it to have good quality.

That's a sensitive point you're touching there (no p2 pun intended).
From my experience, a proper UI lowers the learning curve
significantly. Imagine the PDE without the Manifest editor. Instead, you
would be forced to edit the MANIFEST.MF directly, or the plugin.xml
directly, using some elaborate specification. Check Eclipse 1.0 - the
Plug-in Manifest Editor shipped out of the box. It would have hampered
adoption significantly, if it hadn't.

> A neat thing with p2 is that it is possible to install things into an
> environment from an external agent - still need to find the profiles and
> p2 data areas to use though. One thing lacking there is the central
> point that would list all such locations thus enabling to show a user a
> list of what is installed.
>
> An alternative - that I have used is to do tricks with the internal
> browser in Eclipse - getting it to recognize things like ".cquery" and
> running them within the IDE. I would really love to do that from the
> outside as well... We used RSS OWL to do these tricks as they done a lot
> of work on the internal browser - we have some really cool things in the
> Buckminster RSS OWL integration regarding RSS feeds, where the feeds
> have .cquery links in them. We have not been able to do as much work in
> this area as we would like to - the p2 work took most of our bandwidth.

That sounds pretty cool; perhaps an even better alternative for the
'Radar' view (which relied on a proprietary XML dialect).

> Anyway, looking forward to continuing the discussion how to make things
> really easy for developers/teams to get all the bits where they are
> supposed to be...
>
> Regards
> - henrik

Best regards,
Dann
Re: Buckminster Roadmap [message #34027 is a reply to message #34010] Thu, 04 June 2009 15:51 Go to previous messageGo to next message
Thomas Hallgren is currently offline Thomas HallgrenFriend
Messages: 3240
Registered: July 2009
Senior Member
Dann Martens wrote:
> - make sure you take a look at his SharedMemory implementation.
>
Nah, sockets, sockets... ;-)

- thomas
Re: [buckminster-dev] Re: Buckminster Roadmap [message #34051 is a reply to message #34010] Thu, 04 June 2009 16:15 Go to previous messageGo to next message
Scott Lewis is currently offline Scott LewisFriend
Messages: 1038
Registered: July 2009
Senior Member
Hi All,

<lurker materializes>

I'm not sure if this is relevant...and apologies to list members if this
is outside of scope (as I'm not completely clear on all of what Dann is
doing), but FWIW we (ECF project) have recently had some folks express
interest in creating a shared memory implementation of ECF's remote
services API. The intention here is that with ECF's provider
architecture, this allows a variety of IPC mechanisms to be used
underneath...and all end up exposing both synchronous (i.e. normal
method call/return) and asynchronous methods (via ECF's IRemoteService
interface) of accessing methods.

In any event, we are also preparing to release our implementation of
draft spec rfc119 (distributed osgi):

http://wiki.eclipse.org/Getting_Started_with_ECF%27s_RFC119_ Implementation

Scott

ECF Remote Service API docs: http://wiki.eclipse.org/ECF_API_Docs

Dann Martens wrote:
> Hi Henrik,
>
> Henrik Lindberg wrote:
>> Hi Dann and Thomas,
>> A very interesting discussion, and raises issues regarding features I
>> also wanted for a long time (clicking on .java, .cspec, etc. to fire
>> up Eclipse or kick an editor).
>>
>> When this has been discussed in the past, it has always come up
>> against the issue that there is reluctance to have the standard IDE
>> be directed from the outside for security reasons - and then the
>> initiative has died. The discussions have ended with - those that
>> want this can always install something that does this. And to me that
>> is exactly the problem - you have to have it there from the start to
>> make it useful.
>
> I'm on the barricades for that one - @see
> https://bugs.eclipse.org/bugs/show_bug.cgi?id=178927
>
> Technically, recent reports on IPC-alike communications schemes
> implemented in Java seem to promise a secure solution. Check out the
> promising work of Clark N. Hobbie in
> http://www.slideshare.net/ltsllc/java-ipc-and-the-clip-libra ry - make
> sure you take a look at his SharedMemory implementation.
>
>> Maybe there are different times now - and well worth trying again. It
>> should be possible to make the IDE have an API (via whatever
>> communication channel the two of you will come up with over that beer
>> :) you were talking about), and make it secure.
>
> I doubt it. Yet, the thing is never to give up, even when it appears
> to be an uphill battle.
>
> "If You Can't Go Over or Under, Go Round."
>
>> BTW, really glad buckminster is working out fine for your team - and
>> really love to learn more about the things you have in the "Fuller"
>> package.
>
> It has been an epiphany. One of the things you learn, once you achieve
> this level of operating ease, is how other components start to show
> their limitations. In our case, the typical request-response cascade
> during a conversation with subversion, over a high latency (500ms -
> 4000ms) network from India to Europe, proved a major bottleneck.
>
>> Our vision has always been to support the "one click to get it all" -
>> the source, the tools, the runtime, the tests, etc. As well as being
>> able to do it all locally in your client the same way as when it runs
>> headless on the servers.
>
>> Agree that we could provide a better user experience regarding the
>> flow in the UI. Spaces project was one such initiative (convenient
>> publishing), now we worked on easier publishing to p2 repositories
>> (including build, pack, sign, and repo publishing). The UI is still
>> behind though. A lot of effort has gone into the p2 transition - and
>> when doing so, we have put in a lot of effort into p2 itself as we
>> all need it to have good quality.
>
> That's a sensitive point you're touching there (no p2 pun intended).
> From my experience, a proper UI lowers the learning curve
> significantly. Imagine the PDE without the Manifest editor. Instead,
> you would be forced to edit the MANIFEST.MF directly, or the
> plugin.xml directly, using some elaborate specification. Check Eclipse
> 1.0 - the Plug-in Manifest Editor shipped out of the box. It would
> have hampered adoption significantly, if it hadn't.
>
>> A neat thing with p2 is that it is possible to install things into an
>> environment from an external agent - still need to find the profiles
>> and p2 data areas to use though. One thing lacking there is the
>> central point that would list all such locations thus enabling to
>> show a user a list of what is installed.
>>
>> An alternative - that I have used is to do tricks with the internal
>> browser in Eclipse - getting it to recognize things like ".cquery"
>> and running them within the IDE. I would really love to do that from
>> the outside as well... We used RSS OWL to do these tricks as they
>> done a lot of work on the internal browser - we have some really cool
>> things in the Buckminster RSS OWL integration regarding RSS feeds,
>> where the feeds have .cquery links in them. We have not been able to
>> do as much work in this area as we would like to - the p2 work took
>> most of our bandwidth.
>
> That sounds pretty cool; perhaps an even better alternative for the
> 'Radar' view (which relied on a proprietary XML dialect).
>
>> Anyway, looking forward to continuing the discussion how to make
>> things really easy for developers/teams to get all the bits where
>> they are supposed to be...
>>
>> Regards
>> - henrik
>
> Best regards,
> Dann
> _______________________________________________
> buckminster-dev mailing list
> buckminster-dev@eclipse.org
> https://dev.eclipse.org/mailman/listinfo/buckminster-dev
Re: [buckminster-dev] Re: Buckminster Roadmap [message #34083 is a reply to message #34051] Thu, 04 June 2009 17:52 Go to previous messageGo to next message
Dann Martens is currently offline Dann MartensFriend
Messages: 65
Registered: July 2009
Member
Hi Scott,

I wouldn't worry too much about ECF being left out. I can assure you
that it will not: I think IPC belongs in ECF, one way or another. Any
work I'll do on that front, I will offer as a contribution to ECF. I've
already discussed this with you on the ECF newsgroup, as I am well aware
of the mission statement behind ECF.

However, there is one thing I hope you would agree on: the core IPC
library will *not* have ECF abstractions. There should be another layer
for that. At the lowest layer, there will be the classical Java I/O
primitives, as we all know from java.io and java.nio. My starting point
for this layer is the source code available at:
http://sourceforge.net/projects/clipc (@author Clark N. Hobbie);

I really think there is an opportunity to implement:
Named Pipes
Semaphores
Domain Sockets (Thomas loves these!)
Shared Memory
Signals

Interestingly enough, the named pipe equivalent on the win32 platform is
in actuality almost (or completely) a domain socket.

There will be a pure Java bundle
org.eclipse.-.ipc
and native fragments for all the supported platforms, e.g.
org.eclipse.-.ipc.win32.x86

The example you propose, IPC underneath the remote services API is an
example of this layering, or do you see this differently?

Best regards,
Dann
Re: [buckminster-dev] Re: Buckminster Roadmap [message #34117 is a reply to message #34083] Thu, 04 June 2009 18:55 Go to previous messageGo to next message
Scott Lewis is currently offline Scott LewisFriend
Messages: 1038
Registered: July 2009
Senior Member
Hi Dann,

Dann Martens wrote:
> Hi Scott,
>
> I wouldn't worry too much about ECF being left out. I can assure you
> that it will not: I think IPC belongs in ECF, one way or another. Any
> work I'll do on that front, I will offer as a contribution to ECF.
> I've already discussed this with you on the ECF newsgroup, as I am
> well aware of the mission statement behind ECF.
>
> However, there is one thing I hope you would agree on: the core IPC
> library will *not* have ECF abstractions. There should be another
> layer for that. At the lowest layer, there will be the classical Java
> I/O primitives, as we all know from java.io and java.nio. My starting
> point for this layer is the source code available at:
> http://sourceforge.net/projects/clipc (@author Clark N. Hobbie);
>
> I really think there is an opportunity to implement:
> Named Pipes
> Semaphores
> Domain Sockets (Thomas loves these!)
> Shared Memory
> Signals
>
> Interestingly enough, the named pipe equivalent on the win32 platform
> is in actuality almost (or completely) a domain socket.
>
> There will be a pure Java bundle
> org.eclipse.-.ipc
> and native fragments for all the supported platforms, e.g.
> org.eclipse.-.ipc.win32.x86
>
> The example you propose, IPC underneath the remote services API is an
> example of this layering, or do you see this differently?

No, I agree completely. I expect the layering to be something like:

Client Code
RFC 119 Impl
ECF Remote Services API Provider/Impl
<your api/IPC>
Shared memory

So I wouldn't expect the IPC layer to have dependencies on ECF
abstractions...rather the ECF provider would have dependencies on your
API (and ECF abstractions).

Sorry buckminster community for diversion...Dann can move over to
ecf-dev if more specifics are desired.

Scott
Re: [buckminster-dev] Re: Buckminster Roadmap [message #34152 is a reply to message #34117] Thu, 04 June 2009 19:14 Go to previous messageGo to next message
Dann Martens is currently offline Dann MartensFriend
Messages: 65
Registered: July 2009
Member
Hi Scott,

On the contrary, your 'due diligence' is greatly appreciated!

As an Eclipse aficionado, I can assure you Buckminster is part of your
community. As you are part of mine.

The Eclipse community.

Best regards,
Dann


Scott Lewis wrote:
> Hi Dann,
>
> Dann Martens wrote:
>> Hi Scott,
>>
>> I wouldn't worry too much about ECF being left out. I can assure you
>> that it will not: I think IPC belongs in ECF, one way or another. Any
>> work I'll do on that front, I will offer as a contribution to ECF.
>> I've already discussed this with you on the ECF newsgroup, as I am
>> well aware of the mission statement behind ECF.
>>
>> However, there is one thing I hope you would agree on: the core IPC
>> library will *not* have ECF abstractions. There should be another
>> layer for that. At the lowest layer, there will be the classical Java
>> I/O primitives, as we all know from java.io and java.nio. My starting
>> point for this layer is the source code available at:
>> http://sourceforge.net/projects/clipc (@author Clark N. Hobbie);
>>
>> I really think there is an opportunity to implement:
>> Named Pipes
>> Semaphores
>> Domain Sockets (Thomas loves these!)
>> Shared Memory
>> Signals
>>
>> Interestingly enough, the named pipe equivalent on the win32 platform
>> is in actuality almost (or completely) a domain socket.
>>
>> There will be a pure Java bundle
>> org.eclipse.-.ipc
>> and native fragments for all the supported platforms, e.g.
>> org.eclipse.-.ipc.win32.x86
>>
>> The example you propose, IPC underneath the remote services API is an
>> example of this layering, or do you see this differently?
>
> No, I agree completely. I expect the layering to be something like:
>
> Client Code
> RFC 119 Impl
> ECF Remote Services API Provider/Impl
> <your api/IPC>
> Shared memory
>
> So I wouldn't expect the IPC layer to have dependencies on ECF
> abstractions...rather the ECF provider would have dependencies on your
> API (and ECF abstractions).
>
> Sorry buckminster community for diversion...Dann can move over to
> ecf-dev if more specifics are desired.
>
> Scott
>
Re: [buckminster-dev] Re: Buckminster Roadmap [message #34220 is a reply to message #34152] Thu, 04 June 2009 21:25 Go to previous messageGo to next message
Thomas Hallgren is currently offline Thomas HallgrenFriend
Messages: 3240
Registered: July 2009
Senior Member
Hi Scott, Dann, Henrik,
There's one little detail here that nags me. We discuss a way to start an executable by suffix registration or similar.
Perhaps some IPC needs to be involved in order to make that happen, perhaps not. What I am very certain of is that the
performance aspect of an potential IPC solution must have a very low priority. It's only one call right? Or perhaps 3 at
the most.

I'm concerned that the "write once, run everywhere" paradigm of Java gets sacrificed for no apparent reason here and I
don't really see the problem that originated this discussion as being an opportunity to implement any of the non-java
technologies that are mentioned. I'm not saying that they shouldn't be implemented, I'm just pointing out that for this
particular case, no such thing is needed.

Regards,
Thomas Hallgren


Dann Martens wrote:
> Hi Scott,
>
> On the contrary, your 'due diligence' is greatly appreciated!
>
> As an Eclipse aficionado, I can assure you Buckminster is part of your
> community. As you are part of mine.
>
> The Eclipse community.
>
> Best regards,
> Dann
>
>
> Scott Lewis wrote:
>> Hi Dann,
>>
>> Dann Martens wrote:
>>> Hi Scott,
>>>
>>> I wouldn't worry too much about ECF being left out. I can assure you
>>> that it will not: I think IPC belongs in ECF, one way or another. Any
>>> work I'll do on that front, I will offer as a contribution to ECF.
>>> I've already discussed this with you on the ECF newsgroup, as I am
>>> well aware of the mission statement behind ECF.
>>>
>>> However, there is one thing I hope you would agree on: the core IPC
>>> library will *not* have ECF abstractions. There should be another
>>> layer for that. At the lowest layer, there will be the classical Java
>>> I/O primitives, as we all know from java.io and java.nio. My starting
>>> point for this layer is the source code available at:
>>> http://sourceforge.net/projects/clipc (@author Clark N. Hobbie);
>>>
>>> I really think there is an opportunity to implement:
>>> Named Pipes
>>> Semaphores
>>> Domain Sockets (Thomas loves these!)
>>> Shared Memory
>>> Signals
>>>
>>> Interestingly enough, the named pipe equivalent on the win32 platform
>>> is in actuality almost (or completely) a domain socket.
>>>
>>> There will be a pure Java bundle
>>> org.eclipse.-.ipc
>>> and native fragments for all the supported platforms, e.g.
>>> org.eclipse.-.ipc.win32.x86
>>>
>>> The example you propose, IPC underneath the remote services API is an
>>> example of this layering, or do you see this differently?
>>
>> No, I agree completely. I expect the layering to be something like:
>>
>> Client Code
>> RFC 119 Impl
>> ECF Remote Services API Provider/Impl
>> <your api/IPC>
>> Shared memory
>>
>> So I wouldn't expect the IPC layer to have dependencies on ECF
>> abstractions...rather the ECF provider would have dependencies on your
>> API (and ECF abstractions).
>>
>> Sorry buckminster community for diversion...Dann can move over to
>> ecf-dev if more specifics are desired.
>>
>> Scott
>>
Re: [buckminster-dev] Re: Buckminster Roadmap [message #34254 is a reply to message #34220] Fri, 05 June 2009 08:47 Go to previous message
Dann Martens is currently offline Dann MartensFriend
Messages: 65
Registered: July 2009
Member
Hi Thomas,

I understand your concern, but my view of the situation is based on the
realization that we are already on a native track, with the eclipse
launcher. I don't agree that a Java application can be considered a
drop-in replacement for eclipse.exe.

The enhancement request for eclipse.exe is out there since 2007, waiting
for someone to provide the effort. Regardless of the actual design
decisions, native code will have to change. I would prefer to see that
change in this bigger picture.

During the conversation on bugzilla, the concern was raised that network
sockets would be unacceptable for security reasons. The proliferation of
the use of sockets on desktop systems has already proven problematic:
some usual suspects, such as GTalk and Skype are known to hog ports,
causing other processes to fail during start-up. It's a problem I see
more and more in my development environment. A classic example is people
having problems with the RMI/JNDI ports of their local application server.

The background for the use case here is desktop integration and
operating system integration - areas where the Java platform is still
lagging behind. Even JDIC (Java Deskop Integration Components) is
basically a native extension to the Java platform, and before it came
bundled, you needed to manage the libraries yourself; and JDIC is what
it is.

In addition, OSGi provides excellent support for native libraries,
beyond what the Java platform provides.

The Eclipse framework already manages a set of native libraries, the
most obvious ones being SWT. There is an opportunity here to build on
that experience, as opposed to having to start from scratch.

A lot of work on Java IPC has already been done. Both in Java and native
code. Native IPC coding is not rocket science, on the contrary. While
the win32 code differs greatly from the *nixes, a lot of the latter
support the POSIX.4 interfaces.

I'm trying to solve many problems at once, by building on top of a Java
IPC library, which can be re-used standalone, and which can also be
bundled into Eclipse, in order to provide a dedicated communication
channel with the native launcher.

If we wouldn't be pushing the envelope in this community, a lot of
things we value today, simply wouldn't be available in the Eclipse
ecosystem (which has a large native developer base, b.t.w.).

Best regards,
Dann




Thomas Hallgren wrote:
> Hi Scott, Dann, Henrik,
> There's one little detail here that nags me. We discuss a way to start
> an executable by suffix registration or similar. Perhaps some IPC needs
> to be involved in order to make that happen, perhaps not. What I am very
> certain of is that the performance aspect of an potential IPC solution
> must have a very low priority. It's only one call right? Or perhaps 3 at
> the most.
>
> I'm concerned that the "write once, run everywhere" paradigm of Java
> gets sacrificed for no apparent reason here and I don't really see the
> problem that originated this discussion as being an opportunity to
> implement any of the non-java technologies that are mentioned. I'm not
> saying that they shouldn't be implemented, I'm just pointing out that
> for this particular case, no such thing is needed.
>
> Regards,
> Thomas Hallgren
>
>
> Dann Martens wrote:
>> Hi Scott,
>>
>> On the contrary, your 'due diligence' is greatly appreciated!
>>
>> As an Eclipse aficionado, I can assure you Buckminster is part of your
>> community. As you are part of mine.
>>
>> The Eclipse community.
>>
>> Best regards,
>> Dann
>>
>>
>> Scott Lewis wrote:
>>> Hi Dann,
>>>
>>> Dann Martens wrote:
>>>> Hi Scott,
>>>>
>>>> I wouldn't worry too much about ECF being left out. I can assure you
>>>> that it will not: I think IPC belongs in ECF, one way or another.
>>>> Any work I'll do on that front, I will offer as a contribution to
>>>> ECF. I've already discussed this with you on the ECF newsgroup, as I
>>>> am well aware of the mission statement behind ECF.
>>>>
>>>> However, there is one thing I hope you would agree on: the core IPC
>>>> library will *not* have ECF abstractions. There should be another
>>>> layer for that. At the lowest layer, there will be the classical
>>>> Java I/O primitives, as we all know from java.io and java.nio. My
>>>> starting point for this layer is the source code available at:
>>>> http://sourceforge.net/projects/clipc (@author Clark N. Hobbie);
>>>>
>>>> I really think there is an opportunity to implement:
>>>> Named Pipes
>>>> Semaphores
>>>> Domain Sockets (Thomas loves these!)
>>>> Shared Memory
>>>> Signals
>>>>
>>>> Interestingly enough, the named pipe equivalent on the win32
>>>> platform is in actuality almost (or completely) a domain socket.
>>>>
>>>> There will be a pure Java bundle
>>>> org.eclipse.-.ipc
>>>> and native fragments for all the supported platforms, e.g.
>>>> org.eclipse.-.ipc.win32.x86
>>>>
>>>> The example you propose, IPC underneath the remote services API is an
>>>> example of this layering, or do you see this differently?
>>>
>>> No, I agree completely. I expect the layering to be something like:
>>>
>>> Client Code
>>> RFC 119 Impl
>>> ECF Remote Services API Provider/Impl
>>> <your api/IPC>
>>> Shared memory
>>>
>>> So I wouldn't expect the IPC layer to have dependencies on ECF
>>> abstractions...rather the ECF provider would have dependencies on
>>> your API (and ECF abstractions).
>>>
>>> Sorry buckminster community for diversion...Dann can move over to
>>> ecf-dev if more specifics are desired.
>>>
>>> Scott
>>>
Previous Topic:Executing JUnit tests with headless Buckminster
Next Topic:Buckminster JUnit
Goto Forum:
  


Current Time: Tue Mar 19 11:08:40 GMT 2024

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

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

Back to the top