Skip to main content



      Home
Home » Modeling » GMF (Graphical Modeling Framework) » List of items based on internal list?
List of items based on internal list? [message #14865] Thu, 10 August 2006 20:49 Go to next message
Eclipse UserFriend
Originally posted by: tansey.vt.edu

Hi,

I'm new to the GMF project (and Eclipse plugins in general) and have
been going over it for the last few weeks. I am working on a program
visualization tool for a specialized domain. I want the user to be able
to first create their classes (nodes which contain a list of fields,
these are simple classes with no methods) then be able to create their
objects from those classes (nodes which contain a reference to the
object's class). When the user creates an object node, I want to list
all of the fields in the member Class so that they can fill in their
values. I'm not sure how I can specify that in the XML document for the
ECore file (or if I can).

So far what I have for that portion is:
> <xsd:complexType name="SpecialClass">
> <xsd:attribute ecore:reference="special:FieldDeclaration" name="fieldDeclarations">
> <xsd:simpleType>
> <xsd:list itemType="xsd:anyURI"/>
> </xsd:simpleType>
> </xsd:attribute>
> <xsd:attribute name="name" type="xsd:string"/>
> </xsd:complexType>
>
> <xsd:complexType name="SpecialObject">
> <xsd:attribute name="name" type="xsd:string"/>
> <xsd:attribute ecore:reference="special:SpecialClass" name="specialClass" type="xsd:anyURI"/>
> <xsd:attribute ecore:reference="special:FieldDefinition" name="fieldDefinitions">
> <xsd:simpleType>
> <xsd:list itemType="xsd:anyURI"/>
> </xsd:simpleType>
> </xsd:complexType>
>
> <xsd:complexType name="FieldDefinition">
> <xsd:attribute ecore:reference="special:FieldDeclaration" name="field" type="xsd:anyURI"/>
> <xsd:attribute name="value" type="xsd:string"/>
> </xsd:complexType>
>
> <xsd:complexType name="FieldDeclaration">
> <xsd:attribute name="type" type="xsd:string"/>
> <xsd:attribute name="name" type="xsd:string"/>
> </xsd:complexType>

What I want to do is have the user first create a node, say MyClass, and
add a FieldDeclaration to it, say of type String and named myString.
Then the user creates an object node, chooses MyClass as its
specialClass; then my user should be able to see its field myString and
be able to set its value.

Any help or hints would be great!

Thanks,
Wesley
Re: List of items based on internal list? [message #15843 is a reply to message #14865] Fri, 11 August 2006 07:51 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: merks.ca.ibm.com

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

Wesley,

You've not really described how graphically this should look, but bot
the EMF or GMF editor generated for the schema below will do all the
instance editing things you've described. Following the tutorial's
steps but with your own schema as the starting point should help
illustrate that:

http://www.eclipse.org/emf/docs.php?doc=tutorials/xlibmod/xl ibmod.html
http://wiki.eclipse.org/index.php/GMF_Tutorial

It also sounds like your users are both creating a meta model (Ecore,
XML Schema, or something) as well as generating the instance. The steps
you describe are possible in the Ecore editor directly. I.e., you can
create an EClass, add EStructuralFeatures, and then you can right click
on the EClass and say "Create Dynamic Instance" which will open an
editor for editing the instance based on your dynamic model. Try it
with an Ecore model you create when following the tutorials...


Wesley Tansey wrote:
> Hi,
>
> I'm new to the GMF project (and Eclipse plugins in general) and have
> been going over it for the last few weeks. I am working on a program
> visualization tool for a specialized domain. I want the user to be
> able to first create their classes (nodes which contain a list of
> fields, these are simple classes with no methods) then be able to
> create their objects from those classes (nodes which contain a
> reference to the object's class). When the user creates an object
> node, I want to list all of the fields in the member Class so that
> they can fill in their values. I'm not sure how I can specify that in
> the XML document for the ECore file (or if I can).
>
> So far what I have for that portion is:
>> <xsd:complexType name="SpecialClass">
>> <xsd:attribute ecore:reference="special:FieldDeclaration"
>> name="fieldDeclarations">
>> <xsd:simpleType>
>> <xsd:list itemType="xsd:anyURI"/>
>> </xsd:simpleType>
>> </xsd:attribute>
>> <xsd:attribute name="name" type="xsd:string"/>
>> </xsd:complexType>
>>
>> <xsd:complexType name="SpecialObject">
>> <xsd:attribute name="name" type="xsd:string"/>
>> <xsd:attribute ecore:reference="special:SpecialClass"
>> name="specialClass" type="xsd:anyURI"/>
>> <xsd:attribute ecore:reference="special:FieldDefinition"
>> name="fieldDefinitions">
>> <xsd:simpleType>
>> <xsd:list itemType="xsd:anyURI"/>
>> </xsd:simpleType>
>> </xsd:complexType>
>>
>> <xsd:complexType name="FieldDefinition">
>> <xsd:attribute ecore:reference="special:FieldDeclaration"
>> name="field" type="xsd:anyURI"/>
>> <xsd:attribute name="value" type="xsd:string"/>
>> </xsd:complexType>
>>
>> <xsd:complexType name="FieldDeclaration">
>> <xsd:attribute name="type" type="xsd:string"/>
>> <xsd:attribute name="name" type="xsd:string"/>
>> </xsd:complexType>
>
> What I want to do is have the user first create a node, say MyClass,
> and add a FieldDeclaration to it, say of type String and named
> myString. Then the user creates an object node, chooses MyClass as its
> specialClass; then my user should be able to see its field myString
> and be able to set its value.
>
> Any help or hints would be great!
>
> Thanks,
> Wesley


--------------020907030309060200050609
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Wesley,<br>
<br>
You've not really described how graphically this should look, but bot
the EMF or GMF editor generated for the schema below will do all the
instance editing things you've described.&nbsp; Following the tutorial's
steps but with your own schema as the starting point should help
illustrate that:<br>
<blockquote><a
href=" http://www.eclipse.org/emf/docs.php?doc=tutorials/xlibmod/xl ibmod.html"> http://www.eclipse.org/emf/docs.php?doc=tutorials/xlibmod/xl ibmod.html</a><br>
<a href="http://wiki.eclipse.org/index.php/GMF_Tutorial">http://wiki.eclipse.org/index.php/GMF_Tutorial</a><br>
</blockquote>
It also sounds like your users are both creating a meta model (Ecore,
XML Schema, or something) as well as generating the instance.&nbsp; The
steps you describe are possible in the Ecore editor directly.&nbsp; I.e.,
you can create an EClass, add EStructuralFeatures, and then you can
right click on the EClass and say "Create Dynamic Instance" which will
open an editor for editing the instance based on your dynamic model.&nbsp;
Try it with an Ecore model you create when following the tutorials...<br>
<br>
<br>
Wesley Tansey wrote:
<blockquote cite="midebgk5t$k5n$1@utils.eclipse.org" type="cite">Hi,
<br>
<br>
I'm new to the GMF project (and Eclipse plugins in general) and have
been going over it for the last few weeks.&nbsp; I am working on a program
visualization tool for a specialized domain.&nbsp; I want the user to be
able to first create their classes (nodes which contain a list of
fields, these are simple classes with no methods) then be able to
create their objects from those classes (nodes which contain a
reference to the object's class).&nbsp; When the user creates an object
node, I want to list all of the fields in the member Class so that they
can fill in their values.&nbsp; I'm not sure how I can specify that in the
XML document for the ECore file (or if I can).
<br>
<br>
So far what I have for that portion is:
<br>
<blockquote type="cite">&lt;xsd:complexType name="SpecialClass"&gt;
<br>
&nbsp;&nbsp;&nbsp; &lt;xsd:attribute ecore:reference="special:FieldDeclaration"
name="fieldDeclarations"&gt;
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:simpleType&gt;
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &lt;xsd:list itemType="xsd:anyURI"/&gt;
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xsd:simpleType&gt;
<br>
&nbsp;&nbsp;&nbsp; &lt;/xsd:attribute&gt;
<br>
&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="name" type="xsd:string"/&gt;
<br>
&nbsp; &lt;/xsd:complexType&gt;
<br>
<br>
&nbsp; &lt;xsd:complexType name="SpecialObject"&gt;
<br>
&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="name" type="xsd:string"/&gt;
<br>
&nbsp;&nbsp;&nbsp; &lt;xsd:attribute ecore:reference="special:SpecialClass"
name="specialClass" type="xsd:anyURI"/&gt;
<br>
&nbsp;&nbsp;&nbsp; &lt;xsd:attribute ecore:reference="special:FieldDefinition"
name="fieldDefinitions"&gt;
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:simpleType&gt;
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &lt;xsd:list itemType="xsd:anyURI"/&gt;
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xsd:simpleType&gt;
<br>
&nbsp; &lt;/xsd:complexType&gt;
<br>
<br>
&nbsp; &lt;xsd:complexType name="FieldDefinition"&gt;
<br>
&nbsp;&nbsp;&nbsp; &lt;xsd:attribute ecore:reference="special:FieldDeclaration"
name="field" type="xsd:anyURI"/&gt;
<br>
&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="value" type="xsd:string"/&gt;
<br>
&nbsp; &lt;/xsd:complexType&gt;
<br>
<br>
&nbsp; &lt;xsd:complexType name="FieldDeclaration"&gt;
<br>
&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="type" type="xsd:string"/&gt;
<br>
&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="name" type="xsd:string"/&gt;
<br>
&nbsp; &lt;/xsd:complexType&gt;
<br>
</blockquote>
<br>
What I want to do is have the user first create a node, say MyClass,
and add a FieldDeclaration to it, say of type String and named
myString. Then the user creates an object node, chooses MyClass as its
specialClass; then my user should be able to see its field myString and
be able to set its value.
<br>
<br>
Any help or hints would be great!
<br>
<br>
Thanks,
<br>
Wesley
<br>
</blockquote>
<br>
</body>
</html>

--------------020907030309060200050609--
Re: List of items based on internal list? [message #16091 is a reply to message #15843] Fri, 11 August 2006 19:53 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: tansey.vt.edu

Ed,

What I am trying to do is a little different than what you are
suggesting I think. I want to have 3 editors, one which allows users to
create their SpecialClass and SpecialObject types, and another which
allows them to draw control flow graphs using the SpecialObjects as part
of the nodes. Then the 3rd editor will take the graph from my 2nd
editor and generate Java code (both the new classes and the new objects).

I can almost use the EMF model creator. Say for example I want to
create two classes, A and B:

Class A
---------
int F1
String F2
double F3

Class B
---------
String F1

Now I want to have 2 different objects, Obj1 and Obj2, with different
values for these fields:

Obj1 (type = A)
-----
int F1 = 1
String F2 = "obj1"
double F3 = .5

Obj2 (type = B)
-----
String F4 = "obj2"

If I were to create this as an EMF model, I would have my SpecialClass
and SpecialObject. The user would create a SpecialClass with the name A
and then create child FieldDeclarations for it. They follow the same
process to create SpecialClass B. Now, when my user goes to create
Obj1, they choose A as their SpecialClass. However, if they go to
create child FieldDefinitions for Obj1, the list of available
FieldDeclarations will be F1, F2, F3, and F4. I would like instead for
them instead to automatically have the list of FieldDeclarations
available to them to be constrained to those contained in the parent
SpecialClass.

It's a small problem, but an important one, since I don't want users
defining fields for their object that they don't actually have.



Ed Merks wrote:
> Wesley,
>
> You've not really described how graphically this should look, but bot
> the EMF or GMF editor generated for the schema below will do all the
> instance editing things you've described. Following the tutorial's
> steps but with your own schema as the starting point should help
> illustrate that:
>
> http://www.eclipse.org/emf/docs.php?doc=tutorials/xlibmod/xl ibmod.html
> http://wiki.eclipse.org/index.php/GMF_Tutorial
>
> It also sounds like your users are both creating a meta model (Ecore,
> XML Schema, or something) as well as generating the instance. The steps
> you describe are possible in the Ecore editor directly. I.e., you can
> create an EClass, add EStructuralFeatures, and then you can right click
> on the EClass and say "Create Dynamic Instance" which will open an
> editor for editing the instance based on your dynamic model. Try it
> with an Ecore model you create when following the tutorials...
>
>
> Wesley Tansey wrote:
>> Hi,
>>
>> I'm new to the GMF project (and Eclipse plugins in general) and have
>> been going over it for the last few weeks. I am working on a program
>> visualization tool for a specialized domain. I want the user to be
>> able to first create their classes (nodes which contain a list of
>> fields, these are simple classes with no methods) then be able to
>> create their objects from those classes (nodes which contain a
>> reference to the object's class). When the user creates an object
>> node, I want to list all of the fields in the member Class so that
>> they can fill in their values. I'm not sure how I can specify that in
>> the XML document for the ECore file (or if I can).
>>
>> So far what I have for that portion is:
>>> <xsd:complexType name="SpecialClass">
>>> <xsd:attribute ecore:reference="special:FieldDeclaration"
>>> name="fieldDeclarations">
>>> <xsd:simpleType>
>>> <xsd:list itemType="xsd:anyURI"/>
>>> </xsd:simpleType>
>>> </xsd:attribute>
>>> <xsd:attribute name="name" type="xsd:string"/>
>>> </xsd:complexType>
>>>
>>> <xsd:complexType name="SpecialObject">
>>> <xsd:attribute name="name" type="xsd:string"/>
>>> <xsd:attribute ecore:reference="special:SpecialClass"
>>> name="specialClass" type="xsd:anyURI"/>
>>> <xsd:attribute ecore:reference="special:FieldDefinition"
>>> name="fieldDefinitions">
>>> <xsd:simpleType>
>>> <xsd:list itemType="xsd:anyURI"/>
>>> </xsd:simpleType>
>>> </xsd:complexType>
>>>
>>> <xsd:complexType name="FieldDefinition">
>>> <xsd:attribute ecore:reference="special:FieldDeclaration"
>>> name="field" type="xsd:anyURI"/>
>>> <xsd:attribute name="value" type="xsd:string"/>
>>> </xsd:complexType>
>>>
>>> <xsd:complexType name="FieldDeclaration">
>>> <xsd:attribute name="type" type="xsd:string"/>
>>> <xsd:attribute name="name" type="xsd:string"/>
>>> </xsd:complexType>
>>
>> What I want to do is have the user first create a node, say MyClass,
>> and add a FieldDeclaration to it, say of type String and named
>> myString. Then the user creates an object node, chooses MyClass as its
>> specialClass; then my user should be able to see its field myString
>> and be able to set its value.
>>
>> Any help or hints would be great!
>>
>> Thanks,
>> Wesley
>
Re: List of items based on internal list? [message #16112 is a reply to message #16091] Sat, 12 August 2006 08:15 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: merks.ca.ibm.com

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

Wesley,

Is this screen capture an illustration of your scenario?


When I create a dynamic instance of A and B, each has only the
appropriate fields. E.g., here B only has an F4 property only.


Wesley Tansey wrote:
> Ed,
>
> What I am trying to do is a little different than what you are
> suggesting I think. I want to have 3 editors, one which allows users
> to create their SpecialClass and SpecialObject types, and another
> which allows them to draw control flow graphs using the SpecialObjects
> as part of the nodes. Then the 3rd editor will take the graph from my
> 2nd editor and generate Java code (both the new classes and the new
> objects).
>
> I can almost use the EMF model creator. Say for example I want to
> create two classes, A and B:
>
> Class A
> ---------
> int F1
> String F2
> double F3
>
> Class B
> ---------
> String F1
>
> Now I want to have 2 different objects, Obj1 and Obj2, with different
> values for these fields:
>
> Obj1 (type = A)
> -----
> int F1 = 1
> String F2 = "obj1"
> double F3 = .5
>
> Obj2 (type = B)
> -----
> String F4 = "obj2"
>
> If I were to create this as an EMF model, I would have my SpecialClass
> and SpecialObject. The user would create a SpecialClass with the name
> A and then create child FieldDeclarations for it. They follow the
> same process to create SpecialClass B. Now, when my user goes to
> create Obj1, they choose A as their SpecialClass. However, if they go
> to create child FieldDefinitions for Obj1, the list of available
> FieldDeclarations will be F1, F2, F3, and F4. I would like instead
> for them instead to automatically have the list of FieldDeclarations
> available to them to be constrained to those contained in the parent
> SpecialClass.
>
> It's a small problem, but an important one, since I don't want users
> defining fields for their object that they don't actually have.
>
>
>
> Ed Merks wrote:
>> Wesley,
>>
>> You've not really described how graphically this should look, but bot
>> the EMF or GMF editor generated for the schema below will do all the
>> instance editing things you've described. Following the tutorial's
>> steps but with your own schema as the starting point should help
>> illustrate that:
>>
>>
>> http://www.eclipse.org/emf/docs.php?doc=tutorials/xlibmod/xl ibmod.html
>> http://wiki.eclipse.org/index.php/GMF_Tutorial
>>
>> It also sounds like your users are both creating a meta model (Ecore,
>> XML Schema, or something) as well as generating the instance. The
>> steps you describe are possible in the Ecore editor directly. I.e.,
>> you can create an EClass, add EStructuralFeatures, and then you can
>> right click on the EClass and say "Create Dynamic Instance" which
>> will open an editor for editing the instance based on your dynamic
>> model. Try it with an Ecore model you create when following the
>> tutorials...
>>
>>
>> Wesley Tansey wrote:
>>> Hi,
>>>
>>> I'm new to the GMF project (and Eclipse plugins in general) and have
>>> been going over it for the last few weeks. I am working on a
>>> program visualization tool for a specialized domain. I want the
>>> user to be able to first create their classes (nodes which contain a
>>> list of fields, these are simple classes with no methods) then be
>>> able to create their objects from those classes (nodes which contain
>>> a reference to the object's class). When the user creates an object
>>> node, I want to list all of the fields in the member Class so that
>>> they can fill in their values. I'm not sure how I can specify that
>>> in the XML document for the ECore file (or if I can).
>>>
>>> So far what I have for that portion is:
>>>> <xsd:complexType name="SpecialClass">
>>>> <xsd:attribute ecore:reference="special:FieldDeclaration"
>>>> name="fieldDeclarations">
>>>> <xsd:simpleType>
>>>> <xsd:list itemType="xsd:anyURI"/>
>>>> </xsd:simpleType>
>>>> </xsd:attribute>
>>>> <xsd:attribute name="name" type="xsd:string"/>
>>>> </xsd:complexType>
>>>>
>>>> <xsd:complexType name="SpecialObject">
>>>> <xsd:attribute name="name" type="xsd:string"/>
>>>> <xsd:attribute ecore:reference="special:SpecialClass"
>>>> name="specialClass" type="xsd:anyURI"/>
>>>> <xsd:attribute ecore:reference="special:FieldDefinition"
>>>> name="fieldDefinitions">
>>>> <xsd:simpleType>
>>>> <xsd:list itemType="xsd:anyURI"/>
>>>> </xsd:simpleType>
>>>> </xsd:complexType>
>>>>
>>>> <xsd:complexType name="FieldDefinition">
>>>> <xsd:attribute ecore:reference="special:FieldDeclaration"
>>>> name="field" type="xsd:anyURI"/>
>>>> <xsd:attribute name="value" type="xsd:string"/>
>>>> </xsd:complexType>
>>>>
>>>> <xsd:complexType name="FieldDeclaration">
>>>> <xsd:attribute name="type" type="xsd:string"/>
>>>> <xsd:attribute name="name" type="xsd:string"/>
>>>> </xsd:complexType>
>>>
>>> What I want to do is have the user first create a node, say MyClass,
>>> and add a FieldDeclaration to it, say of type String and named
>>> myString. Then the user creates an object node, chooses MyClass as
>>> its specialClass; then my user should be able to see its field
>>> myString and be able to set its value.
>>>
>>> Any help or hints would be great!
>>>
>>> Thanks,
>>> Wesley
>>


--------------010601090501090505080408
Content-Type: multipart/related;
boundary="------------030404010002030808030002"


--------------030404010002030808030002
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Wesley,<br>
<br>
Is this screen capture an illustration of your scenario?<br>
<blockquote><img src="cid:part1.02070408.02070709@ca.ibm.com" alt=""><br>
</blockquote>
When I create a dynamic instance of A and B, each has only the
appropriate fields.&nbsp; E.g., here B only has an F4 property only.<br>
<br>
<br>
Wesley Tansey wrote:
<blockquote cite="midebj593$6fv$1@utils.eclipse.org" type="cite">Ed,
<br>
<br>
What I am trying to do is a little different than what you are
suggesting I think.&nbsp; I want to have 3 editors, one which allows users
to create their SpecialClass and SpecialObject types, and another which
allows them to draw control flow graphs using the SpecialObjects as
part of the nodes.&nbsp; Then the 3rd editor will take the graph from my 2nd
editor and generate Java code (both the new classes and the new
objects).
<br>
<br>
I can almost use the EMF model creator.&nbsp; Say for example I want to
create two classes, A and B:
<br>
<br>
Class A
<br>
---------
<br>
int F1
<br>
String F2
<br>
double F3
<br>
<br>
Class B
<br>
---------
<br>
String F1
<br>
<br>
Now I want to have 2 different objects, Obj1 and Obj2, with different
values for these fields:
<br>
<br>
Obj1 (type = A)
<br>
-----
<br>
int F1 = 1
<br>
String F2 = "obj1"
<br>
double F3 = .5
<br>
<br>
Obj2 (type = B)
<br>
-----
<br>
String F4 = "obj2"
<br>
<br>
If I were to create this as an EMF model, I would have my SpecialClass
and SpecialObject.&nbsp; The user would create a SpecialClass with the name
A and then create child FieldDeclarations for it.&nbsp; They follow the same
process to create SpecialClass B.&nbsp; Now, when my user goes to create
Obj1, they choose A as their SpecialClass.&nbsp; However, if they go to
create child FieldDefinitions for Obj1, the list of available
FieldDeclarations will be F1, F2, F3, and F4.&nbsp; I would like instead for
them instead to automatically have the list of FieldDeclarations
available to them to be constrained to those contained in the parent
SpecialClass.
<br>
<br>
It's a small problem, but an important one, since I don't want users
defining fields for their object that they don't actually have.
<br>
<br>
<br>
<br>
Ed Merks wrote:
<br>
<blockquote type="cite">Wesley,
<br>
<br>
You've not really described how graphically this should look, but bot
the EMF or GMF editor generated for the schema below will do all the
instance editing things you've described.&nbsp; Following the tutorial's
steps but with your own schema as the starting point should help
illustrate that:
<br>
<br>
&nbsp;&nbsp;&nbsp;
<a class="moz-txt-link-freetext" href=" http://www.eclipse.org/emf/docs.php?doc=tutorials/xlibmod/xl ibmod.html"> http://www.eclipse.org/emf/docs.php?doc=tutorials/xlibmod/xl ibmod.html</a>
<br>
&nbsp;&nbsp;&nbsp; <a class="moz-txt-link-freetext" href="http://wiki.eclipse.org/index.php/GMF_Tutorial">http://wiki.eclipse.org/index.php/GMF_Tutorial</a>
<br>
<br>
It also sounds like your users are both creating a meta model (Ecore,
XML Schema, or something) as well as generating the instance.&nbsp; The
steps you describe are possible in the Ecore editor directly.&nbsp; I.e.,
you can create an EClass, add EStructuralFeatures, and then you can
right click on the EClass and say "Create Dynamic Instance" which will
open an editor for editing the instance based on your dynamic model.&nbsp;
Try it with an Ecore model you create when following the tutorials...
<br>
<br>
<br>
Wesley Tansey wrote:
<br>
<blockquote type="cite">Hi,
<br>
<br>
I'm new to the GMF project (and Eclipse plugins in general) and have
been going over it for the last few weeks.&nbsp; I am working on a program
visualization tool for a specialized domain.&nbsp; I want the user to be
able to first create their classes (nodes which contain a list of
fields, these are simple classes with no methods) then be able to
create their objects from those classes (nodes which contain a
reference to the object's class).&nbsp; When the user creates an object
node, I want to list all of the fields in the member Class so that they
can fill in their values.&nbsp; I'm not sure how I can specify that in the
XML document for the ECore file (or if I can).
<br>
<br>
So far what I have for that portion is:
<br>
<blockquote type="cite">&lt;xsd:complexType
name="SpecialClass"&gt;
<br>
&nbsp;&nbsp;&nbsp; &lt;xsd:attribute ecore:reference="special:FieldDeclaration"
name="fieldDeclarations"&gt;
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:simpleType&gt;
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &lt;xsd:list itemType="xsd:anyURI"/&gt;
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xsd:simpleType&gt;
<br>
&nbsp;&nbsp;&nbsp; &lt;/xsd:attribute&gt;
<br>
&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="name" type="xsd:string"/&gt;
<br>
&nbsp; &lt;/xsd:complexType&gt;
<br>
<br>
&nbsp; &lt;xsd:complexType name="SpecialObject"&gt;
<br>
&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="name" type="xsd:string"/&gt;
<br>
&nbsp;&nbsp;&nbsp; &lt;xsd:attribute ecore:reference="special:SpecialClass"
name="specialClass" type="xsd:anyURI"/&gt;
<br>
&nbsp;&nbsp;&nbsp; &lt;xsd:attribute ecore:reference="special:FieldDefinition"
name="fieldDefinitions"&gt;
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsd:simpleType&gt;
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &lt;xsd:list itemType="xsd:anyURI"/&gt;
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xsd:simpleType&gt;
<br>
&nbsp; &lt;/xsd:complexType&gt;
<br>
<br>
&nbsp; &lt;xsd:complexType name="FieldDefinition"&gt;
<br>
&nbsp;&nbsp;&nbsp; &lt;xsd:attribute ecore:reference="special:FieldDeclaration"
name="field" type="xsd:anyURI"/&gt;
<br>
&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="value" type="xsd:string"/&gt;
<br>
&nbsp; &lt;/xsd:complexType&gt;
<br>
<br>
&nbsp; &lt;xsd:complexType name="FieldDeclaration"&gt;
<br>
&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="type" type="xsd:string"/&gt;
<br>
&nbsp;&nbsp;&nbsp; &lt;xsd:attribute name="name" type="xsd:string"/&gt;
<br>
&nbsp; &lt;/xsd:complexType&gt;
<br>
</blockquote>
<br>
What I want to do is have the user first create a node, say MyClass,
and add a FieldDeclaration to it, say of type String and named
myString. Then the user creates an object node, chooses MyClass as its
specialClass; then my user should be able to see its field myString and
be able to set its value.
<br>
<br>
Any help or hints would be great!
<br>
<br>
Thanks,
<br>
Wesley
<br>
</blockquote>
<br>
</blockquote>
</blockquote>
<br>
</body>
</html>

--------------030404010002030808030002
Content-Type: image/jpeg;
name="moz-screenshot-18.jpg"
Content-Transfer-Encoding: base64
Content-ID: <part1.02070408.02070709@ca.ibm.com>
Content-Disposition: inline;
filename="moz-screenshot-18.jpg"

/9j/4AAQSkZJRgABAQIAJQAlAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsL DBkSEw8UHRof
Hh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwL DBgNDRgyIRwh
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjL/wAAR
CAGpAdEDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcI CQoL/8QAtRAA
AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS 0fAkM2JyggkK
FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1 dnd4eXqDhIWG
h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW 19jZ2uHi4+Tl
5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcI CQoL/8QAtREA
AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMz UvAVYnLRChYk
NOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0 dXZ3eHl6goOE
hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU 1dbX2Nna4uPk
5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD1jS4o4NK/tiWBZ7xojPH6 ouCVVePlJB5x
1JPUYq9Jqt5FbNcm3tZYUYq5gui7ZDbWAGwDIORjI5GK5jVvtM3gO1jtgGIi tzIvlGQsgKk4
AI6de/AIxzkYvgG3voda87y2SARTJK72jIGbzPug5+8CPfG0j3FxoOcHJSsb RiuRyZ6fBexX
MCzQuHjYZBH+evtUnne9YWmT/wCjS/8AXzP/AOjXry3S9Fnh8HeFy7Z0q1l0 q+tEwOLiaaES
c53fLmZueD9qwAPLFZRbtqZNHt/ne9Hne9cJpmvahD9rl1i48u10O1eK/m2K ftEow/m7VGUx
CqSbVyP9I29YzVC98Q62vjlrOO+sre3juoYorKWYCS5hZULyLCIWkfBaQB1k VAY/mGEcs7ge
led70ed715db+Jp5dHsp5/FBhmuZYhq3NuP7HJikcpgp+7zKqxfvtx7fe5os /EfiK4XVbi3u
vtK6fpjXFrALYMb5/Nu0hclcZV0iichANxKlSqkqwB6j53vVS/1i201ImuDK TNJ5cawwvKzN
tLYCoCeisenauO8F6xqF/wDblutVs9Tgj8sxT21ytxhju3KZEhij4AQ7QCwy Sxwy1qeIL6CG
2tlluorOWWcJb3kzhFtpNrN5hJ9FDDb0bO08MaLgXNSvdAuJbY3QSaScRiKe GNnKq7YjPmIP
kVmOASQDzjPNV7vTZ7HMlqz3NuAS0btmROf4ePnGOx546knFUr7VNMS5tWW3 FlFLeB2s5Y1h
a8lkZVS4UD75VuSrYZchmAKpnofPoYIxY5EljWSNgyMMgjoRTqW9tjBK91ao WRjumhUdT3dR
6+o79evVkciSxrJGwZGGQR0IqBjqKKKBhRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABWVd 6v8AZ9Tez87S
oNkKS79Qv/s+/czjCjY2cbOfqK1aKBGVaav9o1NLPztKn3wvLv0+/wDtGzay DDDYuM7+Poam
1S/lsRarBb+fJcTeUF/eHHyM+cRo7H7vZT17AVfqpcyS2+oaXex2styttctJ JHCUDbTDImRu
ZR1cd6OoGfJrGoQGJp9M2xvNHEW8u7XG9wmcyW6r/F3YZ+tXhGLK7hWEBIJi VMYHCsASCB24
Bz+Huasa1rU+r6etlFouoQs1zbyGSZoNqqkyOxO2Qnop6A1Fdf8AHzY/9dz/ AOi3pu3QC1RR
RSGQWPlz6DbQSjdHJbKjDOMgqAad9ig/57Xv/gbN/wDFVf0Fre38Jrd3EKyL BAHb5QThYwcD
NW571La3luJtAuViiQu7YgOABkniSqsTczLdY7WERRbggJb5mLEkkkkk5J5J qXzveui+yW3/
AD7xf98CuNtde0q8v2t/7QuEd5B5RSzQRkO7BFBMec4C9eOep5wckn8KuVFO WxZtIYLGForZ
NiNLJKRkn53cux59WYn8an873rQ0o+b5lre2kIuYVVi4RcOrZAPHQ/Kcj8e+ BpfZLb/n3i/7
4FTH3lcT0djnfO96PO961tMnsNVtXuILVVRLie3IeNQd0UrRMeM8bkJHtjp0 qnc6zpUVnFPa
2bX0k93JZQQQRKryzRmQSKDIVUbfKkOSQDs4JJANWFcq+d70ed710X2S2/59 4v8AvgUfZLb/
AJ94v++BRYLnO+d70ed710X2S2/594v++BVPTJ7DVbV7iC1VUS4ntyHjUHdF K0THjPG5CR7Y
6dKLBcyfO96ozWxWRprRxHIxLOjZKOfpn5TnuPU5BrsPslt/z7xf98Cj7Jbf 8+8X/fAosFzi
/tcsRxcWsijON8X71T+Xzf8AjtL/AGhD/cuf/AaT/wCJrs/slt/z7xf98Cj7 Jbf8+8X/AHwK
OULnGf2hD/cuf/AaT/4mj+0If7lz/wCA0n/xNdPq09ho2jX2qXFqrQWVvJcS LHGpYqiliBnA
zgeoq59ktv8An3i/74FHKFzjP7Qh/uXP/gNJ/wDE0f2hD/cuf/AaT/4muz+y W3/PvF/3wKjj
itJXmRbZQYn2NugKgnaG+UkYYYYcjIzkdQQDlC5yH9oQ/wBy5/8AAaT/AOJo /tCH+5c/+A0n
/wATXV376dpmnXN/eRxR2trE80z+VnaigljgDJwAelU9b1XSPD0ME+oQqkEr yKZFhDCMJDJM
zMBzjbE3QE5xxRyhcwP7Qh/uXP8A4DSf/E0f2hD/AHLn/wABpP8A4mttNe8O yT6JCkkRk1uJ
ptPH2dv3yKgkJ+78vykH5sfnWx9ktv8An3i/74FHKFzjP7Qh/uXP/gNJ/wDE 0f2hD/cuf/Aa
T/4muz+yW3/PvF/3wKPslt/z7xf98CjlC5xn9oQ/3Ln/AMBpP/iaP7Qh/uXP /gNJ/wDE12f2
S2/594v++BR9ktv+feL/AL4FHKFzjP7Qh/uXP/gNJ/8AE0f2hD/cuf8AwGk/ +Jrs/slt/wA+
8X/fAo+yW3/PvF/3wKOULnGf2hD/AHLn/wABpP8A4mj+0If7lz/4DSf/ABNd n9ktv+feL/vg
UfZLb/n3i/74FHKFzjP7Qh/uXP8A4DSf/E0f2hD/AHLn/wABpP8A4muz+yW3 /PvF/wB8Cj7J
bf8APvF/3wKOULnGf2hD/cuf/AaT/wCJo/tCH+5c/wDgNJ/8TXZ/ZLb/AJ94 v++BR9ktv+fe
L/vgUcoXOM/tCH+5c/8AgNJ/8TR/aEP9y5/8BpP/AImuz+yW3/PvF/3wKPsl t/z7xf8AfAo5
QucZ/aEP9y5/8BpP/iaP7Qh/uXP/AIDSf/E12f2S2/594v8AvgUfZLb/AJ94 v++BRyhc4z+0
If7lz/4DSf8AxNH9oQ/3Ln/wGk/+Jrs/slt/z7xf98Cj7Jbf8+8X/fAo5Quc Z/aEP9y5/wDA
aT/4mj+0If7lz/4DSf8AxNdn9ktv+feL/vgUfZLb/n3i/wC+BRyhc4z+0If7 lz/4DSf/ABNH
9oQ/3Ln/AMBpP/ia7P7Jbf8APvF/3wKPslt/z7xf98CjlC5xn9oQ/wBy5/8A AaT/AOJo/tCH
+5c/+A0n/wATXZ/ZLb/n3i/74FH2S2/594v++BRyhc4z+0If7lz/AOA0n/xN H9oQ/wBy5/8A
AaT/AOJrs/slt/z7xf8AfAo+yW3/AD7xf98CjlC5xn9oQ/3Ln/wGk/8AiaP7 Qh/uXP8A4DSf
/E12f2S2/wCfeL/vgUfZLb/n3i/74FHKFzjP7Qh/uXP/AIDSf/E0f2hD/cuf /AaT/wCJrs/s
lt/z7xf98Cj7Jbf8+8X/AHwKOULnGf2hD/cuf/AaT/4mj+0If7lz/wCA0n/x Ndn9ktv+feL/
AL4FH2S2/wCfeL/vgUcoXOM/tCH+5c/+A0n/AMTUMt1HPd2SoswImJ+eF0H+ rfuQK7n7Jbf8
+8X/AHwK5vxDGkWp6esaKg35wox/BJStYdyKiiikMn0iCS58Cy28K7pZbQoi 5xkmIADmobzS
PNF7PBpuvfap45Qqy6szQhnVh/qjOUA+bgbcDjAGBWl4S/5F62/3F/8AQFrc q0QVpLGGRXVn
uAHBB23Einnd0Ibj756dMLj7q48cs/D4t9XEd1qGnwpbyxrLJ/aDo58t2DBR wQflz2A3Ag9c
e2Vm3eqwxyPBH9paWKRBJ5VtI4H3WIyEYfdPT36jqNYVZQvy9S41HFNIp6Le 299rV+9tcRTI
tvAC0bhgDul4yK5XxVpZ1bxlrFvbaJ9s1J9EtUstQxCP7OlaS6Cy7nYOmG2t mMMw2dMgZ9At
L2C9WRoTJ+7fY4kjaNlOAcEMAehB/Go9R1Sz0mBJ72Uxxu/lqQjMS2CcYUE9 AazSbdkSk3oj
zPxB4V8QXOlTxR6ZPJcRy6hPpslmLMyQzy3U0iu8k/zRqVMDKYSHBD5wQuNS PwVFLfwW154b
tJov7duL69upI4Wju4pEu2iJBO9zGZo1wyjBPy5AzXUaZ4t0jVriO3tppRPI 7qiSQsu7aTzn
GMELkc5wecHitynKLi7NA4tbnl+ueE9WvLXVYLXR/wDiZy/2i0uqb4h9ugmi nWC337vMO0yQ
Da4CL5PB+VM6GreB0k1iaW10iCWFYtNhhlkKu5QXcrXgLOdx3xSHfk/vN7A7 iSK9AopCOLtI
28L6c2pajpchg0u31WRZoplJgtvtAkihSPOCGiRNvQIIgvGcVn2ngjUobKWE NHHqFv4XtdMs
bxJ2CR3SJcIzrjkEeYuH27gHYDqwr0Sq97fW+nwLNdSeXG0scIO0nLyOsaDj 1ZlHtnnigDzO
PwdPBo1zHDo+s+Q9xC66dImmeXI6LJky28eyFojuTJ3+YxRMbPLVq0IvDOpx 38HnaNaDUBcW
UsOp2flrBYwRJAJraMsRKiN5c4CKpUiYZI3Pj0SigDyuXwxrl7Z+HdIl0e7i j0iygsp7pbqJ
Fm23VizPEySeYBst5WBIRuBwGOK2L7wzOLzWYbLRo1u7i3eLRtXj8pV0tPsq xLEGyJYwJFc4
jUgeZnqWx3lFAHl9joD6XBBYR2d9YrqWq2IhhvPskahrd2uZH8u0UIu6OEru yWZgoIVVDHPf
w7dazo+tLo/h/wAi+ku9aSfUf3Ef29Xa7jSHcG3t+8eI4kCqPKznhc+wUUAe f+IvCcpluINP
0f7Usmni30y5Lox0y73Ss9yzSMHVmaSJjJHvkYxknJC5x9S8Lvq2tavPbWM9 zpA1WdmtrGK0
cSztBaqZdtyDE2147hWYfOHZh3evWKKAPN5vCF7PZapp95pX27UrzT2trPWr iaOf7IDZrCY3
lbbLzIJWJSPB83dgFmANU0s6rBf6Xo+if2XJbeGr2FdOYQx4e7fEYXy2MYyb aQn5hjevctt9
IooA4fUPAdvLqsbiD7RZ3moSvdpvKeVbPa3QZM7snM9zK2RyPOx91Bix4W/t F9HHiCT/AIml
9qP2WJJflg32asFWXHQZDy3O3AYeb5f8IrsKKAPL5fBetvrGr3Fu99Bqdx9u MepedbRQlZVk
ECeYiG6fZvi+VyFUx5UnYgOhNoNs/wBilTwDt0mLz1l0XyrIb538nZcbPM8o 4VJE3Ft43YAw
Sa9AooA8zg8EauvhzWEvGkm1id7JGuVnEjXEMcFoLgJ5mVzIYZFIkAEmF8z5 QMdR4K0eTRdG
mt2gu7eN7hpIre6aDdEu1QQEt1EUYLBm2pnO4sTuYgdJRQAUUUUAFFFFABRR RQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXMeJf+Qrp3 +/8A+ySV09cx
4l/5Cunf7/8A7JJSew0V6KKKgo0/CX/IvW3+4v8A6AtblYfhL/kXrb/cX/0B a3KtEBXL30U7
aheqmp6zpubjeDY2SyrKDFEMkvDIOCrDjHfOeK6iimBi6NDK32tzc3mPPXEk 8IjebEUQLMpQ
YyVYcADk4A4xk+O7G8n0rTvs730xhuB5gt4g7MNjDeQFzkHjjA+Y8dMdhUNz d21nGJLq4igQ
naGlcKCfTJ+lVCXLJSKjLldzyXwXpuoNr+myf8TNIormcySPb7UXAcFSWXGS RtI6jJxg9PRP
F41JvDF0ulSSR3JeIM8aM7LD5i+aQqEOT5e/hCHP8JDYq5ZavY3bCJL+0knZ 3CxxyoWIBOMA
Mf4Rn+g6DQq6tV1HdlVKnO7nndhHr0WjRrZ3es3N39okNu7WzwAWu2PzQVup HYvu3eWZTu8w
jA8gPmPVbjVV8Q6XJpv9qwQxS2UMEbW19P8AabZnTzJJWL+VGwV5VYTIZB5e 7IJQr2MGuPc2
8c8Wk3zRSqHRt0IyCMg/6ytG0uUvbKC6jDCOaNZFDdQCMjP51zxqRlsyGmjz XRrLX7Sx0uYv
rjXEdpo8zi4nnkzNPMUvQ6uSDiNVJUgiP7yhCSTn6L9u1Pw/4elsf7cu45It On1R777TIGuB
d2jq8Zm6qFFyxMXyYALcbK9gqOCCG1t4re3ijhgiQJHHGoVUUDAAA4AA4xVi OD8BQ6+mol9X
vr6WY2n+nwzWc8caXOV+7JLKyNg+aB9nVYyOTgeWK9AoooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAK5jxL/wAhXTv9/wD9kkrp65jxL/yFdO/3/wD2SSk9hor0 UUVBRp+Ev+Re
tv8AcX/0Ba3Kw/CX/IvW3+4v/oC1uVaICiiimAVj6/N5H9nyC5gtmFw4Sa4G Y0YwShSwyuRn
HGRnpkVsUUAcnb3l5cX1jFca7o1/ObgmEWVsY/L/AHMuSwMzlhkr02/rx1EY mDN5kkbL/CFQ
qRyepyc8bR9QT3wG2xJibKsv7x+GZj/Ef7wB/p6ZGDU1AHG6MpbQ9Pb+z9Ub NtGdyXgVT8o5
A80YH4Cug8PHPhrSj62cP/oAqsnh3T4JIbaIXyQiM4C6hcgIF2gAANgDB9R0 4B5xrW1vFZ2s
NtAuyGFFjjXJOFAwBk89KxpUnB6lN3PNP7Ruv+E5/wCEm/sa++z/ANq/2N/a G+DZ9jz5Hl7P
M3f8fvz7tu7b3x8teoUUVsSFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABXMe
Jf8AkK6d/v8A/skldPXMeJf+Qrp3+/8A+ySUnsNFeiiioKNPwl/yL1t/uL/6 AtblYfhL/kXr
b/cX/wBAWtyrRAUUUUwCiiigCvZrtgYbdv72Q4246uxz90fy59W6mxVXTyDb PhVX9/NwrKf+
Wjf3QB/X1ycmrVAFWYP9vgZI1YiNxluMAsmedp7ZOMjOOh6q5XvDt3QQDpnE xOPu5/h93/Id
Mna2Qj+1bcbVz5EvO5cj5o+2N35HHAznIxaoAwNUvLmHV2iM+pQ23kIyG0sj MGcs+7JEb4IA
TjjrUuiXVzcXt2ry30tukcRje7tfJO8l9wHyLngJ2PWtqis1T97muyr6WOT1 +1mv/HXhy3Vr
RoIre6vHju7czKWjltgrINyhJQHYLJzt3Nwc1c8OPcHVfFEVxeT3KxaqBF5x B8tGtbd9igAA
KC5xx7kkkk7hgha4S4aKMzojIkhUblViCwB6gEqpI77R6VXs9J03T7i6uLLT 7S2nu333MkMK
o0zZJy5AyxyxOT6n1rQkLKeaa61FJZbR0huAkSwMS6L5UbYl9H3MxwP4Sh71 wfhDR9av/A1t
etPPFfXmn2zpO+u3dx9pVgryBlcYt2cDbvj3Mm8lfujPokcEMLzPFFGjzPvl ZVALttC5b1O1
VGT2AHasePwX4VhSZIvDWjIkybJVWwiAddwbDfLyNyqcHuAe1AHL6RNqC+Mb HSrSeSze1S8G
owXN5cajHIR9iceXJI6sDsmGGK4UlxtOcmv/AMJd4hfTvDd/IumxXmr2SSoF WZ4oRLcWMQLJ
5ihzid25wVyFDEBmfvE0LR47O1s49KsUtbSUT20K26BIZASQ6LjCtkk5HPJq T+ydN2Wyf2fa
bLVFS3XyVxCqsjAJx8oDRxkAd0U9hQBy8Gv69d63J4dim02PULd5jLfNaO0U ixpbPhYfNBUn
7WoyZG/1ZOPmwvQeGtSm1nwrpGqXCxrPe2UNxIsYIUM6BiBkk4yfU1X1/wAK 6f4hsmtZ1jhD
3AuZHW0t5TI4TYCwmjdSduBnGcKBnHFalhY2+madbWFnH5draxJDCm4naigB Rk8nAA60AWKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiig
AooooAKKKKACiiigAooooAK5jxL/AMhXTv8Af/8AZJK6euY8S/8AIV07/f8A /ZJKT2GivRRR
UFGn4S/5F62/3F/9AWtysPwl/wAi9bf7i/8AoC1uVaICiiimAUUUUAV7Nt0D Hdu/eyDO7PR2
GPvH+fHovQWKr2ZZoGLCQHzZB84ION7Y6k8enbGMADgWKAKs0hS/gADMTG/y KwH8SDOCwzjO
eh+ozhnLcSttzZTrnGclOM7f9rtuP/fB9sjlv7RhXEm0xSEkA7Qcp1OcZ64y CeuCOc2KAMDV
NcNlq7Wbalp1kiwJKDdrkuWZwcfOvTaPXrUuiaudRvbuAXtleJDHE4ltBgAs XBU/O3Pyg/jW
1RWag+bmuVfSxy+vSX83jLw/YWw32rRXF3On2yS25jktwGyikyYEj/u2wjZ+ boKk0OTU31m5
DapJqViiMlxLJDHHGlyGH7u32jJRf3gfezkEIoYssmNx7G3k1GG/aPN1DFJD G+4/KjlCwx05
Mafl7ms/RvDGm6BsGnG+SNIhCkM2oXE0aIMYCpI7KuMADA4HHStCTQt5riSe 7Se18mOKUJA/
mBvOTYpL4H3fmLLg/wBzPQiuD8MXPirVPB0WqG61l7y4sreRVu1sBHLv2tI9 v5YyHC7tgmIX
LLuBGcd5b2NvaT3c0EeyS7lE053E73CLGDz0+VFHHp65rHs/BmkWFmbS1fVY rfylhWNdYu8R
opBAT978mNoHy44yOhIIBh6VrWsHxLp+lwz3d2dl0dRg1doIpbcqbQrg28ZR yEm3BQcHzPmY
FcCP/hPdRksdE1EaN5TaraCW3tJL1Qh8yaziVpGEbEc3DEY/hHzLubbH1EPh fSbf7O0UM6zQ
SmZbj7XKZnY7ciSUtvkUhEBVyVIRARhVwHwtoxg02E2f7vTYkhtB5r/u0R4p FHXnDQRHnP3f
QnIBlx+K9SuL9tHt9JtDrUTyieKS+ZbdVRIHJWURFmOLmHgxrzv5+UFtzQtT /tvw9pmreT5P
260iufK3btm9A23OBnGcZwKy9d8Jx6iJJtOljsb+a486W6Jn3N+7WMqDFNEw BEUWRu2nYCVJ
wRsaTpsOjaNY6XbtI0Flbx28bSEFiqKFBOABnA9BQBcooooAKKKKACiiigAo oooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigArmPEv
/IV07/f/APZJK6euY8S/8hXTv9//ANkkpPYaK9FFFQUafhL/AJF62/3F/wDQ FrcrD8Jf8i9b
f7i/+gLW5VogKKKKYBRRRQBXs12wMNu397IcbcdXY5+6P5c+rdTYqrp7I1s5 QqR58w+UY5Ej
Z7Dvnt+J6m1QBVmIS/gkKMR5brlYy2Msg6hTj8x0zg4yrlvIm24Sf5sYzA46 7fbj7w+mD/dO
LFISFUsxAA5JPagDNudRu11KSztbWCUxwpKzSzmP7xcAABG/uH86fYX9xcXt xa3NtFDJFHHI
DFMZAQ5cd1XH3D+dNu7PRL+US3ltp9zIF2h5kRyB6ZPbk1PZadp9grGws7a3 EmCxgiVN2Omc
DnqfzrNRnzXvoVdW2MbXNS1CLxVoWl2i3fkXCTXFw1oIdwEbwrh/NOPKxK27 YPM4XbjnJpWr
6q3iWTStS+yMTbtPiC3kiEJBT5FeQ4uRiTmRFUKVAZQXUDYk02GXWbbVGaTz 7e3mt0UEbSsj
RsxPGc5iXHPc9e1PT/D6WOoi9k1C+vZIomgthdurfZ4mKllDBQz58uP5pC7f IOcls6Emhb3X
2ie7i+zzxfZpRFvlTasuUV9yH+Jfn25/vKw7Vw/h/wAU+ItX8L/2xmCeRrSC U26aJdQeUZCp
Z1Z5D9oVF3ttjGXwACCwz3Fva/Z57uX7RPL9plEuyV9yxYRU2oP4V+Tdj+8z HvWHpnhS50nS
49OtfFGsi3ht0t7cNHaEwqu3BU+Rydq7fmzwT3wQAZ+m+KtSk1nTbBhHqguk uWna2sWspLTy
2twvmRTy7lAExY/xEMhVcckHxDtpLXTNQh07Ujbahb+bbwNboks5aW2iQqWk AUbrkL8ww2Cw
baFL6lt4TgtryK/TUb46ksrST3jeVvuVYRhkddmwKVghHyKrfuxggli0Z8Fa abXRLfz7vZo9
vFb253rlljlt5QX+Xk7raMHGOC3qCAAHjCKRxaw6RqUuqB3WXTV8kSxBFjZm ZjIIiMTQn5XJ
/eDjhtuxpOpQ6zo1jqlusiwXtvHcRrIAGCuoYA4JGcH1Nc/rXhe7F1NqmgTS RatcXBd5Wuki
CxtFEjqu6CUYP2eE8rnIOGAyp3NC0z+xPD2maT53nfYbSK283bt37EC7sZOM 4zjJoA0KKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAoo
ooAKKKKACiiigAooooAK5jxL/wAhXTv9/wD9kkrp65jxL/yFdO/3/wD2SSk9 hor0UUVBRp+E
v+Retv8AcX/0Ba3Kw/CX/IvW3+4v/oC1uVaICiiimAVm6zfvYQwOtxbWyPIw lnuRlI0WN3LH
5lx9zqTxWlVO/tJrk2z280cUtvL5imSMup+RlwQGH9717UAYeneI7W5niFp4 h0bUrbzWFwbR
9xhBSSQEt5rbR8h4PGAcdK6SOeGVmWOWN2X7wVgSOSOfxVh9QfSqIsr+W7tZ bq8tnS3kMgWK
2ZCSUZepc/3vTtWlQByOmI9xpVnNJb6xK8kCO0i6gwDEqCSB5o6/QVs6fI83 hS1lkdnd7FGZ
mOSxKDJJrC06xurbTLS3m0bWTLFCiOY9QQLuCgHA88cZ9hW9YW8tp4VtbadN k0Vkkci5BwwQ
AjI461y0IOL1Lk7nnul+Lv7R1uTT/Is/luZ7fbBeebPH5TOu+WLYPLQ7ODuP LoP4sj1C0/48
4P8Armv8q82sfDt1b30T3F/DLaW97cXtvFHbFJA8plyHcuQygTOOFU5CnPBB 9JtP+POD/rmv
8q6IksmoooqhBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXMeJf8A kK6d/v8A/skl
dPXMeJf+Qrp3+/8A+ySUnsNFeiiioKNPwl/yL1t/uL/6AtblYfhL/kXrb/cX /wBAWtyrRAUU
UUwCiiigAooooAruudRhbb0ikG7b05TjO32/vDp0OMrYqOSCGVlaSKN2X7pZ QSOQePxVT9QP
So1sLNNu20gXbjGIwMY24/LYn/fI9BQBFc6ra2lz9nkM7ShA5WK3kkwpJAJ2 qcfdP5U601K2
vpJI4TKHjCsyywvGQDnBwwGfun8qgu9INzftdxajd2sjRLEwhEZDBSxH30bn 5z0p9hpf2K5n
uHvbm6lmRELThBhVLEABFX++azXtObpYrSxS1nxHDpOs6RpbG0WfUXbY13dC BSqsisqcEvKT
Ku1MDdhvmGObFhr9jqWs6hplo0kktgkbTSbf3ZLtIu1W/iKtE4bHAIxnIYAn 02aXxVp+qK0f
kW9lc27qSdxaR4GUjjGMRNnnuOvbL0Dwba+HfEN1eWLTrYtp9vZwQyX083l+ W8pI2uxAUBow
vp8+ANx3aEnSRzwzPMkUsbvC+yVVYEo20NhvQ7WU4PYg965uy8aLd6PFqz6D qttY3EUUlrLM
bc/aGlZFiRQsrEM5dQNwVR/EVrcsoJobrUXlitESa4DxNApDuvlRrmX1fcrD I/hCDtXH+GfD
OpeH/DR0r/hFvDBc2UdvcSRXbKL9lAUmYfZuhUyHndycdyQAbieLbWLUbGw1 a1n0e6v/ADBb
JfzQDzShiG1SkjAsxlG1RydrcDjNiXxTokO2R9UsRamIytdG7iEaD91jJLZ+ YTxkEAjDLkjc
u7D0jwvqWk6pa6lBb6bAgeaI6ZBMywWcMv2fd5LCMbjuty+3YgLTNyMZanF4 CvLfSvClnAbG
L+yLSGK5CEqryLdWc7suF53fZ5Tk4JZhnqSADrJPEugw6XDqkut6amnzPsiu 2ukETtzwr5wT
8rcA9j6VoQTw3VvFcW8sc0EqB45I2DK6kZBBHBBHOa4fVbHUPDniK78TQQx3 puLiSOO1VLhj
skgtVLMYYZWBDWhGNuCHHzA8HpPCdjcaZ4N0OwvI/LurXT7eGZNwO11jUMMj g4IPSgDYoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACi
iigAooooAKKKKACiiigArmPEv/IV07/f/wDZJK6euY8S/wDIV07/AH//AGSS k9hor0UUVBRX
0+61fTrGK1iS22xqFz5x5IAGfue1Wv7Y1v8AuW3/AH9/+10tlaWsumNq2pRG ZNjTRwHlBGAS
DtzhiRz83TjoQSbEsOl28Zln8MxxRAjc5t4GCgnGcKxP5A0OSjuJK+xW/tjW /wC5bf8Af3/7
XR/bGt/3Lb/v7/8Aa61k0rRZEV00zT2RhlWW3Qgj1HFO/sfR/wDoFWP/AIDp /hVCMf8AtjW/
7lt/39/+10f2xrf9y2/7+/8A2utj+x9H/wCgVY/+A6f4Uf2Po/8A0CrH/wAB 0/wosBj/ANsa
3/ctv+/v/wBro/tjW/7lt/39/wDtdbH9j6P/ANAqx/8AAdP8KrPb+Go76Oxe 10lbyRdyW7Rx
iRhzyF6kcH8jRYCh/bGt/wBy2/7+/wD2uj+2Nb/uW3/f3/7XTJtA8OXOozWt nNbQ6gimSS3R
kkIzggtG2Sq8j7u3g/Sqcml29pOIbvTrYbmKxzLEuyTvx3Bx2PocE4zQ7gX/ AO2Nb/uW3/f3
/wC10f2xrf8Actv+/v8A9rqn/Zlh/wA+Vt/36X/Cj+zLD/nytv8Av0v+FK47 Fz+2Nb/uW3/f
3/7XR/bGt/3Lb/v7/wDa6p/2ZYf8+Vt/36X/AAo/syw/58rb/v0v+FFwsXP7 Y1v+5bf9/f8A
7XR/bGt/3Lb/AL+//a6p/wBmWH/Plbf9+l/wo/syw/58rb/v0v8AhRcLFz+2 Nb/uW3/f3/7X
R/bGt/3Lb/v7/wDa6p/2ZYf8+Vt/36X/AAo/syw/58rb/v0v+FFwsXP7Y1v+ 5bf9/f8A7XR/
bGt/3Lb/AL+//a6p/wBmWH/Plbf9+l/wo/syw/58rb/v0v8AhRcLFz+2Nb/u W3/f3/7XR/bG
t/3Lb/v7/wDa6p/2ZYf8+Vt/36X/AAo/syw/58rb/v0v+FFwsXP7Y1v+5bf9 /f8A7XR/bGt/
3Lb/AL+//a6p/wBmWH/Plbf9+l/wo/syw/58rb/v0v8AhRcLFz+2Nb/uW3/f 3/7XR/bGt/3L
b/v7/wDa6yLe2F5G8tp4WlnhWWSISqLZQxRyjYDSA4yp6gU+1trO4kuYpdIS 2mt5RFJFLHGS
CUVxypYYw470agan9sa3/ctv+/v/ANro/tjW/wC5bf8Af3/7XXO6he6Pp18b SXT7UyCJZcs9
tCMMWAx5rrk/KemccetFhe6RqN8LSCzijl8tpQ8E8DkBSoPzQyMVPzDrjPNG oHRf2xrf9y2/
7+//AGuj+2Nb/uW3/f3/AO11QjuGt1uUuG3fZ03hz1ZMHBOO/BH4ZxzXkmp6 nrvjHX0srS6a
COWXbbxI5Rc84JPXn/CtaVJzu72S3ZEpKNvM9q/tjW/7lt/39/8AtdH9sa3/ AHLb/v7/APa6
8Z1P4e+M9JsXu7i4lMa9o7ssx+gBrld2pf8AP/d/9/m/xrenhVUvyTvb1IlV 5d0fSH9sa3/c
tv8Av7/9ro/tjW/7lt/39/8AtdfN+7Uv+f8Au/8Av83+NG7Uv+f+7/7/ADf4 1p9Ql/MR9YXY
+kP7Y1v+5bf9/f8A7XR/bGt/3Lb/AL+//a6+b92pf8/93/3+b/GjdqX/AD/3 f/f5v8aPqEv5
g+sLsfSH9sa3/ctv+/v/ANro/tjW/wC5bf8Af3/7XXzgkupK4Zb+5JU5wZSR +IJrotH8W31k
yJd2lpewDhi0K7+T1zj07VEsFNL3XcpV4vdHtv8AbGt/3Lb/AL+//a6P7Y1v +5bf9/f/ALXW
Fo9xoet2xms7W3O04ZGhUMv4YrR/syw/58rb/v0v+FcTunZm6sy5/bGt/wBy 2/7+/wD2uj+2
Nb/uW3/f3/7XVP8Asyw/58rb/v0v+FH9mWH/AD5W3/fpf8KLhYuf2xrf9y2/ 7+//AGuj+2Nb
/uW3/f3/AO11T/syw/58rb/v0v8AhR/Zlh/z5W3/AH6X/Ci4WLn9sa3/AHLb /v7/APa6P7Y1
v+5bf9/f/tdU/wCzLD/nytv+/S/4Uf2ZYf8APlbf9+l/wouFi5/bGt/3Lb/v 7/8Aa6P7Y1v+
5bf9/f8A7XVP+zLD/nytv+/S/wCFH9mWH/Plbf8Afpf8KLhYuf2xrf8Actv+ /v8A9ro/tjW/
7lt/39/+11T/ALMsP+fK2/79L/hR/Zlh/wA+Vt/36X/Ci4WLn9sa3/ctv+/v /wBro/tjW/7l
t/39/wDtdU/7MsP+fK2/79L/AIUf2ZYf8+Vt/wB+l/wouFi5/bGt/wBy2/7+ /wD2uj+2Nb/u
W3/f3/7XVP8Asyw/58rb/v0v+FVTbQPfSWln4fN5JFEkshiSBQoYsF++y8/I 3Si4Gt/bGt/3
Lb/v7/8Aa6P7Y1v+5bf9/f8A7XWSLaBL6O0vPD5s5JYnljMqQMGClQ33Gbn5 161HqjaVpMUM
k9hbkSy+UvEUYB2s3LSFVAwp6nrgUAbX9sa3/ctv+/v/ANrqrcSahfXdtLdJ ABCxYlZCSRtY
YxtH96sBdY0RpYo/7OtCZZUiGy4s5DlmCj5UlLEZPOAeOa2kDWdzFCGZreXI XexYowGcZPJB
AJ56Y9wKGBdooopDFSTPgtVGc/2djhST/q/QZJ/CsO68XyT6gNVQN/ZFqrwz WsmA8hzyxUtg
EFVwGwQNwOMnGpaKtz4dgtnLBJbRY2K9QCmOKqS6J52rxai2oTmWNSNxVMlv 4TwNvA3DlT97
r8q4pNXZJuaLcpJpiyRKyRvLK6K8bRkAyMQNrAEce1cd4Y8Utd+KluHm1Nrb W/P8pbi2nS2T
ym/0fyC6hR5kAeRuTkqPu9D1VqgtIPKEjyfMzl3xklmLHoAOpPakSC1jjto0 toVjtcfZ1WMA
Q4UqNg/h+UleOxIpKyVhlbVPEk1vcWK2Nxp8sOpqqWszuSI2JH71sHDxkMij BX52jXP70MmF
ceNNctory6J094YV1G6SIW7hvJs5vLMZbzMb3DKQ+MLg/I2eOjFlp6wPALG2 ELwLbNGIl2tE
oIEZGMFQGbC9OT60NZae6Mj2NsyusqMpiUgrId0gPHRzyw7nk5p3CxL4d1F7 zTJpZOGW+vIh
87NwlzIg5Yk9FHHQdAAAAGXz2jatIZseSLdP7QLZ/wBXufyNmPm83zc7dnP3 v4vLqWLyrdCk
MaRqWZyqKACzEsx47kkknuSTUb29pJepevawNdRrtScxguo54DdQOT+ZouKw li9ourRmHHkm
3f8As8rn/V7k8/fn5vN83G7fz93+LzK1LgRXUDwToHjcYIP+eD71mJb2kd69 6lrAt1Iu15xG
A7Djgt1I4H5Cp/O96LhYoESWc4t52LqxxDMf4/8AZPo38+o7gTVLN5dxC0Uq hkbqP89D71QI
urU7QrXcXZtyiQfUHAI98g89O9SMtUVUGpWY4kmELYztnBjP5Nil/tOw/wCf 22/7+r/jQBao
qr/adh/z+23/AH9X/Gj+07D/AJ/bb/v6v+NAy1RVX+07D/n9tv8Av6v+NH9p 2H/P7bf9/V/x
oAtUVV/tOw/5/bb/AL+r/jR/adh/z+23/f1f8aALVFVf7TsP+f22/wC/q/40 f2nYf8/tt/39
X/GgC1RVX+07D/n9tv8Av6v+NH9p2H/P7bf9/V/xoAhk0LR5pXll0qxeR2LM 7W6EsT1JOOTV
m1s7WxiMVpbQ28ZbcUijCAn1wO/Apn9p2H/P7bf9/V/xo/tOw/5/bb/v6v8A jQIfp+qW+keI
b+W8S6Ec9pbrG8VpLMCVebcMopwRuXr60ahqlvq/iGwls0ujHBaXCyPLaSwg Fnh2jLqMk7W6
elM/tOw/5/bb/v6v+NH9p2H/AD+23/f1f8ad9LBYq3//ADFP+vJf/alcBoVs un67ZXjo5WGZ
XYRxs7YHXAUEmu7uZ4bhNUeGVJFFkASjAjP7z0rMXTHR0kjJSRGDqwAyCDkd eO1dmGV4Tj3X
+Zz13aUWX08Ws+oNqt2pl0i6VIorUbXeMg/K20EgsSzZC5JG0DOBni9J0pJv FNj50SyRvex7
0kQ4YFxkFWH6EV1MdpeRalJqEdzIty6gF9q9edxwRtGRsHAH3T/eOY4dLa3M ZjLK8eCrg4II
6HPrWtClKDbZnVqqSSRhatpcd7aWtxaxCVi8ytIloluxCKjYMceVwASd2cnJ BwFFLY+FbO5O
nvIt0I7ueOAqMDYSwDPuxypAbbx1DDJ2fN0ctvdzy+bNcTSSbSm93JO05BGT 25PHuaatpcJJ
5iSyq+FXcGIOFxtGfbauPTA9K6bu1kzHmV7mTp/hXTrm6snhS4i8wxXGJXSU BDcCEoQUAJzl
skYx8pU9a5j+yv8AZrvUtLiIqY5ZUKgKu1iMANuAH/AufrzUX9lf7NVFtN3Y m0xfDEOkjw5Z
p4rWzbTku2/svzQd4YMfO3bf+WW/Gd/Gc7uNlcv4gstRuPEeoPqwjOo+aBP5 X3Purt2/7Ozb
jPOMZ5zXRx6HFEztHAiM5y5VQCx9/WiLQ4oFKwwJGpOSEUAZ/CsadPknzXNJ VE42OX01brSr
tbm1Yqw6jsw9DXpGl6pFqdvvX5ZV+/Geqn/CsP8Asr/Zp0VhLBKJYWaOQdGW pxFFVVdbjpVe
TR7HU0VmQ6lKihbq3fI6yRDcD746j6AGrA1OwIybyBT6O4Uj6g8ivMlCUdGj tjJS2Zboqr/a
dh/z+23/AH9X/Gj+07D/AJ/bb/v6v+NSUWqKq/2nYf8AP7bf9/V/xo/tOw/5 /bb/AL+r/jQB
aoqr/adh/wA/tt/39X/Gj+07D/n9tv8Av6v+NAFqiqv9p2H/AD+23/f1f8aP 7TsP+f22/wC/
q/40AWqKq/2nYf8AP7bf9/V/xo/tOw/5/bb/AL+r/jQBaqpdaVp19KJbuwtb iQLtDywq5A9M
kdOTS/2nYf8AP7bf9/V/xo/tOw/5/bb/AL+r/jQIS10rTrGUy2lha28hXaXi hVCR6ZA6cCi5
uEs9U0e8lSZoYLtmkMULylQYJVB2qCcZYDp3pf7TsP8An9tv+/q/40f2nYf8 /tt/39X/ABoA
n8QeILHVNLWztEvnme7tmAawnQYWdGYlmQAAAE8ntUF1/wAfNj/13P8A6Lej +07D/n9tv+/q
/wCNQy3ltcXdkkNxDIwmJIRwTjy39KbdwNCiiikMteHba0fw7BPchQqRKWdn KhVCA5PNWftP
hv8A5/7H/wACx/8AFVQsP+Se3X/Xk/8A6KFQanqVy9tqO/xLoM1k8E4S2ity JiCjbF8zzyCc
4ydnPOAM8WkSdN/Zdn/zx/8AHj/jWOsG+OSZprKCL7Q8KiSNzyJCijPmDJJx 26nFbyrc+YC0
sRTPIERBx83fd7r27H1GPMvEVzO7TW+osLbSFup3gmikOXlDyH5jwQRgkDGO M7jjITimwvY7
jS47a9jaO4s2huogPMQlgCDnDLk9Dg/TB+pv/wBl2f8Azx/8eP8AjWH4TudS ubm8fVYY4rgQ
whQp5ZN0u1mXkKTz0J+i9Kw/Fc9w3irVbe0l1k6kmj276VHZtc+Qt0z3IBlE f7oAssYJm+Uh
eeAaIxaVmDd3odhZw6VqEDTWq+ZGsskJOWGHjdo3HPoysPfHHFV7yfQrKzF1 I3mRtK0CC2Dz
u8ikhkVI8szLtfIAJGxicBTjz/Wv+EgstHuBZQ6lZ3FvcaldWTQWl3ObmZru dlQpC6ooAETB
pldGEvAwrZ0IfD3nX9pZTQayko8R3d1dtHPdRxpFIl68TxyKwRQQ6bvLI5YK /JxTshHoH9l2
f/PH/wAeP+NH9l2f/PH/AMeP+Ned65/b/wBl1X7D/bn9t/8AEx8/Z5/k/ZvK n+zeT/yx8zP2
THlfvM5zz5laGraRqcWsTLBda5PHFFpsSyi6mAk867lW7YhCE3eUwJIA8sbS mwKuCyA7T+y7
P/nj/wCPH/Gq9nDpWoQNNar5kayyQk5YYeN2jcc+jKw98ccVh6bfPpdst3rM mqxw2EWqFpJF
ZoRbRXIEbS9WeTylUoxyWXzDkk5OPp2j+JbTTp0he+h1K18NW5ghEq+TLqbC 58x2J+WSTeVL
ZJUlwzAkIwLIDvP7Ls/+eP8A48f8aP7Ls/8Anj/48f8AGvN44tWh0a5I1fWZ bP7RCREdL1KN
piFkLxhzJJdRg/uiZAPLXaAA5aRToRDWRfwCa21m21T7RZfZIBcTz28Vpsg+ 0LJICYXcf6UN
0n7wkKR1josgO4/suz/54/8Ajx/xo/suz/54/wDjx/xrzeW48Q3dn4d0yGTx Bb31pZQW+pzr
bzDE/wBqsVdvMdTHKQouDuG9Su8nKk52L6HULa81mC1OsnVo7d00AiS4e3KC 1UL5jEmFn87z
eZyWJ2542UWQHUX8OlaZp1zf3i+Xa2sTzTPljtRQSxwOTgA9Ksf2XZ/88f8A x4/4153aQ3za
Y+nSX19eQajqFlBDFd2dzbiQLIZLpP8ASpXlZTbxtuBxGQNq7mZxVO5n1S50 vWX0SXxBLqwu
NYS4bddNEIV+1LCId37reJBbgCL5xgjpvosgPUP7Ls/+eP8A48f8ajjstNme ZIhG7wvslVZC
SjbQ2G54O1lOD2IPeuP8RWup2UtxbwXGuXE66eDo80LzMHvy0pcz+X+7Ckm3 4lAiAyFAUMBl
6wmrvruq28Oo6lFpMOpy+Y0cd5dskjW1o6IBbyrKqfPcHAPljOCM7MFkB6JP Zaba28txcCOG
CJC8kkkhVUUDJJJOAAOc1HcQ6VaT2kM67JLuUwwDLHe4RpCOOnyox59PXFcP fWGq6jpWs6dq
o1m41y50x4NPwskdvIGslVvMETG2VzMZ/vsSDtwduw1oPeRxXtvcaTaalqEW j6PeXgs7zz/P
aZ3Ah4nBk3sIrpFOCQpI6OAxZAdRaxaPfef9jlguPIlaCbyZ9/lyL95GweGG RkHkVY/suz/5
4/8Ajx/xrh/DVrr3hC4nXUtKjngbRxNK+lyvO1xdQH95IytGgM84lHUlm8nk ntuXv2z/AISh
fL/tX+yfNj+1eXnb9owvl7P4/JxjzNnybtnb7RRZAbn9l2f/ADx/8eP+NRwW Wm3VvFcW4jmg
lQPHJHIWV1IyCCDggjnNef6NZa/aWOlzF9ca4jtNHmcXE88mZp5il6HVyQcR qpKkER/eUISS
e48J/bP+EN0P+0fP+3f2fb/aPtGfM8zy13b887s5znnNFkBc/suz/wCeP/jx /wAaP7Ls/wDn
j/48f8auUUWQHAauipc6yijCra4A9sy10NnZ6aNJS7vfLRed8kkhVR82Bk5x 6Vga1/x+a3/1
7f1lrceRIvC9tJI6oiXMLMzHAAFwuSTVwbUXby/UmSTkr+f6Ekf/AAjcsixx 3dm7uQqqt0CS
T0AG6r39jaf/AM+//j7f41z32+8l8uO88RaHfq1xbhIbK2MUm7z4znJnfIwD xj3zxz1US3IY
edLE4xyEiK84Hqx77vzHpkv2k+7Dkj2OZjtTJp1vcl7FZLiMNFCYpMuxQvtH 73k4B7dATWnp
9pp1/blzZvFKjbJYnZso2AcdeRggg+h7dK87ubu9c6Yb4/Z2gSNtLWBywlPy AHPG5jkKQVXh
iMYPzd94UmvZ7O8k1GGKG8NwPNjifcAfKj/LjHALAf3jWcXUVnzP7xuMH0Ro f2Np/wDz7/8A
j7f41XsLPR9T062v7NPMtbqJJoXy43IwBU4PIyCOtclJPcTeM9XS0l1l9Th1 i0SFVa5Nolr5
Vs0wb/l3B2NOcN82SCPmK1j6f/wkFnb+E40h1KyntbfTLX7MtpdyrNCREJnc q/kRFQ0qlZEL
jy9wIyhXT2k+7FyR7Heyt4fj+w7T5/2/Btvs3mTeYpx+8+TOIxuXLn5RuXJG RWh/Y2n/APPv
/wCPt/jXBeE/D3lXHhSCWDWYn0zTJ47syz3SKl0pswUDFgGiO1sKpMTbTgHB qukfiGazsYrW
bxBBfOlqutysJjsujdW25ofNBj2BftRPlAxbcbgV20e0n3Yckex6L/Y2n/8A Pv8A+Pt/jR/Y
2n/8+/8A4+3+Ncc2jXzeI5ITLrn2GTVUs2Iv7kKLNdPVwQwf5f8ASEAMgIYs WUsdzAk99qh8
DXU11JqsOu3fh+zhBdfJjF7MJI0EeMbJjK6h+gUGLOAOD2k+7Dkj2OpsLPR9 T062v7NPMtbq
JJoXy43IwBU4PIyCOtWP7G0//n3/APH2/wAa46/0zWLe18TNpk19bJFd21tY 26K/kwWflWvn
tDEhVm+USgBDuBUiPa7NnLkj1uLRrZRd6zqUf2iY21iLa/smucrGFBuBI80I VzLg3B2tuPCo
qOp7SfdhyR7Hov8AY2n/APPv/wCPt/jR/Y2n/wDPv/4+3+NcFqkPiG5Gowac dZGvSPqCSkyT
Jbi3Mc4tfLZiIFfP2TmMhwd27/lpVi8uNQ8R+M7ZbGTxBa6Oz20c7C3uLQYE V+ZB+8VSASYA
WGCCUwwYKQe0n3Yckex2v9jaf/z7/wDj7f41XvbPR9PgWa6Ty42ljhBy5y8j rGg49WZR7Z54
rkr4ao1nrKxSazHr5uHDuUunt1svtS4MaqREX+zbeIiJSd2CHzRpEd7LLoWn XN3d3sf9py3o
S7tpYM2sUGMlZ5HlYLcyREeYd24gqNiKQe0n3Yckex2v9jaf/wA+/wD4+3+N H9jaf/z7/wDj
7f415doz6tqHhrQ5NGvPEYa4tLI6ndTG4dhM1xa/PEbgEFdhui3lgxlfvgjb XSXMOoW3iBoI
TrJu4720TTiJLh7c2IEIn8xsmJn/AOPrmUmQnbjny6PaT7sOSPY6mHTdJuUL wLHKgdkLJKWA
ZWKsOD1DAgjsQRRNpuk2yB51jiQuqBnlKgszBVHJ6liAB3JArzIxeIpT5dtq uqx28Et3Dp7p
BdXrtMl7cphnWZF+VFtwPtJaM+wEmdjU7GbULTUob2PXJNUXUEmmCNdCEWcd 8kimHb+68wQK
hHlfvSQf491HtJ92HJHsdTqL+G9IlSPUp4LPdE8weeYogRWRGJcnaPmljHJ5 3cVYsbXRNTs4
7yweC7tZM7JoJ/MRsEg4YHBwQR+FcVr0R1EahcWH9pPb2CaPbxSLBJNdWzC5 WeYhJFaQv5TW
ztlTuKqGyUIHQeF5ZrU3Ly2+pXCalqZ8q8uLYxSyKLZP3s6bU8sBomiGEXOI zg7t7HtJ92HJ
Hsbv9jaf/wA+/wD4+3+NRzabpNsgedY4kLqgZ5SoLMwVRyepYgAdyQK465h1 W5s2gz4gEMlx
aJYESSI4sjdQiXzGQh1l255kIcRbf4/PquYfENrPZCA6yyTXsiXG+SaTEUOp 28cP3idoNsZC
SMeYu5n3YLUe0n3Yckex3v8AY2n/APPv/wCPt/jR/Y2n/wDPv/4+3+NX6KPa T7sOSPYof2Np
/wDz7/8Aj7f41z2uW0Npq+nxwJtUsSRknnZJ612Fcr4l/wCQ3p31/wDZJKan JppvoS4xTVkR
UUUVzm5p+Ev+Retv9xf/AEBa1EbOozLu6RRnbu6cvzjd7f3R06nGFy/CX/Iv W3+4v/oC1qI2
dRmXd0ijO3d05fnG72/ujp1OMLaILFY2p6HpEqebJp9qJHuImaQIEZm8xTyw Kk84PU5OOG6H
ZqOaNpUCq20h1bPPQMCRwR1xj09QRwWBFaafZWG/7HZ29vvxu8mJU3Y6ZwOe pqUQQrcPcLFG
J3RUeQKNzKpJUE9SAWYgdtx9ajVLwbd08B6ZxCRn7uf4vZ/zHXB3Q38WoyWK raXESXAHztt2
huOcZ3bfxzj3xgp6LQC1DPFOheKRXUEjKnvVTUr2Sz8ry1Q7853A9sf41keH YrosZLZvKsg2
HjkGSzY5IHOO2Tnk889Xr/ES/udO8Nyz2Su16ymC1CBSfPkZY4/vfLjey5z2 zUxk2rjNSDV7
iW4jjZIsMwU4B7n61tV5Z4CA0+/utDTTLnTra0mhntLed0cpBJ/tK75PmpMe SeGHbgep1SBk
c8EN1by29xFHNBKhSSORQyupGCCDwQRxipKKKYgooooAKKKKAI5IIZnheWKN 3hffEzKCUbaV
yvodrMMjsSO9EMENshSCKOJC7OVRQoLMxZjx3LEknuSTUlFABUcMENshSCKO JC7OVRQoLMxZ
jx3LEknuSTUlFABUYghW4e4WKMTuio8gUbmVSSoJ6kAsxA7bj61JRQAUUUUA FFFFABRRRQBw
Wtf8fmt/9e39Za67Rv8AkEwf8C/9CNcjrX/H5rf/AF7f1lrrtG/5BMH/AAL/ ANCNOPwP1X6i
fxL5/oT27bp7sbs7ZQMbs4+RTj7xx+S9enOTYqvbtunuxuztlAxuzj5FOPvH H5L16c5NikMx
Lrw/ov2iy/4llmn74kBY1QMfLccgEbuCeCG4J46kalrZ2tjEYrS2ht4ydxWJ AgJ9cDvwKW4i
lkCGKRUdCSCwYg/KQMgMM8kHB9OxwQ1kvDu2zwDrjMJOPvY/i90/I9MjarIB 6wwW5nlSOOIy
t5kzhQu9goXcx7naqjJ7KB2pYZo7iFJonDxuMqw71l+IIr+SzY20qi2VCZ4h w7r3Ab6fT6jO
RW8NRXghEqyIumtnyoSvzZzyR02gnkA5+gzgLm1sVbS5y/xI+JGo+CNYsba2 0+2uLeeHzGaX
zASRIAQDjb90MOCSCwJAAAeP4a/ErUfGur3Nle2tnb+Rbeb+56ufkUnDPkDd vPCkYZQSCAZG
ePhdR+LbiayttSluDoO1BpjGK4fF5DkJIImPAJJGW4J+VM7my/he+PiVriF8 O+nQPJGz/OJN
se8SDeN0qsSHbZkvuJ8vdtbqUIewcra97+fYx5nz26f8A9kqOaCG5QJPFHKg dXCuoYBlYMp5
7hgCD2IBqSiuc0CiiigAooooAKjMELXCXDRRmdEZEkKjcqsQWAPUAlVJHfaP SpKKAI4IIbW3
it7eKOGCJAkccahVRQMAADgADjFSUUUARwQQ2tvFb28UcMESBI441CqigYAA HAAHGKkoooAj
jghheZ4oo0eZ98rKoBdtoXLep2qoyewA7VJRRQAUUUUAFFFFABXK+Jf+Q3p3 1/8AZJK6quV8
S/8AIb076/8AsklVHZ+hMuhFRRRWJqafhL/kXrb/AHF/9AWtRN/9ozZ/1flR 7fvdcvnr8vp0
59eNtc5Yf8k9uv8Aryf/ANFCsi+sdRXWNeil8O6RDpEWnB4J42+ZW/0j5l/c jLnbHuTfhBtI
LbqtEHoVZy6o8hfytOu5EV2j3qYgCVYqcZcHqD2qxI96Ffy7e3ZgDtDTsAT8 2M/IcdE9cbm6
7Ru8V0rWtTOt27x3fmXMr2yFGvJAZPnJKtweMs2eDjJ9a1p0HVvZ2sa06fMm +x7VY30GoWwn
gY46Mp4ZD3BHr/npVmsfTRGut3yxoqD7PASFGMndL/hWP4i8Q6xpmo6y9m9j 9h0fSo9Smhmt
3aS4yZ9yK4kAj4gABKtgtnBxisY3t725m7X0OvChRhQAM54qpfWP23y/3mzZ n+HOc4/wrzv/
AISnUdC0O+fSrX7Z/Z93qd9qEPkKcQ/bbjZ+8aZNm7ypRlVlI2529AxPDrGs WdhZ3N9Y3Fre
eJb6COG9s3nTy4zenZMplAlUGNCg+UJsXrtFVYR3cWjeVMknn52MGxs64/Gt WvP9Y8aaxpuk
3esRpYvatLqFrbWzQvvjktY7hg7yb8OrG1PyhVI8wfMdvzWNR8Q+JLHVJLZn 0pPKisfMQW8k
mJLu5kgXD+YuVj2oT8oMmG/1e4bS1gO4orn9D1m81N7UTvYpj7bDOikrJLJb 3AhEkaknEZwx
YEkqXjGTyTyeh+JdS07w/NeJb2klnBoS+I7pWLCR5rk3MzxJ2VNy8MclQuCH LblAPTKK4OPx
F4wW3ube40iNbuJ4XaYQRs0MDiTdIbWO5d3AMQAxIGbedqsYyGktfF1/dxLq VvPY3GmRXdjZ
OFtZEe6NytuRMjF/3Sj7Sp8tlY/IRuG75QDuKK8/ufG+sJovhe6trWxkutX0 +C5kjkLonmPP
Zx7QwJKri5fnDEYU84IOhdeIdYs7fX7+R7GS18PxMLmBbd1e7kW1Scsj+YRE pMgG0rIRtPzH
PAB2FFed3uq65qHh3VtI16yjt3uXs7NnAijcw3c/2dyI0nm2kKWKuzYJ42/I cmpeMte0vRrz
V3OmzQNcana2tuts6NE1styyO7+YQ4ItsFQqffyCMYIB6JRXF6t4i17TU1J2 Gmq+j6YNUvIh
E7idWaYiGN9y7CqwEeYVbcW3bFxtOfdeJfEcHiLUtG020ju7s3sziRIvMCQp BaMF8uW5jAP+
kKCVcDKk7MuSAD0SivO9R8R61rHg7xHqVrNaafBZaZJuihJmlMrWSzh47hHC gKZlAIVs7CQf
mG08dSalFpqQ3V7H9ss9H1TVEurKNrfE0cQhTaC7FQFuXP3s7lUggZBAPRKK 8zuE8VW2saNb
x3sgewuJ9NtDcSy+VfsbS4lSW4/56gKlsCwxiQXGB9011mi+JP7X+0Xzx/Yt MHkQRfa18uU3
DffQ8leGeOLA5EqyqegoA6CivO7nx5rlm+pajLo8baPbvfRRbniiLtbLMflk 84u5YwN8ohXa
GJyQmW3JrrxJFqNlo39oaUb65inuvtf9nyeWscRhXZ5Xn5LEzZ3b8ALjac5A B1FFed2njvWr
/Qb7WYNOtBAHsYLS3Ul5Wluo7VhuJZFIQ3B7rv4GY9pZuo8L6lqeo2VyusWs dveW1wYWVTGC
w2I4LIksojOHxtLkkANwGAABz2tf8fmt/wDXt/WWuu0b/kEwf8C/9CNcjrX/ AB+a3/17f1lr
ceNJfC9tHIiuj3MKsrDIINwuQRTj8D9V+on8S+f6Gzb7/Pu9/wB3zRs+902L 68dc/d4/HNWK
8/0+11QX2pNqfh/SrKGHU7VbWW2fcyg/ZyVQmFN6EtIS+chty4wM10+vXGpQ eHNRmhhhWZLW
RgUuGBU7RkghOo+fHrtXpuO0Su7FJXdiVdaL2gul028MLR+YGzF93Gc4356V ft7iK6t0ngcP
G4yrD/PB9q8e8K6pev4nihjuEmjnuW82P7XIysgiAyQQQcBRjI6gDI616joo RZdTWNVVRdDA
UYH+pjoqUZ0pJN3uaVIKDsatIqqiBEUKqjAAGABXIXHiHWLfWNSl32LaZZar aab9n+zuJn89
bf5/N8zaNrXGcbDkJjIzkc/4d8U6jY+HvCsVla/adMhtNMsb5vIUeVNMkIH7 wzBuFmibCxOD
nG4ZJRGRq+OPhla+NtXtb+fUZLXyIRCUjgQlhvDfe6/dLjByASCB94MeBPhr H4Hv57qLVZLv
7RCI5EaMoMjYcgB8feEh5BIDAAjDF8rQIdY1f/hAv7SvrG9zpT6gftNm8mdv 2Pa3zSn/AEgb
3xN23N8nJq4/jXXotO0m8WDTZ31u3gu7OAo8Qt1e4tYzHI+5t523Q+cKuCmd jZwK55cvJfQV
le/U9Eorh217xIdck01brShnUE0yOQ2Mh2yCyW6aUjzuVOHQJkEblO47SGsP 4svJPBt94hgS
xTb4fj1WC0Zy8kcjRyuRJjGYztUKRgkrJ6CpGdhRXn6atqnhvSdT0+wtoLix 0SWz0ewVvmnm
eSO1VWfLInymYnGV35AzHt3MTeLPEttpMk99ZQWC2csov79rZbkW6LHG6l7a G4Z03CQ8h32h
AxAV8oAegUV5/rHjTWNN0m71iNLF7VpdQtba2aF98clrHcMHeTfh1Y2p+UKp HmD5jt+bQ1vx
JrFt4vt9C02Ox/0j7OBJcq52eZHeszfKfm2/ZkIXjPzDcuQygHYUVxd34l1q LR7/AFmCO0lg
F62nWlksBMolF2LUO0hlVXBIL7MJ1C7xgsa/9panrEOk6brVrHbTvrscM2wx hyIYTeIdiSyi
Mlo0UqXYlct8u8bQDvKK83j8aeJINF0S6mTSru61q0trq3jSGS3SHfPaxsjM XkLZF1wwA27M
7WzgbEviHWLe8uGkexe1sNQtNMuY1t3V55JhBmVG8wiNQbgfIVcnYRu+bKgH YUV5fF4y8SwR
3MNrp8F22nfaLi+myqxyAXdzGBumuVMC4t2Of3oUNwoCANqatquvX+iz39pf WlnB/bENjbxr
buZEZNRSAs7iUB0YK5KBV4fbu4JIB3lFeb+MIry+1J7WXUZ7W6trTTbb7Xpz G3f/AEy/RJmX
livFsm0ZONzA7sjEY1LxVB4ji1S6WRpxplwH0uESmKRbae1ErxxE5Mrl7nyj n5kMGcZagD0y
isfR9Z/tGJ7qZ4I7W6u3i0zJw08ar97k4bcUldSvBj2t61x+n+OvEVzY293d aVBbQ6pFBJYN
L5Y8vzpoYl+VZ3edVFwrFtsP3QCFMg2gHpFFcXq2v69pKakGm02Z9F0waleE WjqLtWabEcY8
0+SQsBG4+ZkvnaMYNefxV4j+wCW3srSae71i502yjhTewWF7gmR1eSNSSsG3 bvXHLbjkRgA7
yuV8S/8AIb076/8Askla3h7ULvU9Ehub+COC73yRSxpIjAMjsh+4zhSduSu5 tpJUkkE1k+Jf
+Q3p31/9kkqo7P0Jl0IqKKKxNTR8LRpL4agjkRXR41VlYZBBRcgir39haP8A 9Aqx/wDAdP8A
CqfhL/kXrb/cX/0Ba3KtEBWKfDqi6muI9SvYnmYltqwngszbcmMnALNgE8Zr aopgUNP0oWFx
PObu4uJJlRC02zgKWIxtUf3jVa48L6PeeIf7cvLGC6vlihiheeJH8jy3d1aM kZVsyHJB/hX0
rYooAy73w1oOpJGl/omm3SRvI6LPao4Vnbc5GRwWbknueTVgaTpq37366faC 8d1d7gQr5jMq
FFJbGSQrMoPYMR0NXKKAM99C0eS8uryTSrF7q7iMFzM1uheaMgAo7Yyy4AGD xwKsS2FnPK0s
tpBJI3l7neMEny2Lx5P+yxLD0JyOasUUAZeo+HtN1LS7ywe2jhS6t7i3aSBF V1WfmUqccFm+
Y+pAJzWgIIVuHuFijE7oqPIFG5lUkqCepALMQO24+tSUUAY//CJ+G/7O/s7/ AIR/SvsPm+f9
m+xR+X5mNu/bjG7HGeuKuSaTps2qQ6pLp9o+oQpsiu2hUyovPCvjIHzNwD3P rVyigDLj8NaD
DezXsWiaal3M++WdbVA7tvEmWbGSd6q2T3APUVYk0nTZtUh1SXT7R9QhTZFd tCplReeFfGQP
mbgHufWrlFAGPF4X0e0aw+wWMFhHZXbXiRWcSRI8jRPESwA5+Vz6HhecDFR6 f4Q0HTzfOmmW
ks9885up5YEaSZZpDI6O23LJlsAHPAAOcVuUUAU7zSdN1C4tbi90+0uZ7R99 tJNCrtC2QcoS
MqcqDkeg9Kpv4X0e5iuo9QsYNRW6uzeSi9iSUGTaEUhSMDaiqgwM4HJJJJ2K KAKcmk6bNqkO
qS6faPqEKbIrtoVMqLzwr4yB8zcA9z61TtPC+j2Mt19msYI7W6tEs5LJIkEH lq0rYCAY+Yzv
nsfTrnYooAjkghmeF5Yo3eF98TMoJRtpXK+h2swyOxI71TsNGs7HR7bTNn2i GDY2+4Ad5JFY
P5rnHMhcby2MluetaFFAFOPSdNh1SbVItPtE1CZNkt2sKiV144Z8ZI+VeCew 9Kp/8In4b/s7
+zv+Ef0r7D5vn/ZvsUfl+Zjbv24xuxxnritiigCu9hZyRXUUlpA8d3n7SjRg ibKhDvH8XygL
z2AHSixsLPTLOOzsLSC0tY87IYIxGi5JJwo4GSSfxqxRQBwWtf8AH5rf/Xt/ WWuq02CG50OK
G4ijlibO5JFDKfmJ5Brlda/4/Nb/AOvb+stddo3/ACCYP+Bf+hGnH4H6r9RP 4l8/0Fj0XSop
Fkj0yzR0IZWWBQQR0IOKvUUUhmFB4ZFqhWHVb9AcbjthyxACgk+XknAAyeeB Wjp2nLpyTAXE
07TSea7y7c52qv8ACAMYUdquUUAY9v4X0e31671z7DBLqdzKJftUsSNJFiJY tqPjcq7U6Z6s
3ripH8NaDJcWlw+iaa09kiJayNaoWgVDlAhxlQp5AGMdq1KKAKdtpOm2dxJc Wun2kE8jyO8k
UKqzM5UuSQMksUQk99oz0FRw6Fo9vLcyw6VYxyXUqz3DpboDLIrb1diB8zBv mBPIPPWtCigC
v9gs/P8AP+yQed5vn+Z5Y3eZs8vfn+9s+XPXbx0qndeHtNubWK3S2jtkie1K m3RUIW3lEsSd
PuBhjHYM2MZzWpRQBXews5IrqKS0geO7z9pRowRNlQh3j+L5QF57ADpVNfDW gqlki6JpoSwc
vZqLVMW7FgxMfHyEsAcjHIzWpRQBTj0nTYdUm1SLT7RNQmTZLdrColdeOGfG SPlXgnsPSq9h
4a0HSn36domm2bhw+63tUjO4Kyg/KBztdxn0Zh3NalFAGe+haPJeXV5JpVi9 1dxGC5ma3QvN
GQAUdsZZcADB44FR23h7TbG9srixto7RLO3nt4be3RY4gsrxu52gdd0YPGOr ZznjUooAw9D8
IaD4e0uKwsNMtFREhDyGBA87RYKPIQo3OGG7PY8jFaEmk6bNqkOqS6faPqEK bIrtoVMqLzwr
4yB8zcA9z61cooAx7fwvo8UFmk9jBeTWcr3EVxdxJJIszv5jyA4+Vmf5vlAA OMAAACw+haPJ
eXV5JpVi91dxGC5ma3QvNGQAUdsZZcADB44FaFFAGXY+HtN08XaQ20fkXFxF ceQyL5cTRxxR
xhFAwoUQoR6EZGOMWNQ02HULeZGaSCeS3kt0u4CFnhVwNxjfGVOVU/VVParl FAFdLCzjitYo
7SBI7TH2ZFjAEOFKDYP4flJXjsSOlV4tC0eH7d5WlWMf9oZ+27bdB9pznPmc fPnc3XP3j61o
UUAZa+GtBVLJF0TTQlg5ezUWqYt2LBiY+PkJYA5GORmrE+k6bdWEthcafaTW crl5LeSFWjdi
+8kqRgkt82fXnrVyigCOCCG1t4re3ijhgiQJHHGoVUUDAAA4AA4xXM+Jf+Q3 p31/9kkrqq5X
xL/yG9O+v/sklVHZ+hMuhFRRRWJqafhL/kXrb/cX/wBAWtysPwl/yL1t/uL/ AOgLW5VogKKK
KYBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFAHBa1/x
+a3/ANe39Za67Rv+QTB/wL/0I1yOtf8AH5rf/Xt/WWuu0b/kEwf8C/8AQjTj 8D9V+on8S+f6
F+iiikMKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
5XxL/wAhvTvr/wCySV1Vcr4l/wCQ3p31/wDZJKqOz9CZdCKiiisTU0/CX/Iv W3+4v/oC1uVh
+Ev+Retv9xf/AEBa3KtEBRRRTAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooo
oAKKKKACiiigAooooA4LWv8Aj81v/r2/rLXXaN/yCYP+Bf8AoRrkda/4/Nb/ AOvb+stddo3/
ACCYP+Bf+hGnH4H6r9RP4l8/0L9FFFIYUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAVyviX/kN6d9f/ZJK6quV8S/8hvTvr/7JJVR2 foTLoRUUUVia
ma0SWMcUH9pXK4ULHGqIzEAdgEJNN83/AKfdS/8AAT/7XSJqFhpunR6hqd9b WouSCZrmVYwS
QSqAk44GePYnHWtKGaK4gjngkSWGRQ6SIwZWUjIII6gigRneb/0+6l/4Cf8A 2ujzf+n3Uv8A
wE/+11qVDeXcFhY3F5dP5dvbxtLK+CdqqMk4HJ4HagCj5v8A0+6l/wCAn/2u kW4V0Dpfaiys
Mgi1yCP+/datUrOaK30O3nnkSKGO2V3kdgqqoXJJJ6ACgCDzf+n3Uv8AwE/+ 10eb/wBPupf+
An/2urVhqVhqkDT6fe213CrbDJbyrIobAOMgnnBH51aoAy/N/wCn3Uv/AAE/ +10eb/0+6l/4
Cf8A2utSoVu4HvpbNXzcRRpK6YPCuWCnPTko35fSgCg1wqDLX2oqMgZNrjkn A/5Z0vm/9Pup
f+An/wBrq1qH/Hsn/XeH/wBGLTNQ1jTNJ8v+0tRs7Pzc+X9pnWPfjGcbiM4y PzoAg83/AKfd
S/8AAT/7XR5v/T7qX/gJ/wDa61KKAMvzf+n3Uv8AwE/+10eb/wBPupf+An/2 ur0F3BczXMUT
7ntpBFMMEbWKK+Pf5XU8etTUAZfm/wDT7qX/AICf/a6PN/6fdS/8BP8A7XWp TIZoriCOeCRJ
YZFDpIjBlZSMggjqCKAM7zf+n3Uv/AT/AO10i3CugdL7UWVhkEWuQR/37rVq lYTRRabp6SSI
jSxIkaswBdtm7A9ThSfoD6UAQeb/ANPupf8AgJ/9ro83/p91L/wE/wDtdXlv LV7prVbmFrhc
7og4LjAUnI68B0P/AANfUU8TRNO8AkQzIqu0YYblUkgEjsCVbH0PpQBneb/0 +6l/4Cf/AGuj
zf8Ap91L/wABP/tdalFAGS9wkaF3v9QVVGSzWuAP/IdTRrNLGskc+qujgMrL ZEgg9CD5VaOm
Rpda1J5oBjtER1Q8guxOG/DafXk54IFSyeJNR8+RIdHaWNZXiVw8vzbSRniI jt2Jq4xuJuxl
+Tc/89dX/wDAE/8Axqjybn/nrq//AIAn/wCNVt2mu30t5BBc6VJbJKxUSMzY BClu6D0q1deI
tJsdQhsLvVbK3vZ9vlW8twiSSbjgbVJyckEDHU0ONtxJ3OZ+ylkuBLHqkpnj 8pmazcELz0wg
/vGm/ZJv7+r/APgCf/jVdv53vR53vTi3HZg0nujiPsk39/V//AE//GqPsk39 /V//AABP/wAa
rt/O96gm1S0t/P8AOu4I/s8Qmm3yAeVGd2HbPRflbk8fKfQ0/aT/AJmTyR7I 4/7JN/f1f/wB
P/xqj7JN/f1f/wAAT/8AGq7fzvejzvej2k/5mHJHsjiPsk39/V//AABP/wAa qs0sC3LWzX9+
J1GWiNt8w78jy89xXY32tiyvILYWd1cvLHJMfs6q3lohQMxBIJ++vChmPYGq cutabqU9pbmz
+3WdzKY4rvbHJbmQIzkAk5Pyqw3KCM5GcggPnn/Mw5I9kc78n/P3qX/gL/8A a6Pk/wCfvUv/
AAF/+11t3emSWIMtkXltxjdbtl3UdyrE5PrtPPXB6CoY5EljWSNgyMMgjoRU upPux+zh2Mr5
P+fvUv8AwF/+10fJ/wA/epf+Av8A9rrUmmit4JJ55EihjUu8jsFVVAySSegA qCw1Kw1SBp9P
vba7hVthkt5VkUNgHGQTzgj86XtZ92P2cOxS+T/n71L/AMBf/tdHyf8AP3qX /gL/APa616KP
az7sPZw7GR8n/P3qX/gL/wDa6Pk/5+9S/wDAX/7XWvRR7Wfdh7OHYx90QcIb 3UdxBIH2Xkgd
f+WfuPzpfk/5+9S/8Bf/ALXV2T/kK2//AFwl/wDQo6tU/az7sPZw7GR8n/P3 qX/gL/8Aa6Pk
/wCfvUv/AAF/+11r0Uvaz7sPZw7GR8n/AD96l/4C/wD2uj5P+fvUv/AX/wC1 1r0Ue1n3Yezh
2Mj5P+fvUv8AwF/+10fJ/wA/epf+Av8A9rrXoo9rPuw9nDsZHyf8/epf+Av/ ANro+T/n71L/
AMBf/tda9ZV3e3EepvB9o+y26wo6Sf2XPd72LOGGY2AXAC9f71P2s+7F7OHY b8n/AD96l/4C
/wD2uj5P+fvUv/AX/wC1060vbiTU0g+0fardoXd5P7LntNjBkCjMjENkFun9 2pdUuL6J7GDT
4hJPc3Bi2+WHOBG7nAMiDPyd2HGevSj2k+7Dkh2IPk/5+9S/8Bf/ALXVi2to pWiuUvZLhEJZ
eU25wR2UepqrdP4jsEinubRlgNxDE7PaxKAHkVOq3TkH5uPlPP51dlXydQgk Q4E7GORR/EQp
IP1G0j8fak5z2bGoR3SLlFFFQWcxfC2jsdIuWuNUtbpbYxxz6fZNcMEYIXVh 5cigEqhyQD8v
B61kQjxLP4gtZtQnubW5LWzC2t7WaSIR+XGZhvEogA3+cPnDOAMqSfLrq9Pu ZV021AsbhgIU
AYNHg8Dnlqs/apv+gfc/99R//F0xHnxfxDPqLJDLqlt9qaN7mOO3uf8ARJPt cGVWWUvG4CNN
zGFQqpJUrgDR120lNr4gs5E1ea4NlLFpiRm4kieL7KBhyuUZzJ5v+sy5O3/Z rsPtU3/QPuf+
+o//AIuj7VN/0D7n/vqP/wCLoAz9KtZtP1u+tI2vG08W0EsTXM0k371mlDgP ISeix/LnA64G
45gu4ZX0nQ7hY3mt7SSOe5hRSzOgiYAhf4irlHx1+TKgsFB1/tU3/QPuf++o /wD4uobOW4t7
KCF7C4LRxqhIaPGQMf3qQGLqd/HqM9nM6a0mkBZlmFvbXcEvn5jMfyoolK7T LzjZnryFrP0+
111bd9Qvm1H+1kvbCJlEzmIo0dss5ESnyiuWnywXAOSCCuR2H2qb/oH3P/fU f/xdH2qb/oH3
P/fUf/xdAHEWn9o/Z/8ASf7XnsvtKfbr6P7ZFLcL5cpOy3P7yHEhhz5PysD2 UMq1ZrfXjLLK
DfQWzrCjzmCeST7Mst6YgRGyzFgGtt2GDjdl+N2fQftU3/QPuf8AvqP/AOLo +1Tf9A+5/wC+
o/8A4umBmaat0nhqzW8mmmlE6YeaIxuU84bMqzMw+Xb98l/73zZFVfETPa3z 3OmPqKaw9sFj
jgs2lguSpcxRyuY2VF3M2SGQgOSSBgjXupbieJUWwuARIj8tH0VwT/F7VN9q m/6B9z/31H/8
XSA5LVk1iSLXbOzu7l1sILm5hkt5HMzyyxMY4SR1KF5G2DBA+zEZ5p9/a3en 6m1pG2rtoQ8i
W4aOa4ml+ZbgMEcEy/fW2yqHgckAM2enSQxPK8elzI0rb5GXygXbAXJ+bk4U D6AelP8AtU3/
AED7n/vqP/4ugDkoNPnguL/U7FdUWRtUslhEkk+HtzHapIzRucMdpkBZgWBU kkFeGWltd2+i
aAdYm12WCWyMl6YmuDOLorFsVhD+8VQolBGNuRlsuQT2H2qb/oH3P/fUf/xd H2qb/oH3P/fU
f/xdAHH6fa66tu+oXzaj/ayXthEyiZzEUaO2WciJT5RXLT5YLgHJBBXIpWf9 qzWtv5P9u2+t
waSuzz/tLR3N0bXjdvzAqqTzuwxkHOMfP3v2qb/oH3P/AH1H/wDF0fapv+gf c/8AfUf/AMXT
AwvCEV3H9s828vLi2Ozy/tNrcQ7X+bdj7RI8p42eiDtk78GoWVze2nhdLaa5 tylyHe4t0Vmi
X7LMM/MrKASQvI/i9cVu/apv+gfc/wDfUf8A8XUNnLcW9lBC9hcFo41QkNHj IGP71IDi5rHW
LPVtWjGoaosEjSs14bN5TJ8lgB8kATJIEqBkwygOQQVJp8FrqSyXF9DZaja6 lNpJj01TdTzo
Zla5I81nwOQ8bKJwMbtoAKkDt/tU3/QPuf8AvqP/AOLo+1Tf9A+5/wC+o/8A 4umBx6213d6r
aQadNrsOivcxiR5muFlz5Nz5oLTfvAh/0cZ4AJypD5I1rFL+TxJNZm7d7Kwn e5MgkYs7SrlY
XPQhN8rbOML9mPPNbX2qb/oH3P8A31H/APF0xJDE8rx6XMjStvkZfKBdsBcn 5uThQPoB6UgL
Wlvs1jUPeOH/ANnqOG/SHcksM4cXMxOLSRhgu+DkREEcjuf8I7EzC/up5IHi WRI1UOVJON2e
hPqK0POq4ysJq5B9uSe+sRDFN8spLE2zoAPLcckxIOpHfv0rH1bStQ1jxLrF sk6W2m3uk29r
cu9sztIpe5DLE+8KrhX6kPjcpx2O/wCdR51JyuCVjljHqMenfaL241qS3m1i 6F4kbzeZHaLJ
ceSIlj/eBd5hOUyxUgE+WABjPd6k11fQNNrp1JNOD6NHG9ztVjcXYgM4X5Ml FgyZ+u07+jV6
F51MAiWd5xGgmdVRpAo3MqkkAnqQCzYHufWlcdjg9R/4SfztdkjvtT+2eVf7 IILS42+Vsk+z
7ZDL5O7/AFJHlJ5meD/y0NX9d065sLvV57eTWpr2TQmisbiGWZjJcKLln3+X 8gbMqFAwABOI
wMYHYedR51FwscWh8QjXdRlfVtQt5t13kR6bPNHHDiTyGGZDA5A8ltsUfmEj aeshrpPB8s66
TKJoLqMCciOS5nuHadQqjzAtwTJECcjyznGCQWBDHQ86jzqLhYi1W923+nxv BdNGrm4EttCz
vvQrtjBHCb9zAsxA2h1ON2Qx9RnfX7SWezlS6kQ28iKGlhiQBnEiS7QBuICM pAJIQ9FBax51
HnUXCxoefWTeW7QSvdWqFkY7poVHU92UevqO/Xr1m86jzqLgYPiZWvfBmspa q07zafOsSxjc
XJjYAADqTWXe6Jqb6rYXFxqMzS3VykF1Jp0TW6C3jhuGAPzORl5MFtw6pt2s A1dLLaDzDNau
LeRjl8ICjnPVhxz15BB9c0zzryI4ktRKOzQOOfqGIx+BNIDkLr+3fOuv7O/t H+2/MvN/mb/s
3k7Jvs+zf+43Z+zfd+b727+OqsKPe+KUsdMu/EEWn7rdrgTyXSuqmO93czfM qsViG4Y5AwQw
BHdfapv+gfc/99R//F1VsLe30uBoNP0L7JCzbzHbpDGpbAGcBhzgD8qYHKrH rw1q/kfU763m
3XWQmnzzJHDh/JYEyeS5A8o7Y08wn5T/AMtDUMg1IaXbiODVHAnlEdqJr9Wv ztQK5mP7y1AO
8BJMoeTkjEg7r7VN/wBA+5/76j/+Lo+1Tf8AQPuf++o//i6ACT/kK2//AFwl /wDQo6tVntLc
NexTCwuNqRuhG6POSVI/i/2TU32qb/oH3P8A31H/APF0gLVFVftU3/QPuf8A vqP/AOLo+1Tf
9A+5/wC+o/8A4ugZaoqr9qm/6B9z/wB9R/8AxdH2qb/oH3P/AH1H/wDF0AWq Kq/apv8AoH3P
/fUf/wAXR9qm/wCgfc/99R//ABdAFqiqv2qb/oH3P/fUf/xdH2qb/oH3P/fU f/xdAFqqtyLp
LzT7y0ihlktLgymOWUxhgYpE+8Fbn5wenaj7VN/0D7n/AL6j/wDi6PtU3/QP uf8AvqP/AOLo
EP1TUNY1ezWzl06xgjNxDK0i3zuQElVzhfKGSduOo60y6/4+bH/ruf8A0W9H 2qb/AKB9z/31
H/8AF1DLPJJd2Qe1miHnE7nKEf6t+OGNPcDQooopDKumf8gqz/64J/6CKtVV 0z/kFWf/AFwT
/wBBFWqBBRRRQMKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACodH0fTZtGs5ZbG3Z 2hVmZoxzx1/Q
/rz1KzVY0LjQbHt+4U+nb8PT9OvGUaEyKLTNDmkkjitbKR4TtkVQpKH0b0PB 6479Odk8Oj6b
BcQyR2NukiyoVYRjIO4frx/PjqFxmszDPrTwadYzKJdxNzMQA3lBvukEAZZj 1X7zfdxldbQp
DJpVm7RW0RaQHbbbfL/1nbaSOcZIBPOfT5dZQSV0RGV3ZlSaZYEDOJCM4+SN nP5AGqFnrUV7
KY0ikVluWgO8EdFZgRkdcLyOCM89s6dc9cyLJCykCfEssYSGRQfMCuWAXySV JXd1Pfqc5PNU
qcivyt+hrGPM97HQ01nCAFiAPUkAfmabGVd5HiiMNuxzFEwwVH0/hB7L29vu rPAwS5iYttwT
znHY98j+dOD5kmKSsyDzkPRkP0df8aerBlyKu/bG2yCO5VDG4PMhAfLZIzk4 GDjI5z345pkl
ncsMMWJIBz1OevfrVu3QSuNdtgz/AI/0pQwJwCM+lJJ9zpnkfzp9n5P2v98M qOi54Jz0PPTp
9f5lgEqpqFxdW1r5trbJcMGG5Gcrhe7DarE464AyRnGTgG3+6yPIaRo9owZB g5/Ie1FIDOe5
1OO6tIjb6ZMtwolL2188myI9JP8AVAYOMLz8xzjgMRPdf8fNj/13P/ot6mht 4LfzPIhji8xz
I+xQu5j1Y46k+tQ3X/HzY/8AXc/+i3oAtUUUUDM+yvLa302zSa4hjY26EB3A OMe9Tf2nYf8A
P7bf9/V/xqzpcskXh6w8uR0ygztYjPyJWTD41V52Fwt9Z2vnzwJeXEqCJ3hL 7xw5ZQBFIcsF
GF68gFiLv9p2H/P7bf8Af1f8aP7TsP8An9tv+/q/40+XxHaQyQRy6zDG9xI0 MKvdAGR1bayq
M8sG4IHIPFFt4jtLy+lsrXWYZ7uHPmwRXQaRMHB3KDkYJwc96QDP7TsP+f22 /wC/q/40f2nY
f8/tt/39X/GiLxTp89obuHXraS2DMhmS8UoGVS7DcDjIUFj6AE9Kj0/xXaan JLDBqYFxFcyW
zwNOPMDozjG0HPIjdh3KjPrQBJ/adh/z+23/AH9X/Gj+07D/AJ/bb/v6v+NX YtRknQvDeNIo
ZkLJLkBlJVhweoIIPoQaf9ruf+fiX/vs0aAZ/wDadh/z+23/AH9X/Gj+07D/ AJ/bb/v6v+Na
H2u5/wCfiX/vs0fa7n/n4l/77NGgGf8A2nYf8/tt/wB/V/xo/tOw/wCf22/7 +r/jWh9ruf8A
n4l/77NH2u5/5+Jf++zRoBn/ANp2H/P7bf8Af1f8aP7TsP8An9tv+/q/41of a7n/AJ+Jf++z
R9ruf+fiX/vs0aAZ/wDadh/z+23/AH9X/Gj+07D/AJ/bb/v6v+NaH2u5/wCf iX/vs0fa7n/n
4l/77NGgGf8A2nYf8/tt/wB/V/xo/tOw/wCf22/7+r/jWh9ruf8An4l/77NH 2u5/5+Jf++zR
oBn/ANp2H/P7bf8Af1f8aP7TsP8An9tv+/q/41ofa7n/AJ+Jf++zR9ruf+fi X/vs0aAZ/wDa
dh/z+23/AH9X/Gj+07D/AJ/bb/v6v+NaH2u5/wCfiX/vs0fa7n/n4l/77NGg Gf8A2nYf8/tt
/wB/V/xo/tOw/wCf22/7+r/jWh9ruf8An4l/77NH2u5/5+Jf++zRoBn/ANp2 H/P7bf8Af1f8
aP7TsP8An9tv+/q/41ofa7n/AJ+Jf++zR9ruf+fiX/vs0aAZ/wDadh/z+23/ AH9X/Gj+07D/
AJ/bb/v6v+NaH2u5/wCfiX/vs0fa7n/n4l/77NGgGf8A2nYf8/tt/wB/V/xo /tOw/wCf22/7
+r/jWh9ruf8An4l/77NH2u5/5+Jf++zRoBn/ANp2H/P7bf8Af1f8aP7TsP8A n9tv+/q/41of
a7n/AJ+Jf++zR9ruf+fiX/vs0aAZ/wDadh/z+23/AH9X/Gj+07D/AJ/bb/v6 v+NQ67dXDNpC
G4lKPq1oGUucMPNU8/iAfwq5dazJaXFjBJNcFrycwRlW4DCN5OeemIz+OKAI f7TsP+f22/7+
r/jR/adh/wA/tt/39X/Go4fFdpIsXm6mLZ5rmW2hjuJwjyvHIY2CDPzfMOMc 8j1xRp/icXlp
dTy3gt/ssk6zK9x9xI5ZI/MbphT5THnjgjJxQBJ/adh/z+23/f1f8aP7TsP+ f22/7+r/AI1M
muwy6hLp8eqo97Eu+S2W4BkReOSucgfMPzHrVr7Xc/8APxL/AN9mgDP/ALTs P+f22/7+r/jR
/adh/wA/tt/39X/GtD7Xc/8APxL/AN9mj7Xc/wDPxL/32aNAM/8AtOw/5/bb /v6v+NH9p2H/
AD+23/f1f8a0Ptdz/wA/Ev8A32aPtdz/AM/Ev/fZo0Az/wC07D/n9tv+/q/4 1Y07UdOstOtr
ZtUsC8UaqSJjgkD6ew9+Ppix9ruf+fiX/vs0fa7n/n4l/wC+zTAq3Mvhy8Z2 uJdJkdxtLsw3
EYwOduemOmMdsfLtmstQ0Wxhigg1CySGN92PPZj97ceSOSff/DEn2u5/5+Jf ++zR9ruf+fiX
/vs0+d2sLlW5lzXelXCBJ7izlUHO13Vhn8aq2sWiWbl4Lm2RjKZSRKvJIYAf 7oDHAH+Od77X
c/8APxL/AN9mj7Xc/wDPxL/32aVx2M/+07D/AJ/bb/v6v+NH9p2H/P7bf9/V /wAa0Ptdz/z8
S/8AfZo+13P/AD8S/wDfZpaAZx1HTzjN7bcf9NV/xoGo6eOl7bf9/V/xrR+1 3P8Az8S/99mj
7Xc/8/Ev/fZoAzzqWnkYN7bEf9dV/wAab/aGnZJ+223P/TYf41pfa7n/AJ+J f++zR9ruf+fi
X/vs0AZ/9pWA/wCX22/7+r/jR/adh/z+23/f1f8AGtD7Xc/8/Ev/AH2aPtdz /wA/Ev8A32aN
AM/+07D/AJ/bb/v6v+NRyzw3E1k8MqSKLgglGBGfLf0rU+13P/PxL/32ao30 jy3Vi0js584j
LHP/ACzegCxRRRQMrWtzBb+HtN8+eOLcnG9wufkT1rkZfD+nyaFrEJ1C2fUL z7d5LSXztDEZ
2k2kISVRtsmCVXPLdcnPd6Boek6lolrNf6XZXUqxIgee3R2C7QcZI6cn860/ +ET8N/8AQv6V
/wCAUf8AhVWJueb6vYRTfbrfTbrS47TUNOTTZA04j+yovmgMiqpD8TH5coBs HPPGYLCTXNMu
NPurqwsbRb3UninM5eV/Na5jGYyqgLibcCHOQo4+bI9b/wCET8N/9C/pX/gF H/hXP6MvhnV9
OTU5fBMGm6Y9oLxb2+t7NYzGQGBOyRmX5Tn5gAADkinYLnG2ui27alZXt3Lp qmG7jmdJNUlv
WKxxThCHl7h5gQoUYwTuJIAnux9j0e6hiuLOWaO/N1p08U+X82Wdn/eLj5I1 MhVyrEtHv+7n
Fd3oul+E9e0wX9r4bsUhMssQWfTkjfMcjRtlSuV5Q8HB9QDxWh/wifhv/oX9 K/8AAKP/AApW
C5ymnSaXpmnwWcN/C6xLgySTKXkbqzsR1ZiSxPcknvVr+07D/n9tv+/q/wCN dD/wifhv/oX9
K/8AAKP/AAo/4RPw3/0L+lf+AUf+FHKFznv7TsP+f22/7+r/AI0f2nYf8/tt /wB/V/xrof8A
hE/Df/Qv6V/4BR/4Uf8ACJ+G/wDoX9K/8Ao/8KOULnPf2nYf8/tt/wB/V/xo /tOw/wCf22/7
+r/jXQ/8In4b/wChf0r/AMAo/wDCj/hE/Df/AEL+lf8AgFH/AIUcoXOe/tOw /wCf22/7+r/j
R/adh/z+23/f1f8AGuh/4RPw3/0L+lf+AUf+FH/CJ+G/+hf0r/wCj/wo5Quc 9/adh/z+23/f
1f8AGj+07D/n9tv+/q/410P/AAifhv8A6F/Sv/AKP/Cj/hE/Df8A0L+lf+AU f+FHKFznv7Ts
P+f22/7+r/jR/adh/wA/tt/39X/Guh/4RPw3/wBC/pX/AIBR/wCF
Re: List of items based on internal list? [message #17385 is a reply to message #16112] Mon, 14 August 2006 13:54 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: tansey.vt.edu

Ed,

I don't quite follow the route that you're suggesting I take. If my
Ecore file is needed before I can generate my GMF editor, how can users
make use of the Ecore editor?

Thanks,
Wesley

Ed Merks wrote:
> Wesley,
>
> Is this screen capture an illustration of your scenario?
>
>
> When I create a dynamic instance of A and B, each has only the
> appropriate fields. E.g., here B only has an F4 property only.
>
>
> Wesley Tansey wrote:
>> Ed,
>>
>> What I am trying to do is a little different than what you are
>> suggesting I think. I want to have 3 editors, one which allows users
>> to create their SpecialClass and SpecialObject types, and another
>> which allows them to draw control flow graphs using the SpecialObjects
>> as part of the nodes. Then the 3rd editor will take the graph from my
>> 2nd editor and generate Java code (both the new classes and the new
>> objects).
>>
>> I can almost use the EMF model creator. Say for example I want to
>> create two classes, A and B:
>>
>> Class A
>> ---------
>> int F1
>> String F2
>> double F3
>>
>> Class B
>> ---------
>> String F1
>>
>> Now I want to have 2 different objects, Obj1 and Obj2, with different
>> values for these fields:
>>
>> Obj1 (type = A)
>> -----
>> int F1 = 1
>> String F2 = "obj1"
>> double F3 = .5
>>
>> Obj2 (type = B)
>> -----
>> String F4 = "obj2"
>>
>> If I were to create this as an EMF model, I would have my SpecialClass
>> and SpecialObject. The user would create a SpecialClass with the name
>> A and then create child FieldDeclarations for it. They follow the
>> same process to create SpecialClass B. Now, when my user goes to
>> create Obj1, they choose A as their SpecialClass. However, if they go
>> to create child FieldDefinitions for Obj1, the list of available
>> FieldDeclarations will be F1, F2, F3, and F4. I would like instead
>> for them instead to automatically have the list of FieldDeclarations
>> available to them to be constrained to those contained in the parent
>> SpecialClass.
>>
>> It's a small problem, but an important one, since I don't want users
>> defining fields for their object that they don't actually have.
>>
>>
>>
>> Ed Merks wrote:
>>> Wesley,
>>>
>>> You've not really described how graphically this should look, but bot
>>> the EMF or GMF editor generated for the schema below will do all the
>>> instance editing things you've described. Following the tutorial's
>>> steps but with your own schema as the starting point should help
>>> illustrate that:
>>>
>>>
>>> http://www.eclipse.org/emf/docs.php?doc=tutorials/xlibmod/xl ibmod.html
>>> http://wiki.eclipse.org/index.php/GMF_Tutorial
>>>
>>> It also sounds like your users are both creating a meta model (Ecore,
>>> XML Schema, or something) as well as generating the instance. The
>>> steps you describe are possible in the Ecore editor directly. I.e.,
>>> you can create an EClass, add EStructuralFeatures, and then you can
>>> right click on the EClass and say "Create Dynamic Instance" which
>>> will open an editor for editing the instance based on your dynamic
>>> model. Try it with an Ecore model you create when following the
>>> tutorials...
>>>
>>>
>>> Wesley Tansey wrote:
>>>> Hi,
>>>>
>>>> I'm new to the GMF project (and Eclipse plugins in general) and have
>>>> been going over it for the last few weeks. I am working on a
>>>> program visualization tool for a specialized domain. I want the
>>>> user to be able to first create their classes (nodes which contain a
>>>> list of fields, these are simple classes with no methods) then be
>>>> able to create their objects from those classes (nodes which contain
>>>> a reference to the object's class). When the user creates an object
>>>> node, I want to list all of the fields in the member Class so that
>>>> they can fill in their values. I'm not sure how I can specify that
>>>> in the XML document for the ECore file (or if I can).
>>>>
>>>> So far what I have for that portion is:
>>>>> <xsd:complexType name="SpecialClass">
>>>>> <xsd:attribute ecore:reference="special:FieldDeclaration"
>>>>> name="fieldDeclarations">
>>>>> <xsd:simpleType>
>>>>> <xsd:list itemType="xsd:anyURI"/>
>>>>> </xsd:simpleType>
>>>>> </xsd:attribute>
>>>>> <xsd:attribute name="name" type="xsd:string"/>
>>>>> </xsd:complexType>
>>>>>
>>>>> <xsd:complexType name="SpecialObject">
>>>>> <xsd:attribute name="name" type="xsd:string"/>
>>>>> <xsd:attribute ecore:reference="special:SpecialClass"
>>>>> name="specialClass" type="xsd:anyURI"/>
>>>>> <xsd:attribute ecore:reference="special:FieldDefinition"
>>>>> name="fieldDefinitions">
>>>>> <xsd:simpleType>
>>>>> <xsd:list itemType="xsd:anyURI"/>
>>>>> </xsd:simpleType>
>>>>> </xsd:complexType>
>>>>>
>>>>> <xsd:complexType name="FieldDefinition">
>>>>> <xsd:attribute ecore:reference="special:FieldDeclaration"
>>>>> name="field" type="xsd:anyURI"/>
>>>>> <xsd:attribute name="value" type="xsd:string"/>
>>>>> </xsd:complexType>
>>>>>
>>>>> <xsd:complexType name="FieldDeclaration">
>>>>> <xsd:attribute name="type" type="xsd:string"/>
>>>>> <xsd:attribute name="name" type="xsd:string"/>
>>>>> </xsd:complexType>
>>>>
>>>> What I want to do is have the user first create a node, say MyClass,
>>>> and add a FieldDeclaration to it, say of type String and named
>>>> myString. Then the user creates an object node, chooses MyClass as
>>>> its specialClass; then my user should be able to see its field
>>>> myString and be able to set its value.
>>>>
>>>> Any help or hints would be great!
>>>>
>>>> Thanks,
>>>> Wesley
>>>
>
Re: List of items based on internal list? [message #18125 is a reply to message #17385] Mon, 14 August 2006 14:10 Go to previous message
Eclipse UserFriend
Originally posted by: merks.ca.ibm.com

Wesley,

I'm not trying to suggest anything. I'm simply pointing out the
capabilities that exist already. I'm really not at all clear on what
you are trying to achieve so I'm pointing out the things that seem
analogous as best as I can tell. I don't think there's anything else I
can add at this point...


Wesley Tansey wrote:

> Ed,
>
> I don't quite follow the route that you're suggesting I take. If my
> Ecore file is needed before I can generate my GMF editor, how can
> users make use of the Ecore editor?
>
> Thanks,
> Wesley
>
> Ed Merks wrote:
>
>> Wesley,
>>
>> Is this screen capture an illustration of your scenario?
>>
>>
>> When I create a dynamic instance of A and B, each has only the
>> appropriate fields. E.g., here B only has an F4 property only.
>>
>>
>> Wesley Tansey wrote:
>>
>>> Ed,
>>>
>>> What I am trying to do is a little different than what you are
>>> suggesting I think. I want to have 3 editors, one which allows
>>> users to create their SpecialClass and SpecialObject types, and
>>> another which allows them to draw control flow graphs using the
>>> SpecialObjects as part of the nodes. Then the 3rd editor will take
>>> the graph from my 2nd editor and generate Java code (both the new
>>> classes and the new objects).
>>>
>>> I can almost use the EMF model creator. Say for example I want to
>>> create two classes, A and B:
>>>
>>> Class A
>>> ---------
>>> int F1
>>> String F2
>>> double F3
>>>
>>> Class B
>>> ---------
>>> String F1
>>>
>>> Now I want to have 2 different objects, Obj1 and Obj2, with
>>> different values for these fields:
>>>
>>> Obj1 (type = A)
>>> -----
>>> int F1 = 1
>>> String F2 = "obj1"
>>> double F3 = .5
>>>
>>> Obj2 (type = B)
>>> -----
>>> String F4 = "obj2"
>>>
>>> If I were to create this as an EMF model, I would have my
>>> SpecialClass and SpecialObject. The user would create a
>>> SpecialClass with the name A and then create child FieldDeclarations
>>> for it. They follow the same process to create SpecialClass B.
>>> Now, when my user goes to create Obj1, they choose A as their
>>> SpecialClass. However, if they go to create child FieldDefinitions
>>> for Obj1, the list of available FieldDeclarations will be F1, F2,
>>> F3, and F4. I would like instead for them instead to automatically
>>> have the list of FieldDeclarations available to them to be
>>> constrained to those contained in the parent SpecialClass.
>>>
>>> It's a small problem, but an important one, since I don't want users
>>> defining fields for their object that they don't actually have.
>>>
>>>
>>>
>>> Ed Merks wrote:
>>>
>>>> Wesley,
>>>>
>>>> You've not really described how graphically this should look, but
>>>> bot the EMF or GMF editor generated for the schema below will do
>>>> all the instance editing things you've described. Following the
>>>> tutorial's steps but with your own schema as the starting point
>>>> should help illustrate that:
>>>>
>>>>
>>>> http://www.eclipse.org/emf/docs.php?doc=tutorials/xlibmod/xl ibmod.html
>>>> http://wiki.eclipse.org/index.php/GMF_Tutorial
>>>>
>>>> It also sounds like your users are both creating a meta model
>>>> (Ecore, XML Schema, or something) as well as generating the
>>>> instance. The steps you describe are possible in the Ecore editor
>>>> directly. I.e., you can create an EClass, add EStructuralFeatures,
>>>> and then you can right click on the EClass and say "Create Dynamic
>>>> Instance" which will open an editor for editing the instance based
>>>> on your dynamic model. Try it with an Ecore model you create when
>>>> following the tutorials...
>>>>
>>>>
>>>> Wesley Tansey wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> I'm new to the GMF project (and Eclipse plugins in general) and
>>>>> have been going over it for the last few weeks. I am working on a
>>>>> program visualization tool for a specialized domain. I want the
>>>>> user to be able to first create their classes (nodes which contain
>>>>> a list of fields, these are simple classes with no methods) then
>>>>> be able to create their objects from those classes (nodes which
>>>>> contain a reference to the object's class). When the user creates
>>>>> an object node, I want to list all of the fields in the member
>>>>> Class so that they can fill in their values. I'm not sure how I
>>>>> can specify that in the XML document for the ECore file (or if I
>>>>> can).
>>>>>
>>>>> So far what I have for that portion is:
>>>>>
>>>>>> <xsd:complexType name="SpecialClass">
>>>>>> <xsd:attribute ecore:reference="special:FieldDeclaration"
>>>>>> name="fieldDeclarations">
>>>>>> <xsd:simpleType>
>>>>>> <xsd:list itemType="xsd:anyURI"/>
>>>>>> </xsd:simpleType>
>>>>>> </xsd:attribute>
>>>>>> <xsd:attribute name="name" type="xsd:string"/>
>>>>>> </xsd:complexType>
>>>>>>
>>>>>> <xsd:complexType name="SpecialObject">
>>>>>> <xsd:attribute name="name" type="xsd:string"/>
>>>>>> <xsd:attribute ecore:reference="special:SpecialClass"
>>>>>> name="specialClass" type="xsd:anyURI"/>
>>>>>> <xsd:attribute ecore:reference="special:FieldDefinition"
>>>>>> name="fieldDefinitions">
>>>>>> <xsd:simpleType>
>>>>>> <xsd:list itemType="xsd:anyURI"/>
>>>>>> </xsd:simpleType>
>>>>>> </xsd:complexType>
>>>>>>
>>>>>> <xsd:complexType name="FieldDefinition">
>>>>>> <xsd:attribute ecore:reference="special:FieldDeclaration"
>>>>>> name="field" type="xsd:anyURI"/>
>>>>>> <xsd:attribute name="value" type="xsd:string"/>
>>>>>> </xsd:complexType>
>>>>>>
>>>>>> <xsd:complexType name="FieldDeclaration">
>>>>>> <xsd:attribute name="type" type="xsd:string"/>
>>>>>> <xsd:attribute name="name" type="xsd:string"/>
>>>>>> </xsd:complexType>
>>>>>
>>>>>
>>>>> What I want to do is have the user first create a node, say
>>>>> MyClass, and add a FieldDeclaration to it, say of type String and
>>>>> named myString. Then the user creates an object node, chooses
>>>>> MyClass as its specialClass; then my user should be able to see
>>>>> its field myString and be able to set its value.
>>>>>
>>>>> Any help or hints would be great!
>>>>>
>>>>> Thanks,
>>>>> Wesley
>>>>
>>>>
>>
Previous Topic:workaround for bug #147855 (hide compartment if empty) - any hints?
Next Topic:how to disable "Delete form model" function for special Element
Goto Forum:
  


Current Time: Sun Jun 08 12:26:38 EDT 2025

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

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

Back to the top