Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » OCL » Checking OCL
Checking OCL [message #71523] Thu, 02 July 2009 13:27 Go to next message
Samuel is currently offline Samuel
Messages: 31
Registered: July 2009
Member
Hi,

In my plugin, I use the following code to check ocl on a package:
-------------------------------------------------------
OCL myOcl = OCL.newInstance();
myOcl.setEvaluationTracingEnabled(false);
myOcl.setParseTracingEnabled(false);

Helper oclHelper = myOcl.createOCLHelper();

oclHelper.setInstanceContext(element);

OCLExpression oclInv=null;
try {
oclInv = (OCLExpression) oclHelper.createQuery(oclExpr);
} catch (Exception e) {
System.out.println("Invalid OCL!\n");
e.printStackTrace();
}

valid = myOcl.check(element, oclInv);
------------------------------------------------------
This code works fine, except that after repeatedly checking constraints I
get consequently an out of memory error.

What am I doing wrong here?

Samuel
Re: Checking OCL [message #71542 is a reply to message #71523] Thu, 02 July 2009 14:05 Go to previous messageGo to next message
Samuel is currently offline Samuel
Messages: 31
Registered: July 2009
Member
I narrowed it down to the line

oclHelper.setInstanceContext(element);

It looks like a memory leak to me.
Re: Checking OCL [message #71561 is a reply to message #71542] Sat, 04 July 2009 08:28 Go to previous messageGo to next message
Eclipse User
Originally posted by: Alexander.Igdalov.borland.com

Hi Samuel,

If I understood it the right way you are invoking the line

oclHelper.setInstanceContext(element);

in a loop and after some time you get an OutOfMemory error?

Could you then attach your model/metamodel/OCL script to help us
reproduce the bug?

Thanks,
Alex.

Samuel wrote:
> I narrowed it down to the line
> oclHelper.setInstanceContext(element);
>
> It looks like a memory leak to me.
>
Re: Checking OCL [message #71583 is a reply to message #71561] Tue, 07 July 2009 07:45 Go to previous messageGo to next message
Eclipse User
Originally posted by: user.domain.invalid

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

Hi Alex,

Enclosed you find the code of my plugin and a project with UML models
and profiles. I launch an Eclipse application with my plugin in it, open
the file 'CallBackSeq.uml', select the package in it and run the
'Validate' action of my plugin through the 'ArchiMate' menu. The OCL
constraints are in the UML profile named 'CallbackSeqProfile.uml'. After
successfully checking a few constraints, I get an 'out of memory' error.
If I check fewer constraints, I don't get it, but if I then repeat the
check, I do get it.

I really hope you can find the problem.

Cheers,

Samuel

--------------030000080902040102080509
Content-Type: application/zip;
name="ArchiMate.zip"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="ArchiMate.zip"

UEsDBAoAAAAAAL1M4joAAAAAAAAAAAAAAAAKABAAQXJjaGlNYXRlL1VYDADF rExK1WNMSvUB
FABQSwMEFAAIAAgAvUziOgAAAAAAAAAAAAAAABQAEABBcmNoaU1hdGUvLmNs YXNzcGF0aFVY
DABbrUxK1WNMSvUBFACVkMFKAzEQhs/2KZbcO2sLgofdFpEVWrCWduu1pMmw HY2TOEmKfXtd
sFQEhd7mH775+Jlq+vHmigNKJM+1GsG1KpCNt8RdrTbtw/BWTSeDyjgdY9Bp PxlcnQNykmPx
SmxrZTyrol/WyksHaByFiPBiEzid2ey/jDBfNdv7p0V7N1s0q/I3R5xQWDuw uMsdZPq+RIF1
0my12OfH9hiwnI/XzXAEN6q8tE+wCMYLguB7JkG7dLkjjv+YopiTqR//Bn1O IacTuyPu2ar8
8btPUEsHCPPcq4jNAAAAbwEAAFBLAwQUAAgACAC9TOI6AAAAAAAAAAAAAAAA EgAQAEFyY2hp
TWF0ZS8ucHJvamVjdFVYDABbrUxK1WNMSvUBFAC9ks1qwzAQhM/NUwTfK7W3 HhSH/tBbSiDJ
A6jS1lGwVmIlhzx+17YS6pRCodDbzGhWH2illiffzo9AyQVcVPfirpoDmmAd Notqt329faiW
9UxFCgcw+QWSIRczl+vZjULtoX4ks3crnUHJwXNugveAuVbyrDgsV6Rey6/m vXOt3UQwbIp7
5jGNtg8KJVAjwLQuJhAHm4UJxEIf9dAHusB5QFPT9dQ0WjnxSl4TfoOMFsRK o/uAlJ/+jbgx
e/D6z7wSlCdmVO4Ixuqov4HXbdc4fBsOe+5Q+qE/2QZej5wl4y5bn/yiT1BL Bwj0kJAh5gAA
AIICAABQSwMECgAAAAAAvUziOgAAAAAAAAAAAAAAABQAEABBcmNoaU1hdGUv LnNldHRpbmdz
L1VYDAATkExK1WNMSvUBFABQSwMEFAAIAAgAvUziOgAAAAAAAAAAAAAAAC4A EABBcmNoaU1h
dGUvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzVVgMAFut TErVY0xK9QEU
AJWOvQ6CMACEd56iiXsDGEIgYTIOOpnIC1Q4sKZ/ubY+vww6q8vlhu/L3W68 Z3HORpS1KLt+
3/ZNKw7H6yjqsuwKTEaHCBmIBYSbEOUTjNq7oSo8V/khHnOSkye2sEEbcCsz VjiZFFeki1Fp
8bRDJZuvog1Gq23sBzjQ3wysVDGC6TTDJb1ocADp+aMMl+2favSZ74MvUEsH CMSa1w+VAAAA
RAEAAFBLAwQKAAAAAAAYbeI6AAAAAAAAAAAAAAAADgAQAEFyY2hpTWF0ZS9i aW4vVVgMABOQ
TErAnExK9QEUAFBLAwQKAAAAAAAYbeI6AAAAAAAAAAAAAAAAGAAQAEFyY2hp TWF0ZS9iaW4v
YXJjaGltYXRlL1VYDADAnExKwJxMSvUBFABQSwMECgAAAAAAGG3iOgAAAAAA AAAAAAAAACAA
EABBcmNoaU1hdGUvYmluL2FyY2hpbWF0ZS9hY3Rpb25zL1VYDADAnExKwJxM SvUBFABQSwME
FAAIAAgAGG3iOgAAAAAAAAAAAAAAADIAEABBcmNoaU1hdGUvYmluL2FyY2hp bWF0ZS9hY3Rp
b25zL0dlbmVyYXRlQ29kZS5jbGFzc1VYDABbrUxKwJxMSvUBFAClVF1TW1UU XaekvSS9tS20
9AsrFKtJoNwW6ke5iNIANRooGkDrxziXm9P00PuRublxxBef/BG++eJ7ZRw6 6EynvvqjHNdJ
bkpKsKljHnL23efstdbZZ+/919+/PwFwA18bOCJw2YncB8p3Ymk5bqzCoG7d kYGM6CiEFWkg
JTDafWZee5bpmW86BI7NqkDFcwJ92dyGQEoHZ9CHtImjOCZwsqQCudLwN2W0 5mx6UmCgFLqO
t+FESn8nzlT8QNUFRkovlmWTJ2qQ9mq2FEZVS7qeqtWltXXfcdsRVrGlzc5t pCFw2sQABgUM
N/R9J6gIPB8q/fuW3mJgcsIqtFY7jbM4Z2BIYKpHxHogv5NuI9aXSaJNnMcF gf7iSnltfqWw
KHCzF+8hKLa+wiUTw3hVIOOGnieTxA+VtpxvHasRK4+C2377OF7DqIERgTOH 7Zu4gjGqUrHO
aRgRJ5vrQComfuJcxZsG3uB7de+ayCLHR6PemERtBM8JqtbdzS1S2QbGBYY7 L9zwvSn9Z606
7kOnKtO4BsvApMCp/ejydj2WvonruMGnDhuEP9sCV6G1GqkgLseRdHziTwuc 6wiMuVm93VBe
RUb9eIsP7rNgvJmRDKbwjq7Gd4mVLR0MYZnoEzMmbMyynp1aTeoquZbtvlSu KzohtDXEnIn3
8QGTG4etzYOpSQgzuI0FAwWBwUNuZmJRKzVq2uXpDnOSF7/Su+RJXmtl9xu2 eOlF6efZQZeE
7VYutNvjYXd/yIqKrUroOyqwFmnzFgvNL/vwIsy9bIcJpMuqGjhxI+IQCP43 82x+7uXJdavc
NbGKT1jKdfW9bA6xYhplrBtYE5jsAVSsyCBW8XZHx3MEXu/FfyCMSTghO68m MP4f8qAnwXMD
dbvWHqoX/jVHnCXlsBG5cknpg6c7Z+ykDsIo504f9K+PFkc5/w1+TXMVXI/m H6P/VxpHkOF/
hitwCynM4Dgts3WI6wmuAq/gZALwI89o4On8bzi1gzO/YJzWxT1cFtjD6wJP kV/ewcQfmLo3
cPMx3p7Yxa1dvLeL+X26i9QDFGgvEHoRl7gOY4lNuNqkH2lRJPTaWsIdChjG ED5EkSgpfISP
uZaamMtNaT/Q0nFjE3tYYU38jPMT+7r+RP4nGDv49BFVP2omRksZIBSwTnuD Mj5nTX3ZIWHs
mYQxfMZd0bQ4zUl171metOcLegRjtZyv/gFQSwcI2dP9H4oDAACtBwAAUEsD BBQACAAIABht
4joAAAAAAAAAAAAAAAAnABAAQXJjaGlNYXRlL2Jpbi9hcmNoaW1hdGUvQWN0 aXZhdG9yLmNs
YXNzVVgMAFutTErAnExK9QEUAKWSzVITQRDH/wNJlsQFNJggIiIoIQnqSnmM ZYlErFRFihLJ
1RqWyWZws7s1O4s8lh8HLA8+gA9l2bOJgBHx4GWmu6f711/z/cfXbwDW8cDC GMMMV25P9rkW
zoar5RHXobKQYaiEynOE68soFk4inchPPBk4G/uxVtzVe62d1MCQ32nvvWxt v201GYrtQ37E
HZ8HnrOrlQy8BsPkZhjEmge6w/1ETCBPMRsm6yvKypCLhqBS+4JaKD73RAZS P2UYr9Y6DJnN
8EAUMI6rNmxMMky3ZSC2k/6+UG/4vi9MGaHL/Q5X0uhDY0b3ZMyQpVKUZlip tk2HYexJp6t4
X7wP1TvneRIc+IIK1uJYN0y6wotjV0RaUg8WbtDAzjo8fTHV3LRxHaU8GG7Z KOAKg+UOMAzL
/05F9cU6jAxpycYiSpTZE7opujzxCTFbrf1lPEVya/W5J5oidpWMyMrwrPrn Jmrt8ys97HJX
OErEYaJIGCE0CtTIqo0qagxz8vfHLRX2f23/9QWJ/jM1jSLiukcD2E0dtqRZ 39Rpzw8NHktU
4Dh95DHMIYscaVaqTdDwafwkZ8lGH4TOKdIe082MtX6C6Y+p6zU6C3QDJWRQ RpEke+CEmRTB
zE7Jo0xyhrTZFLVFFhNVqK+dYK7+GfNnvKm0qAUi3Eae9miY5YH3kGmkBXo1 5SxeRmcENhnu
jNIr5L1K9Oql9DyWcXfY/L20K8ryCfMfTmm51PoopRhGnvxWhhHrZDGvVnGi /gWV0aDGuWFZ
qJPVDGst9br/E1BLBwhYUVvoSQIAAGMEAABQSwMEFAAIAAgAvUziOgAAAAAA AAAAAAAAABoA
EABBcmNoaU1hdGUvYnVpbGQucHJvcGVydGllc1VYDABbrUxK1WNMSvUBFAAr zi8tSk7V01Ow
VSguStbnyi8tKSgtAfOTMvP0uYCEXmZeck5pSmoxUKwgpzQdKFKRm6MTw6WA CnxdQxx1Pf3c
9DGl9DCFMpPz84r1uQBQSwcIAiDIo04AAACAAAAAUEsDBAoAAAAAAL1M4joA AAAAAAAAAAAA
AAAQABAAQXJjaGlNYXRlL2ljb25zL1VYDAATkExK1WNMSvUBFABQSwMEFAAI AAgAvUziOgAA
AAAAAAAAAAAAABoAEABBcmNoaU1hdGUvaWNvbnMvc2FtcGxlLmdpZlVYDABb rUxK1WNMSvUB
FABz93SzsEwUYBBg+M7A4GrneGbDtT9f/t+c9+f8rjvfnv/f2Xz71MpnL568 8XAIvHTqdrbL
3MroefNrzyztObFy3s6u3B3bpj2vSpu1dubZqpwJEeYTXU2SS6LmBdjn+jkl r5pwNd69Z8Ws
g/LcXoH2ZUHuGVXZswI9kneuufz8ydtI9+Yor8YIr8rjG/4e2XE/1qerIXfL msWHly3a4GpU
421T7mFVFOzSkBg4McK3auu6kxGe3TE+E6L9WhsK1ztZR96+/tLLtibMoyvK p+/po48eVm2B
zhMyk7qK87qj/KbGBc+NCZgeHzwnMqAjJqSlrKh7wZxt587cfP7sTXLkwquX Hz198jrAozsx
YlFs2IxQv+kpseuTY9YmRa9IiFqUnrAsJW5zWNCs5ISlmemrliz99ujR+0eP XoRHrs8v3OPu
syi/4nZxzd2o+CWFpSsrWt9XtX8sb3pTWv+itP5ZSd3j4tqH5c1PZy16M2nG Bc+gGZUdX8rb
PlR3fq3q+Fze8ra85VVhzdWOqT/rOu/nVRzqmPl3xrK/hrY14Ulznj57/f// f4ZRMHBA8ScL
IwNDA4MOiAPKEwwcWxgYOWU8Niw42MxR7dOwYcEhVj5lvmcKCQqHeuXtojwC AjZ4Mziwnjhw
UulpJ58AB0eVSMCxfjEN55Y3BR8bFnQwJvzK2XloCYegnIEGz5HmdH8Zy+IX cwyDj/vNtqlk
y3og9Ix7mmbIqojOpCcnAsxrLnR4Lk7jnW1Y/mVPpXHBMUZR2YwrHonObhwM Ohz/HAuV2liF
VH1qPBpSPA+qaUgZfGhQZO5T8OKrinyYcJhbwXOOwp0zlcUODAzWAFBLBwiQ 2/OgeAIAANcD
AABQSwMECgAAAAAAvUziOgAAAAAAAAAAAAAAABMAEABBcmNoaU1hdGUvTUVU QS1JTkYvVVgM
ABOQTErVY0xK9QEUAFBLAwQUAAgACAAYbeI6AAAAAAAAAAAAAAAAHgAQAEFy Y2hpTWF0ZS9N
RVRBLUlORi9NQU5JRkVTVC5NRlVYDABbrUxKwJxMSvUBFACNkk1rwzAMhu/5 FSbnxiQZu7j0
0EEug4yywu6uo2YCf6yOHZb9+jmk6bbEG0Pgg95HemXZNdd4hs5lL2A7NJqR gubJg9eNhKy+
ijetnJUnroCRvRWvWHMH5CB9m6Ge5eOgTkaiWGBb0qFuJbjQa+esh5n/bv5l vxcOe+6MZYSP
LVRoQW/J5BkuHi1kE82IsS0FIfGtA+pxk/xICGOBWq8dKlhIrTrPSsCUMjqU b0/TDP002S4t
aEHv0j9KG+St5erftUbICFiuQa9kuSLL0DKPkeMRoUP8RlNoMOwzWrSyCFNH HaKTQ1hP/Joh
8iJdPHTQDuOvGRiR/GOY1es7N9U7CD9Cle7RGq1AO0Yey2OVFfQ++QRQSwcI tBg0eRQBAADK
AgAAUEsDBBQACAAIAE1p4joAAAAAAAAAAAAAAAAUABAAQXJjaGlNYXRlL3Bs dWdpbi54bWxV
WAwAW61MSqKVTEr1ARQAvVTLasMwELz7K4zulVvaQw9+UArNKVDo467YW2dB loQkh3x+pfgZ
1W4Lgehg0O7OzO7Y3rQ4Njw+gDYoRUbu6C2JQZSyQlFn5OP95eaRFHmUFlBy VAam0nv6cMoo
3tYo8iiK4ziFowXh8/7WHSVR2IxIXdOeg7ZIWWld1RtYQ/K+Nh1jE9gdznbA M/Kkyz1umQVy
lj2gwR2HjFjdBimsZqhJcNTzkg2I9gz0p2BPzIbs1jHMKT2rAcU0s1KHSHcE a2AG32jZqhCf
jATzXhPf7DzQjRRqlJwZ0ys00+SGbkCAI4VnWS3MVPp36p8mMaxRHGiNX+uj /5+5t3OoiReL
/Gg7pl+Z3QfeJoFVIdJKyX8i12stqrCZM5O7mS6w+ZNxrBY/m0ssXmXt7V3N X9nZsY9fTB3u
7mc8hdJkXBtujaTJsFG+AVBLBwh6CjRqRQEAAJwEAABQSwMECgAAAAAAvUzi OgAAAAAAAAAA
AAAAAA4AEABBcmNoaU1hdGUvc3JjL1VYDAATkExK1WNMSvUBFABQSwMECgAA AAAAvUziOgAA
AAAAAAAAAAAAABgAEABBcmNoaU1hdGUvc3JjL2FyY2hpbWF0ZS9VWAwAE5BM StVjTEr1ARQA
UEsDBAoAAAAAAJBp4joAAAAAAAAAAAAAAAAgABAAQXJjaGlNYXRlL3NyYy9h cmNoaW1hdGUv
YWN0aW9ucy9VWAwAE5BMSiCWTEr1ARQAUEsDBBQACAAIAFxq4joAAAAAAAAA AAAAAAAxABAA
QXJjaGlNYXRlL3NyYy9hcmNoaW1hdGUvYWN0aW9ucy9HZW5lcmF0ZUNvZGUu amF2YVVYDABb
rUxKn5dMSvUBFAC1Vk1z2zYQPZO/AnVnEsp1oWmOdZTUY7sdzdipJrbiYwci VxQSEOAAoGil
4//eXfBDH5Zl5VAfRAP73gK7+xZAKdJvIgcmbLqQhfDAReql0e48jmVRGuvZ V7EUXIPn0883
O7OVl4pfWCtWN9L58+e2S6MUBId7jA2nmzc255AqWTrgX+ci7XbCL7b5L+LG rwItOFNZ/Gdc
YMxX4FIrS2/sAcpSQg3W8fEd7AZyCOxtlfrKQnaY5mrPa5nl4B2/XoL2e1GV 7GK7Qm85Fund
i7jrTGJA2+hXwBNhX173C4Z0pDeCHvT1YOy3Geh00aD2waCY89QUBZaTPkJn KKHw3et1D3yc
YRqlX/0gbarhEdLKi5mC16iAadvd3hE56qmZKYREXWei9GD/RPkau6JaSJ1f BdtR/B9njLco
E2uWMoP96u+pWLiyBfLrRw86gyy0z2fIsX/t6ogOfr0z/982O1LrvT6PUXD+ ciP0qAepM1Mf
izuuzSZK+LmxxXR8IEOZFMrkjt+Cc3TSheF+j4V6Rz+h2Mby6e1NmylV5SSr eHh6GrNT9ndl
mRNFqfCuCBtlkgYFdptjdRdJZ8vaKDhR7xc9B6X0uGK1VIrNgKUWEJOx2Yp5 xGx40RkR3cLU
uI4O1umYs4cFNIPKgWXeSnDMGxqF2WaRM6L6hXT9Lp4tiP5Z0++0qc5KvI6S kV+UP8394QDY
4WohbBiX1UzJlKVKOMf+Ag0WLZcmA1yLGsexC7plb3G2YbN/4ziOKMFRm6YU b94gaiwFTQ7j
qPW66S8ZIDN62uG2KV4Ih8Fgnmi8pFB4Y7Z5RdViZk7JCrQC/MJkzEKJV2Oo JKXxLWZJve38
OenpzAj4thTrQmFRguGIFP1sK70d0tJIXLvSSXs+tCuG4CI5Z0l7xrKfRmzP +czHn+7uLz5d
XjeEaC61UPvFPWlfOWXz/YeNWHIIOMBCdA8Xch1x6Sn7xiYDfAo9+mRwTvN3 K+eh4KbyeEhK
7ZVOTgoskPqdnbBfutUC9ikeDqNonSJWz3AX627m+AjojeR+G95kFKWqkVXP CE1JW8IO4jlz
0gSOPyOir5lk6OB4kmKNGV6cinAE3wRaDJjG92TvOFuHCzcl6LGmWARlLQmQ qA6bIurdApRK
BmfN/EnfCYwOml+lPmktYQuUsac4ihkdGB7rgP3YVr3t4UYx7Vyyda8x2Byd UZ3Wz9D3Hz9s
1JaU02utm+ROfqcWG43Yb0R+82aD8VwI2BTOC50C9tVhTYW1Igt4Y2m2807p xdxoJe5xh4Tf
Zgn/nv4DUEsHCK8LeQHHAwAAyAsAAFBLAwQUAAgACAC9TOI6AAAAAAAAAAAA AAAAJgAQAEFy
Y2hpTWF0ZS9zcmMvYXJjaGltYXRlL0FjdGl2YXRvci5qYXZhVVgMAFutTErV Y0xK9QEUAK1U
UW/TMBB+Tn7Faby0FUt+QIS0sgIqAjQBe54855Iec23LdrohtP/OOU7TpRQN EA9RovP33X3f
+S5WyDvRIggnN7QVAas8p601LoBxbYFSkfVYfGuExMKhN53jj/WWOSv00pEN xlWnKB0VVnUt
6WJ564MTMlyvr/rABG58S0XjxBbvjbsrXne6VnhpdMCHwFrKxSKHBXzdsEQZ aCe4HEglvAfJ
IGeUh8CHsdQ5aVDUIMjvUiHTytx2t4rkQFiOCTg36pojR8rgR55nZdmX22dc r/JsSOODCPxq
SAsFX4Ij3cLVh+t360836xW8grNl7OJH7uJZdUjkN8JhDaSZriVyNhdl4D7d QZYd2pMxl31n
g3E2yjI7yZAYK0c9I3M2Z+XZY6yZaDNt9Pl7sRO1kfM+cuER//B+XrAwF2bP 3c58KmZnqIbE
nMD6e4pwvidn7j28eZBoA5nY7SzznUVXJN4eyR3IkjZuatiQr/6rOWP/0RsT /8baaEF3SlVP
vHKeJ1aTs2TtM4bO6TTSv8wNJMyF60G/w5TH43qYrxbDChvRqZAGJhsyjXN3 SorQQHHdoR73
HRp+Yvl00JDi7Qx9pKUd6p6/3x+HimXseKFE2BxMWMGd72Npf4fDibvjuift Hf2Losmj0GxY
1Vhj4pumuLfObNOQzMatfplYfW8e859QSwcIR9c0lP8BAAAuBQAAUEsBAhUD CgAAAAAAvUzi
OgAAAAAAAAAAAAAAAAoADAAAAAAAAAAAQO1BAAAAAEFyY2hpTWF0ZS9VWAgA xaxMStVjTEpQ
SwECFQMUAAgACAC9TOI689yriM0AAABvAQAAFAAMAAAAAAAAAABApIE4AAAA QXJjaGlNYXRl
Ly5jbGFzc3BhdGhVWAgAW61MStVjTEpQSwECFQMUAAgACAC9TOI69JCQIeYA AACCAgAAEgAM
AAAAAAAAAABApIFXAQAAQXJjaGlNYXRlLy5wcm9qZWN0VVgIAFutTErVY0xK UEsBAhUDCgAA
AAAAvUziOgAAAAAAAAAAAAAAABQADAAAAAAAAAAAQO1BjQIAAEFyY2hpTWF0 ZS8uc2V0dGlu
Z3MvVVgIABOQTErVY0xKUEsBAhUDFAAIAAgAvUziOsSa1w+VAAAARAEAAC4A DAAAAAAAAAAA
QKSBzwIAAEFyY2hpTWF0ZS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNv cmUucHJlZnNV
WAgAW61MStVjTEpQSwECFQMKAAAAAAAYbeI6AAAAAAAAAAAAAAAADgAMAAAA AAAAAABA7UHQ
AwAAQXJjaGlNYXRlL2Jpbi9VWAgAE5BMSsCcTEpQSwECFQMKAAAAAAAYbeI6 AAAAAAAAAAAA
AAAAGAAMAAAAAAAAAABA7UEMBAAAQXJjaGlNYXRlL2Jpbi9hcmNoaW1hdGUv VVgIAMCcTErA
nExKUEsBAhUDCgAAAAAAGG3iOgAAAAAAAAAAAAAAACAADAAAAAAAAAAAQO1B UgQAAEFyY2hp
TWF0ZS9iaW4vYXJjaGltYXRlL2FjdGlvbnMvVVgIAMCcTErAnExKUEsBAhUD FAAIAAgAGG3i
OtnT/R+KAwAArQcAADIADAAAAAAAAAAAQKSBoAQAAEFyY2hpTWF0ZS9iaW4v YXJjaGltYXRl
L2FjdGlvbnMvR2VuZXJhdGVDb2RlLmNsYXNzVVgIAFutTErAnExKUEsBAhUD FAAIAAgAGG3i
OlhRW+hJAgAAYwQAACcADAAAAAAAAAAAQKSBmggAAEFyY2hpTWF0ZS9iaW4v YXJjaGltYXRl
L0FjdGl2YXRvci5jbGFzc1VYCABbrUxKwJxMSlBLAQIVAxQACAAIAL1M4joC IMijTgAAAIAA
AAAaAAwAAAAAAAAAAECkgUgLAABBcmNoaU1hdGUvYnVpbGQucHJvcGVydGll c1VYCABbrUxK
1WNMSlBLAQIVAwoAAAAAAL1M4joAAAAAAAAAAAAAAAAQAAwAAAAAAAAAAEDt Qe4LAABBcmNo
aU1hdGUvaWNvbnMvVVgIABOQTErVY0xKUEsBAhUDFAAIAAgAvUziOpDb86B4 AgAA1wMAABoA
DAAAAAAAAAAAQKSBLAwAAEFyY2hpTWF0ZS9pY29ucy9zYW1wbGUuZ2lmVVgI AFutTErVY0xK
UEsBAhUDCgAAAAAAvUziOgAAAAAAAAAAAAAAABMADAAAAAAAAAAAQO1B/A4A AEFyY2hpTWF0
ZS9NRVRBLUlORi9VWAgAE5BMStVjTEpQSwECFQMUAAgACAAYbeI6tBg0eRQB AADKAgAAHgAM
AAAAAAAAAABApIE9DwAAQXJjaGlNYXRlL01FVEEtSU5GL01BTklGRVNULk1G VVgIAFutTErA
nExKUEsBAhUDFAAIAAgATWniOnoKNGpFAQAAnAQAABQADAAAAAAAAAAAQKSB rRAAAEFyY2hp
TWF0ZS9wbHVnaW4ueG1sVVgIAFutTEqilUxKUEsBAhUDCgAAAAAAvUziOgAA AAAAAAAAAAAA
AA4ADAAAAAAAAAAAQO1BRBIAAEFyY2hpTWF0ZS9zcmMvVVgIABOQTErVY0xK UEsBAhUDCgAA
AAAAvUziOgAAAAAAAAAAAAAAABgADAAAAAAAAAAAQO1BgBIAAEFyY2hpTWF0 ZS9zcmMvYXJj
aGltYXRlL1VYCAATkExK1WNMSlBLAQIVAwoAAAAAAJBp4joAAAAAAAAAAAAA AAAgAAwAAAAA
AAAAAEDtQcYSAABBcmNoaU1hdGUvc3JjL2FyY2hpbWF0ZS9hY3Rpb25zL1VY CAATkExKIJZM
SlBLAQIVAxQACAAIAFxq4jqvC3kBxwMAAMgLAAAxAAwAAAAAAAAAAECkgRQT AABBcmNoaU1h
dGUvc3JjL2FyY2hpbWF0ZS9hY3Rpb25zL0dlbmVyYXRlQ29kZS5qYXZhVVgI AFutTEqfl0xK
UEsBAhUDFAAIAAgAvUziOkfXNJT/AQAALgUAACYADAAAAAAAAAAAQKSBShcA AEFyY2hpTWF0
ZS9zcmMvYXJjaGltYXRlL0FjdGl2YXRvci5qYXZhVVgIAFutTErVY0xKUEsF BgAAAAAVABUA
+QYAAK0ZAAAAAA==
--------------030000080902040102080509
Content-Type: application/zip;
name="OCL_Profile.zip"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="OCL_Profile.zip"

UEsDBAoAAAAAAHUC1joAAAAAAAAAAAAAAAAMABAAT0NMX1Byb2ZpbGUvVVgM AMWsTEr9sT5K
9QEUAFBLAwQUAAgACAAxb8k6AAAAAAAAAAAAAAAAFAAQAE9DTF9Qcm9maWxl Ly5wcm9qZWN0
VVgMAAD7UkotTi5K9QEUALOxr8jNUShLLSrOzM+zVTLUM1BSSM1Lzk/JzEu3 VQoNcdO1ULK3
47IpKMrPSk0ucUktTi7KLCgBKrbj4rTJS8xNtfN39okPKMpPy8xJtdEHiwBl kvNzc1PzSuxs
9GEsoCDUkGIQWx+Zk1SamZMSXJCaDJZB4eUllpQWpUK0wNlw3SjuAQBQSwcI YX/SqIUAAADM
AAAAUEsDBAoAAAAAAFBwyToAAAAAAAAAAAAAAAAWABAAT0NMX1Byb2ZpbGUv LnNldHRpbmdz
L1VYDADzoExKWE8uSvUBFABQSwMEFAAIAAgAAnrLOgAAAAAAAAAAAAAAADYA EABPQ0xfUHJv
ZmlsZS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMucHJl ZnNVWAwAAPtS
SpMDMUr1ARQAUw7JKFXwKs1TMDRUMDS1MjSzMjBWcHYNDlEwMjCw5EpNzsks KE7VKyhKTUst
Ss1LTi3WK0stKs7Mz7M15ALy81My89L1nRNzcpwSk7P1SnNzbEND3HQtsMsl 5+cW4JJ3VnPG
px0qjWQCAFBLBwgo1yHLagAAALsAAABQSwMEFAAIAAgAg13SOgAAAAAAAAAA AAAAABMAEABP
Q0xfUHJvZmlsZS9fLmVjb3JlVVgMAAD7UkplDDpK9QEUAO1YXU/bMBR951dY mRBPJLR7maoG
BAWmTWNUfEx7Q65z02Y4dmQ7tPz7XbtJmg4K/dQEpS9N7XtPzj22j6/aPhql nDyA0okUodfw
DzwCgskoEf3Qu7053//iHR3utIFJBa2zLmX3tA9klCatKqmJSTsEPwgldAvn Qm9gTNYKguFw
6Mu070vVD35ffPPKED0dMvzsIpoHBw0M+3HNBpDS/URoQwWDOrjjMZULjCeZ BgcAaWxBmsGZ
DfOIoCkG340BhL69+lalBnc+FEG6qyBORjbwECPb0OFU6yROsECCVFvmMUOY QgI3WUJfyAi4
y7J5x0JIQw2KoomWuWIYEeUZTxg1oIswDGRSGBDmGfAriEGBrbniTqSKcCwK vZhyjRNcDkGd
yFzgUMMrMO0Hbp7wJHMJ9SkIzi57f4CZiuOscpAIaiWwGqJKrjr0EMFJEdx5 QVVmUNa5FYWT
6nF3sua7b1cQYrnRRKTIL/SMymFzGs0a9xuz1WsHdQ7lEbzMQBWsxrKhlbD7 n/jo/aPKKTXU
DswvzImUHKiYnONnRZgBl6e8GTR8NNjgK4i6bzioCFBrrsk9PIZeT0aPHnmg PEc8DTz2bS0k
JHsoi9mra/JUgwV5VWW+yiqSLLebweGuRK9LFSYYa6/jRYoS2hdSm4Tp1Zfp tALrDHD/vrpr
lxBmPmluBkCYpUBkTGolEiPJcJCwAcmU7HFINaEK7GgPCM0yEBFE/kTGmUIG NSVfUNedm9Hr
FrdZISieRCtEwWZfZ8DwjmUkEbFUqcuYo2hLHomASpjbFrXLeoU9c0Gz6arc JjxWfVeNXtNb
vtMHWrhr8L/ehqrW5HthK+HQxExLe73Ge4CZXFF+DhS/Yb0314buLVc+1lPr 65Zq9OwadKXC
d8B1jtpYtuP7zc4Ur1kA1GUR2tNGUVaSxfOAixBTeyJr7BeA/ZXA8D31pGvt RKw4b7cpW7Vu
Uj69jx51Q3LMGF68G91au7TqVW65lIHdZhHK/rzbjucWxy3y1u+4HdRQSc5B ffjujAM3kWgb
7aZePZn+ve1OPLc0L05+ePOiZlUz2GX9riPTlIpoOQzXUdcRnth8MbkMvXHi PEaPWk79tX24
8xdQSwcIMPPB6UADAAATFwAAUEsDBBQACAAIAHeyzDoAAAAAAAAAAAAAAAAa ABAAT0NMX1By
b2ZpbGUvY2FsbEJhY2suZWNvcmVVWAwAAPtSSmK4Mkr1ARQA5VXLbtswELz7 KwgWOca03Ush
WA6SwAECtLARx0BuAU2tHLYUqZKU5f59l3pZbpu+YPdSXSSIs7Mzs6Q0vdpn iuzAOml0TMfD
ESWghUmk3sZ0/Xh3+Y5ezQZTEMZCNF9y8YlvgewzGXVFEywaELyQSrsI12L6 4n0eMVaW5dBk
26GxW/b04Z62EHcMKd9WiMloNEbY+5V4gYxfSu081wL65JWOo1oQSuYOKgLI 0kAyYfMAo0Tz
DMGCK3WDwmse7dYP9x0DaxeH0JS4pYVU7ntlM6ybwq3izslUomuC+iP/JUfu Jpdqse13i4Vg
q7JQeK218dxjVI44U1iBkKTIlRTcg2tgCBRGe9D+B+wPkIKFkETT4ZkSYxN8 l8Q05crhgjIl
2BtTaHw1pg1nuODxO6Hkt+J7w9h8sfkIwncaX7ODQjAzjW6IbbW6mCJDnQV7 pqzzyVqj/4dz
cni+OIz94meRTFm/V7uPVt4WwheWqzvgeIfT5nWKtEjwwaXO0EtMUS/UJtFQ 7/j83XlaGosN
YFXkYIPUOuXFxoHdwXyHHbsTt0BIM6eawdSoa13jfhHJCSQfySJ847zloo2E SBy2TXnYP72M
/jCR7tP07/ZGs5ND53oaZxv3ocW3A1/nCZ6f10edmAZx/iG3jc423hV8LqqB IQNKPfoFzwZf
AVBLBwjbmnU/+QEAALsHAABQSwMEFAAIAAgAr6zMOgAAAAAAAAAAAAAAABgA EABPQ0xfUHJv
ZmlsZS9DYWxsQmFjay51bWxVWAwAAPtSSnquMkr1ARQAzVpdV+I6FH2fX8Hi PkMRGWWxdGYB
goAwOCCO8sIKbVqqbVOTQNVff9MvmtKkIOO9yye1zdln73NOkpPUi5+vtlXY QExM5FwWT8qV
YgE6KtJMx7gszu66pXrx549vF6+22XgY9Qv+z+3oavmkyJ5YDmmw55fFFaVu Q1GIuoI2KCPb
KCNsKMSFqsJsFX44SYZ7nlf2ToOh1UrlhA0dTgOEkukQChwVxlZtYFlLoD5v TSNXRInfKItW
aeg9tlCvo53pg3HtT607Px17SmUXYwpf5DDspbKAN3Z11AUDhnR+d/Yw7cyX YOkp32MkqCIM
UyqgapkugYEUaOu+nKrS8YfFNmvbklqwd1U/RuWKMhsNmQUxGyGxIVIBDSL+ cd0F1wJUR9hu
KBgStMYqVMbt4eIWI920YIDQYgjR32XG4h8G9st6nuyCFY4K1yEEIpAUB3iD 8GMGr/jjW6Fw
wQY0bpkNMGBQkaZ2WVyA+aTtde8oM3jQ8dx5oeMRMYoFB9gsTbHOAIBBQAva 0KF920WYciBq
a1nJgoRGzMwMxkOtE5oHhvTNZQ4CTti0TWpu4B17VCysMNQviy6gKxv4gWNp XQz7rUlz0u9M
/b9S40nZMpcY4LdAfwshCwKnqER8lRThfSIGJfIVREwpZuvI8Rruv4CGmWP5 76D2C9A1Btbx
aqwvoKbvUGhAnC/CDaeWhE0bsbEOe15M9Gn2qlXLnXvM51Yt8hyoNSkrjuWa wl2xjAeH/FK7
GjwKkEODhWE8PIkcA8PA0IhWTdVnTFgOY9liDoE/jHrnqtyfROgBuNWFJiIa 45557897cdvI
caBKEU5wCWmCmXyu+yXpaMnw53WXdLp3610aLsD0j0lXfvRzoo7ZoiQPkiL1 Wju/OsDr+m5Q
EmjZehWHMImRkg5SXOI75Xx8kYtzJN5gPljmMulxmb95M1E+8sv8SOkWIISj Jpti/NwO1bBm
hsFdQZclnzWRb8z4aT7oZffTwuIGOj01WxHJgsjWKawDFU4gsMz3QGFCSWJd IGvXZRwwG7Ky
4KtgI4845shSkUMxUKkcY2dSjl2Id/k9DVdeF/aZ4S0m/Rp57V+fe3HI0JJA vIFNp7PxC+xz
kyUplHSNytO1sSbZoBQWA1cFzaPTJbFOpavWOhPxTtIlEcanS4yxP10LVV+N urAnTpeGZq4G
/nZW9eMIccmS1WjodxyWSbpIjnAiiWzoZEdaPvyMsHcctHhyx9AfzK94Oh5J TFjGH1wfxAX3
gUSwqmRlxtGad2oPzOcmf3Kyg9Aa+qfebd0a0GFo1hhr0O+nE8DTtt7rd2d+ 4br64uFh+evP
YNVML81jVV1j7AOydWIJ9eDQuiBv196jgArQaRAeOn+tPN5n3iv7ObVuJlWj O+vLOfkixazo
1RrX9rHKvk9YWaYOLdPh+i4TnN56uTFnu9cwMmOtBnTZKZUllOR0QSraQAy1 1ps0kIX9ARRQ
taql/eUhIyvrIHiy4vgW9sdVx8AQlPkIEn/mJcmculA1dTO8ruAqX1ZuobQp 24CihSimm5M5
uAkn6Ly+fBEVC0XNqFxk08MOabMRbu8dCTA+T7isokPhE6hCdkwTaJeUwuHa ZdPw/9Quriou
6akt7gD5FLXipUKmL44QuB90RRCc/rvZ/ew/159dAtK5l4ZAUv1cCGTl/Ykh iIYmmiRFk+4m
2MIUaOtERGSTgC1dWjxGtkKo8WlOftbNoysWKOqwMqQl2eNJyyr8cNLHNZNN 523CseVbDMnC
cES3J3ciK6yj+1Z/b9t1MtFObNEZCsX9u7xxP8xpsADFYJk4Luuk8pfew9vs pt9yqjsnjpN2
bzbKOU+xw6GDaGBEeKuB349kz1HBrfq+DwuV6MMCd0mDoQ7DJoyLTfBdo9GJ 7te3142f9hmB
v7DhdW6fgqBJ1yKov/A/xUv79wRdi/2zqZfJ0AGpe68/Gqr4u0RO6gKr+4zV V0ndBz7A/FfZ
E1Go6DcvXrteYRRG79/foaotptbeBF4o3Peh4EGM3+jHvyWZqb2UJr8Fk2oJ CFxsD9R7rhc4
D8FKksB/X9sT0VVVFj7nsimBj3+5TX1eqOPV/bPMSf7l6g5+wD4NXprdU2MP uOSkJCHP3bw8
Nl9FN0MBdvvAXfSCK59Gch/JrZtPtwMjW8mhl/g4Je+5xE5amSycDiun9UPc iLvbrJtwu+ZK
tVO6Fiw9oYPRQY19Cp/fqbmKbVau0AFepL3jhRL9t8CPb/8CUEsHCLc9/IWN BgAAXyAAAFBL
AwQUAAgACACwc8k6AAAAAAAAAAAAAAAAHAAQAE9DTF9Qcm9maWxlL0NhbGxC YWNrLnVtbGNv
bXBVWAwAAPtSSqtVLkr1ARQAzVrvU5tKFP3ev4Lh9cN7MyYBAglxYjsvGl/b p61V41g7HWcf
bAgV2AibJulf/y7QYH7sbgVWR8dxTLIc7t5z7tm7S/pvF2Gg/MBx4pPoQNWb mqrgyCGuH3kH
6ujyuGGrb9+86keEIgpD9o985MUoVBahv19cZqSXAVCU7MP7B+qE0ul+qzWf z5sk9Jok9lrX
p++LIcnmkHk7G2Fomg7DTi6cCQ5Rw48SiiIHr65aRbBxKXYCf5rg7HovHLfi WUT9ELdgHk29
tbpkBTELA+7V8JnRMppwYWt0eqJm8/PdA/UWOfZAO76kQ7dzPY5vonv66TTx VIUupxgydHpy
SMIpiXBEVSVCIbx3iIJggJy7JmA68KGqhBglsxiHMGgU+fRAPfMXOFDfvFKU vjPxAzfGUXbH
HLRI9kfi4rVQji6i4Mvx5Q92KJA/K4OsAKrzQC1N19VWFVRy6nBD7Wpa+1eo AJvQZYATFuhR
jOY4vkg/38a+2sV2SBAg4BPG0HiGV2EL73BBYgpSZ94i2LnFYxCP/YDimIe5 m+hVclur7P56
LYh5gqZ4Fx1oZCRlTCL6MZPlyczxXaT8E6PILZLTx0Emy7X7gGr3z0C+yAP8 SYzHm4r+4xbd
nB/OdytihRigJZnRQwL1GyN/A7qYwoDMIjfZDp+T8M3UlFWhKyoYvVLBkJ8e F9RKQSsVzBTd
iQpGfyiYMrCXNwN+HbY1rVPAlgYmoizo2kO1VFBzGnZ5NYsUHZMpjumSLemY vOs6XEnXkHU6
j11ZKwtQn6EqS6BgzVS2LKAsIeiML6BaTCODPCHTEPZzMm3cuuaTMA3zEDJt mxKpNggjZyuq
dUutRYhBGBOpTghkMsIOJTGbkST5G42ehhGDMBobYKStZ4xYXSEj5fsSsPBd Wmq1IYAovQ0B
zMe3IaVkOTT57Sk4kFFxCTse85cwa72VfKRUTohT7AvWb8IoqVQsVkWVcMoL klTF73huB8ph
19W9efThi6CuqlYVxM/2uV4vqyrTktfTQvsmradd26ex0uWGkwF/Yaja1cIE 2MmycwvSO7A4
TLDvTWBXqHeN+h3vFAXyO977gagDqNrxAip3FdvseMtbMWBXM06uFQMi1zar WvH9YLqbVylW
7C+FbX9VK/5+I9z6yLFiuAnbihvQQ6VV0zA0uZ4M2XoWT55dfmiIep2qngzx c9Ve34XBUp7N
hTvzn3fSXRgmwHZhU7MKG67tvPckETmvWcl547O5qODsIjWlWYVw5bEaoCRh M+p519/lr6sQ
PJtRXe/m++pOfUIh99z1qQahiyciFMItv2+rQOhyPuL3lVUJheA5e7VOTx6h hiaq0HYlQpP0
PIFP6MNevPKCmN6CsyDCQpgtiG1dnt1DlqQZw/sIWp8xcjhHyZMALxgPV+pq ydA4JzG2ndu9
IUFMdGjLFxOACp7FSBETHfYYca+JqS1xAwfzeTYtmYOOfF+CCYi1ZHR7dbU0 XPz89Pn4ciF1
pclAdR5onZUmQ77aRa7BKnJymbJ4vRma1wzbrsVrNoVgdwrAq7U6mO+oytx3 6STtKWwmxYJd
af6UfDtz2bPkK7ZEZT+J62PXYwc3dL2NIh29Q6dcJzNT9SkJmcUOFp3xodjD lO+Lv1VacUi8
4yFpeNxTVdG2G+TIBKvTJCX+fuQHmw+Y+//hyJ0S0B4zjnMcwD8/8KAYtR0Q w/HzgQfqV3tP
6ewpDbsHf6zet9dfe114x9pTNPj9VoSQ5//vyJmQmBXEexfC9+kyH7EewNV5 m7Xcpx/+qTWN
Pa3Zzn/Mv1ZFkCmrpMacf0eP1xjn8OJBY8xGro7GIDx5GgOwl6UxCEikMd3Y U9ogtC5oqtHR
QGQNC172bIkqu8CsLvmXyuxO+tMFrXVzrVm1tObe8g+pzPRBaCk/k641CE+e 1gDsZWkNAhJp
LbWvdi6sXGrpG1tKq8b6WOMfv+yw/luHkb6KQXjyWAewl8U6BCR0mG3WdVms +5/5uzAz/W7C
Ouucx+YF6+wvy/yWo3NoQFnH+2lw8jgHsJfFOQQk4lzL2U0Jfr3+og7bd1TU qZZlm/mFmeps
Q3Dy2Aawl8U2BCSB7X5re4/05tX/UEsHCIp7quYhBgAAhCwAAFBLAwQUAAgA CACMhMs6AAAA
AAAAAAAAAAAAGwAQAE9DTF9Qcm9maWxlL0NhbGxCYWNrQyZDLnVtbFVYDAAA +1JKaBYxSvUB
FADNWN9X6jgQfvev6Ok+Q0BYd5cj3lMREC9cWBBFXzihDaWXNulJAoh//aZp SwttQHEffFLT
mW/m+2byY7z+8ea52hpR5hBc18vFkq4hbBLLwXZdHz+2Cn/rP24urt88pzbp dbTg5876sljW
xYqLWU2s1/UF534NAGYukAeLxLOLhNqA+cgEwhekzVlivtlsipuKNL0slcrC tDuSCAUHMw6x
iWKvBnTdGTSXO9coFAPxFzC9Kzzf91rwqWld/fV4NRk1X2dwtgG7yMgkFO3F Rqbr+AzJBJA3
D5K4BM3ALPZZea7SQ3y7DJgVS2Dc6woP5tTCrLrEhFzq9PlsNd+FfE6oVwMU MbKiJgL9Rnc6
oGTuuEgi3AqE6O+iyOKPEOzpEEy/udC0a2FQGwgHaCNZQ8eq61OjslzaLfjz wEHD0BMSxTEk
gIBALvIQ5h3PJ5SnQKrtjZEFCZ2EmyPtkdUM3aUj3/oigMyJOp7DnTV6FEu6 tqBoXtd9yBce
DCQTkk67nduhMew0R8Ffe/as6DozCulW8r8lxEUQ6yDKF+wlfIrE/aT5HUiM OBU773wOT9+A
wxi7wTdk/YJ8RaF7Phv3G7DpYI5sRI+T8MOtpcimQYQtFut6wq9ttRvLo3tP xNyxJRuMLIOL
5pitODokK/JIIW9fjR7LQQ4dpg+ua+VtemjbFNnRiWUGGTNRw5h2fg4y3vvm ZTBWx1MQ/QBu
gbSP8GizwbB0ErdBMEYmJzTBLf0mw556rwctia3EvMz8+7w0fEj5s8MXgfpH VKfiUFKLBJRR
K1vjA1Hfb6tv5EjUfAkTjcC+SHGLH7Tz+U2eX6P8C+aTba6iHrf5n3e9nBP9 RJufRz04Iugc
hg+VKL3OyG7lXIsR9f6MIbpGzXWgFzg7yIPxa64+RMa+BVPUTpTPhYyloRXH RPp8CisiHkMC
7g75ooHF03ErnJ8LzUU2L23arbJOTr7JoR5zHCLoOu+ySklK+ai6xla+L3Kg R1QPczxCyySY
U2hyNcaXOiSjrqI79zeGUt/Jkpazva9Ne73CP+frm48aJ7Wns6rxEp0VBFM6 KzC+pPOYiW8p
nRUN9zkq+S3zsW11mJCiQp/r4XxtdwmFM4ERAJoHJW6XJwWWmTeSBkEGxoRL J3bglR0stHAw
OTUalaLRKHXViecYoqKXEUvJJSezWjOaUnaPtv9vEEpde2meu1UoS2BFUF+I P6Iz798haYv4
84d+9bnaeq30052dqZCc0UBqSJML8ZxYk/fEYO993HFffm+yldRmkKHp8TcJ 2AePf9nHf8Dr
F3ICX3EFK/AT7J+VQTWnC0Ps3WNE/VQ7CNCR8iTwfWP9mh2qI/jdNXripE/B Zwn0r6rtD0VQ
n3HXIPqXys3Ff1BLBwiSsXbECgQAAIQRAABQSwMEFAAIAAgAhInLOgAAAAAA AAAAAAAAAB8A
EABPQ0xfUHJvZmlsZS9DYWxsQmFja0MmQy51bWxjb21wVVgMAAD7UkrHHjFK 9QEUAM1aa1Pb
OBT93l/h8XZ2dmeaxK88YAOdJAQKSxgKDdPHdBhhK46LbQXZaQi/fq8dYvKQ VGyLLnxowZGP
ru459+jKTvv9feArPzGNPBLuqXpVUxUc2sTxQndPHX46rLTU9/tv2iGJUQxD dg885FIUKPeB
t5vdZiS3AVAY7cL1PXUcx5PdWm02m1VJ4FYJdWufB8fZkGh9yMxMRxiapsOw 00t7jANU8cIo
RqGNl3ctI1i7Fdu+N4lwer8bjGp0GsZegGuwjqpeW96yhJgGPvdu+MyoGVW4 sTYcnKrp+jxn
T73u1O/OB4fo377TaH5qfL7sf71BNzNViecTDBkanPZIMCEhDmNVCVEA13rI 97vIvu39iYLJ
P70qQNswRlUCjKIpxQGMHYZevKeee/fYV/ffKErbHnu+Q3GYTrzAznJ+Rhy8 ElF37ndahwix
I4I01lPI3KCkwwWta7qu1gqiXvFQm5pmPoYKsFE893HEAj2gaIbpZfL5Jra/ jW0T30dAK4yJ
6RQvwxbOcEloDIpnTqFvTfEcxEPPjzHlYHa3E71Mbm2Z3ce/BTGP0QQz0Dst RsJHJIzPUnWe
Tm3PQcoRRaGTJaeN/VSWK/OAanfPQcXIBfwxxSOmsP+47pi3t+52fSyBfTQn 07hHoJop8tZm
yFbSJdPQiTZXsU1tirmeoXxiDM77orrRC9UNgG5LJKsbrWDdBMYxN9TmU6g5 YfXOxOLCmprW
yGDzAnc/8i0J3EN7KpoCok7Czi9qkbApmWAaz4XKfph9OR9ylV1C3clyGMZ1 DyI0VGUOTKxY
zIYh5ObF4rt6OcIthjNKIxzQ/wfCK+QoehHCYTlCwluWPMZ7I77JmZpeV8vw AuBSeYFMhtiO
CRUSo/0gF4weTAIxsB42MaaeElNvConJ37OAr28nsFSLAoicrbJ4iwKY3LZn q0XJo86HDw+u
yI+MYvvawzG6FWw/K23mM6VySuzs6LA6CUP8iVjqqVgMcRXnLbYkV0WKjWeB ICBhlc2/dgYi
+ytYY8ky2DW2s5OmzarL636hGZPW/a4c7ARZO3KOerfS+19YBztn+qPW0v/H 2HPHcI7UG6aE
5tg4kd8ch85AVJcFm2NAFR0q9TKHSsAuZqdcgwZE6WfI0Dl7/hkyV/tw45IX MOgEVnRKkmLQ
MMmEETtUTQUarKRqKoYm1aKTZf1Oi37oWvdEvkUny+CKXoIpGye/25Sj8wtN vikbJ2xTtiw9
M+XSPkz6H0U+bBbyYUKHIh9+OhQULr5kCgbLSQ8tT0mQG2lKOg7BXEfIFj/e Or50DzvSlQTr
4Bw7THPRShoylESHjFlKKmly+eWllQRTsPvsxL5TGzd1iZqiQ8bO9JKaOumc jeS3jIResTe/
paakuBNwI9KUVUxTdZsLCppqZanJTS4gM5JScOvxURSJifV9R/6zcFgDuxz0 ndbCLJrleb1z
+efywrzSD8JTeQleIVx5LcWvea0fDPrSeYU1cDaBnYaIV8GZZvFydjNd6SvM K3b4L/Tmp40d
lx1j33HXW+gW5j+hthLlKRGZUhuLHh8h6uKYv+f9UmXZY8jtDh/C4z6wE53d QIpMMAblz5Zt
5O2Gnr/+XrN9g0NnQkB2zDgusA+//MTdbNRmQIzNbzFwT/2ma8Y7xWy9UypN Df5paN/fftOb
cG0HrsEV7XsWxoKDTmiPCWUFcuzAErx4vhixGoR5YLH6lOTDv7Sq9k6rNtKf 5t/LckjFlU9m
xoXOfxKxKTPeIXhFZqwmvYTMkvCkySwBe1UySwISyuxRZU8iq9RbskV2wTpW PYqstRAYSM1c
/FiltPbpjt8jW8lLt3yWJltrEJ48rQHY69IaBCTS2k5zobVMasmFDaUVY/1q xO92Nll/hsNI
3siS8OSxDmCvi3UISOgwm6zr26yX3sQE/gLOYsnYxT43NYHGdG1NY5w3wZnG 2N8G+aUiLqDZ
ZT2UToKTpzAAe10Kg4BECtMWWkrk9Hb1jzJso2v+l4Dys838KkhxtiE4eWwD 2OtiGwKSwHa7
tnk223/zH1BLBwig02cq9AUAAHMrAABQSwMEFAAIAAgAFInLOgAAAAAAAAAA AAAAAB8AEABP
Q0xfUHJvZmlsZS9DYWxsQmFja1Byb2ZpbGUudW1sVVgMAAD7Ukr4HTFK9QEU AO1c3VLiSBS+
n6dIMVU7eiEB1NFxwSl04ojjL/6N3lghaTA1STomQcCrfZx9rn2S7W5ICEkO JqGDjMOVReD8
fedLn5PTaatf+4YuPCPb0bBZK5SLpYKATAWrmtmpFa6vDta2C193P1S7hr5z buO2piOhb2g7
vkSlWC6QK7rp7JDrtcKj61o7ougoj8iQi9joFLHdER0LKeLPk4YY+DlSsI18 gV6vV0SKrlkO
YhLIaIuVUqkiSvRnngxxA5Qg31Wo/mJJvD45LjA3NbVWeLi0W8ZFE3+X1M/t o7ON242D+/Wz
XkEwZYPY35d1vSUrvwqCgVxZ0WXHaaI2sgkK5NsH3WkN6nthYYFcV+4l6HrU 2O4HQaiiumli
V3YJcM7Yvb21U/3XHj4Mu+fgrq3AAI3CLY3CpQaICQWbLjLdoXp3YBF5hvOO dE5ilDsogMtz
cx2VDuR7Ynjr6vPPS+m+JbdicDGd62bD92OUWkf0fiASRZX1XkSRWKGi5zZq a/2AuqGjIBrM
qZuoU6+g4dPlOzJPsIp03w6xpJLEanrYiB418gsNagUVK12DYMg8KwjPst6l cGDDwia5XCSB
NEzHlQk/nJXVtV0F6zpS3BXcM5G6j02TfMD2arGD3Lpl6RpSL11CJ0yzwQRk c7BCMRZqwicP
lk/kOkFDMix3sLL618d+/e/UFoeaQbOeFDVNPmqmondV8lXAh9UiMtW1XUd7 QSurtUo2N6iO
oiXb7q3mPp5j202GhPRMbNCfZ4eCSpNrDmKXQKuorzmuwwzXgmYD6ogsWe2e NRWpRCRBLmuf
GkzTgjjfRE9dzU7hPE8eZiSA58L8OTBpeUYazI4k7xBSk2GRmBzEvyYsAIKL QsZcwUi0sBRE
v5aLwWI+rvD7tJvS2hppFqMNCfsy3I6UoXZkSMpgVYf7h3JMU5OumxJsrwV0 iE6zfnWKI73e
OHzqzKVrdxW3a8v6AZLJXxQTsd9XhqIux/Q7w6hbsoMeGqSls9syFcO2SjQQ ubasO+SzjnvI
3sNdk1wqB8ChHl0R0yDqjyTAhJ30R1EcexCMWYwJOsCIQPJnYEQZZkSkpZxK igpvUny+u7jI
kRSVJSlAUlRAUvgLVzJSrHMmBb48Wo8+FfIjxfp0UrDA34oPzPjcqbAOUiFY SJOxYYM3G5B+
1MmRDRtLNoQReZUNyZiwyZsJztZhnkzYnM4E/9nszegw9mAWTlRFb76VYdz1 be328ORGvpl5
3MUUHYQVieUs4y6mS486xXXcxYyUo0Z4jrv+++ffmSde2cYNxHKayRf7edLh F6cBSGJwpg3B
Uj94skgzP/Yx6ZSDED8VrwwS3jiUJAORcCjcaZudJK8MyuYAbmhGwYMqnPDN J6AshFlQ7icb
IU1IJZ8iMbHsU7W3T/Sc0XmLMRttBk4j3UvaMRvTEtNMLeqYjfkb02ctJypD bM5gRiR/cmKK
eJMixzEb83dJCpAU5yApUozZmCLOpMhzzMb8nU6KP2ywQhG5AKmQbszGdPFm Q45jNubvkg0h
RJqvsiEZE5q8mZDjmI35O50JyzGb9zpbM/o6W+ox297ace8u8l6cWHplzJaK zMzZR8jZpM0w
09Kf9Q2++TXD1F895o3DZd8zwgZmRPL1jSniTYocm2Hqr7EkBUgKAyRFimaY KeJMijybYeqv
OZ0Uf1j7wxABqZCuGWa6eLMhx2aY+ouXbAgj8iobkjEB82ZCjs0w9deazoT3 2QxHR7BVpCO6
f9owLEK/MUTxB0e8cxoa+zVSpaFwIGJ60mYiXEt2Hw2ZRkzCejiRruonZ9+k 40v6sUjPrBh0
A7hI5D6GIibOBn2b7m3ccZZ8vQ0V87Texh+yyc3b8eIS5yjbBWh2R6ejmJM3 z0/frw/k0+kP
yuOUjbynR6UI/xTGsJDvZ5b81EVS3yKcddh2vW/t9su91AOtjZ+PdNnsdMkT 2+7Z/nFV9D95
X7ewOtid61mXqshsju61ieiHYPvQQkBb7S/3BOgrAGjPS8lUnRlBdn8c711E LeULLvdjPRwQ
76oNGPFwP5wV7e7V5v4daCVvSnM9xTQ75E8/JBeGfDipaCJZ116GL/LMCP32 1l2MtTwgX7hD
W5xydQPmit6Ye+TGvCa90GxpetY3ldJvmCZOx9M4ZEqv38QACD/NZc1U73Rj f06ZyvEgHifA
p98a1HQTcVrI+oPGtwW+Q+Zw8pBTzvTppWf2tWzw1FEXuOTkfcCSU5rK09M0 Y45etKfTBc7R
73OIdPZs29tHhxtwPxgaPWVNeOn4ZaM+3xb8fZ+ZTZl4a7i9Cowyxt4EUgZs HMYuA8xY3XVt
rdV1A+TaRFsH0iOkI7wXJDsOVjQWgycLTZKITXdywMdxgOTD50c0hDQEYmZg 4zffoDsOwnar
tz3Iii2TfY/YAntY0EABwvbLtmregf/pJ7BBMQkrEatfzwfW4BZFvojG7wNN ebKBQH34ufmE
pxM2DlQm9t5Ajd9Sid/uAQGtK9fbErhpFN48mUSVyUY3XvJANbJ9wgtaqe8i M9RoAFXDW1y9
xehhVL8EAxktREe6nmzkrhegKhbMDlEAOUe+CvsHrizIE/L9GyoEi7Hc6dio M0qqQnsSR3OT
llKRJ/BASYkCH/w/aWPsmXgM9kCVy4R9vI0Y7McuevADJTsZ/AA0XOEHSs8o NrqwPYyr3wTy
rNbF/AM6oAZmQj7eRhT5gIsj5KGCngx5ABWuyAP1KYj8RJWcAJ8Jx9AeqJWZ wI+3EQV/0ksP
f6D8J8MfwIYr/kAlC+/aPcSvO0w68papANXWTAmItwEnYAw+0CYkAx8ABgK/ Kgb+N+fuh/8B
UEsHCJmuyjFCCAAA0VMAAFBLAwQUAAgACABrhss6AAAAAAAAAAAAAAAAGwAQ AE9DTF9Qcm9m
aWxlL0NhbGxCYWNrU2VxLnVtbFVYDAAA+1JK6hkxSvUBFAC9V1tT4jAUfvdX dLrPkMp6WwZ0
wAHXFcTh4qovTEhPsZKmNSmg/vpNL9AADTCru0/MNOfyne98JzlULt48asyA C9dnVfOwaJkG
MOLbLhtXzUG/WTgzL84PKm+eW35oXxvR79K6VDw05RfKRFl+r5rPYRiUERLk GTxc9L1x0edj
JAIgSPoi1Vxk5vP5vDj/HpuWLOtQmrZ6cYSCy0SIGYGF1yWmdITJpAevS+80 m0DKIRrOZo+n
kyb+1bBPTvsnD73G0wiP5uhkEQmIz2EFARDqBgJiGOA5EZQSakRmC5+pR7Ue 8qwU1Ve00KDd
kh7CLSfAWj7BYczWXwE2AopDx+deGXEQ/pQTQJ3L1vCO+45LQQ2SfipKLN+S ePfr8czzA8Oo
SIPynfTBY4j76dpVc/i727ltN3FrzcFg2JNERWnq0iUOIEMEibvdoOABC+Mw 4XsgLaPg1ywE
jklUtpllgMfJ1NqZQRYyhajnSSaZawxMRqMdbgOXqswC8qv60dHWgMA7hEw5 jwIK0xiBE7d9
6A8c+pjjiR0JXJ4H5PCK3G+co92YhN/hZGeRGlRscpznu4Jq8zxDRV0HqMuU rtKx9bKLortW
6mYaxJezDXb9XcuBoeNuGwpv9EF3k7INx4azoWMrw+FwPM4RZxuEkNLNWtCT 95PruMmYKnrV
iSRB3QNmDwIbhxncLXzDTAKR525hcJN3Hvq1tMk6UXsJ7IjN42ZhawM+XbhG h0nhXekky9ms
Xdfl/WvXDc9/rF0zY0rTOyMBfAaNqKp9yg/9+mLAdfUtGHq5dUp5isvqZz+9 wT8Vvebmy3oP
7gx0FOjUr1Cgk/cXUpCaKtdPvmjSmhZC5kltjRSIbgiElMDSZtdVuAFFAz6F ssrrGiBdZ1RA
21+IClp7tvd6zGvsvasgUbSiG+gVXtEnk+gEkcPYMlWyCNWCgKYCz8K1O4Op ZOghZy+KfaHG
mB/GTmLN637Dy0gWsl1boZVuhYskMg0HB5L3XyEiXkrLjXQ1M41naVU1v3YB zLSJ1FKXX3FE
GthpqM9BsJyb1/nlmSUhtD+OP4DYwx5V1bjRp3g9Rcp+Gn9Q4pfTlSVrTdd/ uslpqDHCAoaL
jUJ/N6HcDPE6kuXoeT8a++TQPAGbOZLZyBL0vfe5pUvQ3uv1W4mvjkWWZRD2 m0e7s+gv2ApK
/waeH/wBUEsHCFrT6zl5AwAAOA4AAFBLAwQUAAgACAA8AMw6AAAAAAAAAAAA AAAAIgAQAE9D
TF9Qcm9maWxlL0NhbGxiYWNrU2VxUHJvZmlsZS51bWxVWAwAAPtSStN+MUr1 ARQA7V3dVuLI
Fr6fp2Axa83ohcTQbfsz6ixUmEV30yoo03rjCqHAaCWBJPjTy4vzOOe5zpOc qs2PgaRiSCqY
xLqxWyF7f7X3V1W7vk3I/t9POi48IMvWTOOgKJc2iwVkqGZXM/oHxcuL2sZO 8e/D3/ZHOt47
s8yehlHhSdf2ZleUS3KR/AUb9h75+0Hx1nEGe5Jkq7dIV0qm3i+ZVl+yB0iV fjbqkuvtSDUt
NLvg8fGxhFSsDWwEVyC9J5U3N8tSlb5teg2BwbyCvFam9kub0mXjexFgat2D 4s1m79vw8Xhn
s9r90vi19Qup3ZsWfiwWDEUn/o8VjDuKet9Cw2JBR46iYsW2m6iHLBII8oYb bbs5vGztHs1f
X7g5bvVGdq1yTf5eOXmoKZWH661Bv3j4W6GwjyqGYTqKQ2JkvyJxNj9Z563d ziIS2xxZKjsW
k5FtTkZGHRAXqmk4yHDG5p3nAbkeQrpXPSPDUfrIFQLUKjfua50L4rhsjLav nj73Gx3/EBj2
ZbM+gzJJpC253iMRczLue8xJ8id6+ZmFetrTvNUxZGZcAF7bC++NuMw48g8y GmYX4Zkf4qlL
UqnhRSfY6+QePR8Uu6Y60kk0AVmx8KDgEfH7XeshrBmoRIZSN2xHIYSw19Y3 DtGTZjv2Gp68
/jL7X6mPnMpggDXUbTmEQSZNDFyimhgj1VmjISe/aoaKR13y0p80Tsg6+3N9 ff2P358qf63M
6RFJDnVbUIxugWSlwHMUDWTbhIOsQejjl1+m/4ng8XLQVRz0Hg4hYFM7NjK6 1QdCnY1DW/uF
1tYLBwV57h0WUpH2gDxvCsLtNjsdwYv+Cm5im+Cz0ewPL/RHnIFtHBIaVPWB 87w2GaTbo9F9
oT9Kpoor9gWxulYnK5ClqHTO1CylTyeQy49qkl0CdddfQWL8gnEscrkRBsZv PugihO4JHzaI
PCfPacdG1iQfK5yzC27zNnMXhpcn8q16BmcolKyl8M3KAb+wZtw0gC96nMXv lftvRKY0CYjL
CsbjOCeCcCG5c9yKBDUtAY89kNXFPB43xgHHyCnocmFvipgsxizsivG8FqfG 0wziyRf0qaqO
LDgctsixVutpKpwa1kuOWekRP96lI5od7oMLOQsCcB2hHjlhvqainGAqFrdu mpByZMzepES3
lRzrIvGkKM2O15L7fP166D6mkga5EFk+agG8uKgVyEFaAdl/3Cdt9pke+0gO y2kdBWsqxNjE
5sluzTz3Ki6SG0zLsUaqM7IUXEMK+Rf5DHmm7iwMG/toEONhdxQb3UyX+2LB tLp0iToo9hRs
k9+x+YisI3NkkD/JrthQQDSHzKjfkvGFVLR+l6QZAPeIJZ8huwjhyn0MQuBA QkBtF44SOmdK
VK+GT5UEKaELSjAooTMpMV7OwvHB4MyH5/bt0D7Z2CE2v26Mtium8u/pzjk/ PhjBfJjsC+9G
h6n/lbPBYLLBvY+H44TJmRMXz6eP9ePdqwXZnRsnzPxzYl+athsidB8q8tOJ t10QuftQkR9V
1af7UI7YfQB4SXcfwInoPojug+g+ZFE6F90H0X0Q3YfsSuai+yC6D6lRwkX3 IcPdh5U1Hzj1
HvLaelhx54Fj40H0HXxVJDghx+87UDO3Geo7AF4hMjMIccuj70ANaRnqOwBe QQkGJbTYfQdq
5S5DfQfAm3+NORIb7jj1Hagtv0/Ip7XvAHjzz4lYfYfB0d3WVa1zzqnvQMy1 Lj3mJFmO2HcA
eG0vPK59B3CCvU5E30H0HUTfIfWiueg7iL6D6DtkVywXfQfRd0iNBi76Dtns O6RJ9E13ZyCd
0PKt28MJUw46ZYfS7amZa5/Delp1e8Drc3oXIi1EJpAQIXV7akjhTIkkdXvA KyjBoITCpERY
3Z5a6XDmQ5K6PeAN5kMeNNpIbOgw2bCcbk9tqZw5kaRuD3jzz4lYuv32xudr ta3Q+G9ffPnZ
ql53lBi6PZirLZqT5M2Iuj3Yw154XHV7cCJ7nXx43V4I7VmT6zKhEguhXQjt QmjPrjoshHYh
tKdG9BVCuxDahdAuhHa+Qjs9EnY959ilhXYw43O6TqvQDnh9jttCVaWRQYGE CCm0gyHOlEhS
aAe8ghIMSvSYlAgrtIMVznxIUmgHvMF8yIOoGokNfSYblhPawRZnTiQptAPe /HMiltA+2u7q
HIV2MOcV2ncj6uxgLmmdHZxkV2f/33/+G8EvXCXUdqG2p01iSodWl4kQCrU9 bzM3QxKxUNuF
2p4a5Veo7UJtF2q7UNv5qu30YMhBbQczGVLbAa+QVhmE4KK2g6EMqe2AV1CC QYn4ajtYyZDa
Dnjzr6xGYgMvtR1sZUhtB7z550QstR3LP+9Nfmo7mPOq7TsR1XYwl7TaDk6E 2i7U9rxodpmQ
ioXanh61nSwGQnBPyeTNkEosBHchuKdG/BWCuxDcheAuBHe+gjs9Gw7iC+5g JkOCO+AV6iqD
EEMegjsYypDgDngFJRiUsGIL7mAlQ4I74M2/uBqJDTYnwR1sZUhwB7z550Qs wb3p/Li75ye4
gzmv4L4dUXAHc0kL7uAkacE9vKYFUriQ3YXs/hE0YyG7C9ldyO6Z1oqF7C5k 99RIwEJ2F7K7
kN2F7M5XdqcnRBxfdgczGZLdAa/QWH0JcfrN+7nCCLI7GMqQ7A54BSUYlGC3 5sLK7mAlQ7I7
4M2/xBqJDey+3HKyO9jKkOwOePPPiViy+8PD1fZ9W/nKSXYHc7VFc9KXt2X3 pVgNbnAQ6lB1
EJiRvWbSWgdRvNgTXbHpTSITSIiQdRAY4kyJJOsgilcXlGBQQmdSImwdBFY4 8yHJOojiNYL5
kIc9LxIbDCYblquDwBZnTiRZB1G8Zv45EasOQt9M64oZo6XrIPRNLze8ddAW 5zoIUAdWb6QO
Mq0QnAZLPvMjraUQ4PWZg2Lfo5G5DuQElEKhWXHNmRVJVkOAV7CCwQqFyYqw 1RBY4cyHJKsh
wBvMhzzsfJHY0GGyYblqCGxx5kSS1RDgzT8nYlVD5er3p36t9g+JUdv6dnJS Uc7t00rkaqhc
/bpz6TEnfeZcDQHqdhDqsNUQWMJeS2mthgCvzBr5R973aGRuAzkRvhoCW5xZ kWQ1BHgFKxis
0JisCFsNgRXOfEiyGgK8wXzIw84XiQ13TDYsVw2BLc6cSLIaArz550SsaujX vbJ7X6s2SYzU
5umwUbv8aaHo1dCv++v6lcec9IlzNQSo20Gow1ZDYAl7LaW1GgK8MmvkH3nf o5HBgZwIXw2B
Lc6sSLIaAryCFQxW6ExWhK2GwApnPiRZDQHeYD7kYeeLxAaDyYblqiGwxZkT SVZDgFdwwpcT
JpMTLWR0l1klzNiM4JZsM1Syq0b3vfNNIaw85QNmypvjj+cvk/VBerI+EFkP yPowcKIvvwEM
05P4oUh8QOKtt6b78rm30pN766PkPpbW0dr5etuoVdSFE1hUraO1U7+oesxJ Zc5aB6BuB6EO
q3WAJey1lFatA/DKrJF/5FMtjcyPQE6E1zrAFmdWJKl1AF7BCgYrTpmsCFvP ghXOfEhS6wC8
wXz4kOdaGpczJhuWK3fAFmdOJKl1AN78cyJWNeRsfPlcubA26Zx83Lo2G0O9 fXQeuRoCcyeL
5iSZczUEbu5YqOsh+QxWfnmtvEP5TqEceeI2R1XX9zy8G13dGFa6jEF82Amf Uipczo/Sk/Nj
kfPAnB8zcw5z/J9QtQwYSk/OT4JzDmN6r2SD85Vn+YSZ5enEDp/ok/QkuioS vRiRNxMdLsnV
2EleXRVK8daCmSCq0M1P1rm221mIf+QqlJo7XjQnbfKuQqmbZxbq0FUosdL0 gH2fRYtCabEG
lBuqRkp0k53oJdYuYqiVnly3RK59c91i5hrmdDhFlRq6SE+uL0LlOgfNoUgZ v2BmfDq5wyf9
Mj1JvxRJD0j65ZtJD5fwduyEr7AapXjzv+zPV6Peb6bcRxjRb0qt6wMyr1/D c9zqjWxvy2pi
VIN3o251fLFrvGQQe3ODHSjOra7Q8ZJB3TSqF5XG6Un1e4v+WtKRo+j0YQkl ct3v820igtUN
LQistt0ckhl+tJDLRMHOJccPq/looG5zhNErzgd5tGvXlHbgdzhMYdvubxld AH06UIYjVH0a
kOzboInNfDza25bq9THjCFaM/ogAPzw9/r4vzX6bvtwxu8+Hq362874EbieE nRv4OLqzWLIi
u/kT31wGRtb9pVBRYwte2hmJ7fQ70uFLmcmcL6QmWVu40rtiJmuuMRs1U+Ai ZqZW+eARTkHF
wUF9rTFsHvGVMxNfXo9qiJ+mL02l9Rb3W1OAMZMEvhKZBOKhMiEeo8CJLG/M 6aaLqzz4ksik
Fg/RCfsQEz6kuWauMD4fdIlDl+vU77GLzwqKH+DtoXr7mTkr3f747bfgM/X7 bUIPSOI0J0Kl
jOfee53MWiqeCbXK5RRmXqjllONODE6TqdzEk7BWWsLRTG6FqPcPJoGakIgD f7aSFirEA8C4
PQCME8/CHRWmVKO048GzmLvc+/Ps4zz3jIPMtC3L9zXlX3+evd4e/gd2/pq/ lTCu4kQdtz2O
l6IaRk5Blwt701wl9wSxgmYQT5GeI+bdIqPZSe0j5TiRELNIOHfDOuWh615m HiSUOZCwnCAJ
F09hlIrlyNny0jG6rZQ9sW9JIg7Gn9Zj9BFfIbv4wrgd1L/hB94qjmNpnZHj YvuP3Suz32YZ
WbjDT7FtU9VgDONLj1RWF5e4dOab1fyat7PozcYzjuhCDKPGlXFDJavdx4rs 2Y+dz32mmcDI
kkubeYws49ZE394cK6xmvf+NfWP5/Ecr5qNq1nt3de+VSUR14cMViQaV8TmW AEmWFdpBt31W
97nz8O3QwpWZDm31yUHGwobMWOAm8ZjOnJvpSlvQkd5BVtWYraueawus9dad GWKABQ4+Qza/
djPxoelFrwDHFpkbh9LvW6g/yalq6gPT1pywy77EM/KMBdAv8uO1eC72cLUn xgXWihwp9v4+
/GM/gTiJPmt7CRd9RmS4Rp+xUE7GNpmAN5Plei7ycKXnPugCa9GOFHl/H97I T/FNws7ae8KF
nRESrmFnLKILYZ9b0OeCD9f7BJ+xrEcKvr8Pb/DnUU5SwNqpwqWAER5WCvbp Rx73ziyzp9ES
+/9QSwcIwjhfjwIPAAD0GgEAUEsDBBQACAAIABy5zDoAAAAAAAAAAAAAAAAb ABAAT0NMX1By
b2ZpbGUvSW5kaXJlY3Rpb24udW1sVVgMAAD7UkrowzJK9QEUAM1YXXPaOhB9 z6/w+D4XkYRL
WiakAwRaN9CkgEuSF0aRha0bW/JIAif59ZU/wAYsQknmTp4ykXf3nD3albSc f30KfGOBuSCM
Ns3jStU0MEXMIdRtmva49+mz+fXi6PwpII3bgWXEf1fWJ5VjU634VDTUetP0 pAwbAAjk4QBW
WOBWGHeBCDECyhcUzUVuHkVRJTpNTE+q1WNl2h8lET4RKiSkCC+9LOoQjpFM wDPvDE2Awkcw
9SJ7FrUZ6jr12Y/r2qTWuz+9jkB1GQkjxvEaA4x8Egqc0MDBLKZyArqx2dJn HvhaD/XtJM6v
UgX2oK88BGmkxPoMwTcQNkIfyhnjQQNwLNicIwyuO/3pDWcz4uNikGyporj8 k8bzNuOZF0eG
ca4MGjcQPUIXJ/tJnKY5ndyNv9tt1t9wMCgMlFAFmCSGioJ9HGAqrSBkXBbj /Pv4aztO6qTc
SGKPnW7qnjjK51BhJLQ4CYgkCzxWS6bhcTxrmiGUXgBj7ZS2077VHraGVncU /7dmLyo+eeCQ
PycStBnzMaQmyPiCNcJ7JDH8AEmMJFeNeHgO3gfIwaZ+/A07P6Gcc+gfns3T B8jGohK7mO9O
Iky7S8Omw5QtVetmnt9iMUJ3bXa/u/0YzzNmEcVOS6oCeZhLvJmw4lKILim0 UZvBzeipw7Re
7ziPJeDQdTl2s+MLxayF2sdl6uUcEryodRx+1uNpkt0j7s/RlauPG0Eyrb0a t8MoTbTM4z6F
7mkJ36VfXJbUyc2f0W/UKqERQi4nRHqx+jtU5+pg0osEtKjc+16W/AbqYlQf lGm/RC2XMNcI
rIu0LPONkj640DV7tH3PjCF3sTys3nUaZHVydhX2ypptd72/owZsMdhLg45P Ys+DNJiT1q6e
P0Mvg/9NAx8KUaCmO2+28k9TQokKlzhU7aDeps8qwhXsou0NNqYPi5ZVknR+ TajTm88gwkMM
ffKSpJnz0ngbYh6GigNXJpeX7UmtxCTluCM3xKjkEEl9jHeVWFfimjbTCo3u b+3uwYJqvNcE
de0vZa26ElSXSVHQ8hjvK6imXzQ9q69c8YOX1BjYi5S1VLtATFeR68Swcx2+ BUSzSylIWkN7
A9hCfSsEL2/mZfC/qxZN+x1IrHyv/uo80NTNilA6tLXigGije/5zRMvdmgnz 3sMtSplMnMSG
13DLy0iHx9cm2Go2wRYeIeqxjLmqXiwKciUDdKObjZGrJ/W7DquFN0kx1dUq THbByUK9jYIg
327VNlnaI2Rrn5JRGhRm6WShEL+xcZHlWxQEdzfbw75pPECBp7sfj2AXSn6W 51hs/AJrr2Bp
nkt6rOLbWX7B95YOYHWWvHLtraOkeRTeSx66EntB7LgIdKLlMG7vdnDXqUvl fTPhv7tn3zp2
71cGs3oQ68cFBXMOsh/KLo7+AFBLBwgh9Bn8JgQAAFoTAABQSwMEFAAIAAgA 2YR6OgAAAAAA
AAAAAAAAAB8AEABPQ0xfUHJvZmlsZS9JbmRpcmVjdGlvbi51bWxjb21wVVgM AAD7UkqJoctJ
9QEUAM1aa3ObOBT93l/BsP2wOxPbvG1nnHbiPHaT2kka132k0+lQUDAbQCzg 2Omv34uxiR+S
GkCkyZckNhyu7jn36Eqo93bue8I9imIXBwei3JREAQUWtt3AORDHH04bHfHt m1e9ACdmApfs
H7umE5m+MPfd/fw2Jb0NgIJ4Hz4/ECdJEu63WrPZrIl9p4kjp/V5eJZfEm9e MlMXVyiSJMNl
g5E1Qb7ZcIM4MQMLre5aRbBxK7I8N4zR4n7Hv21F0yBxfdSCcTTl1uqWFcTU 96h3w3dKS2nC
ja3xcCAuxufaB+L3T1+MwbiPBye2cXt+qX3STm/Uy5koJA8hggwNB0fYD3GA gkQUAtOHz84C
242QlT65CbAWfC8KPjLjaYR8uG4cuMmBeOXOkSe+eSUIPWvienaEgsVDM9w8 3xfYRmvR4I5z
ddLHP8jRQAr1BWRhUOWMCqpLsiy2SqJe01DbkqQuQwXYOHnwUEwCPY7MGYpG 6ffb2JNdbAt7
ngmUwjVJNEWrsJlPGOEoAbUTHzHfecRTEE9dL0ERBfN8N9Gr5LZW2V3+z4h5 YoaIgH51Qkj4
LQ6Si4UyB1PLtU3h78gM7Dw5PeQtZLn2HFDt/pVp3ZkO4E8idLsj6j+gLj78 Q6iLFahnPuBp
coShiiPT3UDPR9HH08COt0ewS+sCczM7RYV4ThViajulamZiDxk1I5WsGUBl 1Yz8WDOFYMOb
Q2qwqiQZOWxR4P8O6XYEziE9FkwZQUPYxQXNEnWEQxQlD1RVzw7lsNPHJq3q yysbhkIwrDkI
UBGFB2BhzVq2jKAEJ1QNVST7tEayIWxChuok+2L0zqmFbBjK7tSRki2rXe5s B/S5W5VkXazE
SUCawstzApkMgAIcUUmZh45aTwXCWMgV2NUWnMgKk5TiPQp4OWUyK9uSACL3 lmRiXzy9JSmk
TL8zY006Ssm5DGAJxZVPvKpYUCoDbOXLhLWHzAmxg1hUI6tgWdVLyoVSajCs MqVGMz+QELXG
ksAcW4waK1thMARKhWU563Q59rrKefHZgupK+RKOkrH7+5H1pY9vOHe7yjl5 mlA0NZsmDFGY
uXYySfvUTvVGGGq9jkb4soZG2D15T0XdbISLGzNg76ahkjEDYjmrZxgzYFLN vpoxJ8df6jBm
gK3fmJPjG7IxN2SokLRoFI2vMcOwnsuY70fGkNX8lDUaGAJVntWtGFzlGa14 ZrrfNe5WDGMg
W7Guypmq2lLuxbLUre7F7sk1ayOvnBcDKKsES3vxqEYvHnH34lENXjyqyYun 2l0dXgyw9Xvx
VPMIsUOxcG6NYTDP5cBT97CW1hiGwGyNodPj5sdgAty2gZ/gx/h+yN+PYQyU fEk12XE0Ztmx
Vs6OozGrCjt5lopzHI35ceyZcUzl1zCO7Dv+/EZjMr9yO5tvZU3jQepH/qT+ O6J3z1VJ/fhM
pLbfhaf817MQP5lUfbnJLXek6qRC/lmL2LKkkpYVPEiFcPl1x2xSrZ9D/qRC /JRNCkVfTl0c
7BfyzyJVLUeqbrFIfdwaL98CwSMIcaf7hPrWYrT6vA454qakswBa3VvTor/g PT7uf9KonVB5
Nd1Q1NReTuyywUFNukXIVEU13TlO3WqCRzDV1FAkjnLSLQIVtcnJGXfpWxul 5aTb5N0gTVGZ
cmIsVLMTTtv5WpwDuiafd6jhCEUP2Q45vhPb2eRRkej9iJbOh0KMp5GFWO9k zMhBCb10fimx
/L3erswgPOoCn7UYBx0SwapYYOzuB663eTio9wMFdohBc8Q4rpEHf9yjfn7V dkCEIsouPBC/
atKeoHb2BAN+Nwzp2+uvUMJ7Qhc+gl/StzyIjIHDAJIfkcI4s2EAbvKQXbEe Qrf/k2Qa6Zd/
Sk1ZXfxoe49//rUqiIXECopNO6Kb4I7YKHsba2IjzfpVxAbh8RMbgL0ssUFA LLHp7UxsstbO
1datQW2EGJZqU0BmHSP9aVdTWUjfFNPSEyzFLI27ykLCflRplYWknaHfqbKQ tHWYq6ytZipr
yKqykpki6TsyK8e8/h4/nXnKe6waJzMIjx/zAPaymIeAnuIvjXZnRbys7hJf 2V8InC79Zekt
4DJdHpOZgegHVLT0PNu62CjnrB7FRjxj+UtpXEPbS3zlAMHxkxqAvSypQUAs qUmZolJRvV7/
p7rCjA9DmUTkUmFdHcRVTVXtU4mjqoiHOcurCoLjpyoAe1mqgoB+k6rUzyOG qiSiqnqt7UXn
m1f/A1BLBwjyDNVuigYAAJEzAABQSwMEFAAIAAgAJoV6OgAAAAAAAAAAAAAA ACIAEABPQ0xf
UHJvZmlsZS9JbmRpcmVjdGlvblByb2ZpbGUudW1sVVgMAAD7UkoYostJ9QEU AO1ZXW/aShB9
z6+w3Oeyhtv2VoikCinpJQ2CkNCm9wU5Zmzc2l66a2qSX9/1J/7YIQ41qVT1 KfLHzJw559gz
Dr13G9dRfgDjNvWO1XZLUxXwDLqwPetYnd2cv3yrvjs56q1dpzth1LQdUDau 3c0iOq22Ks44
Hu+K88fq0vdXXUK4sQRXb1HXalFmEb4Cg9yOhiR3OxiUQRYQBEELDMdecYgi wDVJR9M6ZBDe
lsYIGGiEuNYJ87c0MhtdqhFMe3Gszrn94fZLnw4HizfmxfjV51fn//8zDlTF 011Rf+gtbAaG
L7pRFRd83XB0zqdgAhNEiBvm2jmsrirxSnx+ipxfVuqdHClKD049j/p6WI1v ES6DmRlMqVFG
yOmaGThHScda0nFYQJQwqOeD58fp/fuViI+o7g4muvFNt0AtFV5WC0uo8fhs OsygJAJzkruH
xOn65XREC6MnDEx7U0waIw5pOQtJt01b2KqKO7pYRr15DDVlWf6dxG8qgJ9K vMJSt3CR8/Wn
yeugajeSB3Pts7Xhr5nunIMu/oKk68yCpc43EqPEnd/pHOZDoT4z9TCMsoXI IOJM3eHi2KEB
sD5de+JUO0dOiOhGlEaZX4oGaz53LwjZIsj3TCRNZ/qTvAF+wRUb3BU3OrPA r2eJ+4Yt8ebH
B0oPaIn7v5ZALXH/6ItC6D+hrKY1Hhq2xr/vv44PaY2H3daIGv9droiKP7sh HuoYIn5b1LeF
1rQtbufaIW2h/bVFmZE6tqhnhnbTZng5/m94QDO0d5vhjHpevE/9LkdsEfyK LXokXY2jVZzk
BYyXcwdccXnoroQDtxTJ9/903baju2ExiINzHYffTIV2V7q/dPWwY9HWfDS4 OR2N3w8ur8PD
Vvjp4dIFOC0R96LUsQCbx/Yo2spXyWHRlsb7U9HKv5UOhnb7fpEBXcUfSUjN a9Eo0PA49wwh
Gz/2PdKjgQeLU99n9t3ah22e4UegdEkv6q1yonlq2JF909h+JTZ7Hvzi09ig 2iGNxY5iaktE
7ksusjtL13qU2Qvj+9loT2aj2D+RWWT13Lkdowx/vPriPMJwvFQUyY3Cnofc /FpxWF7lu1uN
JRNl93Jkda6ezm4U9qexK1+G0F0N5XTUP23PquQgm0+RWBE7fiZiK7tPU+wO NmIX4tH/9ooT
COUkez3NczNNccG9AzbwsvhpOV7BJlteIZEAAygulTFWaqQYIQ0qYIyTooNa tywGViKuQcUy
wG2/7oglTQqADJuqAMncK7AfBUvYR6bfXuzLa0jYTwEm1GNjvB71CC2NUo+M oqSz8P02L8/E
AvtRvIR9ZDLuxb68Bu79DGiiAjby66mAMNSoCsjIQlTITdCCFlEWiRbIHN1L C3mNnVrk4aaK
IMtCPUUQthpVBJl1SZ/ZeJqXfkjbihElkIiBDOC9xJDX2CnGVgJko6gnAUIP JkGP5H5KPTn6
CVBLBwgs5siTQQQAAIAdAABQSwMEFAAIAAgAU63LOgAAAAAAAAAAAAAAAB4A EABPQ0xfUHJv
ZmlsZS9JbmRpcmVjdGlvblNlcS51bWxVWAwAAPtSSi1eMUr1ARQAvVfbUuJA EH33K1LZZ5iA
7ooUaKHCbhQERS3YF2pIOiGSTOJMuLhfv5MLMEAG8LL7RNWku8/p7tMzTeVi 7rnKFChzfFJV
C3lNVYAYvukQu6o+PTZyJfXi/Kgy95xyr6Ur0e/SupgvqPzEJazMz6vqKAyD MkLMGIGH875n
531qIxaAgbgvEs3Zynw2m+Vnx7FpUdMK3LTZjSPkHMJCTAxYeOnEdCgYIQfv wusyQArI0Pp3
NND6+itr4LO6+aNIJqf9+YndGs6QtogHhk9hjQcYrhMwiMmAZ0WEiqgemS18 Jp4r9eDfilGW
eQ09tZrcgznlhFvTN3AY1+yjnJXAxaHlU6+MKDB/Qg1A7avmoEN9y3FhI056 mueMvvGQt9bJ
82ZI9fxIUSrcoNzBxhjbEPfWMavq4PRn46a/xUFVCPZ4uQSkOAaPEiQRzLoL HpAwjhS+Bdw4
iq+TEChOHFYgg87sdHwICE9nApEKEjAOZwPhAd02NYFyna5iur3JXG/g3N6Y bcOYUBpFZaoy
BCvWwaD5RLRxhju2eALR95eTfsZ3tCTmOha4DhFKqd/2rPohjK5ch1eu00wj qIrh8zkD8/It
Aq67mv1O4NGM9g8BlkFm1kL5SA1antU4qAaPmNogrUER/8iIsgK2KLYz1NcC xrg2Vx3v8vvI
sZxkIAVBSoqc0uwCMRdUwWwHXICJf8pxR69hyllFiv8e3hsZivcShtzipnP8 a2efP52jROFJ
jg9ggDOFfWlKlLUvzdCvpXMkG9P/WYhsGQvNTsT4rgqE/uXiKpGluChS7bp0 myU2oQTWXfPf
6j17oNa1sKMKsrH+whRT0xVniS42rpI14dIkkXrKSjYBjLd8abPvut3mlZ1J ymuriJucJJ1Y
47Tz3q2gjSf4oIe5Rt4eBCbi4yyZYXmd0ScRZWrJruASLdlzakHgpgIXthib AJ/SQcbaE/tC
jRA/jJ2Y6BU8jre9lGTl2rf6aenqtwDhMBQsSDYNoRbx5lmup5uXqoy4VVX9 8hVvpVgkZrs8
xVHdwExDfZpF7sUr+A1ckmp0q1vxDoqEJTQ+WIcob29Jq3ad1Zl9n9GuIWYw WCwS8rcZ7cET
kea937VDkLIfh31I6e4jjODl8x/9ADzJNbwTTxhcAbCkE0MG2Droad7E2xhb Ydqnd9d6Y1jb
hyV9ICoo/Ud6fvQXUEsHCBqYAGR7AwAAww4AAFBLAwQUAAgACADtAMw6AAAA AAAAAAAAAAAA
JQAQAE9DTF9Qcm9maWxlL0luZGlyZWN0aW9uU2VxUHJvZmlsZS51bWxVWAwA APtSSh2AMUr1
ARQA7V1bc9o6EH7vr/DQmZ7kIRgyTZqmQCdNoYcmFEIu0/SFMbYgPpUvsUyA Dj/+SMI2vskY
kJNA/ZIGbO2uvv1W69XKaeXzRIPCE7CQaujVQrlYKghAlw1F1YfVwu1N4+Ck 8Ln2pjLS4GnH
MgYqBMJEU0+9EYfFcgF/A3V0ir+vFh5s2zwVRSQ/AE0qGtqwaFhDEZlAFn+2 mqLvdiAbFvAG
jMfjIpChaiJARwBtIB6WSodindzmjsFmMEfga4dEfrEk3rYuC9RMVakWegf/ aWWjIZ3UleND
ffThfvJ+2OqPC4IuaVh/U1dUC8g2ns01eCwIGrAlGUoIdcEAWBgLfE/v/OtR Y9iQPgZFCPPv
78LfF2pvBKECznTdsCUiGC2MKd1fDN5HJBUEZIwsmQ2HM7mSMzmiAKuQDd0G uj0Xb09NPJ6i
elrvSPJvaQh8KHSkXyetu/5tOhR0dNttetY47kRi8DZxLrQRFioeEgEdCwzU SUT03HQmPlQi
jJq5BB+PLt+A3jIUAD09WJOCXarCsJJyVMlvMK0WFEMeaRhVallBeJLgCOu9 VAcAqjooShA2
dWRLmBhob/+gBiYqstEedK7PvN+KQ2CfmSZUgXJtYyYZxEF0iGxAiAHZI9Dj j6ouw5GCL/3j
g+ocj9Ptzj/7+/vv3k7OPj23fqJZkHRFwD4SdmRON5KFx2c7M96SF2i1AEI4 pFlgafPLM/eX
DdQCpW0Ci/L/xbVTPF2hCOhK/QkjfVBD6h+wty9UhXLgDiwAqE8gclPSJPxi 3enMtIWljmxs
LALeFzPyg9ssD2qYMnXNtKd7zoz96nVlRn4UDRmeoRusYq+J131LogRpWNKQ LFc+pbKB0zNQ
9hcWQziDkBfF/cYm4hp0Rg5tUoynBZVnxM3Xw5eI9ajmXYvz6Ax3jIjPHd1b CejiiSMK69Kn
HzhjBaIL50zjtkwG3LkEtKKDlU8qhHMXZGJx1PWLUF7L1LkDILAFrSycukbj 9YNlvqRP97g9
0ag6VsvCuy3LI4uWnde4ZlYHqkzH7Rdt42yA9UZJv7Yo7vNN6acEu76AAan2 Ra9IFP1V4qJ0
PCcFOh4JrJjal14MVb4/IkVqTOXrPOL4S0d2kfojppZerYgXLHeHAWGZ7Wvz 4T66MSD6jbm2
rZFsjywJNoCE/wUxs/e2LcIIxBTVcwT6EgI9dzUqCIalkIipFgYSRPgzNMbA +mKMdPxV2YcN
MYj4k+mABzy/lLs1b0XRM8A/YzFmyj5u+GiwATfaabiRkhVt3qx4qP+M2S7i xop2zgoGKzpp
WOHk93Tc6PDmxmjQLGXIjU7ODQY3rpZyw5fy05HjijM5GoZ8cZshOa6SyeE8 WLwYN1z9z06N
LpMaoaejdLTo8l4zvr5v/M6QFt3dp0VFdNsua3Rheib8d3zXv+HahaFCG2Gh Ynn9LgyVCKNm
cu3CUCXlqJK8C5N3YfIuTN6FyVsFeRfmlW5+512Y7YjzrWwavObo3kpA8y7M a+/CvEwThl8P
Jm/BJO+MkFJvEqlQN2nBUIkxhfRrbcFQe2Mq6nxDlSAzTcONlKyY8mZFhi0Y am/OCgYr/qRh
ReoWDJXImxsZtmCovTk3GNwoLeXGSi0YKpIzObJswVB7k8mxC3vta1GjzKTG yi0YKo73mpFh
C4bau/u02KgFQ9/Aib6zs1kLpnTffEQRp4qlVC2YlRhOzYfLzF9p8aMiy5u+ k/R8ix+x9yjm
HaodY/la1DhiUmPlxY+K40yLLBc/Yu9xTotYWhwvXTFWKb6pRN7MyLD4JvZ+ SGbGX/ooTZFJ
w42UrPjAmxUZFt/E3pOcFQxWnKRhRerim0rkzY0Mi29i78e/gRvBR+noZm8F QED28JuaaVj2
AqD4N+LdF9NVejdQ6vPBvgmTPyQQmK0p2Q+aRCaMZ9Vr1W/OWu2v9ctr8rFI XsbXyEGiIh73
NjhhbKvftKXGxr+mn5mxgVQfZ6sx1oHSHTl/UIHaefSx/OMK9q9WzNQV5N/E D9nfNqXHEahP
TEwERM9SBdWVI+o8ukBJH47wHGrt88uK6H1yL/cNZVp7wRNZFZFa4NA4gMEc cw9hFt7Hv8a3
V40UeG+KNFV0t11IZ3z2jJP30kRLMEtt5MMti5atPWvHhx3dpbEd3SfZhB7d DUP8xQ4XcoJ7
aTD61DpzresK4oH8hoG57QcrOTjw/TeluUq8XLvWbuo+ojiTwMmPlG5wpJQT o1ZZEro+dvMg
VSZrQn6edt1jjHwY9Z25RsVvcG/CoO+vPp/HHB7mBDMzcEMqOeZxovbV5/Hs Dk3zcdxF2vjg
mb8vtj9/b+XJ5ozW2Iu0wc85Y1/sRMbeSiYxzsjz4dNlqrrCIVPVxY8sUBxI dZn1vlv+hkBm
bwhwol+qIsSh3ztof+LNwA2XtfwPVb3StyRWpKc5P4vGaDQtjPfRh3EqYmlH iCo+s21L7Y9s
Xzg8/plqRtq+poSQIat0OnTopBdzdMejqh3sbPJr9HlAevOZgxuCc22I448Y JDSBWOCiL0/6
kNk2TwSXDt1FcON79Et7NCyI7V9Pd631IKZDdxBixknL5Y0OFsbGg925SsbY O0cXhJiOfB6I
QyfpsiVx/KHF5G0nFrqm1XlcwmAGunTkVqNbn9hADz0gMdKKg4cbSb2YVCdo QOsDq657YiJH
PARWwvM7CQtg2YkvhU1lnhwH7qBYW+fCmflcGg4tMHQ8LRuaaSDVTpuCRZ7+ YGSiBH+EPEEF
xHiCkR3X8kS8jkRP+HzASPjpfMDAh6sPGKkqwQdu+gx4goqJ8QQjia7liXgd iZ7wbHX9wXhG
SOcPBlZc/cHIa84kncWyF5dqA/6gYmL8wUi4a/kjXgfbHwFjHYewnijSOYQB FleHMFJhyCHh
zBxwBhUR4wxGfl7LGfE6os6IGOpGBuPBI50jGCCxHFERff/JU+3N/1BLBwgg U8dxlQgAABpq
AABQSwMEFAAIAAgAE1XSOgAAAAAAAAAAAAAAABUAEABPQ0xfUHJvZmlsZS9t dmMuZWNvcmVV
WAwAAPtSSoX9OUr1ARQAVZBNj4IwEIbv/Iqmdymyl03Dx8G4iYkmZl2TvTZ1 wGZpiwwL+O8d
8CPSY+d5n76dJB9sxTpo0HiX8mUYcQZO+5NxZcqPP1+LT55nQQLaNyDXe6X/ VAlssEa+QjGF
AkaHVA4lzVJ+bttaCtH3fehtGfqmFL+7DX8iOEf6j4mIo2hJ2Pagz2DVwjhs ldPwLp96zLKg
K1MjTAKwxSiJxXrEOHPKEmw7fVc4PH5vXmFB9yE8QNw3UJjhDmdEJ7CqFKIp DH2TUWHZXmuS
PRYxDZ8P7Dp9gMs/jF0FLUvMt5UFN1BLBwgsQEJ93wAAAGYBAABQSwMEFAAI AAgACb3MOgAA
AAAAAAAAAAAAABMAEABPQ0xfUHJvZmlsZS9NVkMudW1sVVgMAAD7UkpByzJK 9QEUAM1aW1Pi
ShB+319B5TzsE4SLWkipWxFxFwUVNaL7Qg3JEALJJM4MN3/9mYSQBJgGzPFs 7ZOaTH/d/U13
T0/Hsx9z18lNMWW2R86VUqGo5DAxPNMm1rmiP1/nq8qPi29nc9euvbabueBn vLpcKCniiUNY
TTw/V4ac+zVVZcYQu6jguVbBo5bKfGyoQlZNL2fJ8tlsVphVwqXlYrEklrae QoS8TRhHxMAr
qfZLPZaKtDBVPFR7jwa9bGujasM80f3T5ntvoo1fNLW4ksSGR/GaRmw4ts9w qBa7g0B1WW0E
y1YyE9cBJcS7cuBPoajq7ZaQYHZtaVDLMxAP2fmUoTnfQXzgUbemUsy8CTWw el9v9R6oN7Ad
HAhHvxaE7n8EDiu/dTZxlItvudyZWFB7QMYYWTjcL9s8V3pVdOJvK1ZyBLmC mFBQiGIHu5jw
put7lKeE+4NOdVt4KSTE7HA9NhtL8VCQL3wBHNpCbdfm9hQ/i0dKbkjx4Fzx ER+6KCBIENhr
NS8ftcdm4yn4a209Kzh2nyK6CP2+9DwHI6Kokb3qmsEHOCGn7M868cSpyK7s Plh/gQ86cYJ3
2LxDfEKRk92b2V/gTZNwbGG62wl/mVKANXVPrCXiuZL49zw4JjNtdCrPubZn Yidx1psRbD5O
nFTOlsuctjXvSMhfVU7enJd5adHtrORFWTHGd+JXJWd4olJSZJPYOlj7SqFQ GVRme2AvC9aG
P/c+ep/gxtwX5Sio9im3jnX/5yFmJZqELgcRayLouxBV7UyN/0ov6Xvm4oJh Z1AIkHLnue8c
M/79TA1fJGara3bHBKoxg+ucalzkW3/C8Wb8iK1NeeW8HecFXb3NzVoK9DTW uz7SRvnN18iy
KLaikm8EQcBEWqwiSW5DqK9TRRVNG2uAPmD39uOavMcaMK5u5d87n8QFOfv9 cXNX1MbXgK5i
73bKtHEjG2d1jxBscI8m+ix8M7C2fUvFBiZmsnxc4lUmocJHlHdtPgy82bHz VJw18EapkNbp
4kH39mvtt25uO7BWYBvVjXCPSVpVro0qlbl2AXESJfmLjWdKppCB3I5Chkwv 840vSjPQhnq7
WxQ7dAXYcHrd1cWGX35Zqt/qo6sZrC9LSoa4dyNm6Ttw5w2d7cWVpNmz48wl uFDAd08ntzL3
NgIeYj0KeIAkMM3Gd3dXxf1ayXEHy5ZFWgEK/1yayfcoSjOhlgtDHdGaZAp0 yPlVoP/2htUv
CnTQhudbXJnBZ0RpOD5uZz4jJElh9PT7I1jfYUkhwR3aQ12HcQ87ryXJNnaG CwkuFPakV/wl
c28j7CHWo7AHSAKTbdLyZtX9WqF+INIKUPi/JFvQ0tMBWg4PVi1eu/IG9+NX iKP4BpAB3OzS
Igiu+yZKwjcLPH9u6zsKhesiYh6IX3cQYylsqLdN3VMCcpaJbTi2QLzCvggQ TIyFkP+1eG9K
Du3kHrfy5xEjx/5IrhuhdkA6xya+L3TRHRu3tGWHB0ZQQJHBYQz1P1X0DSKh 7iVpmnbyWHqp
kPa2+GGbqjPxLmULAPYpWgF/skUZ1FYl5CyTBKSnM6ZIdP/1bGEGSK/xAaRw zAfkQjrM5Bhf
GmbQub3WNOwhs8vp78Y2HdliDQD7HLdyp7LFGnTzTFW0qGSCBF2ObooMPpf3 RBsgvcYIUNFj
RiAn0tEmx/jSaIM6tLVo28fmz3nnCD76PxluANinyAW8ig1aDtu1ANDYPLDe 7ZEEO44MrBHi
8VCIpaXGb5bEouWwf9+XhmL0pSHVoFE8wFTQi1mKrvBDR60Rjf/jqeiXfFxI 9WlpF+OnKGTf
jKCyqR4YDVecWidgQG/tS/jJQ0198wgfCNxamOapwdjRa8WQbEAfMdyL72Z7 WvkQODirUkOp
/Pjj7RDcXff8EDe57iXoduedH4a+42ITogetR9xZJgqY0XsFaYnX72mgQgXL E0eigp+U7g9T
sePwjBgKy4xEx1T3nqoH6dhRMuPdXbVpqegZEdOSzK1C/N0jPXU9IrexvY/b QXMPNjCkXN9e
yfVyeHxkymagUfxE6+HZ6jovSVORqsaL6c2RZMiQth6Y/WzGjsT+7vX8oQGh p+0HhlZb2SVz
gX7olmw0lXYBmKVs4adOwkTBy2iiaZITK60AuLJvRI8Uvt94xNYeeOBuvpVb kj0g9QWW3f63
9gCYZQgdZ2r0HwQX3/4FUEsHCP8J3TpoBgAAcyAAAFBLAwQUAAgACABnoNU6 AAAAAAAAAAAA
AAAAFwAQAE9DTF9Qcm9maWxlL01WQy51bWxjb21wVVgMAAD7UkridT5K9QEU AM1b71ObShT9
3r8ik9cP780YwxJCiKPtRI0dq9Gmlf6w08kgbAiGQAQiJn/9u2wMRtnFArud Op2OJnD27j1n
d+/Zhf33DzO3do+D0PG9gzraleo17Jm+5Xj2QV2/Omlo9ffv3ux7fmREcMne sWPYgTGrPcyc
vfQ2ObkNgLxwDz4/qE+iaL7XbMZxvOvP7F0/sJvfB6fpJeHzS+IWuUKWJASX nX8xJ3hmNBwv
jAzPxJu7NhE8uxWbrjMPMbnfno2bwcKLnBluQj92UXNzywZiMXOZd8N3clPe hRub+uC8Tvrn
WAf1kXYzVnq9W61vqfq8e3o3WvSmX3v1WrScY8jQ4PzIn819D3tRveYZM/hs 8PVoF+BM+Lxe
m2EjXAR4Bt/rnhMd1D85D9itv3tTq+2bE8e1AuyRxtZ4aZ4vfAtvRSGtouMf vWmPHgWkrk0g
S4DGLNC2hFC9WQ71mhlqR5Jaj6ECbBgtXRzSQI8DI8bBl+T7l9jDLLbpu64B VMI1UbDAm7Bz
W/jiBxGonNqEnWnidxBPHDfCAQszm+hNcpub7D7+nRPzxJhjGvoPSlLGvhdd EEWeL0zHMmof
AsOz0uTsY5fIcqsdUO3eJ8OcGjbgTwI8TsX8z0gz1PkgOw42YK6x9BfRkQ+j NjCcZ6hp9If+
wrPCl5Ezcv08KwUFeGfmjRVUaqwsPttM0HYCWmqsLJRp3lhBT2OlCKx0PdOY sC1JUlPYosDG
ZS8nC0h6GiglhJyEXVzIeWIO/DkOomVGzUPNaFE6so1YTtFJF7KKrj1A2lG9 tkyyvzWXvBj5
JcigpIsLy4cCWYawKSkSwLIVjcK+EJahC5SF84llJPOkGVE6kdKM2vVKZKA+ 1yEHqfSwGflB
hg0bfxxTplAebKA+fcwpEmGj28olo3gVArN2NmmVig5A5F50AObvFx2FVq1R Q89bXuSSq1bP
Zde47e3C8Telcu6bqQHYboQieBBLo9smamm8MnYLl2eQrTJDjDXbgYQyY8v9 0W7EvdsRU0Al
6zMInT6ykKySZKktHopa9r93YY474awoAhuzYDkpKmnkhBJ7oqhkGUiyJCs8 FUW6Ncy2yFVR
16uPF1K2WxUVRUK3qcnaKAppEkdndGdyc0ZbRv9Frq7GbQ9GX5ezN7oz6WNP 7pBEaVBqxI4V
TZLcwUcT7NiTCL5GneoWaqG4/C3U/dgXYKEAlVkFl7ZQq9Xn67g3PeZeXBPg mAVctbgm6MMs
uoDi+ky/PaZkqHI5R7pgZ7sgwkKtVl96khiWAVggy4D+Z1i+uA1tXQjL0IVc ltHT9iMPmlEO
zZUsFAHnSgbbQl257oMoNhCdjUcLpZWtYFgWCmbtcoaHaaEAkWl3ylqo+/Gc 6VgrWSjp7oS9
FlawUHdhKN5CQSN0C9US46CSZIl2UDfnH8+G/B1UEjq9imsghaODWq0+Tad5 K1k5QRHYnHWM
i6CSRlxK7JCcNk8dkc6UmamL6Oho8E3yc6boshM0hE6foDc64uqboPz/A75J txt3Q+6+CWJn
7AY+ZmrbOEldzsYJVgymG6lgnO4EGKf4A3utKG2cln3L9PO2csqW1AQ4ZzOn WklN0MvsqRQv
qc2Rfqnk7KyU31uBLtD3VjbGiVdBnTQ1F0MyPg6ZwDxInv8ZkifORNcFkTzP JfmVw46iZFDS
xcU2EXBKR0TYpqk7WYohA/pAmZKebJOqcrZNMGdzPnkCRO4nT4Ap5ORptdKt vogqF2DFV7m6
dUKJnZRwSOZb6EJ/RBe6XnuIKXtnlQtdCJ1e6CK03vduqTyktOzfeKaIIyfz 0s5ZwDgdOUEj
lIl5feSkCjlygmyJPnK6OsOtWMCRE4ROXzE31ilHUYWdE9T/xR9uKe6cHvp6 yN05Qez0p1pk
uf24864+WSekPVkn1JGrW6f4Q5R35tQqZZ3iKM6zTk8lTOntsKQJxhMFj8e/ jRbiJzDIEjdr
furBCj42zOzjnu6g9YP/kSbEzjrSXGcKKQoHHUUxpZWKOnrQJdE6giYozG7v gnFQTxRThjh3
9VjfAom/eqIHCgWJ81G76fRUWT3Aggj1IOauEC/1dBR6dhpq+0VFUF1GkKQ/ IaPoaqBzlxFw
QU9UsoNKEtXlsA8IdOTtAyqlZLR02I91g4y0NDXFCe0o/MoW1wjDDJm9cHSi 9G4bnMnsKPSS
Balyutm7qVIUDtMDUMCf19VZ3lP1VXiFcAXz6t0fNvrceYW4GQ9Yy4oAXtWp dAO27YgrrwQ0
ZoFW4ZUgD7PIPHntnnzTQZWHPHklcdvZuLd4RV2NL7HoaMqfWAAVRCwgiyb2 2p9o3ImFuBnE
ttf70kpLTr1jV+bJ8bJ/eztk7rmU5HjZn55R9ow5cEzCLb6XUohjaXR2H/am fZ4ck7gZz+4+
LrZk8KZHqypfkoEP5mFEBZK/CiIZwi1+vFGIZDSZtgfcSYa46Ucam/3X7YGM JOlVknMOOdYv
k7/MHXnlekh/1ZTjW6v72LLpcfUt+1kVhS4j9ospSiK9WugvAhPnPdllBDaO 2Ptcr8osPd7K
FHlJeMxDobwDHNAiFaxKxRg6e57jPn8Pe/8Ge9bcBw1S4/iMXfjlHh+mV70M iFIKri88qP9U
0U4Noe5OTVN3ao1O99fbnw25DZ91tZ2aBP9+pWGsOeh55sQPaIGcWtAFJ1qu r9gOQr6Y0rZ/
ki//lXY1Nfnp7Ei77Rb5Uf/bjASisYJqmwbsRwOV5Gx9S22sV7EEqg3C46c2 APu71AYB5amt
0QFJoRZIq6F14D9VAr2hDm+5Dbq0XetHuUkgNKWSwrwFex9BSR6y2J7PGK+f pgqjv2z+qh4+
w+JEOzxOguOnLwD7u/QFAeXpS1qLKNHR2+0/qrA9n55yZJv60nl5tiE4fmwD 2N/FNgTEge39
5suS6d2b/wFQSwcIvN/Ge4AIAAC6RwAAUEsDBBQACAAIAMcC1joAAAAAAAAA AAAAAAAbABAA
T0NMX1Byb2ZpbGUvbXZjX2NvbW1hbmQudW1sVVgMAAD7UkqWsj5K9QEUAM2Y UU/bMBCA3/kV
Ud5pklLYVLWgwoqERLepwIT2UrnOtbXq2CEJTcOvn5s2WRrbwR0w8Xq+3N13 PvvO6V2sA2qt
IIoJZ33ba7m2BQxzn7B53364vz7+al+cH/WeA9odcR+otQ5It9RvtzxbSCiL u0LetxdJEnYd
J8YLCFCLB/MWj+ZOHAJ2Hkc3TkVdGCzV0zRtAaYkjCHXF2vtjW7LdR5Gt3bu kvh9m/h5CLbF
UAB9O1jhCeZBgNhOfn5kWb0Q4SWagz+kEABL8o+TLBT6G4af29WqzVIkWS1W NnZftXzFKUVT
HqFEZKZqv7Ygedlf3/oS3njKwL+EBVoRHtV83bAEIoTrnvbEkp/qauFF+KFk BpQwKO1MWBaT
wfXZeuifeaed6fTlcjom88LiFWdJxOnVLkW3u89tC3NRFiLkTJhI7ydu7NVN WJNscDnmkmlr
8vL999NaIXeXbhr/kuWrUZjdyCE6jVz8G6R6rryEXqdKFFFmg8ETVVKhsauj UsjT++NgqbTz
6MnyPdpZhOaKohxBHIuS/YHxcxSJcw134iiSGcG1KtVsWJmbRjNemaWG4oGV iK7IobSjthVs
XRQa9MNp5Y00o21XaXUl9alo1eVpRntyCG1+uhtpc42PplVdMWa0nUMq+VPQ qi9OM9rTQ2jF
XdbpKNb/0uYacj7el1Z1oZrRnh1SyZ+CVt0mzGi/HELrLr3HtJE21/gPtIrj ZEL79ZBK/kja
Yl4brgE/byLTdyBVqy9om80YdaA4QVHS0OpmhJF4oe8O7wmrmdaMYI2Giyqs aoopYTVF9p6w
mmHNCNao2xawustwH7Z5Z3c1X5uM5JZVzv7b19b2K7E1EWAgKxhWxx1VyMD8 qo5ijxqj0jTS
XVRjCGnmlQf4jm/SE22EUoC64aAaoMGBkALUdANl2tpSVLqdrEalafSNUWnu sWra2kZp093N
1QBfq7aes/ei3b2pndqj2uypjSjN3dZHev0OFF94RUD/4EI38NVctN/gQjd3 1FycvMGFrv3V
XHS2LhQb1HPKn0HnR38AUEsHCFyjZ0UOAwAAQBIAAFBLAwQUAAgACADHAtY6 AAAAAAAAAAAA
AAAAHQAQAE9DTF9Qcm9maWxlL212Y19jb21tYW5kLnVtbGRpVVgMAAD7UkqW sj5K9QEUAMVY
21LiShR99ytSmddILgRFSpzCUmeYGnBKmTmeebHapEn6QNKx0xLh66fT5Aq5 TDR4HqiiyN5r
X9beK92cf351lsIKEh9hdyiqHUUUoGtgE7nWUPw5uznui58vjs5NBCwCHH9w FX0RXh00SPy0
0I8huf6A/T4UbUq9gSwHQdDBjtXBxJIfJuPExM+bBF1uoSmKysy+3xs2dMAx cn0KXAPGXmbe
iWLPAD40uevVWFbTFOJkK+wji9gLDZA5FB/d3z+syc3J67V5ovb0p6fN5dMd skQBGBStYOQU
2/3as7s4EoRzB5twKdgEzoeiszIeDew4wDU7L87yEzLHLoUkhMOuKHN7M9vQ NIt9dMHDPqK8
3YrEsvbRBjLGFEViH1FwgQNzEUVhhWDgYUK3DmE0Fs8j2IOErrPxjJ9WQdUL uB6KHrDgDSYO
oFMWgGGC5QuLM9K36ZcDFhTAAaN6/0EmtRO4vq7U4S2r8b5CZNk0AVTVfr8O Ua0oeQKIhdxc
yfcOWC6F7YMaaLusm1GyM+xFODG4Vle/XdPPS0wpdhqj1nT1O5zTxphlfY0w 70KimoKiso5i
gqBLAV+oGC2ceQIQTTB9picuRcaE7yaTnwFdezDMaHA9ubnPPr0kyLTgriYU tMkj0I8jh2lY
qcJwCYAkXPmOD59fmKDCqPhoC1lOzMJh/n+vFMxHzhUS/WhglgVyoZkv7AsB nj1ldtla1uSk
X9DJVFnUribpqbicqpKmamnS72pkGLxI1nKNNOEcvCxpErK2UwzXR6P9ouQk 6aKuNevbaoIX
BSEyfTvtSd2kbRqT5K6SLYG9x2xMmK6kmMHscYqrudClM1GwwnyuWSu3Popf UWpxpPVo9Lyo
jHQidXcicZ99smoibab/GjU1aVJfyYfaTH8/B41DKQvlW00oVVLZ7OZica/q WO8ZcT4nbxjx
+iFfTbz1uJr5kjGXkzmPRWT3hwaLgK/guFpA9NNuVkB6TEA0pR0B4cEPICAM NziwgASzs8ei
I1ZmBXuSdpYRkJ72N/pReUpk+qEqLQnIVXX2Pc55QwF5zyzwhh5k04LZsVOg lm/YtGYjspk+
3NaOCD/ppzPSrZkRLq3VInm2NyNv1eMNqn7J9CX9Y9WYd/QgM8KQ1XZmpJka X+8uQeE2C1t6
Ss8YQpl2tKLSPKkDqHSIS/fP4W9V6bCVt0//QYPezuc+pLsVFJz4w4fhLTt1 FQXMncML9rGa
3mHeQ2qJcKakFquxUHbMa4VUjl17CWpO6np0eYc/hFReQcHN9GNILdHUlNTi k7NQpuCtkMqx
D0DqZgp0vULW2yOVV/C/kVry+kpJLX4nCmV3l1ZI5dgHIFVZqA9Vp4L2SOUV tEjquRz/xXpx
lH5P/si+OPoDUEsHCCMtYWUNBAAABBcAAFBLAwQUAAgACAAtAdY6AAAAAAAA AAAAAAAAGAAQ
AE9DTF9Qcm9maWxlL212Y19kYXRhLnVtbFVYDAAA+1JKlq8+SvUBFADNWF1T ozAUffdXMLxb
hNqqnVZnVTrrKu6url3fOmlIadZAELCov34DBZaPBMNaZ3xNbnLOSU7uvTA+ eXaJskZBiKk3
UfXenqogD1Ibe85Evfs13T1UT453xk8uGVnURkR5dvGoiDd6uspGiBeO2PhE XUWRP9K0EK6Q
C3rUdXo0cLTQR1C7ty60UjjbsAiP47iHIMF+iNJ4Nmcksb097c66UlNIbE9U bKcUVMUDLpqo
7hrObRCBzeDxjqKMfQAfgINskyAXeVG6MnrxWXAi4MdmtrxhMVTdMh9ONn1z 2zNKCFjQAETs
TMqb1yaqENXJDRCDorGH7FO0AmtMgxrQhRehAMA6TGW4ClKeyiEYCMFLRLCH ik3mvx9m53A6
XJv2UB/sLxavp4sb7OTbzTCKz5NjucoWqgqkzASM6Qtb/Dj407f0+mJlbpKD r+F0GNfHB5f+
/XUDTJlPnfM9XrxvWUdOk5zWrsiIXg+FilLPvCGJR9EkQ4fqXEm7P/mSrnnx jwN89oUTP7ik
38x2qcsAOBwXWigMmUe/Q/gUBOwJo1v26vASw5otBbdVHEzrNnpxSi2eQWvG Lj/DWXPe3UDk
EeTD1TYvUk6tUVEr8NOnUsu3p5zaQRe16dOeNYH+qU0jSCNiu2p5+UVO7bCL kz+FWn7WlFPb
76I2zWWtTk4jPtbJ/IQqp3a/i5M/hVp+mZBTe9BFbVpiW508dcxF3HxUW1bL qfNyag+7OPkj
1eY9mvmM4FPCTKRW0L1katu3kaq3YQSCvALxCvsSezhcic99m2L5fY2cWKly WxbLy4aFWEEp
3KZYQbMmJbbfRawoGZZvlpc/ymIzz9c6o2Zay9gnvXH2EpkJAwQRXiOz3Ovw +CLPLsdw3NhK
SZBpm5SMBiXREZUpCSpoKyVBYc8o3SCfvOhFQrmlyXUFyWCDoKhZKROU8GyD oCCDlQkaUgRF
WblM8C2fjbXK92v2+azVvp/lvqoBISlsvZnn1OqN1mKFnhP6DwhRO1CDMN4B IeomaxD9d0CI
Cl8NYn8DwbmgsVb88Tne+QtQSwcIXReIqBIDAAAlEgAAUEsDBBQACAAIAGgC 1joAAAAAAAAA
AAAAAAAaABAAT0NMX1Byb2ZpbGUvbXZjX2RhdGEudW1sZGlVWAwAAPtSSuSx Pkr1ARQAxVjb
cps6FH3PVzCcV2IMBpt44nSaBrdpSjpt2ibnvHRkkLEaQEQodpOvr1C4mFhA qTnpg2c8sPfa
S/uyJHH86mcYSGtIEoSjmawNhrIEIxd7KPJn8tcv80NLfnVycOwh4BMQJtOz 7I/0M0TTwk9P
/RhSlEzZ85m8ojSequpmsxng0B9g4qs3znlhklRNNiNuoQ+HGjP7cOWuYAgO UZRQELkw9/Kq
ThTHLkigx13PzlWtpJCTbbDPLHIvNEXeTP5+5ZGb8/l4bXtjzTQWi8fTxWfk yxJwKVrDzCm3
+7Zjd3IgScch9mAgrQhczuRw7X73AAWD+zD4B3nnEYUkxcKRrHJjbzubJYVd aCnGCaI810OF
UU7QI2TlGg4V9pOlCISwDCdLawQ3MSY0tR7rnBiLFhMcQ0IftqOZ/90KFnwL H2ZyDHw4xyQE
9JLBM1AQ3LMor40n8vWAAvocMFvtNfLoqoCzjGEbXtCM9w4if0ULQE2zrDZE rWHJDiA+iipL
vgpBEEhPL1qgg7psZmS/4DjDycH1tvUHLfk8xZTisDNqS1Y/wCXtjFmX1wzz c1qorqBhXUYx
QTCigI9TjpY2PQGIFpgJk5KIItfhY8mUZ0ofYpgymtrO/Gr77SlBng+fy4Eg TTGBSR45peGX
4sKnH5J04AcJvLtnWgqzxWdTyDgxi5D5/6ZIMAe1sorsoYsZBRRBr7qqtwTE q0tmt7WQ69uv
7r+CNJaicjRRjFJWdEPRLK0kvE8SeWyRoFWS6MEluA9oEbI5Swz025m7uyC1 YCzKWLecxY5z
LQixlTNTV3Qtz5nOlFgbbfNne9cKEyYoJead+eOTaH8pMTVNMWTJT/nYLI9P PiOnYaniSOYF
3rREspSJXg1lXsQ3zm6pWkLZgWkyyd80hBoqI60ayg7GPp7vOLWEmvtvwpZQ unI0roaa+2eX
LaH26W/eJ3/Q3y0dzmCP/Oay1/S4WjR5rh7PH3RRDp06RmMfGSO9Ih2mok2O epKONHjv0qHT
R+v/lY47cwUEIarSoU22pIMl8DeUo+VYaPUhHHyad6dle8SUkdl5mPdpA57O /ifszkRvXvcy
Yd26w7yIkCButTusUZfu4MLdrPZjdlHoQ+25BDf2h66MjBdVYJ7Q/vuDbaHv 7b+gwPbz7heO
sfRUm9pDhVQnGb0oMyfVtzKnoJe7x+0/VeY0jx8XP6BLPy6XCaTP6QsO9unL 9CpdusoS5s6p
vh5q5VVln4rWDF5ZUfHhTaob814qyrFb7zodK8pADz+9SEU5fcHt82UqWrMB lhUV76pS3dm5
l4pyUqLD8j4VtYPJuySol/L+Ksrp70Z6oYrWbFllRcX7oFR3RemlopxU3xWd +/Zi07A591dR
Tr/Hih6r+efTk4Pyf/GF+uTgF1BLBwhmNba4GAQAAN0WAABQSwMEFAAIAAgA GwLWOgAAAAAA
AAAAAAAAABoAEABPQ0xfUHJvZmlsZS9tdmNfdXBkYXRlLnVtbFVYDAAA+1JK VrE+SvUBFADN
mN9T4jAQx9/9Kzp9l9qKigzgnB7O6cjcnRyK98KUdCkZ06a2hcL99Rf660qb lHDKjK/Jdr/7
STbZTTtXK4coS/ADTN2uqjdOVAVcRC3s2l119Ov2uKVe9Y46C4e0B9QCoqwc 3M7tjYaushHi
Bm023lXnYei1NS1Ac3DMBnXsBvVtLfAAaePBnVYwZw5z8yiKGoAI9gKI7dmc sbFtnGijwYMa
S2Krq2IrDkFVXNOBruos0WThWWYIyXDvSFE6noleTRusPgEH3DD+Nlx7zHyD 8COZLbrMh8pO
s4mN252Obygh5pT6ZsjWpei+NFEW2Z5OpJgYjVywrmFuLjH1S1J3bgi+icpC W8NlmeJkJsJk
CJ4BwS7kbibOdPL28/Y86lvn+llzOv1zPX3EdubwhrqhT8koWZ+H9GtVQZRl BAt4zTxEw/7Y
1sselMnabnnNimdlYjzDfYtj37ykvxHHfjFevpxUI9Tqsd6+Ec5HKdYThmgn 05wTC2O60flM
qy+c8ealu37hjEfDr/e8ceMZXexgnfmmzcnHAQQBy9bvCC18nx1oGLIziGcY lRJUsF3ZytS7
0fNVqskcWLLoEqHjV868k0hkFk8Hp61upBytsUUrSKhPRctPTzna031o47Nd ZSnQxhbk0LSc
C0aOtrlPJn8KWv61KUd7tg9tfJfV0sYWB6flXKhytOf7ZPKnoOWXCTnai31o 4xpbSxtbHJqW
V+jlaFv7ZPIhabNerb8CtNhEJq5AvFKf0da7kapAQWj6YU2pm2EXB3NxdfhI WEGvJgUr1VwU
YXldTA4rSLKPhBU0a1KwUtU2gxVdhgVY7v1RhE1zfqsz4rUjafRJd5yeRbYz PiDAS+j/63a4
uRaAaxVtOFtUG5SgjqZBPYJH1np+fod0szr+ZrASoKg3KAYocR4qAQqKAW/V jEpQon0sBiUo
87VBCW6x4qoZUqsmupmLAe7KtY629ZZNH9Na6TUt98Y2CYll1VLait+r2Rd6 FtB/SIjavZKE
8Q4JUddRkjh9h4So+JUkmokEZ4M6Wv4PqHf0F1BLBwgV/F18EQMAADcSAABQ SwMEFAAIAAgA
MALWOgAAAAAAAAAAAAAAABwAEABPQ0xfUHJvZmlsZS9tdmNfdXBkYXRlLnVt bGRpVVgMAAD7
Ukp8sT5K9QEUAMVYbVObQBD+7q+4oV9JeAlGyBg7tcaqY9ppo9X2i0PgQq4C h3AJ2l/f4+Qt
CRylov2QmUzYfXb32d3nuBy+f/RcsIZhhLA/FpS+LADoW9hGvjMWrq9Oe7rw /mjv0EamE5pe
NDpJv4BHD41yPzXxo0h+NKK/j4UlIcFIkuI47mPP6ePQkW6n57lJtGkSD5iF KssKNbucWUvo
mT3kR8T0LZh52ZtOBAeWGUGbuZ6cS0qRQpYsxz61yLzQCNlj4c47M67002E8 sYfKvjaf/z6e
f0OOAEyLoDVMnTK77zt2R3sAHHrYhi5YhnAxFry1dbcKbJPA/spz3yH73Ccw TNCwL0jM3C7z
WSSxCw4CHCHC2JZFmnSEfkPaMFkW6UcAvunBckABrBGMAxySZ/skGA0XhDiA IXkqhTs/m1TV
fA+fxkJgOvAUh55JPlN8imm6Kxrmg/acfT1gRf4MMC33BtlkmcPpmtyE5/Lx ziByliQHVBRd
b0JUOCVPzdBB/kbJM890XfD8oAHaqGMzTfYKBylOBq421W808HmMCcFea9QG Vi/hgrTGrOM1
xfyWNKotaK+OURwi6BOT7VOGlsx8aCKSY0ZUTXyCrCnbTCo+I/IUwCSj0WR6 Ois/PQ6R7cBt
RaigKQhhlEVO0nAKfWECAMNk4/sRfFhROYVp8ekW0pyohUf9/1onqIu0UUf6 o4VpEsiH9mZd
n0IzWH6mduVS5ncn0woiC11RNFnUCmnRdFGVh0XOL+IxCV4lahs82nBhrlyS h2wiKoF9+Lpb
k5TnXEVaO9pWt6vHmEvbUBOVg4w1leqxppQroGfYEodUVQrMeHYSW/xWqKIh ACfJZ0KZZD6T
W4dTanWkJ0f/KHMj6SJNdyMS89ntVUMk9cZGGr+moXgw3Ayl3sCLisOnIZRm +JfX/FDJqbhF
IPPil/WSCWdz8g8T3jjjq9v1j4oWlvOumXIpH/NMQrZ/aCMfD596/D3QhkZZ PgYGlQ+tI/lI
gr+CfDycuTxqO5CPePYR8Wd13xCVYUk+NP1v1IP7gqjs0/HvRj4O5vym77OW t5SPl4wCI/Q1
9ozSevGjkz1rNyHqjXXdwLEh6oPyhBgNE8K0mD8hxs6E/KsWe/cVJ3Ap1EDU Bm+qxIzQ15gQ
CnzwP5R4sr0BlasMnrtT+3oB6oSjE4VmSXWv0BS2d88ZlZYKnTD5Zf4LWuTL YhFBsl1AxZt+
8jC5XBeuAsDMOblY95Ti7vKSntaIZtHTaiUGdS94nfSUYTdeflr3lMIG2i7s K/SUFVBxIX2b
ntYIatHT6ldmUCffnfSUJdX9nlLYxw9v0lNWwH/b05qjq+hp9XkI6u4snfSU YXe/p5qBf1pv
0lNWQId7eihlf6se7RXf8/+uj/b+AFBLBwgygYbWDgQAAPcWAABQSwMEFAAI AAgABFXSOgAA
AAAAAAAAAAAAACUAEABPQ0xfUHJvZmlsZS9NVkNDYWxsQmFja1NlcS5wcm9w ZXJ0aWVzVVgM
AAD7Ukpo/TlK9QEUAJWQyw6CMBBF937F/Igb0Z0EEyPbpsBoiKVoefj7Mm15 yatuSOZe7umd
YYJHKJgferCH5rtjncDoc8V3hTJG40I7Lv3GmMeFQBXEcaUUKUWTNBoMxPX8 gcfPKQFIdoOE
KX6OvOSXc3pHkUqqTxqQCJ26DPDzBMUvQYvOCC+XpcrF7ZXwEocYa4BxXFBU fcrRC7lD7LNe
nmVcJnOFrOV8nxmUOdEfILqmj0XBHxTXt7Xjcsbs3KfsDTZztlYfbHtuJoOo QFXjqUZZNjk7
gp5HKb2A2WOk24pt15HXtuj6jNzVp79QSwcIfSUMEuIAAAC+AwAAUEsDBBQA CAAIAGSe0DoA
AAAAAAAAAAAAAAAeABAAT0NMX1Byb2ZpbGUvTVZDQ2FsbEJhY2tTZXEudW1s VVgMAAD7UkqM
2zdK9QEUAM1Z21LqShB99ytSOc+SGEHdFLoLERQhiCIqvlAh6cRILpiLUb/+ TO6DmQlB3efs
J6qSmV5rdU93eprW7zfTYF7BcXXbOmb3ajzLgCXbim5px+z0trd7xP4+2Wm9 mXrzQewz4W+2
WqjtseiJYblN9PyYffK8VZPjXPkJTKlmm1rNdjTOXYHMob0cvtzNlwdBUAv2 o6UCz++hpcNJ
ZGFXt1xPsmRId3Ukw1hI8nICL9nuBM3lsJfcHCZ7htZb3HaVA8HyD2dvdU1c BNzefmpKvOsQ
rcTPuXl7NPsl9uASGRg7br/uvvXPDwOOT/eDbDuwJgFkQ1+5EOkAUw21CFw3 XJbu8U2DugO9
E0IH1XhuKg7RDldvxpyGtix5kbu/pphZGZKn2o7Z5Bxwbd+RgbvqDOdjx1Z1 A3AryaMaIvMP
MiiIy4JB9mSHYVpoQXOM9kgaRCdCV47Z+UA+PJgVXMYylmQiTyHHRnvR7lW8
Re: Checking OCL [message #71603 is a reply to message #71583] Tue, 07 July 2009 11:37 Go to previous messageGo to next message
Christian W. Damus is currently offline Christian W. Damus
Messages: 789
Registered: July 2009
Senior Member
--=-u5DQzusVHI/1a+7cyU4V
Content-Type: text/plain
Content-Transfer-Encoding: 7bit

Hi, Samuel, Alex,

One noteworthy point about working with UML is that the UML
implementation's CacheAdapter is a famous source of memory leaks in
applications that don't account for it.

The OCL parser for UML makes use of the CacheAdapter for inverse
navigation of references, so you will find that this adapter becomes
attached not only to the elements of your model but also to the parsed
syntax trees of your OCL constraints and expressions. An OCL facade (as
created by OCL::newInstance()) keeps track of all of the constraints
that it has parsed, and must be dispose()d when no longer needed. This
ensures that all of the OCL expression objects are removed from the
CacheAdapter's knowledge and can be reclaimed.

If you can, it is highly recommended to parse any constraint only once
and to re-use a single OCL instance in as wide a context as possible.
This should help to cut down on memory usage and on time spent in
parsing. Otherwise, do be sure to dispose OCLs when they are obsolete.

HTH,

Christian

On Tue, 2009-07-07 at 09:45 +0200, user@domain.invalid wrote:

> Hi Alex,
>
> Enclosed you find the code of my plugin and a project with UML models
> and profiles. I launch an Eclipse application with my plugin in it, open
> the file 'CallBackSeq.uml', select the package in it and run the
> 'Validate' action of my plugin through the 'ArchiMate' menu. The OCL
> constraints are in the UML profile named 'CallbackSeqProfile.uml'. After
> successfully checking a few constraints, I get an 'out of memory' error.
> If I check fewer constraints, I don't get it, but if I then repeat the
> check, I do get it.
>
> I really hope you can find the problem.
>
> Cheers,
>
> Samuel

--=-u5DQzusVHI/1a+7cyU4V
Content-Type: text/html; charset="utf-8"

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
<META NAME="GENERATOR" CONTENT="GtkHTML/3.24.1.1">
</HEAD>
<BODY>
Hi, Samuel, Alex,<BR>
<BR>
One noteworthy point about working with UML is that the UML implementation's CacheAdapter is a famous source of memory leaks in applications that don't account for it.<BR>
<BR>
The OCL parser for UML makes use of the CacheAdapter for inverse navigation of references, so you will find that this adapter becomes attached not only to the elements of your model but also to the parsed syntax trees of your OCL constraints and expressions.&nbsp; An OCL facade (as created by OCL::newInstance()) keeps track of all of the constraints that it has parsed, and must be dispose()d when no longer needed.&nbsp; This ensures that all of the OCL expression objects are removed from the CacheAdapter's knowledge and can be reclaimed.<BR>
<BR>
If you can, it is highly recommended to parse any constraint only once and to re-use a single OCL instance in as wide a context as possible.&nbsp; This should help to cut down on memory usage and on time spent in parsing.&nbsp; Otherwise, do be sure to dispose OCLs when they are obsolete.<BR>
<BR>
HTH,<BR>
<BR>
Christian<BR>
<BR>
On Tue, 2009-07-07 at 09:45 +0200, user@domain.invalid wrote:
<BLOCKQUOTE TYPE=CITE>
<PRE>
Hi Alex,

Enclosed you find the code of my plugin and a project with UML models
and profiles. I launch an Eclipse application with my plugin in it, open
the file 'CallBackSeq.uml', select the package in it and run the
'Validate' action of my plugin through the 'ArchiMate' menu. The OCL
constraints are in the UML profile named 'CallbackSeqProfile.uml'. After
successfully checking a few constraints, I get an 'out of memory' error.
If I check fewer constraints, I don't get it, but if I then repeat the
check, I do get it.

I really hope you can find the problem.

Cheers,

Samuel
</PRE>
</BLOCKQUOTE>
</BODY>
</HTML>

--=-u5DQzusVHI/1a+7cyU4V--
Re: Checking OCL [message #71622 is a reply to message #71603] Tue, 07 July 2009 12:12 Go to previous messageGo to next message
Samuel is currently offline Samuel
Messages: 31
Registered: July 2009
Member
Hi Christian,

Tanks for your reply!

As you can see in the code below, I already try to dispose the OCL object.
Can you see what I'm doing wrong?

---------------------------------------------------------

public void checkOCL(Element element, String oclExpr){
boolean valid = false;

OCL myOcl = OCL.newInstance();
myOcl.setEvaluationTracingEnabled(false);
myOcl.setParseTracingEnabled(false);

Helper oclHelper = myOcl.createOCLHelper();

oclHelper.setInstanceContext(element);

OCLExpression oclInv=null;
try {
oclInv = (OCLExpression) oclHelper.createQuery(oclExpr);
} catch (Exception e) {
System.out.println("Invalid OCL!\n");
e.printStackTrace();
}

valid = myOcl.check(element, oclInv);
oclInv.destroy(); //attempt to dispose OCL query
myOcl.dispose(); //attempt to dispose OCL object

if (valid) {
System.out.println("success for :: " + oclExpr);
} else {
System.out.println("failure for :: " + oclExpr);
}
}

---------------------------------------------------------

Samuel
Re: Checking OCL [message #71639 is a reply to message #71622] Wed, 08 July 2009 07:22 Go to previous messageGo to next message
Samuel is currently offline Samuel
Messages: 31
Registered: July 2009
Member
Hey Christian,

I made my OCL and Helper object a static element to my plugins activator,
and now it works!

Thanks so much :)

Samuel
Re: Checking OCL [message #71657 is a reply to message #71639] Wed, 08 July 2009 11:33 Go to previous message
Christian W. Damus is currently offline Christian W. Damus
Messages: 789
Registered: July 2009
Senior Member
--=-7dfmbcRYz0jGhBT4kUV0
Content-Type: text/plain
Content-Transfer-Encoding: 7bit

Hi, Samuel,

I would expect that this isn't a design to which you should have to
resort. Disposing an OCL really is intended to clean up any potential
leaks, so if that's not working, then probably there's a bug. A good
profiler will tell you exactly what's going on.

The only comment that I have on your code snippet (from a memory
perspective) is that the oclInv.destroy() call should be redundant, as
the myOcl.dispose() will effect the same result (and more).

Cheers,

Christian

On Wed, 2009-07-08 at 07:22 +0000, Samuel wrote:

> Hey Christian,
>
> I made my OCL and Helper object a static element to my plugins activator,
> and now it works!
>
> Thanks so much :)
>
> Samuel
>

--=-7dfmbcRYz0jGhBT4kUV0
Content-Type: text/html; charset="utf-8"

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
<META NAME="GENERATOR" CONTENT="GtkHTML/3.24.1.1">
</HEAD>
<BODY>
Hi, Samuel,<BR>
<BR>
I would expect that this isn't a design to which you should have to resort.&nbsp; Disposing an OCL really is intended to clean up any potential leaks, so if that's not working, then probably there's a bug.&nbsp; A good profiler will tell you exactly what's going on.<BR>
<BR>
The only comment that I have on your code snippet (from a memory perspective) is that the oclInv.destroy() call should be redundant, as the myOcl.dispose() will effect the same result (and more).<BR>
<BR>
Cheers,<BR>
<BR>
Christian<BR>
<BR>
On Wed, 2009-07-08 at 07:22 +0000, Samuel wrote:
<BLOCKQUOTE TYPE=CITE>
<PRE>
Hey Christian,

I made my OCL and Helper object a static element to my plugins activator,
and now it works!

Thanks so much :)

Samuel

</PRE>
</BLOCKQUOTE>
</BODY>
</HTML>

--=-7dfmbcRYz0jGhBT4kUV0--
Previous Topic:Future MDT-OCL directions
Next Topic:exclusion among attributes of different types
Goto Forum:
  


Current Time: Mon Sep 22 16:34:05 GMT 2014

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

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