Home » Eclipse Projects » Nebula » Are multiple lines in Grid possible? 
| Are multiple lines in Grid possible? [message #29518] | 
Mon, 26 February 2007 02:15   | 
 
Eclipse User  | 
 | 
 | 
   | 
 
Originally posted by: lionelv_remove_.gmail.com 
 
Just wondering if it is possible to have more than one line in a Grid cell? 
 
E.g. this is one row 
 
entry1 | entry2 | entry3 
       |        | over multiple 
       |        | lines 
row2   | row2   | row2
 |  
 |  
  |   |   |   |  
| Re: Are multiple lines in Grid possible? [message #35734 is a reply to message #35700] | 
Wed, 30 May 2007 12:06    | 
 
Eclipse User  | 
 | 
 | 
   | 
 
Many thanks for your answer!  However, I would have preferred 
a positive response ...  :-) 
 
What is your estimate of the effort for implementing this? 
Possibly I could make some time for doing this if it's not 
too intricate (not sure yet). 
Can you give some brief indications where I would have 
to start / what the major steps would be ... ? 
 
Greetings, 
Oliver 
 
 
Chris Gross schrieb: 
> Hi Oliver, 
>  
> If you write your own cell renderer you can put multiple lines in each  
> row - but you can't vary the row height for different rows.  That  
> support would need to be built into the Grid.  I have contemplated that  
> feature and will likely add it to Grid sometime - but not likely very soon. 
>  
> Regards, 
> -Chris 
>  
> Oliver wrote: 
>> Hi Chris, 
>> 
>> when creating a custom cell render, can the rows have different heights 
>> then ?  For example, row no. 5 has a height of 3 lines while the others 
>> still only have a height of 1 line ... 
>> 
>> Thanks a lot in advance, 
>> Oliver 
>> 
>> 
>> 
>> Chris Gross schrieb: 
>>> Hi Lionel, 
>>> 
>>> This isn't possible with the default cell renderers.  If you create  
>>> your own cell renderer it is possible. 
>>> 
>>> Regards, 
>>> -Chris 
>>> 
>>> Lionel van den Berg wrote: 
>>>> Just wondering if it is possible to have more than one line in a  
>>>> Grid cell? 
>>>> 
>>>> E.g. this is one row 
>>>> 
>>>> entry1 | entry2 | entry3 
>>>>       |        | over multiple 
>>>>       |        | lines 
>>>> row2   | row2   | row2 
>>>>
 |  
 |  
  |  
| Re: Are multiple lines in Grid possible? [message #35767 is a reply to message #35734] | 
Wed, 30 May 2007 12:16    | 
 
Eclipse User  | 
 | 
 | 
   | 
 
Hi, 
 
Would it make sense to open a bug report and attach the code from Chris  
as a starting point so others could start from there and maybe implement  
this for Chris? 
 
Tom 
 
Oliver schrieb: 
> Many thanks for your answer!  However, I would have preferred 
> a positive response ...  :-) 
>  
> What is your estimate of the effort for implementing this? 
> Possibly I could make some time for doing this if it's not 
> too intricate (not sure yet). 
> Can you give some brief indications where I would have 
> to start / what the major steps would be ... ? 
>  
> Greetings, 
> Oliver 
>  
>  
> Chris Gross schrieb: 
>> Hi Oliver, 
>> 
>> If you write your own cell renderer you can put multiple lines in each  
>> row - but you can't vary the row height for different rows.  That  
>> support would need to be built into the Grid.  I have contemplated  
>> that feature and will likely add it to Grid sometime - but not likely  
>> very soon. 
>> 
>> Regards, 
>> -Chris 
>> 
>> Oliver wrote: 
>>> Hi Chris, 
>>> 
>>> when creating a custom cell render, can the rows have different heights 
>>> then ?  For example, row no. 5 has a height of 3 lines while the others 
>>> still only have a height of 1 line ... 
>>> 
>>> Thanks a lot in advance, 
>>> Oliver 
>>> 
>>> 
>>> 
>>> Chris Gross schrieb: 
>>>> Hi Lionel, 
>>>> 
>>>> This isn't possible with the default cell renderers.  If you create  
>>>> your own cell renderer it is possible. 
>>>> 
>>>> Regards, 
>>>> -Chris 
>>>> 
>>>> Lionel van den Berg wrote: 
>>>>> Just wondering if it is possible to have more than one line in a  
>>>>> Grid cell? 
>>>>> 
>>>>> E.g. this is one row 
>>>>> 
>>>>> entry1 | entry2 | entry3 
>>>>>       |        | over multiple 
>>>>>       |        | lines 
>>>>> row2   | row2   | row2 
>>>>>
 |  
 |  
  |  
| Re: Are multiple lines in Grid possible? [message #35801 is a reply to message #35767] | 
Wed, 30 May 2007 17:44    | 
 
Eclipse User  | 
 | 
 | 
   | 
 
Unfortunately I don't have any existing code for this feature.  I've  
just been thinking about it but not actually coding it.  The code  
changes necessary for this feature wouldn't be particularly easy.  I  
suspect there will be a variety of places in the Grid code where I  
multiply the row height by a number of rows to determine some  
dimensions.  Like: 
 
getRowCount() * getItemHeight() = total height of all rows 
 
Those places would have to be changed to iterate through all the rows  
because each row would now potentially have a different height.  That  
could also be a performance concern.  Other parts of the code will  
likely rely on getItem(Point) to determine what row is where so that may  
help this change somewhat.  But I still think its not an easy piece for  
someone to code as a patch. 
 
Regards, 
-Chris 
 
Tom Schindl wrote: 
> Hi, 
>  
> Would it make sense to open a bug report and attach the code from Chris  
> as a starting point so others could start from there and maybe implement  
> this for Chris? 
>  
> Tom 
>  
> Oliver schrieb: 
>> Many thanks for your answer!  However, I would have preferred 
>> a positive response ...  :-) 
>> 
>> What is your estimate of the effort for implementing this? 
>> Possibly I could make some time for doing this if it's not 
>> too intricate (not sure yet). 
>> Can you give some brief indications where I would have 
>> to start / what the major steps would be ... ? 
>> 
>> Greetings, 
>> Oliver 
>> 
>> 
>> Chris Gross schrieb: 
>>> Hi Oliver, 
>>> 
>>> If you write your own cell renderer you can put multiple lines in  
>>> each row - but you can't vary the row height for different rows.   
>>> That support would need to be built into the Grid.  I have  
>>> contemplated that feature and will likely add it to Grid sometime -  
>>> but not likely very soon. 
>>> 
>>> Regards, 
>>> -Chris 
>>> 
>>> Oliver wrote: 
>>>> Hi Chris, 
>>>> 
>>>> when creating a custom cell render, can the rows have different heights 
>>>> then ?  For example, row no. 5 has a height of 3 lines while the others 
>>>> still only have a height of 1 line ... 
>>>> 
>>>> Thanks a lot in advance, 
>>>> Oliver 
>>>> 
>>>> 
>>>> 
>>>> Chris Gross schrieb: 
>>>>> Hi Lionel, 
>>>>> 
>>>>> This isn't possible with the default cell renderers.  If you create  
>>>>> your own cell renderer it is possible. 
>>>>> 
>>>>> Regards, 
>>>>> -Chris 
>>>>> 
>>>>> Lionel van den Berg wrote: 
>>>>>> Just wondering if it is possible to have more than one line in a  
>>>>>> Grid cell? 
>>>>>> 
>>>>>> E.g. this is one row 
>>>>>> 
>>>>>> entry1 | entry2 | entry3 
>>>>>>       |        | over multiple 
>>>>>>       |        | lines 
>>>>>> row2   | row2   | row2 
>>>>>>
 |  
 |  
  |  
| Re: Are multiple lines in Grid possible? [message #35835 is a reply to message #35801] | 
Thu, 31 May 2007 08:01    | 
 
Eclipse User  | 
 | 
 | 
   | 
 
This is a multi-part message in MIME format. 
--------------080806070908060205050505 
Content-Type: text/plain; charset=ISO-8859-15; format=flowed 
Content-Transfer-Encoding: 7bit 
 
Chris, 
 
thanks for your detailed answer! 
 
I have looked into this a little and have made a quick 
first attempt (see screenshot). 
 
It seems to work so far. However, I guess that 
issues will arise when testing it with more advanced features 
of Grid (e.g. checkboxes).  Also, I have not yet examined 
dynamic changes of heights of individual rows. 
 
What I have changed:  The item height specified in Grid 
is now called _default_ item height (e.g. setDefaultItemHeight() 
instead of setItemHeight()). Each GridItem now has a height 
which may be -1 (the default) to indicate that the parent 
Grid's default item height should be used for this GridItem. 
This way, nothing changes from a client perspective when 
all items should have the same height. On the other hand, 
specifying an individual height for an item is easy: 
 
item3.setHeight(50); 
 
Currently, the height of individual items is only set 
programmatically through GridItem.setHeight(int), i.e. 
the preferred height from the cell renderer is currently 
not used for that. 
 
If you could provide me with an example that uses most 
of Grid's features (like the one shown in the screenshot 
on the Grid home page), this would help me a lot in testing 
my changes ... 
 
Cheers, 
Oliver 
 
 
 
Chris Gross schrieb: 
> Unfortunately I don't have any existing code for this feature.  I've  
> just been thinking about it but not actually coding it.  The code  
> changes necessary for this feature wouldn't be particularly easy.  I  
> suspect there will be a variety of places in the Grid code where I  
> multiply the row height by a number of rows to determine some  
> dimensions.  Like: 
>  
> getRowCount() * getItemHeight() = total height of all rows 
>  
> Those places would have to be changed to iterate through all the rows  
> because each row would now potentially have a different height.  That  
> could also be a performance concern.  Other parts of the code will  
> likely rely on getItem(Point) to determine what row is where so that may  
> help this change somewhat.  But I still think its not an easy piece for  
> someone to code as a patch. 
>  
> Regards, 
> -Chris 
 
 
--------------080806070908060205050505 
Content-Type: image/jpeg; 
 name="gridShot.JPG" 
Content-Transfer-Encoding: base64 
Content-Disposition: inline; 
 filename="gridShot.JPG" 
 
 /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsL DBkSEw8UHRof 
 Hh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwL DBgNDRgyIRwh 
 MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjL/wAAR 
 CAE5AfYDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcI CQoL/8QAtRAA 
 AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS 0fAkM2JyggkK 
 FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1 dnd4eXqDhIWG 
 h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW 19jZ2uHi4+Tl 
 5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcI CQoL/8QAtREA 
 AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMz UvAVYnLRChYk 
 NOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0 dXZ3eHl6goOE 
 hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU 1dbX2Nna4uPk 
 5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwB3xA8Z3eseJL/TI5pE02zl Nv8AZ/uiRlID 
 M4Bw3zLxnoAOAc1zMVxEoybS3P1jFWZbJNQ+KGoWUjMsdzrksTMvUBpyDjP1 r1b/AIVFpX/Q 
 Qu/++U/wr7P63h8BShTkrXV9D52rhq2IqylDWz7nk/2+MDH2S2/79CmHUov+ fS2/79Cu58ce 
 AtP8OeGzfW08skvnonzgdD16fSvM2Fd2ExNLFQ56a02OOrh50Zcs9zS/tKL/ AJ87b/v0KP7S 
 i/587b/v0KzKK6uVGfKaf9pRf8+dt/36FH9pRf8APnbf9+hWZRRyoOU0/wC0 ov8Anztv+/Qo 
 /tKL/nztv+/QrMoo5UHKaf8AaUX/AD523/foUf2lF/z523/foVmUUcqDlNP+ 0ov+fO2/79Cj 
 +0ov+fO2/wC/QrMoo5UHKaf9pRf8+dt/36FH9pRf8+dt/wB+hWZRRyoOU0/7 Si/587b/AL9C 
 j+0ov+fO2/79CsyijlQcpp/2lF/z523/AH6FH9pRf8+dt/36FZlFHKg5TT/t KL/nztv+/Qo/ 
 tKL/AJ87b/v0KzKKOVBymn/acX/Pnbf9+hR/acX/AD523/foVmYoxRyoOU0/ 7Ti/587b/v0K 
 P7Ti/wCfO2/79CszFGKOVBymn/acX/Pnbf8AfoUf2nF/z523/foVmYoxRyoO U0/7Ti/587b/ 
 AL9Cj+04v+fO2/79CszFGKOVBymn/acX/Pnbf9+hR/acX/Pnbf8AfoVmYoxR yoOU0/7Ti/58 
 7b/v0KP7Ti/587b/AL9CszFGKOVBymn/AGnF/wA+dt/36FH9pxf8+dt/36FZ mKMUcqDlNP8A 
 tOL/AJ87b/v0KP7Ti/587b/v0KzMUYo5UHKaf9pxf8+dt/36FH9pxf8APnbf 9+hWZijFHKg5 
 TS/tOL/n0tf+/Qo/tKL/AJ9LX/v0KzMe1GPajlQ+U0/7Si/59LX/AL9Cj+0o v+fS1/79CszH 
 tRj2o5UHKaf9pRf8+lr/AN+hR/aUX/Ppa/8AfoVmY9qMe1HKg5TT/tKL/n0t f+/Qo/tKL/n0 
 tf8Av0KzMe1GPajlQcpp/wBpRf8APpa/9+hR/aUX/Ppa/wDfoVmY9qMe1HKg 5TT/ALSi/wCf 
 S1/79Cj+0ov+fS1/79CszHtRj2o5UHKaf9pRf8+lr/36FWbKSXUbpba00+2l lYE4EagADqST 
 wB7msPHtXUeCpPJuNVkHGLJf/SiGsqz5IOSWpdKmpSSbJzompKcGz0cfW9tv /jlNOkX4622i 
 j631r/8AHK0r++ZmLADn2rCubt5QysBjHpXPTnWkru33P/M6ZYelHq/v/wCA OtrW9u76azi0 
 q3E8P+tEiLGI+3zMxAH4mrZ0TUR1tNHH1vbb/wCOVs6fP9mS8kHePSgc9/8A Q3roZLbwnHDD 
 /aOq3cFy8MckiIhIBZQ3GEPr61yzx1SLVo9tk30T6PzNIYKDWr79bdTg/wCy NQzgWekOx6Il 
 3bMzH0AD5J9hzVSws7/VTN9k0u1IiO2RpRHEqn0y5Azx061ueMrbRYtNtrnR L24uopWlSRpR 
 jayBDgfKp/jrZhuPs8urAYwdcvxj/v1WONzOph8K66ir+aa621V/8jowWWU8 RiVR5n9/lc5I 
 +H9YHXT9I/8AAy2/+OVWudE1aGB5P7O05wilisFzBI5A64VXLH14FejXOgz6 gbWfRHFza3B2 
 M0mA0Dgch/Qd8/hzkZxJksIvGOlW9hdNdRR3lurzFQFd/MG7bj+H/PI5Pgf6 04uMlzQja/n+ 
 Gp78eGcJKL5Zyuk36W76GH4M+LP/AAjMkttrBu7rTDGPJjjxI8LjAAXcwwm0 HjPBAwBk0V5X 
 qQwBx3FFfQYzAUJ1nKUdfLQ8jD1JRppJnokl3Hp/xM1C+lV2jttblmdUALEL OSQM4GeK9SHx 
 f0Q9NM1f/v3F/wDHK8n1DT9Q1Lxvr0GnWr3Mx1K6IRCMkCVs8fiKuJ4T8WKO dAvP++a1xWGw 
 deMPbzs0l1SOFVcTSnP2UbpvsdT428e6d4n0AadaWOoRSmdJN06RhcDPo5P6 V52YDnpW7/wi 
 viv/AKF+8/75FIfCfis/8y/ef98iujBvBYSHs6dRW31aOWusVXlzSh+BheR7 UeR7Vuf8Il4r 
 /wCgBef980f8Il4r/wCgBef9811/XcL/AM/I/ejH6tiP5WYfke1Hke1bn/CJ eK/+gBef980f 
 8Il4r/6AF5/3zR9dwv8Az8j96D6tiP5WYfke1Hke1bn/AAiXiv8A6AF5/wB8 0f8ACJeK/wDo 
 AXn/AHzR9dwv/PyP3oPq2I/lZh+R7UeR7Vuf8Il4r/6AF5/3zR/wiXiv/oAX n/fNH13C/wDP 
 yP3oPq2I/lZh+R7UeR7Vuf8ACJeK/wDoAXn/AHzR/wAIl4r/AOgBef8AfNH1 3C/8/I/eg+rY 
 j+VmH5HtR5HtW5/wiXiv/oAXn/fNH/CJeK/+gBef980fXcL/AM/I/eg+rYj+ VmH5HtR5HtW5 
 /wAIl4r/AOgBef8AfNH/AAiXiv8A6AF5/wB80fXcL/z8j96D6tiP5WYfke1H ke1bn/CJeK/+ 
 gBef980f8Il4r/6AF5/3zR9dwv8Az8j96D6tiP5WYfke1Hke1bn/AAiXiv8A 6AF5/wB80f8A 
 CJeK/wDoAXn/AHzR9dwv/PyP3oPq2I/lZheQaPINbn/CJeK/+hfvP++RR/wi Xiv/AKF+8/75 
 FP67hf8An5H70H1fEfysw/INHkGtz/hEvFf/AEL95/3yKP8AhEvFf/Qv3n/f Io+u4X/n5H70 
 H1fEfysw/INHkGtz/hEvFf8A0L95/wB8ij/hEvFf/Qv3n/fIo+u4X/n5H70H 1fEfysw/INHk 
 Gtz/AIRLxX/0L95/3yKP+ES8V/8AQv3n/fIo+u4X/n5H70H1fEfysw/INHkG tz/hEvFf/Qv3 
 n/fIo/4RLxX/ANC/ef8AfIo+u4X/AJ+R+9B9XxH8rMPyDR5Brc/4RLxX/wBC /ef98ij/AIRL 
 xX/0L95/3yKPruF/5+R+9B9XxH8rMPyDR5Brc/4RLxX/ANC/ef8AfIo/4RLx X/0L95/3yKPr 
 uF/5+R+9B9XxH8rMPyDR5Brc/wCES8V/9C/ef98ij/hEvFf/AEL95/3yKPru F/5+R+9B9XxH 
 8rMPyDR5Brc/4RLxX/0L95/3yKP+ES8V/wDQv3n/AHyKPruF/wCfkfvQfV8R /KzC8k+lHkn0 
 rd/4RLxX/wBC/ef98ij/AIRLxZ/0L95/3yKPruF/5+R+9D+rYj+VmF5J9KPJ PpW7/wAIl4s/ 
 6F+8/wC+RR/wiXiz/oX7z/vkUfXcL/z8j96D6tiP5WYXkn0o8k+lbv8AwiXi z/oX7z/vkUf8 
 Il4s/wChfvP++RR9dwv/AD8j96D6tiP5WYXkn0o8k+lbv/CJeLP+hfvP++RR /wAIl4s/6F+8 
 /wC+RR9dwv8Az8j96D6tiP5WYXkn0o8k+lbv/CJeLP8AoX7z/vkUf8Il4s/6 F+8/75FH13C/ 
 8/I/eg+rYj+VmF5J9KPJPpW7/wAIl4s/6F+8/wC+RR/wiXiz/oX7z/vkUfXc L/z8j96D6tiP 
 5WYXkn0ra0D/AEe11qQ8Ysk/9KYaf/wiXiz/AKF+8/75FWLPw94us5XYeG7i WORDHLFKuVkU 
 4ODgg9QDkEEEAg1lWxeGlCyqR6dV0ZdKhXjNNxZ0ulxeD7nS4ZNU1a6gvGz5 kcakgcnGPkPb 
 HeuO1hrSG8uRZyGS2WRhE7dWTJwTwOcY7Vq/2Frg/wCafR/9/bn/AOPU1vD+ tN1+HsR/7a3P 
 /wAerho1qVOblz3v0co2XpqdlWnOoklG1vJk08vk6VNKeAy6T/6RPVu//s/U XinGsWcX+jwo 
 UkSbcrLGqkHEZHUHoazxpPjF5Z2ufDElzDOFD28iFU+UYTbsKldo4GCOOOlL /YWuf9E/j/7+ 
 3P8A8eqeejFr31dJbSj2S6+hSU2mnF9ej7vt6lLxDNaW3h+2s4L6C6kSeeVz CrgKGWID76rz 
 8h6Vv6jKIJ77Jxu13UP/AGjWZ/YOuhg6fD+FXU5Vi1w4B9drSlT9CCKIdK8Z ATC78MS36yym 
 ci5DjEh6sCjKcnvzg4HHArizOlDF4R0qdSKfnJa636HZldd4TFxrVItrXZeV up13/CTafo0c 
 VppMMd1bsAbySdMG5yMFMHooyfx9ed2BI2lp410g6RLI1rLe2z7JFwYiZFym e+PX+fU0/wCy 
 fEeP+RBh/wC/lz/8epP7K8VxOJbPwTHa3K8xzoZmaM+qh5GXPoccdRzXy7yP ETkuapTsn/Ns 
 fTxzvCQjLlhO7TW2/rqeW6rGFVT70VY8R2tzY3BtLyEw3EbYeNjypx0or9Cr yjKd46p2PkaC 
 fJqes+Dv+St6z/1+6h/6Ea9Xryjwd/yVvWf+v3UP/QjXq9fH51/Hj/hR34P4 ZerCqunOyTap 
 tYj/AEwdP+uEVWqp2H+u1P8A6/R/6IiryEdZoefL/wA9G/Ojz5f+ejfnUdFF 2BJ58v8Az0b8 
 6PPl/wCejfnUdFF2BJ58v/PRvzo8+X/no351HRRdgSefL/z0b86PPl/56N+d R0UXYEnny/8A 
 PRvzo8+X/no351HRRdgSefL/AM9G/Ojz5f8Ano351HRRdgSefL/z0b86PPl/ 56N+dR0UXYEn 
 ny/89G/Ojz5f+ejfnUdFF2Bl+IZ5Tb2K+Y21r+3BGeo3g8/kKu3l5b6faPc3 MmyJMZIBYkk4 
 CqByzEkAKASSQACTWf4g/wBTYf8AYQt//QxS65Z3E7ade20fnS6ddG5FuCFM wMUkRVWPAbEh 
 IzwSoBKg7gDLen6jBqdu01ul0iK2wi5tZYGzgHhZFUkc9cY/Ki01CK9ub+3j Vw9lOIJCwGCx 
 jSTI56YkX05Brm9WguNZuLK8v/Ct1d2UKzRPplybWRjIxiKTBTKY8KFlXO7c N/AwSazdE0TX 
 9A1NNSvLObVJUiNvIbeeNpJma2slMuZWXK77aUHJDZKnBBJBYR6DRXmfh/wN PFBpw1TRbV38 
 +3jvPNEUm+3TTUj2NydyC4RTt5+ZQwHANT6P4T1KHTxf3unofEH2zTX+2OyN ceUkVqlx+9zn 
 HyTgjPzAt13clgO31LWLPSvKFyZmklzsit7eSeRgMZbZGrNtGVBbGAWUE8jN qCZbi3jmQOEk 
 UOokRkYAjPKsAQfYgEVz+s2eo2+qXWoWEd7L9stYbZvsBgE8BieRwwE/7tlY SspzyMDAO4lc 
 Ky8NavNo+pXmqWnmaxdS2TzqZEPnxJFa/aYlAOweYYpUI+VXwoY7QCCwHoNF cLp2l6jpGqrq 
 1toMy2P+kRQaVbvAslski238O8RBS8ErEK55lU4yW24XhfQLmOQ2v9heXq9l dackmq/uf9HW 
 K1tDLDvDeZ8yrIuFBU+ZgnBYgsB6vRRRSGFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFAB 
 RRRQAUUUUAFFFFAFDXP+Rf1L/r1l/wDQDV+qGuf8i/qX/XrL/wCgGr9ABRRR QAUUUUAFFFFA 
 BRRRQB80/FT/AJHnVP8Ar5aij4qf8jzqf/Xy39KK++p/wof4Y/kjyY9fV/md /wCDv+St6z/1 
 +6h/6Ea9Xryjwd/yVvWv+v3UP/QjXq9fM51/Hj/hR1YP4ZerCqdh/rtT/wCv 0f8AoiKrlU7D 
 /Xan/wBfo/8AREVeQjrLlFc3pVqNZubjUL+4vVvLW/mhFvFeSwxxJHIfLDRK wDbk2SHeDuEn 
 9wqBz17r+oahpuhteC1MOrtY6jbpDGyNbKLy0/duxYiQ4nHzAJ9w8fNwWA9F orhbjxfqx0jw 
 3NbpZJc6vYQzu0kTukckk9pHwocEqBcucZzwvPXMc3i7W4liiH9nma6ne2hf 7O+2Jor2G0kZ 
 l8zLhjKXABXbjaS/3qLAd9RWTod/d3Taja3xhe5sLoW7zQRmNJcxRyghCzFc CULjcc7c8ZwI 
 PCL3D6C4ubua7ljv72IzTkF3CXUqjOAB0AGAABjAAHFIZu0UUUAFFFFABRRR QAUUUUAFFFFA 
 GR4hjMsNhGHZC+oW671xlcuORkEZ+oq4dPkB/wCQtqP5Qf8Axqq2t/8AMM/7 CVv/AOhiovEc 
 8qf2dbLK8FteXot7qeNijRoUcgB/4C7rHHnr+8wpDFSH0EXfsEn/AEFtR/KD /wCNUfYJP+gt 
 qP5Qf/Gqx5Y7rTL+00TRbjy5LqKe7a41KSa9wIzEhQBpQwz5oP3sDaeDuyMX wZ4il1TxDcss 
 CRQ6op1BkJLNGwtNP2qG4BGJmzxzgdKYHZfYJP8AoLaj+UH/AMao+wSf9BbU fyg/+NVxWjeL 
 fEGsxWTrJpkH22WC2jBtJH8qRrFLtnP70bl++gXgjIO44IM+meL9W1G2GsbL KPTTdWNv9j8p 
 zN/pMduc+dvx8rXHTy+QmOM5BqB132CT/oLaj+UH/wAao+wSf9BbUfyg/wDj VY/iC3e/v47W 
 xvb1NT8oNF5NwyQ2Yyf38qqQJMkYWN9wcpgBV8xh0lK4FP7BJ/0FtR/KD/41 R9gk/wCgtqP5 
 Qf8AxqrlFFwKf2CT/oLaj+UH/wAao+wSf9BbUfyg/wDjVXKKLgZ9xayQW0s3 9q6i2xC2P3Az 
 gZ/55VHp9tcXOl2VzLq1/wCZPbxysEWAAFlBOP3fTmrl/wD8g66/65P/ACNZ slzd2XgNLuwg 
 8+8g0lZIIdhbzJFhyq7RyckAYHNMC99gk/6C2o/lB/8AGqPsEn/QW1H8oP8A 41WHPHBoulrq 
 +n3t1f3F41vBHcXN9LPCxnljQSiMN5eMuGwgUEfKpUHjCvNf1C28X2iXAtZb uyZ9PkljjZI5 
 Vmn00lghYlSFnx948rnodoAO5+wSf9BbUfyg/wDjVH2CT/oLaj+UH/xquR1j xfq1lq+rQ26W 
 X2bS4rm5dZInZ5o4YLSTYGDgIzG4cbsMBhflPOZ4tb8QXXiA6DDc6ZFc2/n+ fdPZSOkuxLV1 
 2xiYFOLrByzZ2Z4zgGoHT/YJP+gtqP5Qf/GqPsEn/QW1H8oP/jVZX2pfEfhX S7syPaSajAk8 
 Vsl60BldojIIvNUbwB1JTBwh4K7lNjwrPLPoEfnyvJLFPcQMXYsV8uZ027jy 4XbtDthmADMA 
 SRSAu/YJP+gtqP5Qf/GqPsEn/QW1H8oP/jVXKKLgU/sEn/QW1H8oP/jVH2CT /oLaj+UH/wAa 
 q5RRcCn9gk/6C2o/lB/8ao+wSf8AQW1H8oP/AI1Vyii4FP7BJ/0FtR/KD/41 R9gk/wCgtqP5 
 Qf8AxqrlFFwKf2CT/oLaj+UH/wAao+wSf9BbUfyg/wDjVXKKLgU/sEn/AEFt R/KD/wCNUfYJ 
 P+gtqP5Qf/GquUUXAwfEFvJb+H7+Q6lfyAQsNjeSAcjHOI8457Y/Ct6sjxT/ AMixqH/XL+or 
 XoGFFFFIAooooAKKKKACiiigD5p+Kn/I86n/ANfLf0oo+Kn/ACPOp/8AXy39 KK++p/wof4Y/ 
 kjyY9fV/md94QLD4s62URpGF7qGEXGWO48DJA/M16Z9qvP8AoD3n/f2D/wCO V5v4J/5LDq3/ 
 AF/3/wD6Ga7/AMU6ld6P4Y1XU7GKGW5tLaSdEnYqh2gk5wMngE44z0yM5HzW dfx4/wCFHVg/ 
 hl6ss/arz/oD3n/f2D/45VCzvNRabUfsuizz/wCmfP8Av4V2HyYhj75yeO3t 3yBt1naLK8Gn 
 eIpYztdLyZlOM4IiQivIjZnWyhc6bNe38N/d+CYJ7yDb5VxK9u0ke05G1icj BJIx3oi02aCS 
 4kh8EwRyXMqzTsj24MsituV2IPzMG+YE8g81oza0gmubWG61r7TEsmGl0qRI SyAn/WmEIRxw 
 d2DxgnIqjr/iXVLPxVNpdpPHBBFZQXG4aHdagzM7zKQfIcBABEMZHOT6VfIh XII9HMV5LeR+ 
 BLVLqZt8kym2Du28PktnJO9VbPqAeoqwbS7YoW8HISjM6ky2/wArNIJGI54J dVcnuyg9RU9t 
 46sfOv4bmO7xYpcXFzcrbbYoYI5riPcxDMSQbcjA+ZshgoG4IQeLry71nRoI dDuxaajbzzZM 
 tu7BFa3CzBkmKGLEzZwSxwMDHU5EFwjbVonlePww6PM2+RluIQXbAXJ+bk4V Rn0AHaoNPtLv 
 SbdrfTfByWULNvaO2lt41LYAyQpAzgDn2p/i/wAQ6xoV5K1k9ibWLRL7UDHN buzmSAJtG4SA 
 BSZVyNufkIz82VNW+I2k6DLBDq8E9jcPF580E89ur28W5lDEeb+8zsY7YvMb jkAlQTkQXJ/t 
 Ouf9C7N/4FQ//FUfadc/6F2b/wACof8A4qmSePrKI3DS6ZqSQQPclpyIipht 5DHcTACTdsRt 
 uRjedw2q3OOso5EFzlvtOuf9C7N/4FQ//FUfadc/6F2b/wACof8A4qupoo5E FzlvtOuf9C7N 
 /wCBUP8A8VR9p1z/AKF2b/wKh/8Aiq6mijkQXOW+065/0Ls3/gVD/wDFUfad c/6F2b/wKh/+ 
 KrqaKORBc5b7Trn/AELs3/gVD/8AFUfadc/6F2b/AMCof/iq6mijkQXOMvl1 q7Npu0GeNYbu 
 GZiLiFiQrgkD5utTzvq11BLBceGHlhlUpJHJcQsrqRgggtggjtXUy/cH+8v8 xWF4n8YaZ4S+ 
 ytqZ2Qz7yZPPhTYq43Ha7q74DdI1du2MkAnIguYP9gRfYPsH/Cv7L7H5vnfZ 8W3l+ZjG/b03 
 Y4z1xU95ps2oxvHfeCYLqOSUTOs727hpAu0OQTy20Bc9cDFP0zxqLW1upNeg u4LeO91COPUG 
 SMxSLBLO2xVjYyZWKJuWQZ8s8kkbuo029nvrdpbjTLvT3DlRFdNEzEYHzDy3 cY5x1zweOmXy 
 ILnMQWl3bCMW/g5IhEweMRy267GEflgjB4IT5M/3eOlEVpdwW/2eLwckcO6N /LSW3C7kChDj 
 OMqETB7bVx0FdnRS5EFzhNQ0c6tcLcal4Etb2ZV2LJcm2kYLknALEnGSePet L7Trn/Quzf8A 
 gVD/APFV1NFHIguct9p1z/oXZv8AwKh/+Ko+065/0Ls3/gVD/wDFV1NFHIgu ct9p1z/oXZv/ 
 AAKh/wDiqPtOuf8AQuzf+BUP/wAVXU0UciC5yVxJrk9tLD/wj0y70K5+1QnG Rj+9TbN9attO 
 s7dfD87+TbxxlvtMIyVQA8bumRXX0yL/AFKf7oo5EFzh00cx3F1cJ4EtVmu1 dLmRTbBplc5Y 
 Oc5YE9QetSR6bNDaLaReCYEtlikhWFXtwgjkILoFzjaxAJHQ45rt6KORBc4S 30c2lu9vbeBL 
 WGGRXR44zbKrK4UOCAcEMEXI77RnoKtrHqKXbXaeE9ty2d0wngDnIUHLZzyI 0H/AF9BXYUUc 
 iC5xk1pd3GmjTZvBySWAVUFq8tuYgq42jYTjAwMDHGBU8DatbW8dvb+GHihi UJHHHcQqqKBg 
 AANgADtXWUUciC5y32nXP+hdm/8AAqH/AOKo+065/wBC7N/4FQ//ABVdTRRy ILnLfadc/wCh 
 dm/8Cof/AIqj7Trn/Quzf+BUP/xVdTRRyILnLfadc/6F2b/wKh/+Ko+065/0 Ls3/AIFQ/wDx 
 VdTRRyILnLfadc/6F2b/AMCof/iqPtOuf9C7N/4FQ/8AxVdTRRyILnLfadc/ 6F2b/wACof8A 
 4qj7Trn/AELs3/gVD/8AFV1NFHIguct9p1z/AKF2b/wKh/8AiqPtOuf9C7N/ 4FQ//FV1NFHI 
 gucTq6a5qGkXVoNAmjMqEbjcxHH/AI9XReVJ/wA83/75NaMv+pf/AHTT6ORB cy/Kk/55v/3y 
 aPKk/wCeb/8AfJrUopcgXMvypP8Anm//AHyaPKk/55v/AN8mtSijkC5l+VJ/ zzf/AL5NHlSf 
 883/AO+TWpRRyBcy/Kk/55v/AN8mjypP+eb/APfJrUoo5AufKXxU/wCR51P/ AK+W/pRR8VP+ 
 R51P/r5b+lFfdU/4UP8ADH8keXHr6v8AM9A8GyJD8XdZlldUjS+1BmdjgKAx ySewrsdb1XQN 
 b0a80uXWvIiu42hkkgI37G4YDcpHIyOnfjB5rkPBP/JYdW/6/wC//wDQzXrB mlyf3jfnXzWd 
 fx4/4UdWD+GXqzAg8S6LFbxxvrCTOihWlkwGcgfeO0AZPXgAewqx4Yktb+w1 oLOphuL2QB1Y 
 cqY0GRWv58v/AD0b86qeGHeRtZZ2LN/aLjJOeBHGBXkx3Otl2W08+F4pNUnZ HUqw/dDIPB/g 
 p0dnaxazc6osx8+4t4bd1LDaFjaRlI75zK2eew6d79FaEmBp/h2x0ubUZ7O/ uI575GVpN8bG 
 ImaebcgK4yGuXxuBGAuQec17Dwjp2m3Ed5a6hcR3/wBoknuLpfJDXPmGPzFd QgQBvKiyUVW+ 
 TOcsxbp6KAMDVvDtjrWqLd3l/cGD7FPYyWSvGIpYpseYGO3eCdqcqwxsGOpz G/hxJJVmbxDq 
 YuGiEF1Ojwo93ErOyqxWMbNvmOA0Wxvm65AIt2fifS7vQW1uWf7DYJLJE0l/ /o+wpK0R3B8b 
 csvAbB5AIB4o0vxRo+saneadZX0El1a7GMayoTJG0cciyoASTGRKo3dM5/EA oXHg/Sbm1uLd 
 7u4CT2+oW7ESJkLeSiWUj5eoYYX0HXPWuk82P/non/fQrC1zxjo+iLMkmoWL 3VvLbrc27XaI 
 8EcsscZkcdVVRKGyQB05Gc0X3i6wgtrG4sZINQhvZY44pYLmMoQ1zDAxBBJb aZs8Aj5cEqSM 
 gG75sf8Az0T/AL6FHmx/89E/76FY0PinTbvxUmg2V1aXc6288tz5NyrtbtE8 SbHUZIJMh64x 
 sPB7blADPNj/AOeif99CjzY/+eif99Cn0UAM82P/AJ6J/wB9CjzY/wDnon/f Qp9FADPNj/56 
 J/30KPNj/wCeif8AfQp9FAEUksZUYdfvDv7isHX/AAxaa99r/wCJreWP220+ xXf2Roj9oh+f 
 CnzEfbjzJOV2n5zknAx0Ev3B/vL/ADFPoA5T/hC9Ll8+G91G8vbCWW6mWxme NY4nuPMEhVkR 
 ZOk0qjcxwH9QCNzTYHsbdorjV7jUHLlhLdCJWAwPlHlogxxnpnk89MX6KAGe bH/z0T/voUeb 
 H/z0T/voU+igBnmx/wDPRP8AvoUebH/z0T/voU+igBnmx/8APRP++hR5sf8A z0T/AL6FPooA 
 Z5sf/PRP++hR5sf/AD0T/voU+igBnmx/89E/76FNiljESAuoO0d6lqhe6lDp WnwXE6yMjzW9 
 uAgBO6WRIlPJHG5wT7Z69KOoFzzY/wDnon/fQo82P/non/fQqtZalDfXWo28 SyB7C4FvKWAw 
 WMUcuV56bZFHOOQfqcu38WQS+F9S1+fTr61t9P8AtPmwzeUZG8gsJNux2X7y MoyRkr6EEgG7 
 5sf/AD0T/voUebH/AM9E/wC+hXNXXjqwtrHT7hbK+mkv4t8dtGsYkV/OhgMT 7nAWQSTqpBPB 
 V8kEcySeK7mK4trRvC+s/bLhJpEthJabhHGYwzk+ftxmVQBnPB4A5IB0Pmx/ 89E/76FHmx/8 
 9E/76Fc8vjCIXV1HcaRqVtbWTpHeXkvkmK2dokkw+2QthRIoZgpVeSW2gsLm p+JLPSdc0nSr 
 mOfzNS8zy5lUeVFs2D94xI27mkRF4OWYDqRQBq+bH/z0T/voUebH/wA9E/76 Fc1ZeOrDU4rn 
 +z7K+uriK7e2ito1jD3IVUczRkuF8kpIjB2ZQdygcsoaSTxhF9otrS00jUry +lSZpbSLyUkt 
 jEYw6yeZIoB/fRkbSwYMGBKkEgHQ+bH/AM9E/wC+hR5sf/PRP++hXPf8JhFc 3EUWk6RqWrJJ 
 ZQXwltfJRRFMX8snzpEOT5bHGOOM1oarrQ024t7SGwu9QvLhHkS2tTGG8tCo dyZHRcAugxnP 
 zDAIBIANHzY/+eif99CjzY/+eif99CueTxhF9vktp9I1K3ihuILSe6k8kxwz ypGyRkLIXJzN 
 GuVUrk9cAmrFt4r02fVNUsnMlumnIXa7uNqQTKv+tMb5+YRN8sh42MQDQBs+ bH/z0T/voUeb 
 H/z0T/voVz1x4tktbV7uXw5rK2++JIHYQKZ2klSOMKjSh1JLg4kCYAOcHitj Tb2e+t2luNMu 
 9PcOVEV00TMRgfMPLdxjnHXPB46ZALPmx/8APRP++hR5sf8Az0T/AL6FZWm+ JLPVP7I8iOdf 
 7V09tQg3qBtjHlZDYJw375eBkcHnpnYoAZ5sf/PRP++hR5sf/PRP++hT6KAI pZYzE4DqTtPe 
 nebH/wA9E/76FEv+pf8A3TT6AGebH/z0T/voUebH/wA9E/76FPooAZ5sf/PR P++hR5sf/PRP 
 ++hT6KAGebH/AM9E/wC+hR5sf/PRP++hT6KAGebH/wA9E/76FHmx/wDPRP8A voU+igD5S+Kn 
 /I86n/18t/Sij4qf8jzqf/Xy39KK+3p/wof4Y/kjzI9fV/meheCf+Sw6t/1/ 3/8A6Ga9VP3j 
 9a8q8E/8lh1b/r/v/wD0M13/AIiNv9hRLia9USShUgsZTHNcvgkRqwIYdNxI ZcBCWIQNXzWd 
 fx4/4UdWD+GXqzVqt4V/5jP/AGEn/wDQEqLRra7s9KggvZ/OnXdk7y+1SxKp vbl9qkLvbltu 
 48k1L4V/5jP/AGEn/wDQEryYbnWzoKKKK1JIJr21tnCT3MMTEZCvIFOPxp0F 1b3O7yJ4pdv3 
 vLcNj64rI1Sa6jv5Vs9S0+wnaKI772EyqygyZAUSIc5I5yfpzxLo8s0txMbi 9tLydYYxJNaR 
 mOMnfIRhS7kcEfxH14zilcDnk8Oa2fDiQTWdj/acOq3N/bPBqssQgMryuHD+ QdzL5zJsZCjD 
 k5ztrY0DSdU0i+vReXMF9HeeXcTXn+qkadYYoWHlBSoU+UXyG4LbduBuPQUU wOPbw9rAtJNK 
 VLE2I1VNSjujcOJGzfLdMhi8vAwC6g7zkqpwNx209S8FaleeKptUjntBA97H cBWdt21X05iP 
 u4ziyl7/AMSepx3lFAHH+HfD2saZqOjJeJY/YdH0qTTYZobh2kuMmDa7IYwI +ICSAzYLYycZ 
 rsKKKACiiigAooooAKKKKAGS/cH+8v8AMU+mS/cH+8v8xT6ACiiigAooooAK KKKACiiigAoo 
 ooAKzNU0/wDtPS7e3xnZc2tx/rNn+qmSTrtb+50xz0yudw06ZF/qU/3RS6gU tO0/7FfatcYx 
 9uu1uP8AWbs4hij6bRt/1fTLeuedq8/D4e1if4f69ol4ljDfX/8AaHkmG4eS MfaGkddzGNSM 
 GUg4U8LnvgdhRTA878SeBNS1HXJ5rNdNn0t0WUWV5IyhpmuraWZMBGUROttk 8EmSWQkHdxJe 
 eEby7l0p38I+FHtbCK6hXTHuSYE81oXEi/6NgNlJARtH3s5OSK9AooA4uTQN evTr1hdQ6bDp 
 +uuGuZ4rt3lhVraKGREQxAMf3bBXLDG4MVONh1Nc8N/25q0Essnl2q6fdWrP G2Jo5JJIHjkj 
 OCAyGEsG6hgpHt0FFAHHw+FrzSdavNX0mKx8wSslrZO5ih+ztBaxlSVQ+Wwa 1UjCsNvGAWyl 
 ebwJPqWsf2jfX89rNcxXTXDabeSwPDNItskYjZcb1VLfkvwzYbYAdq9xRQBw b+FtSj16DU/+ 
 Ed8MX729lb2tv5srQC1aGSYh4V8mTYGV4ztB+UrjLYDHoPEunzanbwW66Do2 sQBy7x6pMUVG 
 AwpUeTICcFhnjHvnjcooA4/w94HGnXM9xq15PqVx5tu8cj3U2yUxW0MfmSQl thk8yJnBIYj5 
 TuyBjLg+HOoNZWMd94gu53mt7u31WP8AchNt2jNOYSIQ2TP5bDceACPY+iUU AcfrmmeJNe0W 
 bS73TtDmjEtvKGa7k2XXlTxyMrxmFvLV1RuN0mMgfMOa3NAtZrHS1tZdK03S 0jciK206UvEF 
 POf9XHgli2QF9888alFAHP6P4e/s3+wPkx/ZmlNYf8fG/GfI4/1a7/8AU/e+ Tp907vl6Ciig 
 AooooAZL/qX/AN00+mS/6l/900+gAooooAKKKKACiiigAooooA+Uvip/yPOp /wDXy39KKPip 
 /wAjzqf/AF8t/Sivtqf8KH+GP5I8yPX1f5noXgn/AJLDq3/X/f8A/oZr0rUt L0/VoRb6lYWt 
 7Cr71juYVkUNyMgMCM4J596818E/8lh1b/r/AL//ANDNemm/s8n/AEuD/v4P 8a+azr+PH/Cj 
 qwfwy9WFnZWmnWiWljaw2ttHnZDBGERcnJwo4HJJ/Gm+Ff8AmM/9hJ//AEBK X7fZ/wDP3B/3 
 8FN8KMrrrDKQVOouQQeCPLjryYbnWzoaKKK1JCiiigAooooAKKKKACiiigAo oooAKKKKACii 
 igBkv3B/vL/MU+mS/cH+8v8AMU+gAooooAKKKKACiiigAooooAKKKKACmRf6 lP8AdFPpkX+p 
 T/dFLqA+iiimAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFADJf8A Uv8A7pp9Ml/1 
 L/7pp9ABRRRQAUUUUAFFFFABRRRQB8pfFT/kedT/AOvlv6UUfFT/AJHnU/8A r5b+lFfbU/4U 
 P8MfyR5kevq/zPQPBsaTfF3WYpUV43vtQVkYZDAscgjuK9A1GLw/pcAlutLs gGfYiRWAlkkb 
 BOFRFLMcAnABwAT0BNcD4J/5LDq3/X/f/wDoZr0bWHuEsXEFjNeK5KSxW9wI ZthBGY2JUbgc 
 fxLgZIOQAfms6/jx/wAKOrB/DL1ZFZ2mhahaJc22mac8T5wTZopBBwVYFcqw IIKkAggggEVP 
 4VhhC6uqwQoi6gyqiRhVAEcfQAYqr4bs7iw0OKC5j8uTzZpBGSGZEeVnQOwz ucKyhmy25txL 
 NncbvhX/AJjP/YSf/wBASvJjudbN3yo/+eaf98ijyo/+eaf98in0VpYkZ5Uf /PNP++RR5Uf/ 
 ADzT/vkU+iiwDPKj/wCeaf8AfIo8qP8A55p/3yKfRRYDI1LXNH0m4WC8cq5Q SOUt3kWFCSA8 
 rKpEScN8zlR8rc/KcanlR/8APNP++RXNeJH1K41GOxOhX2oaKYg8wtJbcfaH JI8qQSyoRGAA 
 SADv3BSQoZX5+58F6iunPLpFpBp+t3eoaoZ7+JlikMMwu/JLyJ8zLve3bHJB VTjK8FgO5jvL 
 WXWbnS1hPn29vDcOxUbSsjSKoHfOYmzx3HXsXt5a2N1p1vLCS9/cG3iKqMBh FJLlvbbGw4zy 
 R9Rz3hPSFsfEOr3lt4Y/sCxntLWJIdtunmSI85dtsLsOkkYycE/hWPYeD1uL fQrLUfCsBktb 
 uN9Xu547d01FltbhDMcMXk/eurZkUN+8zjO7BYDtbvU7Kz1OysJIJTNeSiKN hD8gJjlk5Y4B 
 4hfIGSMrkAMDUkd5ay6zc6WsJ8+3t4bh2KjaVkaRVA75zE2eO469vNp/BniW S8lFnF9k2+dF 
 Zzi4VRbpjVVh27SWVVW5tgAo+UEAD5SB1HhPSFsfEOr3lt4Y/sCxntLWJIdt unmSI85dtsLs 
 OkkYycE/hRYDrfKj/wCeaf8AfIo8qP8A55p/3yKfRRYBnlR/880/75FHlR/8 80/75FPoosBF 
 JFGFGEX7w7e4p3lR/wDPNP8AvkUS/cH+8v8AMU+iwDPKj/55p/3yKPKj/wCe af8AfIp9FFgG 
 eVH/AM80/wC+RR5Uf/PNP++RT6KLAM8qP/nmn/fIo8qP/nmn/fIp9FFgGeVH /wA80/75FHlR 
 /wDPNP8AvkU+iiwDPKj/AOeaf98ijyo/+eaf98in0UWAZ5Uf/PNP++RTYooz EhKKTtHapaZF 
 /qU/3RRbUA8qP/nmn/fIo8qP/nmn/fIp9FFgGeVH/wA80/75FHlR/wDPNP8A vkU+iiwDPKj/ 
 AOeaf98ijyo/+eaf98in0UWAZ5Uf/PNP++RR5Uf/ADzT/vkU+iiwDPKj/wCe af8AfIo8qP8A 
 55p/3yKfRRYBnlR/880/75FHlR/880/75FPoosAzyo/+eaf98ijyo/8Anmn/ AHyKfRRYBnlR 
 /wDPNP8AvkUeVH/zzT/vkU+iiwDPKj/55p/3yKPKj/55p/3yKfRRYCKWKMRO Qig7T2p3lR/8 
 80/75FEv+pf/AHTT6LAM8qP/AJ5p/wB8ijyo/wDnmn/fIp9FFgGeVH/zzT/v kUeVH/zzT/vk 
 U+iiwDPKj/55p/3yKPKj/wCeaf8AfIp9FFgGeVH/AM80/wC+RR5Uf/PNP++R T6KLAfKXxU/5 
 HnU/+vlv6UUfFT/kedT/AOvlv6UV9vT/AIUP8MfyR5kevq/zPQPBql/i7rKL I0bNfagA64yv 
 zHkZBGfqDXoZ0MZ/5DOsf9/o/wD4ivPvBP8AyWHVv+v+/wD/AEM13/iKDVrm xSHSfJ3PKBcC 
 S4eBjFg5CSKjFGJ2jIGcFsFWww+azr+PH/Cjqwfwy9WL/YY/6DOsf9/o/wD4 ip/CcIjj1aNJ 
 p2CX7LukKszHy4+SQo/lWX4EMrfD/wAPGZER/wCzoAAjlht2DackDkjBI7Ek ZOMnY8K/8xn/ 
 ALCT/wDoCV5MdzrZu7G/56v+Q/wo2N/z1f8AIf4U+vP/AB6mjx6iLq8n0O+v o7TMOiapCk8l 
 xgsVW2UsDHJIcoWCvuKx/L8uDpYk73Y3/PV/yH+FGxv+er/kP8K8yl8U+KU1 jVzb3FjPcW/2 
 4R6N5hlmCxLJ5D/Z0hEibykR3PMVYSfKAXQDQm162T7FEnj7dpMvntLrXm2R 2Tp5Oy33+X5Q 
 yryPtK7ztyDgEUWA73Y3/PV/yH+FRmSNbhLdroCd0Z0jLLuZVIDEDGSAWUE9 tw9a8+0zXfEV 
 xavrN9ez280WoabZyaUbeNIU+0RWnmg5TzQytcSEfPwQoIIBBPCuqHVvGWj3 Fzrf2zUn0S6e 
 90/MI/s6VpLUtFtRQ6YbcuJCzDZ1yDksB6Lsb/nq/wCQ/wAKNjf89X/If4V5 NcDRl8TarcWW 
 pWml/Z/FCvfahaGANbqdNZcyM6sqgzNImXH33cD5jUmp+LPEtvP4hlTVLGGS 1i1ArYearzQR 
 xJKYZvIEG5N2yJt8krIwk4GXQAsB6rsb/nq/5D/CjY3/AD1f8h/hXFWOp6ta eJ47GbVZ72Bd 
 VOllZ4ogXU2Ju/NJRF/eBvk4wuwfd3fNXcUWAZsb/nq/5D/CjY3/AD1f8h/h T6KLAM2N/wA9 
 X/If4UbG/wCer/kP8KfRRYBmxv8Anq/5D/CjY3/PV/yH+FPoosBFIjbR+8Y/ MPT1HtTtjf8A 
 PV/yH+FEv3B/vL/MU+iwDNjf89X/ACH+FGxv+er/AJD/AAp9FFgGbG/56v8A kP8ACjY3/PV/ 
 yH+FPoosAzY3/PV/yH+FGxv+er/kP8KfRRYBmxv+er/kP8KNjf8APV/yH+FP oosAzY3/AD1f 
 8h/hRsb/AJ6v+Q/wp9FFgGbG/wCer/kP8KbEjGJP3jD5R6f4VLXOeJ9Rl0/T 9N/4mH9mWk9y 
 IrvUPkH2WPypGDbpAUXMixplgR8+B8xBBbUDchkjuULwXQlQOyFkZWAZWKsO B1DAgjsQRUcN 
 5a3F5c2cN/FJdWu37RCkiF4twyu5RyuRyM9a8isvEWs2dokOl63Yra+beT2l xd3CJ/acrX1y 
 CAqQSGfhYzsg8tv3owfnXb6B4Ht5Y9P1Gd72eWOXVb/ZA4QJDi8nB2kKGOep 3FvbA4osB0ux 
 v+er/kP8KNjf89X/ACH+FPoosAzY3/PV/wAh/hRsb/nq/wCQ/wAKfRRYBmxv +er/AJD/AAo2 
 N/z1f8h/hT6KLAM2N/z1f8h/hRsb/nq/5D/Cn0UWAZsb/nq/5D/CjY3/AD1f 8h/hT6KLAM2N 
 /wA9X/If4UbG/wCer/kP8KfRRYBmxv8Anq/5D/CjY3/PV/yH+FPoosAzY3/P V/yH+FGxv+er 
 /kP8KfRRYCKVGET/ALxj8p9P8Kdsb/nq/wCQ/wAKJf8AUv8A7pp9FgGbG/56 v+Q/wo2N/wA9 
 X/If4U+iiwDNjf8APV/yH+FGxv8Anq/5D/Cn0UWAZsb/AJ6v+Q/wo2N/z1f8 h/hT6KLAM2N/ 
 z1f8h/hRsb/nq/5D/Cn0UWA+Uvip/wAjzqf/AF8t/Sij4qf8jzqf/Xy39KK+ 3p/wof4Y/kjz 
 I9fV/megeDS4+LusmJVaQX2obVZtoJ3HAJwcD3wa9DI8RZ+7o/8A3+l/+Irz 7wT/AMlh1b/r 
 /v8A/wBDNeqn7x+tfNZ1/Hj/AIUdWD+GXqzK2+Iv7uj/APf6X/4ip/CYnWPV hL5DSfb23mN2 
 258uPIGVBq7Vbwr/AMxn/sJP/wCgJXkw3Otm7mT+4n/fR/wozJ/cT/vo/wCF Prl/E6al/bWg 
 x2Wu31hDfXbWs0cEVuwwIJ5dwMkTENmNR1xjtnmtCTpcyf3E/wC+j/hRmT+4 n/fR/wAK86Pi 
 3VNG8OapcXsHmW7Xerx2d1Febp98L3MiqyPEVRQkLKpy+MJ8uCQNyPxdfXKY g0aMST6nPptl 
 595tSZ4Wn3uxVGKJtgOOCSxK4CgOwB1OZP7if99H/CjMn9xP++j/AIVww1LV 0+FOvakbyS21 
 S1fVJVkjcT+W0VxMVQGRcMgCBOVHy9AvGJD4m1TRG8RveR/2jY6dd29nbylv 37yyRWwVWjji 
 5UvMWLLluSFjOAKAO1zJ/cT/AL6P+FGZP7if99H/AArhn+IV7Fbiabw/JEIL e7u7zzpJYcQ2 
 4hLNCskKtISJgAGWMbkYZxhj1Gi6rNqQvYbu2jt7yxuPs9wkUplj3GNJAUcq pYbZEzlRzkcg 
 AkA0cyf3E/76P+FGZP7if99H/Cn0UAMzJ/cT/vo/4UZk/uJ/30f8KfRQAzMn 9xP++j/hRmT+ 
 4n/fR/wp9FADMyf3E/76P+FGZP7if99H/Cn0UARSGTaMqv3h/F7j2p2ZP7if 99H/AAol+4P9 
 5f5isq5vriPxlplgsmLWbT7uaRNo+Z0ktgpz14Ej/n7CgDVzJ/cT/vo/4UZk /uJ/30f8K4q4 
 1bWbv4UaNf2upfZdX1CLTUN75CPseeSFHfYRtP32449sVz+r+LvE897DPbtP YW9xEtstjbiC 
 WQXCXlpDOySSLt3Bp5oQG+TMW/owIAPVcyf3E/76P+FGZP7if99H/CsrR7e/ fQ3S7vdVS6m3 
 4e9Fr59v/CMeSvlHGNwyG68+g5vS7/WFsLeGbW7u5uNT1i702O4migH2VIHu fnRUjUM7JAB8 
 2QGIbBAKMAdzmT+4n/fR/wAKMyf3E/76P+FcdPq+p2Otx+FTfyTz3LwiPU5Y 4xLGkiXLtlFU 
 Izj7KwVtoH7xcq2w+ZsaPc3cGs32h3d1JfG1t4LqO7lVFkZZWlXY4QBSVMJI YBchgMZUswBs 
 5k/uJ/30f8KMyf3E/wC+j/hXJWet6jL/AGJvuM/afEGoWUvyL80MX2zYvTjH kx8jk7eScnPY 
 UAMzJ/cT/vo/4UZk/uJ/30f8KfRQAzMn9xP++j/hTYjJ5SYVcbR/F/8AWqWm Rf6lP90UdQDM 
 n9xP++j/AIUZk/uJ/wB9H/Cn0UAMzJ/cT/vo/wCFGZP7if8AfR/wp9FADMyf 3E/76P8AhRmT 
 +4n/AH0f8KfRQAzMn9xP++j/AIUZk/uJ/wB9H/Cn0UAMzJ/cT/vo/wCFGZP7 if8AfR/wp9FA 
 DMyf3E/76P8AhRmT+4n/AH0f8KfRQAzMn9xP++j/AIUZk/uJ/wB9H/Cn0UAM zJ/cT/vo/wCF 
 GZP7if8AfR/wp9FADMyf3E/76P8AhRmT+4n/AH0f8KfRQBFKZPKfKrjaf4v/ AK1OzJ/cT/vo 
 /wCFEv8AqX/3TT6AGZk/uJ/30f8ACjMn9xP++j/hT6KAGZk/uJ/30f8ACjMn 9xP++j/hT6KA 
 GZk/uJ/30f8ACjMn9xP++j/hT6KAGZk/uJ/30f8ACjMn9xP++j/hT6KAPlL4 qf8AI86n/wBf 
 Lf0oo+Kn/I86n/18t/Sivt6f8KH+GP5I8yPX1f5noXgn/ksOrf8AX/f/APoZ r1U/eP1ryrwT 
 /wAlh1b/AK/7/wD9DNeqn7x+tfM51/Hj/hR1YP4ZerEqt4V/5jP/AGEn/wDQ EqzVbwr/AMxn 
 /sJP/wCgJXlQ3OtnQVXuLG3u57SaePfJaSmaA7iNjlGjJ46/K7Dn19cVYorU kx7vwto19pxs 
 Liz32pluJtnmuPnnEolOQc/MJ5fpu4xgYkl8PaZNYfYjBIkQuJLpWinkjkSW R2d3SRWDqSXf 
 O0jhivQ4rUooAxz4X0lvDk2gGGc6bNv81Ddy75N7l33Sbt53MzZy3OSDwcUN 4X0l/M3Qzt5s 
 SRSZu5TvKbdsh+bmYbExN/rBtX5uBWxRQBh/8IhoZt5YXtJJRNbz20ry3Ery SxzBBIHdmLMS 
 I4wGJJAQAEAYrUt7G3tJ7uaCPZJdyiac7id7hFjB56fKijj09c1YooAKKKKA CiiigAooooAK 
 KKKAGS/cH+8v8xSGFWuEnJk3ojIAJGC4YgnK5wT8owSMjnGMnKy/cH+8v8xT 6AKcul2k9hBZ 
 TJJLBA8Lp5krs26J1dCWJ3MQyKcknOOc5NV9X8PaZrhjbUIJHeNCkbxzyRMg 8yOThkYEHfDG 
 cjkbfc51KKAKem6ZBpVu0FvJdujOXJuruW4bOAOGkZiBx0zjr6mozomnHTJt ONv/AKLLK87K 
 HYESPIZS6tnKtvJYEEFTgjGBjQooAy4/D2mR6XNpwgkeCZ/MkeWeR5XcY2uZ WYvvXau1t2V2 
 LgjaMWNN0u00m3aG0SQB3LyPLK8skjYAy7uSzHAABJOAoHQAVcooArrZRL5e Hn/dyvMuZ3OW 
 bdkHJ+ZfnOFOVGFwBtXFiiigAooooAKZF/qU/wB0U+mRf6lP90UuoD6KKKYB RRRQAUUUUAFF 
 FFABRRRQAUUUUAFFFFABRRRQAUUUUAMl/wBS/wDumn0yX/Uv/umn0AFFFFAB RRRQAUUUUAFF 
 FFAHyl8VP+R51P8A6+W/pRR8VP8AkedT/wCvlv6UV9tT/hQ/wx/JHmR6+r/M 9C8E/wDJYdW/ 
 6/7/AP8AQzXW+OrCyvbCxfULvT7a3tr3zS2pWn2i2JMUiASDcoUfPkMzAbgo 6kCuS8E/8lh1 
 b/r/AL//ANDNeqn7x+tfNZ1/Hj/hR1YP4ZerMXwo8T+HLb7PZ2trCrSpGtpE I4ZFEjASxqOA 
 kgHmDk8OOW6nQ8K/8xn/ALCT/wDoCVZqt4V/5jP/AGEn/wDQEryYbnWzoKKK K1JCiiigAooo 
 oAKKKKACiiigAooooAKKKKACiiigBkv3B/vL/MU+mS/cH+8v8xT6ACiiigAo oooAKKKKACii 
 igAooooAKZF/qU/3RT6ZF/qU/wB0UuoD6KKKYBRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRR 
 RQAUUUUAMl/1L/7pp9Ml/wBS/wDumn0AFFFFABRRRQAUUUUAFFFFAHyl8VP+ R51P/r5f+lFH 
 xU/5HnU/+vlv6UV9tT/hQ/wx/JHmR6+r/M9C8E/8lh1b/r/v/wD0M16qfvH6 15V4J/5LDq3/ 
 AF/3/wD6Ga9VP3j9a+Zzr+PH/Cjqwfwy9WJVbwr/AMxn/sJP/wCgJVmq3hX/ AJjP/YSf/wBA 
 SvKhudbOgooorUkKKKKACiiigAooooAKKKKACiiigAooooAKKKKAGS/cH+8v 8xT6ZL9wf7y/ 
 zFPoAKKKKACiiigAooooAKKKKACiiigApkX+pT/dFPpkX+pT/dFLqA+iiimA UUUUAFFFFABR 
 RRQAUUUUAFFFFABRRRQAUUUUAFFFFADJf9S/+6afTJf9S/8Aumn0AFFFFABR RRQAUUUUAFFF 
 FAHyl8VP+R51P/r5b+lFHxU/5HnU/wDr5b+lFfbU/wCFD/DH8keZHr6v8z0D wbGJfi7rMbFg 
 r32oKSrFTyx6Ecg+4rv59C0G1glnuITFDEpeSSS9lVUUDJJJfAAHeuC8E/8A JYdW/wCv+/8A 
 /QzXY+M7a4uINMeOW9itoL9Zrp7OATyKgjk2ERlH34lMR+42CA3G3cPms6/j x/wo6sH8MvVl 
 yDQtBubeO4t4TLDKoeOSO9lZXUjIIIfBBHerXhOCGOPVo4kaONL9lVRIxwBH H3JJNRaDNez6 
 NDJfh/OLSBWkTY7xB2EbuuBtdkCMwwuCSNq9BZ8K/wDMZ/7CT/8AoCV5Mdzr Zu+Uvq//AH2f 
 8ay9S8QeH9GuFt9U1ywsZ2QOsd1erExXJGQGYHGQRn2Na9cnc6PqF7461G4g 1TUtMg/syzQS 
 WsUJWZhLckgmWNxlQynC4++M9RWliTqfKX1f/vs/40eUvq//AH2f8a821SHx DcjUYNOOsjXp 
 H1BJSZJktxbmOcWvlsxECvn7JzGQ4O7d/wAtKsXlxqHiPxnbLYyeILXR2e2j nYW9xaDAivzI 
 P3iqQCTACwwQSmGDBSCwHatqGnq9qn2oMbq4e1h2OWDSors6ZGQCBFJnOMFS OvFSX11Y6ZZy 
 Xl/eRWlrHjfNPP5aLkgDLE4GSQPxrz6Hw951/aWU0GspKPEd3dXbRz3UcaRS JevE8cisEUEO 
 m7yyOWCvycVqamL9vhR4htriC+nujFqFnbx+TJLNInmSxQcAFnynl/Oc5HzE nk0WA62zurHU 
 IjLZXkVzGNuXhn3gblDryD3VlYeoYHoaseUvq/8A32f8a86v7a+8/wATXmmr qtvfajLbXEL+ 
 Vc+X9i2WqTN5YKgTAJMNo2z4Hy4+U1nvaeIhp0ksF5rlyLXT9RubBlhurfM6 i2MKtHJI8knz 
 +dhZyd2WAUoFyWA9V8pfV/8Avs/40eUvq/8A32f8axvDsNzaS6xZSm7a0tr0 JZNdSPIxiMEL 
 nEjks48xpeSTjleigDcosAzyl9X/AO+z/jR5S+r/APfZ/wAafRRYBnlL6v8A 99n/ABo8pfV/ 
 ++z/AI0+iiwDPKX1f/vs/wCNHlL6v/32f8afRRYCKSNQo5b7w/iPqKhS5tZN RmsFlc3UMUc0 
 iZb5UcuFOenJjf8AL3FWJfuD/eX+YrjtTg1KHx1daikV22lx2VibhbZWEkuy W6PyEcuELKzx 
 LhmBHJ/1cpYDsfKX1f8A77P+NV3ubWPUYbBpXF1NFJNGmW+ZEKBjnpwZE/P2 NefWUmuRWGY4 
 dZlu20xk1v7Sbnal2zwqZIASNwRTdPttSA21QCCYzWfp3/CQC4nkMOpXsFvb 3trb3MtpdwMk 
 MhsCzgSOZ2Kk3DBd+9/LKoR8oUsB6z5S+r/99n/Gjyl9X/77P+Nct4BfUDpu oxX013NFDelL 
 SW6tbiBmiMUbHC3DNKR5jSDLM3QgYAAHWUWAZ5S+r/8AfZ/xo8pfV/8Avs/4 0+iiwDPKX1f/ 
 AL7P+NHlL6v/AN9n/Gn0UWAZ5S+r/wDfZ/xo8pfV/wDvs/40+iiwDPKX1f8A 77P+NVZLq1tW 
 sYZ5WSS8k8mBcsd7iNpCOOnyox5wOPpV2uQ8ZwRzReHHuItSe0h1HfO2nLOZ UX7LOoP7j94B 
 uZQSPXB4NFtQOs8pfV/++z/jR5S+r/8AfZ/xryq8h8Vyvb/6dqtrCIn/ALL2 2dzcSM32iby/ 
 M2Soobyfsv8Ax95UkndgiXJ4ouPEx1XU5NO/tWG4livYTa29teOqotrN5MiT bzAGZ0hYCNFc 
 M+0kkPuLAeq+Uvq//fZ/xo8pfV/++z/jUVja/YrOO3NxPcMuS0077ndiSST2 GSTwAFHQAAAC 
 xRYBnlL6v/32f8aPKX1f/vs/40+iiwDPKX1f/vs/40eUvq//AH2f8afRRYBn lL6v/wB9n/Gj 
 yl9X/wC+z/jT6KLAM8pfV/8Avs/40eUvq/8A32f8afRRYBnlL6v/AN9n/Gjy l9X/AO+z/jT6 
 KLAM8pfV/wDvs/40eUvq/wD32f8AGn0UWAZ5S+r/APfZ/wAaPKX1f/vs/wCN PoosBFLGoic5 
 b7p/iNO8pfV/++z/AI0S/wCpf/dNPosAzyl9X/77P+NHlL6v/wB9n/Gn0UWA Z5S+r/8AfZ/x 
 o8pfV/8Avs/40+iiwDPKX1f/AL7P+NHlL6v/AN9n/Gn0UWAZ5S+r/wDfZ/xo 8pfV/wDvs/40 
 +iiwHyl8VP8AkedT/wCvlv6UUfFT/kedT/6+W/pRX29P+FD/AAx/JHmR6+r/ ADPQPBoc/F3W 
 REyrIb7UNrMu4A7jgkZGR7ZFehnT9Xzzr0f/AILx/wDF1594J/5LDq3/AF/3 /wD6Ga9VP3j9 
 a+azr+PH/Cjqwfwy9WZX9n6v/wBB6P8A8F4/+LqfwnHKkerKZ1lYX7BpDFs3 Hy48nG44/P8A 
 wq7Vbwr/AMxn/sJP/wCgJXkw3Otm7iT++n/fJ/xoxJ/fT/vk/wCNPorSxIzE n99P++T/AI0Y 
 k/vp/wB8n/Gn0UWAZiT++n/fJ/xoxJ/fT/vk/wCNPoosAzEn99P++T/jRiT+ +n/fJ/xp9FFg 
 GYk/vp/3yf8AGjEn99P++T/jT6KLAMxJ/fT/AL5P+NGJP76f98n/ABp9FFgG Yk/vp/3yf8aM 
 Sf30/wC+T/jT6KLAMxJ/fT/vk/40Yk/vp/3yf8afRRYCKQSbRll+8P4fce9O xJ/fT/vk/wCN 
 Ev3B/vL/ADFPosAzEn99P++T/jRiT++n/fJ/xp9FFgGYk/vp/wB8n/GjEn99 P++T/jT6KLAM 
 xJ/fT/vk/wCNGJP76f8AfJ/xp9FFgGYk/vp/3yf8aMSf30/75P8AjT6KLAMx J/fT/vk/40Yk 
 /vp/3yf8afRRYBmJP76f98n/ABpsQk8pMMuNo/h/+vUtMi/1Kf7ootqAYk/v p/3yf8aMSf30 
 /wC+T/jT6KLAMxJ/fT/vk/40Yk/vp/3yf8afRRYBmJP76f8AfJ/xoxJ/fT/v k/40+iiwDMSf 
 30/75P8AjRiT++n/AHyf8afRRYBmJP76f98n/GjEn99P++T/AI0+iiwDMSf3 0/75P+NGJP76 
 f98n/Gn0UWAZiT++n/fJ/wAaMSf30/75P+NPoosAzEn99P8Avk/40Yk/vp/3 yf8AGn0UWAZi 
 T++n/fJ/xoxJ/fT/AL5P+NPoosBFKJPKfLLjaf4f/r07En99P++T/jRL/qX/ AN00+iwDMSf3 
 0/75P+NGJP76f98n/Gn0UWAZiT++n/fJ/wAaMSf30/75P+NPoosAzEn99P8A vk/40Yk/vp/3 
 yf8AGn0UWAZiT++n/fJ/xoxJ/fT/AL5P+NPoosB8pfFT/kedT/6+W/pRR8VP +R51P/r5b+lF 
 fb0/4UP8MfyR5kevq/zPQPBrFPi7rLrG0jLfagQi4y3zHgZIGfqRXoZvtYJz /wAI/J/4Fw// 
 ABVefeCf+Sxat/1/3/8A6Ga9VP3j9a+azr+PH/Cjqwfwy9WZX23WP+hfk/8A AuH/AOKqfwm0 
 3l6sZbdo5DfsWQOrbSY4+Mg4q7Vbwr/zGf8AsJP/AOgJXkw3Otm7vb/nk/5j /Gje3/PJ/wAx 
 /jT6K0JGb2/55P8AmP8AGje3/PJ/zH+NPooAZvb/AJ5P+Y/xo3t/zyf8x/jT 6KAGb2/55P8A 
 mP8AGje3/PJ/zH+NPooAZvb/AJ5P+Y/xo3t/zyf8x/jT6KAGb2/55P8AmP8A Gje3/PJ/zH+N 
 PooAZvb/AJ5P+Y/xo3t/zyf8x/jT6KAGb2/55P8AmP8AGje3/PJ/zH+NPooA ikdto/dsPmHp 
 6j3p29v+eT/mP8aJfuD/AHl/mKfQAze3/PJ/zH+NG9v+eT/mP8afRQAze3/P J/zH+NG9v+eT 
 /mP8afRQAze3/PJ/zH+NG9v+eT/mP8afRQAze3/PJ/zH+NG9v+eT/mP8afRQ Aze3/PJ/zH+N 
 G9v+eT/mP8afRQAze3/PJ/zH+NNidhEn7tj8o9P8alpkX+pT/dFHUA3t/wA8 n/Mf40b2/wCe 
 T/mP8afRQAze3/PJ/wAx/jRvb/nk/wCY/wAafRQAze3/ADyf8x/jRvb/AJ5P +Y/xp9FADN7f 
 88n/ADH+NG9v+eT/AJj/ABp9FADN7f8APJ/zH+NG9v8Ank/5j/Gn0UAM3t/z yf8AMf40b2/5 
 5P8AmP8AGn0UAM3t/wA8n/Mf40b2/wCeT/mP8afRQAze3/PJ/wAx/jRvb/nk /wCY/wAafRQA 
 ze3/ADyf8x/jRvb/AJ5P+Y/xp9FAEUrsYn/dsPlPp/jTt7f88n/Mf40S/wCp f/dNPoAZvb/n 
 k/5j/Gje3/PJ/wAx/jT6KAGb2/55P+Y/xo3t/wA8n/Mf40+igBm9v+eT/mP8 aN7f88n/ADH+ 
 NPooAZvb/nk/5j/Gje3/ADyf8x/jT6KAPlL4qf8AI86n/wBfL/0oo+Kn/I86 n/18t/Sivt6f 
 8KH+GP5I8yPX1f5noHg2RIfi7rMsrqkaX2oMzscBQGOST2Fd+fFOh5P/ABMo f1rgvBP/ACWH 
 Vv8Ar/v/AP0M16wZpcn9435181nX8eP+FHVg/hl6sxP+Ep0P/oJQ/rVjwhdQ Tw6rNFMjRyag 
 7KwPUbErT8+X/no351U8MO8jayzsWb+0XGSc8COMCvJhudbNvzY/+eif99Cj zY/+eif99Cn0 
 VoSM82P/AJ6J/wB9CjzY/wDnon/fQp9FADPNj/56J/30KPNj/wCeif8AfQp9 FADPNj/56J/3 
 0KPNj/56J/30KfRQAzzY/wDnon/fQo82P/non/fQp9FADPNj/wCeif8AfQo8 2P8A56J/30Kf 
 RQAzzY/+eif99CjzY/8Anon/AH0KfRQAzzY/+eif99CjzY/+eif99Cn0UARS SxlRh1+8O/uK 
 d5sf/PRP++hRL9wf7y/zFPoAZ5sf/PRP++hR5sf/AD0T/voU+igBnmx/89E/ 76FHmx/89E/7 
 6FPooAZ5sf8Az0T/AL6FHmx/89E/76FPooAZ5sf/AD0T/voUebH/AM9E/wC+ hT6KAGebH/z0 
 T/voUebH/wA9E/76FPooAZ5sf/PRP++hTYpYxEgLqDtHepaZF/qU/wB0UdQD zY/+eif99Cjz 
 Y/8Anon/AH0KfRQAzzY/+eif99CjzY/+eif99Cn0UAM82P8A56J/30KPNj/5 6J/30KfRQAzz 
 Y/8Anon/AH0KPNj/AOeif99Cn0UAM82P/non/fQo82P/AJ6J/wB9Cn0UAM82 P/non/fQo82P 
 /non/fQp9FADPNj/AOeif99CjzY/+eif99Cn0UAM82P/AJ6J/wB9CjzY/wDn on/fQp9FADPN 
 j/56J/30KPNj/wCeif8AfQp9FAEUssZicB1J2nvTvNj/AOeif99CiX/Uv/um n0AM82P/AJ6J 
 /wB9CjzY/wDnon/fQp9FADPNj/56J/30KPNj/wCeif8AfQp9FADPNj/56J/3 0KPNj/56J/30 
 KfRQAzzY/wDnon/fQo82P/non/fQp9FAHyl8VP8AkedT/wCvlv6UUfFT/ked T/6+W/pRX29P 
 +FD/AAx/JHmR6+r/ADPQvBP/ACWHVv8Ar/v/AP0M16qfvH615R4NjEvxd1mN iwV77UFJVip5 
 Y9COQfcV6GfDejg4+ySf+Bc3/wAXXzWdfx4/4UdWD+GXqzTqt4V/5jP/AGEn /wDQEqp/wjej 
 /wDPpJ/4Fzf/ABdT+E4IY49WjiRo40v2VVEjHAEcfckk15MNzrZ0lFM8pfV/ ++z/AI0eUvq/ 
 /fZ/xrQkfRTPKX1f/vs/40eUvq//AH2f8aAH0Uzyl9X/AO+z/jR5S+r/APfZ /wAaAH0Uzyl9 
 X/77P+NHlL6v/wB9n/GgB9FM8pfV/wDvs/40eUvq/wD32f8AGgB9FM8pfV/+ +z/jR5S+r/8A 
 fZ/xoAfRTPKX1f8A77P+NHlL6v8A99n/ABoAfRTPKX1f/vs/40eUvq//AH2f 8aACX7g/3l/m 
 KfUUkahRy33h/EfUU7yl9X/77P8AjQA+imeUvq//AH2f8aPKX1f/AL7P+NAD 6KZ5S+r/APfZ 
 /wAaPKX1f/vs/wCNAD6KZ5S+r/8AfZ/xo8pfV/8Avs/40APopnlL6v8A99n/ ABo8pfV/++z/ 
 AI0APopnlL6v/wB9n/Gjyl9X/wC+z/jQA+mRf6lP90UeUvq//fZ/xpsUamJD lvuj+I0dQJaK 
 Z5S+r/8AfZ/xo8pfV/8Avs/40APopnlL6v8A99n/ABo8pfV/++z/AI0APopn lL6v/wB9n/Gj 
 yl9X/wC+z/jQA+imeUvq/wD32f8AGjyl9X/77P8AjQA+imeUvq//AH2f8aPK X1f/AL7P+NAD 
 6KZ5S+r/APfZ/wAaPKX1f/vs/wCNAD6KZ5S+r/8AfZ/xo8pfV/8Avs/40APo pnlL6v8A99n/ 
 ABo8pfV/++z/AI0APopnlL6v/wB9n/Gjyl9X/wC+z/jQAS/6l/8AdNPqKWNR E5y33T/Ead5S 
 +r/99n/GgB9FM8pfV/8Avs/40eUvq/8A32f8aAH0Uzyl9X/77P8AjR5S+r/9 9n/GgB9FM8pf 
 V/8Avs/40eUvq/8A32f8aAH0Uzyl9X/77P8AjR5S+r/99n/GgD5V+Kn/ACPO p/8AXy39KKPi 
 p/yPOp/9fLf0or7en/Ch/hj+SPMj19X+Z01j4os/C3xJ1zULlfN8vUbxfKVg Cd0hHeuoPxo0 
 Un/kHXH/AH/X/CvF/Gv/ACPniH/sJ3P/AKNasKuephMPieWdWN3ZdSo88G1G XU+hD8aNF/6B 
 1x/3/T/Co9P+Mmh6d9p8nTrpvtE5nffOhwxAHGB0+UV8/wBFQsrwa+x+LH7S t/N+B9Gf8L20 
 n/oGTf8Af5f8KP8Ahe2k/wDQMm/7/L/hXznRT/s3Cfyfiw9pV/m/BH0Z/wAL 20n/AKBk3/f5 
 f8KP+F7aT/0DJv8Av8v+FfOdFH9m4T+T8WHtKv8AN+CPoz/he2k/9Ayb/v8A L/hR/wAL20n/ 
 AKBk3/f5f8K+c6KP7Nwn8n4sPaVf5vwR9Gf8L20n/oGTf9/l/wAKP+F7aT/0 DJv+/wAv+FfO 
 dFH9m4T+T8WHtKv834I+jP8Ahe2k/wDQMm/7/L/hR/wvbSf+gZN/3+X/AAr5 zoo/s3Cfyfiw 
 9pV/m/BH0Z/wvbSf+gZN/wB/l/wo/wCF7aT/ANAyb/v8v+FfOdFH9m4T+T8W HtKv834I+jP+ 
 F7aT/wBAyb/v8v8AhR/wvbSf+gZN/wB/l/wr5zoo/s3Cfyfiw9pV/m/BH0Z/ wvXSf+gZN/3+ 
 Wj/he2k/9Ayb/v8AL/hXznRR/ZuE/k/Fh7Sr/N+B9Ft8dNIYYOmT9Qf9cv8A hS/8L20n/oGT 
 f9/l/wAK+c6KP7Nwn8n4sPaVf5vwR9Gf8L20n/oGTf8Af5f8KP8Aheuk/wDQ Mm/7/LXznRR/ 
 ZuE/k/Fh7Sr/ADfgj6M/4XtpP/QMm/7/AC/4Uf8AC9tJ/wCgZN/3+X/CvnOi j+zcJ/J+LD2l 
 X+b8EfRn/C9dJ/6Bk3/f5aP+F7aT/wBAyb/v8v8AhXznRR/ZuE/k/Fh7Sr/N +CPoz/he2k/9 
 Ayb/AL/L/hR/wvbSf+gZN/3+X/CvnOij+zcJ/J+LD2lX+b8EfRn/AAvbSf8A oGTf9/l/wo/4 
 XtpP/QMm/wC/y/4V850Uf2bhP5PxYe0q/wA34H0Z/wAL20n/AKBk3/f5f8KR fjppCqFGmTYA 
 x/rl/wAK+dKKP7Nwn8n4sPaVf5vwR9Gf8L20n/oGTf8Af5f8KP8Ahe2k/wDQ Mm/7/L/hXznR 
 R/ZuE/k/Fh7Sr/N+CPoz/he2k/8AQMm/7/L/AIUf8L20n/oGTf8Af5f8K+c6 KP7Nwn8n4sPa 
 Vf5vwR9Gf8L20n/oGTf9/l/wo/4XtpP/AEDJv+/y/wCFfOdFH9m4T+T8WHtK v834H0Z/wvbS 
 f+gZN/3+X/Cj/he2k/8AQMm/7/L/AIV850Uf2bhP5PxYe0q/zfgfRn/C9tJ/ 6Bk3/f5f8KP+ 
 F7aT/wBAyb/v8v8AhXznRR/ZuE/k/Fh7Sr/N+CPoz/he2k/9Ayb/AL/L/hR/ wvbSf+gZN/3+ 
 X/CvnOij+zcJ/J+LD2lX+b8D6M/4XtpP/QMm/wC/y/4Uf8L20n/oGTf9/l/w r5zoo/s3Cfyf 
 iw9pV/m/BH0Z/wAL20n/AKBk3/f5f8KP+F7aT/0DJv8Av8v+FfOdFH9m4T+T 8WHtKv8AN+CP 
 oz/he2k/9Ayb/v8AL/hR/wAL20n/AKBk3/f5f8K+c6KP7Nwn8n4sPaVf5vwP otvjppDKVOmT 
 4Ix/rl/wpf8Ahe2k/wDQMm/7/L/hXznRR/ZuE/k/Fh7Sr/N+CPoz/he2k/8A QMm/7/L/AIUf 
 8L20n/oGTf8Af5f8K+c6KP7Nwn8n4sPaVf5vwR9Gf8L20n/oGTf9/l/wo/4X tpP/AEDJv+/y 
 /wCFfOdFH9m4T+T8WHtKv834H0Z/wvbSf+gZN/3+X/Cj/he2k/8AQMm/7/L/ AIV850Uf2bhP 
 5PxYe0q/zfgj6M/4XtpP/QMm/wC/y/4Uf8L20n/oGTf9/l/wr5zoo/s3Cfyf iw9pV/m/A6Xx 
vrEGveIbnUrdSqTyGQKxBK5xxxRXNUV26JJLZJL7iYqyP//Z 
--------------080806070908060205050505--
 |  
 |  
  |  
| Re: Are multiple lines in Grid possible? [message #35870 is a reply to message #35835] | 
Thu, 31 May 2007 10:33    | 
 
Eclipse User  | 
 | 
 | 
   | 
 
Hi Oliver, 
 
The screenshot on the Grid page is from the examples plugin.  You can  
download that to get a nice little UI that will allow you to manipulate  
the styles and options on the Grid. 
 
At this point, you should open a bug against Grid and start attaching  
patches so, like Tom said, others can take a look and contribute.  I  
would like to give it a quick look through as well. 
 
Regards, 
-Chris 
 
Oliver wrote: 
> Chris, 
>  
> thanks for your detailed answer! 
>  
> I have looked into this a little and have made a quick 
> first attempt (see screenshot). 
>  
> It seems to work so far. However, I guess that 
> issues will arise when testing it with more advanced features 
> of Grid (e.g. checkboxes).  Also, I have not yet examined 
> dynamic changes of heights of individual rows. 
>  
> What I have changed:  The item height specified in Grid 
> is now called _default_ item height (e.g. setDefaultItemHeight() 
> instead of setItemHeight()). Each GridItem now has a height 
> which may be -1 (the default) to indicate that the parent 
> Grid's default item height should be used for this GridItem. 
> This way, nothing changes from a client perspective when 
> all items should have the same height. On the other hand, 
> specifying an individual height for an item is easy: 
>  
> item3.setHeight(50); 
>  
> Currently, the height of individual items is only set 
> programmatically through GridItem.setHeight(int), i.e. 
> the preferred height from the cell renderer is currently 
> not used for that. 
>  
> If you could provide me with an example that uses most 
> of Grid's features (like the one shown in the screenshot 
> on the Grid home page), this would help me a lot in testing 
> my changes ... 
>  
> Cheers, 
> Oliver 
>  
>  
>  
> Chris Gross schrieb: 
>> Unfortunately I don't have any existing code for this feature.  I've  
>> just been thinking about it but not actually coding it.  The code  
>> changes necessary for this feature wouldn't be particularly easy.  I  
>> suspect there will be a variety of places in the Grid code where I  
>> multiply the row height by a number of rows to determine some  
>> dimensions.  Like: 
>> 
>> getRowCount() * getItemHeight() = total height of all rows 
>> 
>> Those places would have to be changed to iterate through all the rows  
>> because each row would now potentially have a different height.  That  
>> could also be a performance concern.  Other parts of the code will  
>> likely rely on getItem(Point) to determine what row is where so that  
>> may help this change somewhat.  But I still think its not an easy  
>> piece for someone to code as a patch. 
>> 
>> Regards, 
>> -Chris 
>  
>  
>  ------------------------------------------------------------ ------------ 
>
 |  
 |  
  |   |  
| Re: Are multiple lines in Grid possible? [message #578952 is a reply to message #29518] | 
Mon, 26 February 2007 09:20   | 
 
Eclipse User  | 
 | 
 | 
   | 
 
Hi Lionel, 
 
This isn't possible with the default cell renderers.  If you create your  
own cell renderer it is possible. 
 
Regards, 
-Chris 
 
Lionel van den Berg wrote: 
> Just wondering if it is possible to have more than one line in a Grid cell? 
>  
> E.g. this is one row 
>  
> entry1 | entry2 | entry3 
>       |        | over multiple 
>       |        | lines 
> row2   | row2   | row2 
>
 |  
 |  
  |  
| Re: Are multiple lines in Grid possible? [message #582707 is a reply to message #29578] | 
Wed, 30 May 2007 04:35   | 
 
Eclipse User  | 
 | 
 | 
   | 
 
Hi Chris, 
 
when creating a custom cell render, can the rows have different heights 
then ?  For example, row no. 5 has a height of 3 lines while the others 
still only have a height of 1 line ... 
 
Thanks a lot in advance, 
Oliver 
 
 
 
Chris Gross schrieb: 
> Hi Lionel, 
>  
> This isn't possible with the default cell renderers.  If you create your  
> own cell renderer it is possible. 
>  
> Regards, 
> -Chris 
>  
> Lionel van den Berg wrote: 
>> Just wondering if it is possible to have more than one line in a Grid  
>> cell? 
>> 
>> E.g. this is one row 
>> 
>> entry1 | entry2 | entry3 
>>       |        | over multiple 
>>       |        | lines 
>> row2   | row2   | row2 
>>
 |  
 |  
  |  
| Re: Are multiple lines in Grid possible? [message #582745 is a reply to message #35632] | 
Wed, 30 May 2007 09:57   | 
 
Eclipse User  | 
 | 
 | 
   | 
 
Hi Oliver, 
 
If you write your own cell renderer you can put multiple lines in each  
row - but you can't vary the row height for different rows.  That  
support would need to be built into the Grid.  I have contemplated that  
feature and will likely add it to Grid sometime - but not likely very soon. 
 
Regards, 
-Chris 
 
Oliver wrote: 
> Hi Chris, 
>  
> when creating a custom cell render, can the rows have different heights 
> then ?  For example, row no. 5 has a height of 3 lines while the others 
> still only have a height of 1 line ... 
>  
> Thanks a lot in advance, 
> Oliver 
>  
>  
>  
> Chris Gross schrieb: 
>> Hi Lionel, 
>> 
>> This isn't possible with the default cell renderers.  If you create  
>> your own cell renderer it is possible. 
>> 
>> Regards, 
>> -Chris 
>> 
>> Lionel van den Berg wrote: 
>>> Just wondering if it is possible to have more than one line in a Grid  
>>> cell? 
>>> 
>>> E.g. this is one row 
>>> 
>>> entry1 | entry2 | entry3 
>>>       |        | over multiple 
>>>       |        | lines 
>>> row2   | row2   | row2 
>>>
 |  
 |  
  |  
| Re: Are multiple lines in Grid possible? [message #582761 is a reply to message #35700] | 
Wed, 30 May 2007 12:06   | 
 
Eclipse User  | 
 | 
 | 
   | 
 
Many thanks for your answer!  However, I would have preferred 
a positive response ...  :-) 
 
What is your estimate of the effort for implementing this? 
Possibly I could make some time for doing this if it's not 
too intricate (not sure yet). 
Can you give some brief indications where I would have 
to start / what the major steps would be ... ? 
 
Greetings, 
Oliver 
 
 
Chris Gross schrieb: 
> Hi Oliver, 
>  
> If you write your own cell renderer you can put multiple lines in each  
> row - but you can't vary the row height for different rows.  That  
> support would need to be built into the Grid.  I have contemplated that  
> feature and will likely add it to Grid sometime - but not likely very soon. 
>  
> Regards, 
> -Chris 
>  
> Oliver wrote: 
>> Hi Chris, 
>> 
>> when creating a custom cell render, can the rows have different heights 
>> then ?  For example, row no. 5 has a height of 3 lines while the others 
>> still only have a height of 1 line ... 
>> 
>> Thanks a lot in advance, 
>> Oliver 
>> 
>> 
>> 
>> Chris Gross schrieb: 
>>> Hi Lionel, 
>>> 
>>> This isn't possible with the default cell renderers.  If you create  
>>> your own cell renderer it is possible. 
>>> 
>>> Regards, 
>>> -Chris 
>>> 
>>> Lionel van den Berg wrote: 
>>>> Just wondering if it is possible to have more than one line in a  
>>>> Grid cell? 
>>>> 
>>>> E.g. this is one row 
>>>> 
>>>> entry1 | entry2 | entry3 
>>>>       |        | over multiple 
>>>>       |        | lines 
>>>> row2   | row2   | row2 
>>>>
 |  
 |  
  |  
| Re: Are multiple lines in Grid possible? [message #582776 is a reply to message #35734] | 
Wed, 30 May 2007 12:16   | 
 
Eclipse User  | 
 | 
 | 
   | 
 
Hi, 
 
Would it make sense to open a bug report and attach the code from Chris  
as a starting point so others could start from there and maybe implement  
this for Chris? 
 
Tom 
 
Oliver schrieb: 
> Many thanks for your answer!  However, I would have preferred 
> a positive response ...  :-) 
>  
> What is your estimate of the effort for implementing this? 
> Possibly I could make some time for doing this if it's not 
> too intricate (not sure yet). 
> Can you give some brief indications where I would have 
> to start / what the major steps would be ... ? 
>  
> Greetings, 
> Oliver 
>  
>  
> Chris Gross schrieb: 
>> Hi Oliver, 
>> 
>> If you write your own cell renderer you can put multiple lines in each  
>> row - but you can't vary the row height for different rows.  That  
>> support would need to be built into the Grid.  I have contemplated  
>> that feature and will likely add it to Grid sometime - but not likely  
>> very soon. 
>> 
>> Regards, 
>> -Chris 
>> 
>> Oliver wrote: 
>>> Hi Chris, 
>>> 
>>> when creating a custom cell render, can the rows have different heights 
>>> then ?  For example, row no. 5 has a height of 3 lines while the others 
>>> still only have a height of 1 line ... 
>>> 
>>> Thanks a lot in advance, 
>>> Oliver 
>>> 
>>> 
>>> 
>>> Chris Gross schrieb: 
>>>> Hi Lionel, 
>>>> 
>>>> This isn't possible with the default cell renderers.  If you create  
>>>> your own cell renderer it is possible. 
>>>> 
>>>> Regards, 
>>>> -Chris 
>>>> 
>>>> Lionel van den Berg wrote: 
>>>>> Just wondering if it is possible to have more than one line in a  
>>>>> Grid cell? 
>>>>> 
>>>>> E.g. this is one row 
>>>>> 
>>>>> entry1 | entry2 | entry3 
>>>>>       |        | over multiple 
>>>>>       |        | lines 
>>>>> row2   | row2   | row2 
>>>>>
 |  
 |  
  |  
| Re: Are multiple lines in Grid possible? [message #582788 is a reply to message #35767] | 
Wed, 30 May 2007 17:44   | 
 
Eclipse User  | 
 | 
 | 
   | 
 
Unfortunately I don't have any existing code for this feature.  I've  
just been thinking about it but not actually coding it.  The code  
changes necessary for this feature wouldn't be particularly easy.  I  
suspect there will be a variety of places in the Grid code where I  
multiply the row height by a number of rows to determine some  
dimensions.  Like: 
 
getRowCount() * getItemHeight() = total height of all rows 
 
Those places would have to be changed to iterate through all the rows  
because each row would now potentially have a different height.  That  
could also be a performance concern.  Other parts of the code will  
likely rely on getItem(Point) to determine what row is where so that may  
help this change somewhat.  But I still think its not an easy piece for  
someone to code as a patch. 
 
Regards, 
-Chris 
 
Tom Schindl wrote: 
> Hi, 
>  
> Would it make sense to open a bug report and attach the code from Chris  
> as a starting point so others could start from there and maybe implement  
> this for Chris? 
>  
> Tom 
>  
> Oliver schrieb: 
>> Many thanks for your answer!  However, I would have preferred 
>> a positive response ...  :-) 
>> 
>> What is your estimate of the effort for implementing this? 
>> Possibly I could make some time for doing this if it's not 
>> too intricate (not sure yet). 
>> Can you give some brief indications where I would have 
>> to start / what the major steps would be ... ? 
>> 
>> Greetings, 
>> Oliver 
>> 
>> 
>> Chris Gross schrieb: 
>>> Hi Oliver, 
>>> 
>>> If you write your own cell renderer you can put multiple lines in  
>>> each row - but you can't vary the row height for different rows.   
>>> That support would need to be built into the Grid.  I have  
>>> contemplated that feature and will likely add it to Grid sometime -  
>>> but not likely very soon. 
>>> 
>>> Regards, 
>>> -Chris 
>>> 
>>> Oliver wrote: 
>>>> Hi Chris, 
>>>> 
>>>> when creating a custom cell render, can the rows have different heights 
>>>> then ?  For example, row no. 5 has a height of 3 lines while the others 
>>>> still only have a height of 1 line ... 
>>>> 
>>>> Thanks a lot in advance, 
>>>> Oliver 
>>>> 
>>>> 
>>>> 
>>>> Chris Gross schrieb: 
>>>>> Hi Lionel, 
>>>>> 
>>>>> This isn't possible with the default cell renderers.  If you create  
>>>>> your own cell renderer it is possible. 
>>>>> 
>>>>> Regards, 
>>>>> -Chris 
>>>>> 
>>>>> Lionel van den Berg wrote: 
>>>>>> Just wondering if it is possible to have more than one line in a  
>>>>>> Grid cell? 
>>>>>> 
>>>>>> E.g. this is one row 
>>>>>> 
>>>>>> entry1 | entry2 | entry3 
>>>>>>       |        | over multiple 
>>>>>>       |        | lines 
>>>>>> row2   | row2   | row2 
>>>>>>
 |  
 |  
  |  
| Re: Are multiple lines in Grid possible? [message #582798 is a reply to message #35801] | 
Thu, 31 May 2007 08:01   | 
 
Eclipse User  | 
 | 
 | 
   | 
 
This is a multi-part message in MIME format. 
--------------080806070908060205050505 
Content-Type: text/plain; charset=ISO-8859-15; format=flowed 
Content-Transfer-Encoding: 7bit 
 
Chris, 
 
thanks for your detailed answer! 
 
I have looked into this a little and have made a quick 
first attempt (see screenshot). 
 
It seems to work so far. However, I guess that 
issues will arise when testing it with more advanced features 
of Grid (e.g. checkboxes).  Also, I have not yet examined 
dynamic changes of heights of individual rows. 
 
What I have changed:  The item height specified in Grid 
is now called _default_ item height (e.g. setDefaultItemHeight() 
instead of setItemHeight()). Each GridItem now has a height 
which may be -1 (the default) to indicate that the parent 
Grid's default item height should be used for this GridItem. 
This way, nothing changes from a client perspective when 
all items should have the same height. On the other hand, 
specifying an individual height for an item is easy: 
 
item3.setHeight(50); 
 
Currently, the height of individual items is only set 
programmatically through GridItem.setHeight(int), i.e. 
the preferred height from the cell renderer is currently 
not used for that. 
 
If you could provide me with an example that uses most 
of Grid's features (like the one shown in the screenshot 
on the Grid home page), this would help me a lot in testing 
my changes ... 
 
Cheers, 
Oliver 
 
 
 
Chris Gross schrieb: 
> Unfortunately I don't have any existing code for this feature.  I've  
> just been thinking about it but not actually coding it.  The code  
> changes necessary for this feature wouldn't be particularly easy.  I  
> suspect there will be a variety of places in the Grid code where I  
> multiply the row height by a number of rows to determine some  
> dimensions.  Like: 
>  
> getRowCount() * getItemHeight() = total height of all rows 
>  
> Those places would have to be changed to iterate through all the rows  
> because each row would now potentially have a different height.  That  
> could also be a performance concern.  Other parts of the code will  
> likely rely on getItem(Point) to determine what row is where so that may  
> help this change somewhat.  But I still think its not an easy piece for  
> someone to code as a patch. 
>  
> Regards, 
> -Chris 
 
 
--------------080806070908060205050505 
Content-Type: image/jpeg; 
 name="gridShot.JPG" 
Content-Transfer-Encoding: base64 
Content-Disposition: inline; 
 filename="gridShot.JPG" 
 
 /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsL DBkSEw8UHRof 
 Hh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwL DBgNDRgyIRwh 
 MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjL/wAAR 
 CAE5AfYDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcI CQoL/8QAtRAA 
 AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS 0fAkM2JyggkK 
 FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1 dnd4eXqDhIWG 
 h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW 19jZ2uHi4+Tl 
 5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcI CQoL/8QAtREA 
 AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMz UvAVYnLRChYk 
 NOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0 dXZ3eHl6goOE 
 hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU 1dbX2Nna4uPk 
 5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwB3xA8Z3eseJL/TI5pE02zl Nv8AZ/uiRlID 
 M4Bw3zLxnoAOAc1zMVxEoybS3P1jFWZbJNQ+KGoWUjMsdzrksTMvUBpyDjP1 r1b/AIVFpX/Q 
 Qu/++U/wr7P63h8BShTkrXV9D52rhq2IqylDWz7nk/2+MDH2S2/79CmHUov+ fS2/79Cu58ce 
 AtP8OeGzfW08skvnonzgdD16fSvM2Fd2ExNLFQ56a02OOrh50Zcs9zS/tKL/ AJ87b/v0KP7S 
 i/587b/v0KzKK6uVGfKaf9pRf8+dt/36FH9pRf8APnbf9+hWZRRyoOU0/wC0 ov8Anztv+/Qo 
 /tKL/nztv+/QrMoo5UHKaf8AaUX/AD523/foUf2lF/z523/foVmUUcqDlNP+ 0ov+fO2/79Cj 
 +0ov+fO2/wC/QrMoo5UHKaf9pRf8+dt/36FH9pRf8+dt/wB+hWZRRyoOU0/7 Si/587b/AL9C 
 j+0ov+fO2/79CsyijlQcpp/2lF/z523/AH6FH9pRf8+dt/36FZlFHKg5TT/t KL/nztv+/Qo/ 
 tKL/AJ87b/v0KzKKOVBymn/acX/Pnbf9+hR/acX/AD523/foVmYoxRyoOU0/ 7Ti/587b/v0K 
 P7Ti/wCfO2/79CszFGKOVBymn/acX/Pnbf8AfoUf2nF/z523/foVmYoxRyoO U0/7Ti/587b/ 
 AL9Cj+04v+fO2/79CszFGKOVBymn/acX/Pnbf9+hR/acX/Pnbf8AfoVmYoxR yoOU0/7Ti/58 
 7b/v0KP7Ti/587b/AL9CszFGKOVBymn/AGnF/wA+dt/36FH9pxf8+dt/36FZ mKMUcqDlNP8A 
 tOL/AJ87b/v0KP7Ti/587b/v0KzMUYo5UHKaf9pxf8+dt/36FH9pxf8APnbf 9+hWZijFHKg5 
 TS/tOL/n0tf+/Qo/tKL/AJ9LX/v0KzMe1GPajlQ+U0/7Si/59LX/AL9Cj+0o v+fS1/79CszH 
 tRj2o5UHKaf9pRf8+lr/AN+hR/aUX/Ppa/8AfoVmY9qMe1HKg5TT/tKL/n0t f+/Qo/tKL/n0 
 tf8Av0KzMe1GPajlQcpp/wBpRf8APpa/9+hR/aUX/Ppa/wDfoVmY9qMe1HKg 5TT/ALSi/wCf 
 S1/79Cj+0ov+fS1/79CszHtRj2o5UHKaf9pRf8+lr/36FWbKSXUbpba00+2l lYE4EagADqST 
 wB7msPHtXUeCpPJuNVkHGLJf/SiGsqz5IOSWpdKmpSSbJzompKcGz0cfW9tv /jlNOkX4622i 
 j631r/8AHK0r++ZmLADn2rCubt5QysBjHpXPTnWkru33P/M6ZYelHq/v/wCA OtrW9u76azi0 
 q3E8P+tEiLGI+3zMxAH4mrZ0TUR1tNHH1vbb/wCOVs6fP9mS8kHePSgc9/8A Q3roZLbwnHDD 
 /aOq3cFy8MckiIhIBZQ3GEPr61yzx1SLVo9tk30T6PzNIYKDWr79bdTg/wCy NQzgWekOx6Il 
 3bMzH0AD5J9hzVSws7/VTN9k0u1IiO2RpRHEqn0y5Azx061ueMrbRYtNtrnR L24uopWlSRpR 
 jayBDgfKp/jrZhuPs8urAYwdcvxj/v1WONzOph8K66ir+aa621V/8jowWWU8 RiVR5n9/lc5I 
 +H9YHXT9I/8AAy2/+OVWudE1aGB5P7O05wilisFzBI5A64VXLH14FejXOgz6 gbWfRHFza3B2 
 M0mA0Dgch/Qd8/hzkZxJksIvGOlW9hdNdRR3lurzFQFd/MG7bj+H/PI5Pgf6 04uMlzQja/n+ 
 Gp78eGcJKL5Zyuk36W76GH4M+LP/AAjMkttrBu7rTDGPJjjxI8LjAAXcwwm0 HjPBAwBk0V5X 
 qQwBx3FFfQYzAUJ1nKUdfLQ8jD1JRppJnokl3Hp/xM1C+lV2jttblmdUALEL OSQM4GeK9SHx 
 f0Q9NM1f/v3F/wDHK8n1DT9Q1Lxvr0GnWr3Mx1K6IRCMkCVs8fiKuJ4T8WKO dAvP++a1xWGw 
 deMPbzs0l1SOFVcTSnP2UbpvsdT428e6d4n0AadaWOoRSmdJN06RhcDPo5P6 V52YDnpW7/wi 
 viv/AKF+8/75FIfCfis/8y/ef98iujBvBYSHs6dRW31aOWusVXlzSh+BheR7 UeR7Vuf8Il4r 
 /wCgBef980f8Il4r/wCgBef9811/XcL/AM/I/ejH6tiP5WYfke1Hke1bn/CJ eK/+gBef980f 
 8Il4r/6AF5/3zR9dwv8Az8j96D6tiP5WYfke1Hke1bn/AAiXiv8A6AF5/wB8 0f8ACJeK/wDo 
 AXn/AHzR9dwv/PyP3oPq2I/lZh+R7UeR7Vuf8Il4r/6AF5/3zR/wiXiv/oAX n/fNH13C/wDP 
 yP3oPq2I/lZh+R7UeR7Vuf8ACJeK/wDoAXn/AHzR/wAIl4r/AOgBef8AfNH1 3C/8/I/eg+rY 
 j+VmH5HtR5HtW5/wiXiv/oAXn/fNH/CJeK/+gBef980fXcL/AM/I/eg+rYj+ VmH5HtR5HtW5 
 /wAIl4r/AOgBef8AfNH/AAiXiv8A6AF5/wB80fXcL/z8j96D6tiP5WYfke1H ke1bn/CJeK/+ 
 gBef980f8Il4r/6AF5/3zR9dwv8Az8j96D6tiP5WYfke1Hke1bn/AAiXiv8A 6AF5/wB80f8A 
 CJeK/wDoAXn/AHzR9dwv/PyP3oPq2I/lZheQaPINbn/CJeK/+hfvP++RR/wi Xiv/AKF+8/75 
 FP67hf8An5H70H1fEfysw/INHkGtz/hEvFf/AEL95/3yKP8AhEvFf/Qv3n/f Io+u4X/n5H70 
 H1fEfysw/INHkGtz/hEvFf8A0L95/wB8ij/hEvFf/Qv3n/fIo+u4X/n5H70H 1fEfysw/INHk 
 Gtz/AIRLxX/0L95/3yKP+ES8V/8AQv3n/fIo+u4X/n5H70H1fEfysw/INHkG tz/hEvFf/Qv3 
 n/fIo/4RLxX/ANC/ef8AfIo+u4X/AJ+R+9B9XxH8rMPyDR5Brc/4RLxX/wBC /ef98ij/AIRL 
 xX/0L95/3yKPruF/5+R+9B9XxH8rMPyDR5Brc/4RLxX/ANC/ef8AfIo/4RLx X/0L95/3yKPr 
 uF/5+R+9B9XxH8rMPyDR5Brc/wCES8V/9C/ef98ij/hEvFf/AEL95/3yKPru F/5+R+9B9XxH 
 8rMPyDR5Brc/4RLxX/0L95/3yKP+ES8V/wDQv3n/AHyKPruF/wCfkfvQfV8R /KzC8k+lHkn0 
 rd/4RLxX/wBC/ef98ij/AIRLxZ/0L95/3yKPruF/5+R+9D+rYj+VmF5J9KPJ PpW7/wAIl4s/ 
 6F+8/wC+RR/wiXiz/oX7z/vkUfXcL/z8j96D6tiP5WYXkn0o8k+lbv8AwiXi z/oX7z/vkUf8 
 Il4s/wChfvP++RR9dwv/AD8j96D6tiP5WYXkn0o8k+lbv/CJeLP+hfvP++RR /wAIl4s/6F+8 
 /wC+RR9dwv8Az8j96D6tiP5WYXkn0o8k+lbv/CJeLP8AoX7z/vkUf8Il4s/6 F+8/75FH13C/ 
 8/I/eg+rYj+VmF5J9KPJPpW7/wAIl4s/6F+8/wC+RR/wiXiz/oX7z/vkUfXc L/z8j96D6tiP 
 5WYXkn0ra0D/AEe11qQ8Ysk/9KYaf/wiXiz/AKF+8/75FWLPw94us5XYeG7i WORDHLFKuVkU 
 4ODgg9QDkEEEAg1lWxeGlCyqR6dV0ZdKhXjNNxZ0ulxeD7nS4ZNU1a6gvGz5 kcakgcnGPkPb 
 HeuO1hrSG8uRZyGS2WRhE7dWTJwTwOcY7Vq/2Frg/wCafR/9/bn/AOPU1vD+ tN1+HsR/7a3P 
 /wAerho1qVOblz3v0co2XpqdlWnOoklG1vJk08vk6VNKeAy6T/6RPVu//s/U XinGsWcX+jwo 
 UkSbcrLGqkHEZHUHoazxpPjF5Z2ufDElzDOFD28iFU+UYTbsKldo4GCOOOlL /YWuf9E/j/7+ 
 3P8A8eqeejFr31dJbSj2S6+hSU2mnF9ej7vt6lLxDNaW3h+2s4L6C6kSeeVz CrgKGWID76rz 
 8h6Vv6jKIJ77Jxu13UP/AGjWZ/YOuhg6fD+FXU5Vi1w4B9drSlT9CCKIdK8Z ATC78MS36yym 
 ci5DjEh6sCjKcnvzg4HHArizOlDF4R0qdSKfnJa636HZldd4TFxrVItrXZeV up13/CTafo0c 
 VppMMd1bsAbySdMG5yMFMHooyfx9ed2BI2lp410g6RLI1rLe2z7JFwYiZFym e+PX+fU0/wCy 
 fEeP+RBh/wC/lz/8epP7K8VxOJbPwTHa3K8xzoZmaM+qh5GXPoccdRzXy7yP ETkuapTsn/Ns 
 fTxzvCQjLlhO7TW2/rqeW6rGFVT70VY8R2tzY3BtLyEw3EbYeNjypx0or9Cr yjKd46p2PkaC 
 fJqes+Dv+St6z/1+6h/6Ea9Xryjwd/yVvWf+v3UP/QjXq9fH51/Hj/hR34P4 ZerCqunOyTap 
 tYj/AEwdP+uEVWqp2H+u1P8A6/R/6IiryEdZoefL/wA9G/Ojz5f+ejfnUdFF 2BJ58v8Az0b8 
 6PPl/wCejfnUdFF2BJ58v/PRvzo8+X/no351HRRdgSefL/z0b86PPl/56N+d R0UXYEnny/8A 
 PRvzo8+X/no351HRRdgSefL/AM9G/Ojz5f8Ano351HRRdgSefL/z0b86PPl/ 56N+dR0UXYEn 
 ny/89G/Ojz5f+ejfnUdFF2Bl+IZ5Tb2K+Y21r+3BGeo3g8/kKu3l5b6faPc3 MmyJMZIBYkk4 
 CqByzEkAKASSQACTWf4g/wBTYf8AYQt//QxS65Z3E7ade20fnS6ddG5FuCFM wMUkRVWPAbEh 
 IzwSoBKg7gDLen6jBqdu01ul0iK2wi5tZYGzgHhZFUkc9cY/Ki01CK9ub+3j Vw9lOIJCwGCx 
 jSTI56YkX05Brm9WguNZuLK8v/Ct1d2UKzRPplybWRjIxiKTBTKY8KFlXO7c N/AwSazdE0TX 
 9A1NNSvLObVJUiNvIbeeNpJma2slMuZWXK77aUHJDZKnBBJBYR6DRXmfh/wN PFBpw1TRbV38 
 +3jvPNEUm+3TTUj2NydyC4RTt5+ZQwHANT6P4T1KHTxf3unofEH2zTX+2OyN ceUkVqlx+9zn 
 HyTgjPzAt13clgO31LWLPSvKFyZmklzsit7eSeRgMZbZGrNtGVBbGAWUE8jN qCZbi3jmQOEk 
 UOokRkYAjPKsAQfYgEVz+s2eo2+qXWoWEd7L9stYbZvsBgE8BieRwwE/7tlY SspzyMDAO4lc 
 Ky8NavNo+pXmqWnmaxdS2TzqZEPnxJFa/aYlAOweYYpUI+VXwoY7QCCwHoNF cLp2l6jpGqrq 
 1toMy2P+kRQaVbvAslski238O8RBS8ErEK55lU4yW24XhfQLmOQ2v9heXq9l dackmq/uf9HW 
 K1tDLDvDeZ8yrIuFBU+ZgnBYgsB6vRRRSGFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFAB 
 RRRQAUUUUAFFFFAFDXP+Rf1L/r1l/wDQDV+qGuf8i/qX/XrL/wCgGr9ABRRR QAUUUUAFFFFA 
 BRRRQB80/FT/AJHnVP8Ar5aij4qf8jzqf/Xy39KK++p/wof4Y/kjyY9fV/md /wCDv+St6z/1 
 +6h/6Ea9Xryjwd/yVvWv+v3UP/QjXq9fM51/Hj/hR1YP4ZerCqdh/rtT/wCv 0f8AoiKrlU7D 
 /Xan/wBfo/8AREVeQjrLlFc3pVqNZubjUL+4vVvLW/mhFvFeSwxxJHIfLDRK wDbk2SHeDuEn 
 9wqBz17r+oahpuhteC1MOrtY6jbpDGyNbKLy0/duxYiQ4nHzAJ9w8fNwWA9F orhbjxfqx0jw 
 3NbpZJc6vYQzu0kTukckk9pHwocEqBcucZzwvPXMc3i7W4liiH9nma6ne2hf 7O+2Jor2G0kZ 
 l8zLhjKXABXbjaS/3qLAd9RWTod/d3Taja3xhe5sLoW7zQRmNJcxRyghCzFc CULjcc7c8ZwI 
 PCL3D6C4ubua7ljv72IzTkF3CXUqjOAB0AGAABjAAHFIZu0UUUAFFFFABRRR QAUUUUAFFFFA 
 GR4hjMsNhGHZC+oW671xlcuORkEZ+oq4dPkB/wCQtqP5Qf8Axqq2t/8AMM/7 CVv/AOhiovEc 
 8qf2dbLK8FteXot7qeNijRoUcgB/4C7rHHnr+8wpDFSH0EXfsEn/AEFtR/KD /wCNUfYJP+gt 
 qP5Qf/Gqx5Y7rTL+00TRbjy5LqKe7a41KSa9wIzEhQBpQwz5oP3sDaeDuyMX wZ4il1TxDcss 
 CRQ6op1BkJLNGwtNP2qG4BGJmzxzgdKYHZfYJP8AoLaj+UH/AMao+wSf9BbU fyg/+NVxWjeL 
 fEGsxWTrJpkH22WC2jBtJH8qRrFLtnP70bl++gXgjIO44IM+meL9W1G2GsbL KPTTdWNv9j8p 
 zN/pMduc+dvx8rXHTy+QmOM5BqB132CT/oLaj+UH/wAao+wSf9BbUfyg/wDj VY/iC3e/v47W 
 xvb1NT8oNF5NwyQ2Yyf38qqQJMkYWN9wcpgBV8xh0lK4FP7BJ/0FtR/KD/41 R9gk/wCgtqP5 
 Qf8AxqrlFFwKf2CT/oLaj+UH/wAao+wSf9BbUfyg/wDjVXKKLgZ9xayQW0s3 9q6i2xC2P3Az 
 gZ/55VHp9tcXOl2VzLq1/wCZPbxysEWAAFlBOP3fTmrl/wD8g66/65P/ACNZ slzd2XgNLuwg 
 8+8g0lZIIdhbzJFhyq7RyckAYHNMC99gk/6C2o/lB/8AGqPsEn/QW1H8oP8A 41WHPHBoulrq 
 +n3t1f3F41vBHcXN9LPCxnljQSiMN5eMuGwgUEfKpUHjCvNf1C28X2iXAtZb uyZ9PkljjZI5 
 Vmn00lghYlSFnx948rnodoAO5+wSf9BbUfyg/wDjVH2CT/oLaj+UH/xquR1j xfq1lq+rQ26W 
 X2bS4rm5dZInZ5o4YLSTYGDgIzG4cbsMBhflPOZ4tb8QXXiA6DDc6ZFc2/n+ fdPZSOkuxLV1 
 2xiYFOLrByzZ2Z4zgGoHT/YJP+gtqP5Qf/GqPsEn/QW1H8oP/jVZX2pfEfhX S7syPaSajAk8 
 Vsl60BldojIIvNUbwB1JTBwh4K7lNjwrPLPoEfnyvJLFPcQMXYsV8uZ027jy 4XbtDthmADMA 
 SRSAu/YJP+gtqP5Qf/GqPsEn/QW1H8oP/jVXKKLgU/sEn/QW1H8oP/jVH2CT /oLaj+UH/wAa 
 q5RRcCn9gk/6C2o/lB/8ao+wSf8AQW1H8oP/AI1Vyii4FP7BJ/0FtR/KD/41 R9gk/wCgtqP5 
 Qf8AxqrlFFwKf2CT/oLaj+UH/wAao+wSf9BbUfyg/wDjVXKKLgU/sEn/AEFt R/KD/wCNUfYJ 
 P+gtqP5Qf/GquUUXAwfEFvJb+H7+Q6lfyAQsNjeSAcjHOI8457Y/Ct6sjxT/ AMixqH/XL+or 
 XoGFFFFIAooooAKKKKACiiigD5p+Kn/I86n/ANfLf0oo+Kn/ACPOp/8AXy39 KK++p/wof4Y/ 
 kjyY9fV/md94QLD4s62URpGF7qGEXGWO48DJA/M16Z9qvP8AoD3n/f2D/wCO V5v4J/5LDq3/ 
 AF/3/wD6Ga7/AMU6ld6P4Y1XU7GKGW5tLaSdEnYqh2gk5wMngE44z0yM5HzW dfx4/wCFHVg/ 
 hl6ss/arz/oD3n/f2D/45VCzvNRabUfsuizz/wCmfP8Av4V2HyYhj75yeO3t 3yBt1naLK8Gn 
 eIpYztdLyZlOM4IiQivIjZnWyhc6bNe38N/d+CYJ7yDb5VxK9u0ke05G1icj BJIx3oi02aCS 
 4kh8EwRyXMqzTsj24MsituV2IPzMG+YE8g81oza0gmubWG61r7TEsmGl0qRI SyAn/WmEIRxw 
 d2DxgnIqjr/iXVLPxVNpdpPHBBFZQXG4aHdagzM7zKQfIcBABEMZHOT6VfIh XII9HMV5LeR+ 
 BLVLqZt8kym2Du28PktnJO9VbPqAeoqwbS7YoW8HISjM6ky2/wArNIJGI54J dVcnuyg9RU9t 
 46sfOv4bmO7xYpcXFzcrbbYoYI5riPcxDMSQbcjA+ZshgoG4IQeLry71nRoI dDuxaajbzzZM 
 tu7BFa3CzBkmKGLEzZwSxwMDHU5EFwjbVonlePww6PM2+RluIQXbAXJ+bk4V Rn0AHaoNPtLv 
 SbdrfTfByWULNvaO2lt41LYAyQpAzgDn2p/i/wAQ6xoV5K1k9ibWLRL7UDHN buzmSAJtG4SA 
 BSZVyNufkIz82VNW+I2k6DLBDq8E9jcPF580E89ur28W5lDEeb+8zsY7YvMb jkAlQTkQXJ/t 
 Ouf9C7N/4FQ//FUfadc/6F2b/wACof8A4qmSePrKI3DS6ZqSQQPclpyIipht 5DHcTACTdsRt 
 uRjedw2q3OOso5EFzlvtOuf9C7N/4FQ//FUfadc/6F2b/wACof8A4qupoo5E FzlvtOuf9C7N 
 /wCBUP8A8VR9p1z/AKF2b/wKh/8Aiq6mijkQXOW+065/0Ls3/gVD/wDFUfad c/6F2b/wKh/+ 
 KrqaKORBc5b7Trn/AELs3/gVD/8AFUfadc/6F2b/AMCof/iq6mijkQXOMvl1 q7Npu0GeNYbu 
 GZiLiFiQrgkD5utTzvq11BLBceGHlhlUpJHJcQsrqRgggtggjtXUy/cH+8v8 xWF4n8YaZ4S+ 
 ytqZ2Qz7yZPPhTYq43Ha7q74DdI1du2MkAnIguYP9gRfYPsH/Cv7L7H5vnfZ 8W3l+ZjG/b03 
 Y4z1xU95ps2oxvHfeCYLqOSUTOs727hpAu0OQTy20Bc9cDFP0zxqLW1upNeg u4LeO91COPUG 
 SMxSLBLO2xVjYyZWKJuWQZ8s8kkbuo029nvrdpbjTLvT3DlRFdNEzEYHzDy3 cY5x1zweOmXy 
 ILnMQWl3bCMW/g5IhEweMRy267GEflgjB4IT5M/3eOlEVpdwW/2eLwckcO6N /LSW3C7kChDj 
 OMqETB7bVx0FdnRS5EFzhNQ0c6tcLcal4Etb2ZV2LJcm2kYLknALEnGSePet L7Trn/Quzf8A 
 gVD/APFV1NFHIguct9p1z/oXZv8AwKh/+Ko+065/0Ls3/gVD/wDFV1NFHIgu ct9p1z/oXZv/ 
 AAKh/wDiqPtOuf8AQuzf+BUP/wAVXU0UciC5yVxJrk9tLD/wj0y70K5+1QnG Rj+9TbN9attO 
 s7dfD87+TbxxlvtMIyVQA8bumRXX0yL/AFKf7oo5EFzh00cx3F1cJ4EtVmu1 dLmRTbBplc5Y 
 Oc5YE9QetSR6bNDaLaReCYEtlikhWFXtwgjkILoFzjaxAJHQ45rt6KORBc4S 30c2lu9vbeBL 
 WGGRXR44zbKrK4UOCAcEMEXI77RnoKtrHqKXbXaeE9ty2d0wngDnIUHLZzyI 0H/AF9BXYUUc 
 iC5xk1pd3GmjTZvBySWAVUFq8tuYgq42jYTjAwMDHGBU8DatbW8dvb+GHihi UJHHHcQqqKBg 
 AANgADtXWUUciC5y32nXP+hdm/8AAqH/AOKo+065/wBC7N/4FQ//ABVdTRRy ILnLfadc/wCh 
 dm/8Cof/AIqj7Trn/Quzf+BUP/xVdTRRyILnLfadc/6F2b/wKh/+Ko+065/0 Ls3/AIFQ/wDx 
 VdTRRyILnLfadc/6F2b/AMCof/iqPtOuf9C7N/4FQ/8AxVdTRRyILnLfadc/ 6F2b/wACof8A 
 4qj7Trn/AELs3/gVD/8AFV1NFHIguct9p1z/AKF2b/wKh/8AiqPtOuf9C7N/ 4FQ//FV1NFHI 
 gucTq6a5qGkXVoNAmjMqEbjcxHH/AI9XReVJ/wA83/75NaMv+pf/AHTT6ORB cy/Kk/55v/3y 
 aPKk/wCeb/8AfJrUopcgXMvypP8Anm//AHyaPKk/55v/AN8mtSijkC5l+VJ/ zzf/AL5NHlSf 
 883/AO+TWpRRyBcy/Kk/55v/AN8mjypP+eb/APfJrUoo5AufKXxU/wCR51P/ AK+W/pRR8VP+ 
 R51P/r5b+lFfdU/4UP8ADH8keXHr6v8AM9A8GyJD8XdZlldUjS+1BmdjgKAx ySewrsdb1XQN 
 b0a80uXWvIiu42hkkgI37G4YDcpHIyOnfjB5rkPBP/JYdW/6/wC//wDQzXrB mlyf3jfnXzWd 
 fx4/4UdWD+GXqzAg8S6LFbxxvrCTOihWlkwGcgfeO0AZPXgAewqx4Yktb+w1 oLOphuL2QB1Y 
 cqY0GRWv58v/AD0b86qeGHeRtZZ2LN/aLjJOeBHGBXkx3Otl2W08+F4pNUnZ HUqw/dDIPB/g 
 p0dnaxazc6osx8+4t4bd1LDaFjaRlI75zK2eew6d79FaEmBp/h2x0ubUZ7O/ uI575GVpN8bG 
 ImaebcgK4yGuXxuBGAuQec17Dwjp2m3Ed5a6hcR3/wBoknuLpfJDXPmGPzFd QgQBvKiyUVW+ 
 TOcsxbp6KAMDVvDtjrWqLd3l/cGD7FPYyWSvGIpYpseYGO3eCdqcqwxsGOpz G/hxJJVmbxDq 
 YuGiEF1Ojwo93ErOyqxWMbNvmOA0Wxvm65AIt2fifS7vQW1uWf7DYJLJE0l/ /o+wpK0R3B8b 
 csvAbB5AIB4o0vxRo+saneadZX0El1a7GMayoTJG0cciyoASTGRKo3dM5/EA oXHg/Sbm1uLd 
 7u4CT2+oW7ESJkLeSiWUj5eoYYX0HXPWuk82P/non/fQrC1zxjo+iLMkmoWL 3VvLbrc27XaI 
 8EcsscZkcdVVRKGyQB05Gc0X3i6wgtrG4sZINQhvZY44pYLmMoQ1zDAxBBJb aZs8Aj5cEqSM 
 gG75sf8Az0T/AL6FHmx/89E/76FY0PinTbvxUmg2V1aXc6288tz5NyrtbtE8 SbHUZIJMh64x 
 sPB7blADPNj/AOeif99CjzY/+eif99Cn0UAM82P/AJ6J/wB9CjzY/wDnon/f Qp9FADPNj/56 
 J/30KPNj/wCeif8AfQp9FAEUksZUYdfvDv7isHX/AAxaa99r/wCJreWP220+ xXf2Roj9oh+f 
 CnzEfbjzJOV2n5zknAx0Ev3B/vL/ADFPoA5T/hC9Ll8+G91G8vbCWW6mWxme NY4nuPMEhVkR 
 ZOk0qjcxwH9QCNzTYHsbdorjV7jUHLlhLdCJWAwPlHlogxxnpnk89MX6KAGe bH/z0T/voUeb 
 H/z0T/voU+igBnmx/wDPRP8AvoUebH/z0T/voU+igBnmx/8APRP++hR5sf8A z0T/AL6FPooA 
 Z5sf/PRP++hR5sf/AD0T/voU+igBnmx/89E/76FNiljESAuoO0d6lqhe6lDp WnwXE6yMjzW9 
 uAgBO6WRIlPJHG5wT7Z69KOoFzzY/wDnon/fQo82P/non/fQqtZalDfXWo28 SyB7C4FvKWAw 
 WMUcuV56bZFHOOQfqcu38WQS+F9S1+fTr61t9P8AtPmwzeUZG8gsJNux2X7y MoyRkr6EEgG7 
 5sf/AD0T/voUebH/AM9E/wC+hXNXXjqwtrHT7hbK+mkv4t8dtGsYkV/OhgMT 7nAWQSTqpBPB 
 V8kEcySeK7mK4trRvC+s/bLhJpEthJabhHGYwzk+ftxmVQBnPB4A5IB0Pmx/ 89E/76FHmx/8 
 9E/76Fc8vjCIXV1HcaRqVtbWTpHeXkvkmK2dokkw+2QthRIoZgpVeSW2gsLm p+JLPSdc0nSr 
 mOfzNS8zy5lUeVFs2D94xI27mkRF4OWYDqRQBq+bH/z0T/voUebH/wA9E/76 Fc1ZeOrDU4rn 
 +z7K+uriK7e2ito1jD3IVUczRkuF8kpIjB2ZQdygcsoaSTxhF9otrS00jUry +lSZpbSLyUkt 
 jEYw6yeZIoB/fRkbSwYMGBKkEgHQ+bH/AM9E/wC+hR5sf/PRP++hXPf8JhFc 3EUWk6RqWrJJ 
 ZQXwltfJRRFMX8snzpEOT5bHGOOM1oarrQ024t7SGwu9QvLhHkS2tTGG8tCo dyZHRcAugxnP 
 zDAIBIANHzY/+eif99CjzY/+eif99CueTxhF9vktp9I1K3ihuILSe6k8kxwz ypGyRkLIXJzN 
 GuVUrk9cAmrFt4r02fVNUsnMlumnIXa7uNqQTKv+tMb5+YRN8sh42MQDQBs+ bH/z0T/voUeb 
 H/z0T/voVz1x4tktbV7uXw5rK2++JIHYQKZ2klSOMKjSh1JLg4kCYAOcHitj Tb2e+t2luNMu 
 9PcOVEV00TMRgfMPLdxjnHXPB46ZALPmx/8APRP++hR5sf8Az0T/AL6FZWm+ JLPVP7I8iOdf 
 7V09tQg3qBtjHlZDYJw375eBkcHnpnYoAZ5sf/PRP++hR5sf/PRP++hT6KAI pZYzE4DqTtPe 
 nebH/wA9E/76FEv+pf8A3TT6AGebH/z0T/voUebH/wA9E/76FPooAZ5sf/PR P++hR5sf/PRP 
 ++hT6KAGebH/AM9E/wC+hR5sf/PRP++hT6KAGebH/wA9E/76FHmx/wDPRP8A voU+igD5S+Kn 
 /I86n/18t/Sij4qf8jzqf/Xy39KK+3p/wof4Y/kjzI9fV/meheCf+Sw6t/1/ 3/8A6Ga9VP3j 
 9a8q8E/8lh1b/r/v/wD0M13/AIiNv9hRLia9USShUgsZTHNcvgkRqwIYdNxI ZcBCWIQNXzWd 
 fx4/4UdWD+GXqzVqt4V/5jP/AGEn/wDQEqLRra7s9KggvZ/OnXdk7y+1SxKp vbl9qkLvbltu 
 48k1L4V/5jP/AGEn/wDQEryYbnWzoKKKK1JIJr21tnCT3MMTEZCvIFOPxp0F 1b3O7yJ4pdv3 
 vLcNj64rI1Sa6jv5Vs9S0+wnaKI772EyqygyZAUSIc5I5yfpzxLo8s0txMbi 9tLydYYxJNaR 
 mOMnfIRhS7kcEfxH14zilcDnk8Oa2fDiQTWdj/acOq3N/bPBqssQgMryuHD+ QdzL5zJsZCjD 
 k5ztrY0DSdU0i+vReXMF9HeeXcTXn+qkadYYoWHlBSoU+UXyG4LbduBuPQUU wOPbw9rAtJNK 
 VLE2I1VNSjujcOJGzfLdMhi8vAwC6g7zkqpwNx209S8FaleeKptUjntBA97H cBWdt21X05iP 
 u4ziyl7/AMSepx3lFAHH+HfD2saZqOjJeJY/YdH0qTTYZobh2kuMmDa7IYwI +ICSAzYLYycZ 
 rsKKKACiiigAooooAKKKKAGS/cH+8v8AMU+mS/cH+8v8xT6ACiiigAooooAK KKKACiiigAoo 
 ooAKzNU0/wDtPS7e3xnZc2tx/rNn+qmSTrtb+50xz0yudw06ZF/qU/3RS6gU tO0/7FfatcYx 
 9uu1uP8AWbs4hij6bRt/1fTLeuedq8/D4e1if4f69ol4ljDfX/8AaHkmG4eS MfaGkddzGNSM 
 GUg4U8LnvgdhRTA878SeBNS1HXJ5rNdNn0t0WUWV5IyhpmuraWZMBGUROttk 8EmSWQkHdxJe 
 eEby7l0p38I+FHtbCK6hXTHuSYE81oXEi/6NgNlJARtH3s5OSK9AooA4uTQN evTr1hdQ6bDp 
 +uuGuZ4rt3lhVraKGREQxAMf3bBXLDG4MVONh1Nc8N/25q0Essnl2q6fdWrP G2Jo5JJIHjkj 
 OCAyGEsG6hgpHt0FFAHHw+FrzSdavNX0mKx8wSslrZO5ih+ztBaxlSVQ+Wwa 1UjCsNvGAWyl 
 ebwJPqWsf2jfX89rNcxXTXDabeSwPDNItskYjZcb1VLfkvwzYbYAdq9xRQBw b+FtSj16DU/+ 
 Ed8MX729lb2tv5srQC1aGSYh4V8mTYGV4ztB+UrjLYDHoPEunzanbwW66Do2 sQBy7x6pMUVG 
 AwpUeTICcFhnjHvnjcooA4/w94HGnXM9xq15PqVx5tu8cj3U2yUxW0MfmSQl thk8yJnBIYj5 
 TuyBjLg+HOoNZWMd94gu53mt7u31WP8AchNt2jNOYSIQ2TP5bDceACPY+iUU AcfrmmeJNe0W 
 bS73TtDmjEtvKGa7k2XXlTxyMrxmFvLV1RuN0mMgfMOa3NAtZrHS1tZdK03S 0jciK206UvEF 
 POf9XHgli2QF9888alFAHP6P4e/s3+wPkx/ZmlNYf8fG/GfI4/1a7/8AU/e+ Tp907vl6Ciig 
 AooooAZL/qX/AN00+mS/6l/900+gAooooAKKKKACiiigAooooA+Uvip/yPOp /wDXy39KKPip 
 /wAjzqf/AF8t/Sivtqf8KH+GP5I8yPX1f5noXgn/AJLDq3/X/f8A/oZr0rUt L0/VoRb6lYWt 
 7Cr71juYVkUNyMgMCM4J596818E/8lh1b/r/AL//ANDNemm/s8n/AEuD/v4P 8a+azr+PH/Cj 
 qwfwy9WFnZWmnWiWljaw2ttHnZDBGERcnJwo4HJJ/Gm+Ff8AmM/9hJ//AEBK X7fZ/wDP3B/3 
 8FN8KMrrrDKQVOouQQeCPLjryYbnWzoaKKK1JCiiigAooooAKKKKACiiigAo oooAKKKKACii 
 igBkv3B/vL/MU+mS/cH+8v8AMU+gAooooAKKKKACiiigAooooAKKKKACmRf6 lP8AdFPpkX+p 
 T/dFLqA+iiimAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFADJf8A Uv8A7pp9Ml/1 
 L/7pp9ABRRRQAUUUUAFFFFABRRRQB8pfFT/kedT/AOvlv6UUfFT/AJHnU/8A r5b+lFfbU/4U 
 P8MfyR5kevq/zPQPBsaTfF3WYpUV43vtQVkYZDAscgjuK9A1GLw/pcAlutLs gGfYiRWAlkkb 
 BOFRFLMcAnABwAT0BNcD4J/5LDq3/X/f/wDoZr0bWHuEsXEFjNeK5KSxW9wI ZthBGY2JUbgc 
 fxLgZIOQAfms6/jx/wAKOrB/DL1ZFZ2mhahaJc22mac8T5wTZopBBwVYFcqw IIKkAggggEVP 
 4VhhC6uqwQoi6gyqiRhVAEcfQAYqr4bs7iw0OKC5j8uTzZpBGSGZEeVnQOwz ucKyhmy25txL 
 NncbvhX/AJjP/YSf/wBASvJjudbN3yo/+eaf98ijyo/+eaf98in0VpYkZ5Uf /PNP++RR5Uf/ 
 ADzT/vkU+iiwDPKj/wCeaf8AfIo8qP8A55p/3yKfRRYDI1LXNH0m4WC8cq5Q SOUt3kWFCSA8 
 rKpEScN8zlR8rc/KcanlR/8APNP++RXNeJH1K41GOxOhX2oaKYg8wtJbcfaH JI8qQSyoRGAA 
 SADv3BSQoZX5+58F6iunPLpFpBp+t3eoaoZ7+JlikMMwu/JLyJ8zLve3bHJB VTjK8FgO5jvL 
 WXWbnS1hPn29vDcOxUbSsjSKoHfOYmzx3HXsXt5a2N1p1vLCS9/cG3iKqMBh FJLlvbbGw4zy 
 R9Rz3hPSFsfEOr3lt4Y/sCxntLWJIdtunmSI85dtsLsOkkYycE/hWPYeD1uL fQrLUfCsBktb 
 uN9Xu547d01FltbhDMcMXk/eurZkUN+8zjO7BYDtbvU7Kz1OysJIJTNeSiKN hD8gJjlk5Y4B 
 4hfIGSMrkAMDUkd5ay6zc6WsJ8+3t4bh2KjaVkaRVA75zE2eO469vNp/BniW S8lFnF9k2+dF 
 Zzi4VRbpjVVh27SWVVW5tgAo+UEAD5SB1HhPSFsfEOr3lt4Y/sCxntLWJIdt unmSI85dtsLs 
 OkkYycE/hRYDrfKj/wCeaf8AfIo8qP8A55p/3yKfRRYBnlR/880/75FHlR/8 80/75FPoosBF 
 JFGFGEX7w7e4p3lR/wDPNP8AvkUS/cH+8v8AMU+iwDPKj/55p/3yKPKj/wCe af8AfIp9FFgG 
 eVH/AM80/wC+RR5Uf/PNP++RT6KLAM8qP/nmn/fIo8qP/nmn/fIp9FFgGeVH /wA80/75FHlR 
 /wDPNP8AvkU+iiwDPKj/AOeaf98ijyo/+eaf98in0UWAZ5Uf/PNP++RTYooz EhKKTtHapaZF 
 /qU/3RRbUA8qP/nmn/fIo8qP/nmn/fIp9FFgGeVH/wA80/75FHlR/wDPNP8A vkU+iiwDPKj/ 
 AOeaf98ijyo/+eaf98in0UWAZ5Uf/PNP++RR5Uf/ADzT/vkU+iiwDPKj/wCe af8AfIo8qP8A 
 55p/3yKfRRYBnlR/880/75FHlR/880/75FPoosAzyo/+eaf98ijyo/8Anmn/ AHyKfRRYBnlR 
 /wDPNP8AvkUeVH/zzT/vkU+iiwDPKj/55p/3yKPKj/55p/3yKfRRYCKWKMRO Qig7T2p3lR/8 
 80/75FEv+pf/AHTT6LAM8qP/AJ5p/wB8ijyo/wDnmn/fIp9FFgGeVH/zzT/v kUeVH/zzT/vk 
 U+iiwDPKj/55p/3yKPKj/wCeaf8AfIp9FFgGeVH/AM80/wC+RR5Uf/PNP++R T6KLAfKXxU/5 
 HnU/+vlv6UUfFT/kedT/AOvlv6UV9vT/AIUP8MfyR5kevq/zPQPBql/i7rKL I0bNfagA64yv 
 zHkZBGfqDXoZ0MZ/5DOsf9/o/wD4ivPvBP8AyWHVv+v+/wD/AEM13/iKDVrm xSHSfJ3PKBcC 
 S4eBjFg5CSKjFGJ2jIGcFsFWww+azr+PH/Cjqwfwy9WL/YY/6DOsf9/o/wD4 ip/CcIjj1aNJ 
 p2CX7LukKszHy4+SQo/lWX4EMrfD/wAPGZER/wCzoAAjlht2DackDkjBI7Ek ZOMnY8K/8xn/ 
 ALCT/wDoCV5MdzrZu7G/56v+Q/wo2N/z1f8AIf4U+vP/AB6mjx6iLq8n0O+v o7TMOiapCk8l 
 xgsVW2UsDHJIcoWCvuKx/L8uDpYk73Y3/PV/yH+FGxv+er/kP8K8yl8U+KU1 jVzb3FjPcW/2 
 4R6N5hlmCxLJ5D/Z0hEibykR3PMVYSfKAXQDQm162T7FEnj7dpMvntLrXm2R 2Tp5Oy33+X5Q 
 yryPtK7ztyDgEUWA73Y3/PV/yH+FRmSNbhLdroCd0Z0jLLuZVIDEDGSAWUE9 tw9a8+0zXfEV 
 xavrN9ez280WoabZyaUbeNIU+0RWnmg5TzQytcSEfPwQoIIBBPCuqHVvGWj3 Fzrf2zUn0S6e 
 90/MI/s6VpLUtFtRQ6YbcuJCzDZ1yDksB6Lsb/nq/wCQ/wAKNjf89X/If4V5 NcDRl8TarcWW 
 pWml/Z/FCvfahaGANbqdNZcyM6sqgzNImXH33cD5jUmp+LPEtvP4hlTVLGGS 1i1ArYearzQR 
 xJKYZvIEG5N2yJt8krIwk4GXQAsB6rsb/nq/5D/CjY3/AD1f8h/hXFWOp6ta eJ47GbVZ72Bd 
 VOllZ4ogXU2Ju/NJRF/eBvk4wuwfd3fNXcUWAZsb/nq/5D/CjY3/AD1f8h/h T6KLAM2N/wA9 
 X/If4UbG/wCer/kP8KfRRYBmxv8Anq/5D/CjY3/PV/yH+FPoosBFIjbR+8Y/ MPT1HtTtjf8A 
 PV/yH+FEv3B/vL/MU+iwDNjf89X/ACH+FGxv+er/AJD/AAp9FFgGbG/56v8A kP8ACjY3/PV/ 
 yH+FPoosAzY3/PV/yH+FGxv+er/kP8KfRRYBmxv+er/kP8KNjf8APV/yH+FP oosAzY3/AD1f 
 8h/hRsb/AJ6v+Q/wp9FFgGbG/wCer/kP8KbEjGJP3jD5R6f4VLXOeJ9Rl0/T 9N/4mH9mWk9y 
 IrvUPkH2WPypGDbpAUXMixplgR8+B8xBBbUDchkjuULwXQlQOyFkZWAZWKsO B1DAgjsQRUcN 
 5a3F5c2cN/FJdWu37RCkiF4twyu5RyuRyM9a8isvEWs2dokOl63Yra+beT2l xd3CJ/acrX1y 
 CAqQSGfhYzsg8tv3owfnXb6B4Ht5Y9P1Gd72eWOXVb/ZA4QJDi8nB2kKGOep 3FvbA4osB0ux 
 v+er/kP8KNjf89X/ACH+FPoosAzY3/PV/wAh/hRsb/nq/wCQ/wAKfRRYBmxv +er/AJD/AAo2 
 N/z1f8h/hT6KLAM2N/z1f8h/hRsb/nq/5D/Cn0UWAZsb/nq/5D/CjY3/AD1f 8h/hT6KLAM2N 
 /wA9X/If4UbG/wCer/kP8KfRRYBmxv8Anq/5D/CjY3/PV/yH+FPoosAzY3/P V/yH+FGxv+er 
 /kP8KfRRYCKVGET/ALxj8p9P8Kdsb/nq/wCQ/wAKJf8AUv8A7pp9FgGbG/56 v+Q/wo2N/wA9 
 X/If4U+iiwDNjf8APV/yH+FGxv8Anq/5D/Cn0UWAZsb/AJ6v+Q/wo2N/z1f8 h/hT6KLAM2N/ 
 z1f8h/hRsb/nq/5D/Cn0UWA+Uvip/wAjzqf/AF8t/Sij4qf8jzqf/Xy39KK+ 3p/wof4Y/kjz 
 I9fV/megeDS4+LusmJVaQX2obVZtoJ3HAJwcD3wa9DI8RZ+7o/8A3+l/+Irz 7wT/AMlh1b/r 
 /v8A/wBDNeqn7x+tfNZ1/Hj/AIUdWD+GXqzK2+Iv7uj/APf6X/4ip/CYnWPV hL5DSfb23mN2 
 258uPIGVBq7Vbwr/AMxn/sJP/wCgJXkw3Otm7mT+4n/fR/wozJ/cT/vo/wCF Prl/E6al/bWg 
 x2Wu31hDfXbWs0cEVuwwIJ5dwMkTENmNR1xjtnmtCTpcyf3E/wC+j/hRmT+4 n/fR/wAK86Pi 
 3VNG8OapcXsHmW7Xerx2d1Febp98L3MiqyPEVRQkLKpy+MJ8uCQNyPxdfXKY g0aMST6nPptl 
 595tSZ4Wn3uxVGKJtgOOCSxK4CgOwB1OZP7if99H/CjMn9xP++j/AIVww1LV 0+FOvakbyS21 
 S1fVJVkjcT+W0VxMVQGRcMgCBOVHy9AvGJD4m1TRG8RveR/2jY6dd29nbylv 37yyRWwVWjji 
 5UvMWLLluSFjOAKAO1zJ/cT/AL6P+FGZP7if99H/AArhn+IV7Fbiabw/JEIL e7u7zzpJYcQ2 
 4hLNCskKtISJgAGWMbkYZxhj1Gi6rNqQvYbu2jt7yxuPs9wkUplj3GNJAUcq pYbZEzlRzkcg 
 AkA0cyf3E/76P+FGZP7if99H/Cn0UAMzJ/cT/vo/4UZk/uJ/30f8KfRQAzMn 9xP++j/hRmT+ 
 4n/fR/wp9FADMyf3E/76P+FGZP7if99H/Cn0UARSGTaMqv3h/F7j2p2ZP7if 99H/AAol+4P9 
 5f5isq5vriPxlplgsmLWbT7uaRNo+Z0ktgpz14Ej/n7CgDVzJ/cT/vo/4UZk /uJ/30f8K4q4 
 1bWbv4UaNf2upfZdX1CLTUN75CPseeSFHfYRtP32449sVz+r+LvE897DPbtP YW9xEtstjbiC 
 WQXCXlpDOySSLt3Bp5oQG+TMW/owIAPVcyf3E/76P+FGZP7if99H/CsrR7e/ fQ3S7vdVS6m3 
 4e9Fr59v/CMeSvlHGNwyG68+g5vS7/WFsLeGbW7u5uNT1i702O4migH2VIHu fnRUjUM7JAB8 
 2QGIbBAKMAdzmT+4n/fR/wAKMyf3E/76P+FcdPq+p2Otx+FTfyTz3LwiPU5Y 4xLGkiXLtlFU 
 Izj7KwVtoH7xcq2w+ZsaPc3cGs32h3d1JfG1t4LqO7lVFkZZWlXY4QBSVMJI YBchgMZUswBs 
 5k/uJ/30f8KMyf3E/wC+j/hXJWet6jL/AGJvuM/afEGoWUvyL80MX2zYvTjH kx8jk7eScnPY 
 UAMzJ/cT/vo/4UZk/uJ/30f8KfRQAzMn9xP++j/hTYjJ5SYVcbR/F/8AWqWm Rf6lP90UdQDM 
 n9xP++j/AIUZk/uJ/wB9H/Cn0UAMzJ/cT/vo/wCFGZP7if8AfR/wp9FADMyf 3E/76P8AhRmT 
 +4n/AH0f8KfRQAzMn9xP++j/AIUZk/uJ/wB9H/Cn0UAMzJ/cT/vo/wCFGZP7 if8AfR/wp9FA 
 DMyf3E/76P8AhRmT+4n/AH0f8KfRQAzMn9xP++j/AIUZk/uJ/wB9H/Cn0UAM zJ/cT/vo/wCF 
 GZP7if8AfR/wp9FADMyf3E/76P8AhRmT+4n/AH0f8KfRQBFKZPKfKrjaf4v/ AK1OzJ/cT/vo 
 /wCFEv8AqX/3TT6AGZk/uJ/30f8ACjMn9xP++j/hT6KAGZk/uJ/30f8ACjMn 9xP++j/hT6KA 
 GZk/uJ/30f8ACjMn9xP++j/hT6KAGZk/uJ/30f8ACjMn9xP++j/hT6KAPlL4 qf8AI86n/wBf 
 Lf0oo+Kn/I86n/18t/Sivt6f8KH+GP5I8yPX1f5noXgn/ksOrf8AX/f/APoZ r1U/eP1ryrwT 
 /wAlh1b/AK/7/wD9DNeqn7x+tfM51/Hj/hR1YP4ZerEqt4V/5jP/AGEn/wDQ EqzVbwr/AMxn 
 /sJP/wCgJXlQ3OtnQVXuLG3u57SaePfJaSmaA7iNjlGjJ46/K7Dn19cVYorU kx7vwto19pxs 
 Liz32pluJtnmuPnnEolOQc/MJ5fpu4xgYkl8PaZNYfYjBIkQuJLpWinkjkSW R2d3SRWDqSXf 
 O0jhivQ4rUooAxz4X0lvDk2gGGc6bNv81Ddy75N7l33Sbt53MzZy3OSDwcUN 4X0l/M3Qzt5s 
 SRSZu5TvKbdsh+bmYbExN/rBtX5uBWxRQBh/8IhoZt5YXtJJRNbz20ry3Ery SxzBBIHdmLMS 
 I4wGJJAQAEAYrUt7G3tJ7uaCPZJdyiac7id7hFjB56fKijj09c1YooAKKKKA CiiigAooooAK 
 KKKAGS/cH+8v8xSGFWuEnJk3ojIAJGC4YgnK5wT8owSMjnGMnKy/cH+8v8xT 6AKcul2k9hBZ 
 TJJLBA8Lp5krs26J1dCWJ3MQyKcknOOc5NV9X8PaZrhjbUIJHeNCkbxzyRMg 8yOThkYEHfDG 
 cjkbfc51KKAKem6ZBpVu0FvJdujOXJuruW4bOAOGkZiBx0zjr6mozomnHTJt ONv/AKLLK87K 
 HYESPIZS6tnKtvJYEEFTgjGBjQooAy4/D2mR6XNpwgkeCZ/MkeWeR5XcY2uZ WYvvXau1t2V2 
 LgjaMWNN0u00m3aG0SQB3LyPLK8skjYAy7uSzHAABJOAoHQAVcooArrZRL5e Hn/dyvMuZ3OW 
 bdkHJ+ZfnOFOVGFwBtXFiiigAooooAKZF/qU/wB0U+mRf6lP90UuoD6KKKYB RRRQAUUUUAFF 
 FFABRRRQAUUUUAFFFFABRRRQAUUUUAMl/wBS/wDumn0yX/Uv/umn0AFFFFAB RRRQAUUUUAFF 
 FFAHyl8VP+R51P8A6+W/pRR8VP8AkedT/wCvlv6UV9tT/hQ/wx/JHmR6+r/M 9C8E/wDJYdW/ 
 6/7/AP8AQzXW+OrCyvbCxfULvT7a3tr3zS2pWn2i2JMUiASDcoUfPkMzAbgo 6kCuS8E/8lh1 
 b/r/AL//ANDNeqn7x+tfNZ1/Hj/hR1YP4ZerMXwo8T+HLb7PZ2trCrSpGtpE I4ZFEjASxqOA 
 kgHmDk8OOW6nQ8K/8xn/ALCT/wDoCVZqt4V/5jP/AGEn/wDQEryYbnWzoKKK K1JCiiigAooo 
 oAKKKKACiiigAooooAKKKKACiiigBkv3B/vL/MU+mS/cH+8v8xT6ACiiigAo oooAKKKKACii 
 igAooooAKZF/qU/3RT6ZF/qU/wB0UuoD6KKKYBRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRR 
 RQAUUUUAMl/1L/7pp9Ml/wBS/wDumn0AFFFFABRRRQAUUUUAFFFFAHyl8VP+ R51P/r5f+lFH 
 xU/5HnU/+vlv6UV9tT/hQ/wx/JHmR6+r/M9C8E/8lh1b/r/v/wD0M16qfvH6 15V4J/5LDq3/ 
 AF/3/wD6Ga9VP3j9a+Zzr+PH/Cjqwfwy9WJVbwr/AMxn/sJP/wCgJVmq3hX/ AJjP/YSf/wBA 
 SvKhudbOgooorUkKKKKACiiigAooooAKKKKACiiigAooooAKKKKAGS/cH+8v 8xT6ZL9wf7y/ 
 zFPoAKKKKACiiigAooooAKKKKACiiigApkX+pT/dFPpkX+pT/dFLqA+iiimA UUUUAFFFFABR 
 RRQAUUUUAFFFFABRRRQAUUUUAFFFFADJf9S/+6afTJf9S/8Aumn0AFFFFABR RRQAUUUUAFFF 
 FAHyl8VP+R51P/r5b+lFHxU/5HnU/wDr5b+lFfbU/wCFD/DH8keZHr6v8z0D wbGJfi7rMbFg 
 r32oKSrFTyx6Ecg+4rv59C0G1glnuITFDEpeSSS9lVUUDJJJfAAHeuC8E/8A JYdW/wCv+/8A 
 /QzXY+M7a4uINMeOW9itoL9Zrp7OATyKgjk2ERlH34lMR+42CA3G3cPms6/j x/wo6sH8MvVl 
 yDQtBubeO4t4TLDKoeOSO9lZXUjIIIfBBHerXhOCGOPVo4kaONL9lVRIxwBH H3JJNRaDNez6 
 NDJfh/OLSBWkTY7xB2EbuuBtdkCMwwuCSNq9BZ8K/wDMZ/7CT/8AoCV5Mdzr Zu+Uvq//AH2f 
 8ay9S8QeH9GuFt9U1ywsZ2QOsd1erExXJGQGYHGQRn2Na9cnc6PqF7461G4g 1TUtMg/syzQS 
 WsUJWZhLckgmWNxlQynC4++M9RWliTqfKX1f/vs/40eUvq//AH2f8a821SHx DcjUYNOOsjXp 
 H1BJSZJktxbmOcWvlsxECvn7JzGQ4O7d/wAtKsXlxqHiPxnbLYyeILXR2e2j nYW9xaDAivzI 
 P3iqQCTACwwQSmGDBSCwHatqGnq9qn2oMbq4e1h2OWDSors6ZGQCBFJnOMFS OvFSX11Y6ZZy 
 Xl/eRWlrHjfNPP5aLkgDLE4GSQPxrz6Hw951/aWU0GspKPEd3dXbRz3UcaRS JevE8cisEUEO 
 m7yyOWCvycVqamL9vhR4htriC+nujFqFnbx+TJLNInmSxQcAFnynl/Oc5HzE nk0WA62zurHU 
 IjLZXkVzGNuXhn3gblDryD3VlYeoYHoaseUvq/8A32f8a86v7a+8/wATXmmr qtvfajLbXEL+ 
 Vc+X9i2WqTN5YKgTAJMNo2z4Hy4+U1nvaeIhp0ksF5rlyLXT9RubBlhurfM6 i2MKtHJI8knz 
 +dhZyd2WAUoFyWA9V8pfV/8Avs/40eUvq/8A32f8axvDsNzaS6xZSm7a0tr0 JZNdSPIxiMEL 
 nEjks48xpeSTjleigDcosAzyl9X/AO+z/jR5S+r/APfZ/wAafRRYBnlL6v8A 99n/ABo8pfV/ 
 ++z/AI0+iiwDPKX1f/vs/wCNHlL6v/32f8afRRYCKSNQo5b7w/iPqKhS5tZN RmsFlc3UMUc0 
 iZb5UcuFOenJjf8AL3FWJfuD/eX+YrjtTg1KHx1daikV22lx2VibhbZWEkuy W6PyEcuELKzx 
 LhmBHJ/1cpYDsfKX1f8A77P+NV3ubWPUYbBpXF1NFJNGmW+ZEKBjnpwZE/P2 NefWUmuRWGY4 
 dZlu20xk1v7Sbnal2zwqZIASNwRTdPttSA21QCCYzWfp3/CQC4nkMOpXsFvb 3trb3MtpdwMk 
 MhsCzgSOZ2Kk3DBd+9/LKoR8oUsB6z5S+r/99n/Gjyl9X/77P+Nct4BfUDpu oxX013NFDelL 
 SW6tbiBmiMUbHC3DNKR5jSDLM3QgYAAHWUWAZ5S+r/8AfZ/xo8pfV/8Avs/4 0+iiwDPKX1f/ 
 AL7P+NHlL6v/AN9n/Gn0UWAZ5S+r/wDfZ/xo8pfV/wDvs/40+iiwDPKX1f8A 77P+NVZLq1tW 
 sYZ5WSS8k8mBcsd7iNpCOOnyox5wOPpV2uQ8ZwRzReHHuItSe0h1HfO2nLOZ UX7LOoP7j94B 
 uZQSPXB4NFtQOs8pfV/++z/jR5S+r/8AfZ/xryq8h8Vyvb/6dqtrCIn/ALL2 2dzcSM32iby/ 
 M2Soobyfsv8Ax95UkndgiXJ4ouPEx1XU5NO/tWG4livYTa29teOqotrN5MiT bzAGZ0hYCNFc 
 M+0kkPuLAeq+Uvq//fZ/xo8pfV/++z/jUVja/YrOO3NxPcMuS0077ndiSST2 GSTwAFHQAAAC 
 xRYBnlL6v/32f8aPKX1f/vs/40+iiwDPKX1f/vs/40eUvq//AH2f8afRRYBn lL6v/wB9n/Gj 
 yl9X/wC+z/jT6KLAM8pfV/8Avs/40eUvq/8A32f8afRRYBnlL6v/AN9n/Gjy l9X/AO+z/jT6 
 KLAM8pfV/wDvs/40eUvq/wD32f8AGn0UWAZ5S+r/APfZ/wAaPKX1f/vs/wCN PoosBFLGoic5 
 b7p/iNO8pfV/++z/AI0S/wCpf/dNPosAzyl9X/77P+NHlL6v/wB9n/Gn0UWA Z5S+r/8AfZ/x 
 o8pfV/8Avs/40+iiwDPKX1f/AL7P+NHlL6v/AN9n/Gn0UWAZ5S+r/wDfZ/xo 8pfV/wDvs/40 
 +iiwHyl8VP8AkedT/wCvlv6UUfFT/kedT/6+W/pRX29P+FD/AAx/JHmR6+r/ ADPQPBoc/F3W 
 REyrIb7UNrMu4A7jgkZGR7ZFehnT9Xzzr0f/AILx/wDF1594J/5LDq3/AF/3 /wD6Ga9VP3j9 
 a+azr+PH/Cjqwfwy9WZX9n6v/wBB6P8A8F4/+LqfwnHKkerKZ1lYX7BpDFs3 Hy48nG44/P8A 
 wq7Vbwr/AMxn/sJP/wCgJXkw3Otm7iT++n/fJ/xoxJ/fT/vk/wCNPorSxIzE n99P++T/AI0Y 
 k/vp/wB8n/Gn0UWAZiT++n/fJ/xoxJ/fT/vk/wCNPoosAzEn99P++T/jRiT+ +n/fJ/xp9FFg 
 GYk/vp/3yf8AGjEn99P++T/jT6KLAMxJ/fT/AL5P+NGJP76f98n/ABp9FFgG Yk/vp/3yf8aM 
 Sf30/wC+T/jT6KLAMxJ/fT/vk/40Yk/vp/3yf8afRRYCKQSbRll+8P4fce9O xJ/fT/vk/wCN 
 Ev3B/vL/ADFPosAzEn99P++T/jRiT++n/fJ/xp9FFgGYk/vp/wB8n/GjEn99 P++T/jT6KLAM 
 xJ/fT/vk/wCNGJP76f8AfJ/xp9FFgGYk/vp/3yf8aMSf30/75P8AjT6KLAMx J/fT/vk/40Yk 
 /vp/3yf8afRRYBmJP76f98n/ABpsQk8pMMuNo/h/+vUtMi/1Kf7ootqAYk/v p/3yf8aMSf30 
 /wC+T/jT6KLAMxJ/fT/vk/40Yk/vp/3yf8afRRYBmJP76f8AfJ/xoxJ/fT/v k/40+iiwDMSf 
 30/75P8AjRiT++n/AHyf8afRRYBmJP76f98n/GjEn99P++T/AI0+iiwDMSf3 0/75P+NGJP76 
 f98n/Gn0UWAZiT++n/fJ/wAaMSf30/75P+NPoosAzEn99P8Avk/40Yk/vp/3 yf8AGn0UWAZi 
 T++n/fJ/xoxJ/fT/AL5P+NPoosBFKJPKfLLjaf4f/r07En99P++T/jRL/qX/ AN00+iwDMSf3 
 0/75P+NGJP76f98n/Gn0UWAZiT++n/fJ/wAaMSf30/75P+NPoosAzEn99P8A vk/40Yk/vp/3 
 yf8AGn0UWAZiT++n/fJ/xoxJ/fT/AL5P+NPoosB8pfFT/kedT/6+W/pRR8VP +R51P/r5b+lF 
 fb0/4UP8MfyR5kevq/zPQPBrFPi7rLrG0jLfagQi4y3zHgZIGfqRXoZvtYJz /wAI/J/4Fw// 
 ABVefeCf+Sxat/1/3/8A6Ga9VP3j9a+azr+PH/Cjqwfwy9WZX23WP+hfk/8A AuH/AOKqfwm0 
 3l6sZbdo5DfsWQOrbSY4+Mg4q7Vbwr/zGf8AsJP/AOgJXkw3Otm7vb/nk/5j /Gje3/PJ/wAx 
 /jT6K0JGb2/55P8AmP8AGje3/PJ/zH+NPooAZvb/AJ5P+Y/xo3t/zyf8x/jT 6KAGb2/55P8A 
 mP8AGje3/PJ/zH+NPooAZvb/AJ5P+Y/xo3t/zyf8x/jT6KAGb2/55P8AmP8A Gje3/PJ/zH+N 
 PooAZvb/AJ5P+Y/xo3t/zyf8x/jT6KAGb2/55P8AmP8AGje3/PJ/zH+NPooA ikdto/dsPmHp 
 6j3p29v+eT/mP8aJfuD/AHl/mKfQAze3/PJ/zH+NG9v+eT/mP8afRQAze3/P J/zH+NG9v+eT 
 /mP8afRQAze3/PJ/zH+NG9v+eT/mP8afRQAze3/PJ/zH+NG9v+eT/mP8afRQ Aze3/PJ/zH+N 
 G9v+eT/mP8afRQAze3/PJ/zH+NNidhEn7tj8o9P8alpkX+pT/dFHUA3t/wA8 n/Mf40b2/wCe 
 T/mP8afRQAze3/PJ/wAx/jRvb/nk/wCY/wAafRQAze3/ADyf8x/jRvb/AJ5P +Y/xp9FADN7f 
 88n/ADH+NG9v+eT/AJj/ABp9FADN7f8APJ/zH+NG9v8Ank/5j/Gn0UAM3t/z yf8AMf40b2/5 
 5P8AmP8AGn0UAM3t/wA8n/Mf40b2/wCeT/mP8afRQAze3/PJ/wAx/jRvb/nk /wCY/wAafRQA 
 ze3/ADyf8x/jRvb/AJ5P+Y/xp9FAEUrsYn/dsPlPp/jTt7f88n/Mf40S/wCp f/dNPoAZvb/n 
 k/5j/Gje3/PJ/wAx/jT6KAGb2/55P+Y/xo3t/wA8n/Mf40+igBm9v+eT/mP8 aN7f88n/ADH+ 
 NPooAZvb/nk/5j/Gje3/ADyf8x/jT6KAPlL4qf8AI86n/wBfL/0oo+Kn/I86 n/18t/Sivt6f 
 8KH+GP5I8yPX1f5noHg2RIfi7rMsrqkaX2oMzscBQGOST2Fd+fFOh5P/ABMo f1rgvBP/ACWH 
 Vv8Ar/v/AP0M16wZpcn9435181nX8eP+FHVg/hl6sxP+Ep0P/oJQ/rVjwhdQ Tw6rNFMjRyag 
 7KwPUbErT8+X/no351U8MO8jayzsWb+0XGSc8COMCvJhudbNvzY/+eif99Cj zY/+eif99Cn0 
 VoSM82P/AJ6J/wB9CjzY/wDnon/fQp9FADPNj/56J/30KPNj/wCeif8AfQp9 FADPNj/56J/3 
 0KPNj/56J/30KfRQAzzY/wDnon/fQo82P/non/fQp9FADPNj/wCeif8AfQo8 2P8A56J/30Kf 
 RQAzzY/+eif99CjzY/8Anon/AH0KfRQAzzY/+eif99CjzY/+eif99Cn0UARS SxlRh1+8O/uK 
 d5sf/PRP++hRL9wf7y/zFPoAZ5sf/PRP++hR5sf/AD0T/voU+igBnmx/89E/ 76FHmx/89E/7 
 6FPooAZ5sf8Az0T/AL6FHmx/89E/76FPooAZ5sf/AD0T/voUebH/AM9E/wC+ hT6KAGebH/z0 
 T/voUebH/wA9E/76FPooAZ5sf/PRP++hTYpYxEgLqDtHepaZF/qU/wB0UdQD zY/+eif99Cjz 
 Y/8Anon/AH0KfRQAzzY/+eif99CjzY/+eif99Cn0UAM82P8A56J/30KPNj/5 6J/30KfRQAzz 
 Y/8Anon/AH0KPNj/AOeif99Cn0UAM82P/non/fQo82P/AJ6J/wB9Cn0UAM82 P/non/fQo82P 
 /non/fQp9FADPNj/AOeif99CjzY/+eif99Cn0UAM82P/AJ6J/wB9CjzY/wDn on/fQp9FADPN 
 j/56J/30KPNj/wCeif8AfQp9FAEUssZicB1J2nvTvNj/AOeif99CiX/Uv/um n0AM82P/AJ6J 
 /wB9CjzY/wDnon/fQp9FADPNj/56J/30KPNj/wCeif8AfQp9FADPNj/56J/3 0KPNj/56J/30 
 KfRQAzzY/wDnon/fQo82P/non/fQp9FAHyl8VP8AkedT/wCvlv6UUfFT/ked T/6+W/pRX29P 
 +FD/AAx/JHmR6+r/ADPQvBP/ACWHVv8Ar/v/AP0M16qfvH615R4NjEvxd1mN iwV77UFJVip5 
 Y9COQfcV6GfDejg4+ySf+Bc3/wAXXzWdfx4/4UdWD+GXqzTqt4V/5jP/AGEn /wDQEqp/wjej 
 /wDPpJ/4Fzf/ABdT+E4IY49WjiRo40v2VVEjHAEcfckk15MNzrZ0lFM8pfV/ ++z/AI0eUvq/ 
 /fZ/xrQkfRTPKX1f/vs/40eUvq//AH2f8aAH0Uzyl9X/AO+z/jR5S+r/APfZ /wAaAH0Uzyl9 
 X/77P+NHlL6v/wB9n/GgB9FM8pfV/wDvs/40eUvq/wD32f8AGgB9FM8pfV/+ +z/jR5S+r/8A 
 fZ/xoAfRTPKX1f8A77P+NHlL6v8A99n/ABoAfRTPKX1f/vs/40eUvq//AH2f 8aACX7g/3l/m 
 KfUUkahRy33h/EfUU7yl9X/77P8AjQA+imeUvq//AH2f8aPKX1f/AL7P+NAD 6KZ5S+r/APfZ 
 /wAaPKX1f/vs/wCNAD6KZ5S+r/8AfZ/xo8pfV/8Avs/40APopnlL6v8A99n/ ABo8pfV/++z/ 
 AI0APopnlL6v/wB9n/Gjyl9X/wC+z/jQA+mRf6lP90UeUvq//fZ/xpsUamJD lvuj+I0dQJaK 
 Z5S+r/8AfZ/xo8pfV/8Avs/40APopnlL6v8A99n/ABo8pfV/++z/AI0APopn lL6v/wB9n/Gj 
 yl9X/wC+z/jQA+imeUvq/wD32f8AGjyl9X/77P8AjQA+imeUvq//AH2f8aPK X1f/AL7P+NAD 
 6KZ5S+r/APfZ/wAaPKX1f/vs/wCNAD6KZ5S+r/8AfZ/xo8pfV/8Avs/40APo pnlL6v8A99n/ 
 ABo8pfV/++z/AI0APopnlL6v/wB9n/Gjyl9X/wC+z/jQAS/6l/8AdNPqKWNR E5y33T/Ead5S 
 +r/99n/GgB9FM8pfV/8Avs/40eUvq/8A32f8aAH0Uzyl9X/77P8AjR5S+r/9 9n/GgB9FM8pf 
 V/8Avs/40eUvq/8A32f8aAH0Uzyl9X/77P8AjR5S+r/99n/GgD5V+Kn/ACPO p/8AXy39KKPi 
 p/yPOp/9fLf0or7en/Ch/hj+SPMj19X+Z01j4os/C3xJ1zULlfN8vUbxfKVg Cd0hHeuoPxo0 
 Un/kHXH/AH/X/CvF/Gv/ACPniH/sJ3P/AKNasKuephMPieWdWN3ZdSo88G1G XU+hD8aNF/6B 
 1x/3/T/Co9P+Mmh6d9p8nTrpvtE5nffOhwxAHGB0+UV8/wBFQsrwa+x+LH7S t/N+B9Gf8L20 
 n/oGTf8Af5f8KP8Ahe2k/wDQMm/7/L/hXznRT/s3Cfyfiw9pV/m/BH0Z/wAL 20n/AKBk3/f5 
 f8KP+F7aT/0DJv8Av8v+FfOdFH9m4T+T8WHtKv8AN+CPoz/he2k/9Ayb/v8A L/hR/wAL20n/ 
 AKBk3/f5f8K+c6KP7Nwn8n4sPaVf5vwR9Gf8L20n/oGTf9/l/wAKP+F7aT/0 DJv+/wAv+FfO 
 dFH9m4T+T8WHtKv834I+jP8Ahe2k/wDQMm/7/L/hR/wvbSf+gZN/3+X/AAr5 zoo/s3Cfyfiw 
 9pV/m/BH0Z/wvbSf+gZN/wB/l/wo/wCF7aT/ANAyb/v8v+FfOdFH9m4T+T8W HtKv834I+jP+ 
 F7aT/wBAyb/v8v8AhR/wvbSf+gZN/wB/l/wr5zoo/s3Cfyfiw9pV/m/BH0Z/ wvXSf+gZN/3+ 
 Wj/he2k/9Ayb/v8AL/hXznRR/ZuE/k/Fh7Sr/N+B9Ft8dNIYYOmT9Qf9cv8A hS/8L20n/oGT 
 f9/l/wAK+c6KP7Nwn8n4sPaVf5vwR9Gf8L20n/oGTf8Af5f8KP8Aheuk/wDQ Mm/7/LXznRR/ 
 ZuE/k/Fh7Sr/ADfgj6M/4XtpP/QMm/7/AC/4Uf8AC9tJ/wCgZN/3+X/CvnOi j+zcJ/J+LD2l 
 X+b8EfRn/C9dJ/6Bk3/f5aP+F7aT/wBAyb/v8v8AhXznRR/ZuE/k/Fh7Sr/N +CPoz/he2k/9 
 Ayb/AL/L/hR/wvbSf+gZN/3+X/CvnOij+zcJ/J+LD2lX+b8EfRn/AAvbSf8A oGTf9/l/wo/4 
 XtpP/QMm/wC/y/4V850Uf2bhP5PxYe0q/wA34H0Z/wAL20n/AKBk3/f5f8KR fjppCqFGmTYA 
 x/rl/wAK+dKKP7Nwn8n4sPaVf5vwR9Gf8L20n/oGTf8Af5f8KP8Ahe2k/wDQ Mm/7/L/hXznR 
 R/ZuE/k/Fh7Sr/N+CPoz/he2k/8AQMm/7/L/AIUf8L20n/oGTf8Af5f8K+c6 KP7Nwn8n4sPa 
 Vf5vwR9Gf8L20n/oGTf9/l/wo/4XtpP/AEDJv+/y/wCFfOdFH9m4T+T8WHtK v834H0Z/wvbS 
 f+gZN/3+X/Cj/he2k/8AQMm/7/L/AIV850Uf2bhP5PxYe0q/zfgfRn/C9tJ/ 6Bk3/f5f8KP+ 
 F7aT/wBAyb/v8v8AhXznRR/ZuE/k/Fh7Sr/N+CPoz/he2k/9Ayb/AL/L/hR/ wvbSf+gZN/3+ 
 X/CvnOij+zcJ/J+LD2lX+b8D6M/4XtpP/QMm/wC/y/4Uf8L20n/oGTf9/l/w r5zoo/s3Cfyf 
 iw9pV/m/BH0Z/wAL20n/AKBk3/f5f8KP+F7aT/0DJv8Av8v+FfOdFH9m4T+T 8WHtKv8AN+CP 
 oz/he2k/9Ayb/v8AL/hR/wAL20n/AKBk3/f5f8K+c6KP7Nwn8n4sPaVf5vwP otvjppDKVOmT 
 4Ix/rl/wpf8Ahe2k/wDQMm/7/L/hXznRR/ZuE/k/Fh7Sr/N+CPoz/he2k/8A QMm/7/L/AIUf 
 8L20n/oGTf8Af5f8K+c6KP7Nwn8n4sPaVf5vwR9Gf8L20n/oGTf9/l/wo/4X tpP/AEDJv+/y 
 /wCFfOdFH9m4T+T8WHtKv834H0Z/wvbSf+gZN/3+X/Cj/he2k/8AQMm/7/L/ AIV850Uf2bhP 
 5PxYe0q/zfgj6M/4XtpP/QMm/wC/y/4Uf8L20n/oGTf9/l/wr5zoo/s3Cfyf iw9pV/m/A6Xx 
vrEGveIbnUrdSqTyGQKxBK5xxxRXNUV26JJLZJL7iYqyP//Z 
--------------080806070908060205050505--
 |  
 |  
  |  
| Re: Are multiple lines in Grid possible? [message #582814 is a reply to message #35835] | 
Thu, 31 May 2007 10:33   | 
 
Eclipse User  | 
 | 
 | 
   | 
 
Hi Oliver, 
 
The screenshot on the Grid page is from the examples plugin.  You can  
download that to get a nice little UI that will allow you to manipulate  
the styles and options on the Grid. 
 
At this point, you should open a bug against Grid and start attaching  
patches so, like Tom said, others can take a look and contribute.  I  
would like to give it a quick look through as well. 
 
Regards, 
-Chris 
 
Oliver wrote: 
> Chris, 
>  
> thanks for your detailed answer! 
>  
> I have looked into this a little and have made a quick 
> first attempt (see screenshot). 
>  
> It seems to work so far. However, I guess that 
> issues will arise when testing it with more advanced features 
> of Grid (e.g. checkboxes).  Also, I have not yet examined 
> dynamic changes of heights of individual rows. 
>  
> What I have changed:  The item height specified in Grid 
> is now called _default_ item height (e.g. setDefaultItemHeight() 
> instead of setItemHeight()). Each GridItem now has a height 
> which may be -1 (the default) to indicate that the parent 
> Grid's default item height should be used for this GridItem. 
> This way, nothing changes from a client perspective when 
> all items should have the same height. On the other hand, 
> specifying an individual height for an item is easy: 
>  
> item3.setHeight(50); 
>  
> Currently, the height of individual items is only set 
> programmatically through GridItem.setHeight(int), i.e. 
> the preferred height from the cell renderer is currently 
> not used for that. 
>  
> If you could provide me with an example that uses most 
> of Grid's features (like the one shown in the screenshot 
> on the Grid home page), this would help me a lot in testing 
> my changes ... 
>  
> Cheers, 
> Oliver 
>  
>  
>  
> Chris Gross schrieb: 
>> Unfortunately I don't have any existing code for this feature.  I've  
>> just been thinking about it but not actually coding it.  The code  
>> changes necessary for this feature wouldn't be particularly easy.  I  
>> suspect there will be a variety of places in the Grid code where I  
>> multiply the row height by a number of rows to determine some  
>> dimensions.  Like: 
>> 
>> getRowCount() * getItemHeight() = total height of all rows 
>> 
>> Those places would have to be changed to iterate through all the rows  
>> because each row would now potentially have a different height.  That  
>> could also be a performance concern.  Other parts of the code will  
>> likely rely on getItem(Point) to determine what row is where so that  
>> may help this change somewhat.  But I still think its not an easy  
>> piece for someone to code as a patch. 
>> 
>> Regards, 
>> -Chris 
>  
>  
>  ------------------------------------------------------------ ------------ 
>
 |  
 |  
  |   |   
Goto Forum:
 
 Current Time: Tue Nov 04 03:41:31 EST 2025 
 Powered by  FUDForum. Page generated in 0.29745 seconds  
 |