Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF "Technology" (Ecore Tools, EMFatic, etc)  » [Teneo] Error running Teneo (1.x) Dynamic.java example
[Teneo] Error running Teneo (1.x) Dynamic.java example [message #128899] Sat, 23 August 2008 03:03 Go to next message
Eclipse UserFriend
Originally posted by: mduduzi.keswa.isizwe.com

Hi All,
I have modified Dynamic.java example to run it standalone (as opposed
to within Eclipse). I got rid of all references to Library classes to
that I can create a class from scratch. Everything compiles. But when I
run the example I get ff. error:

Aug 22, 2008 10:44:29 PM org.eclipse.emf.teneo.hibernate.HbHelper
createRegisterDataStore
INFO: Creating emf data store and registering it under name: MySF
Aug 22, 2008 10:44:29 PM org.eclipse.emf.teneo.hibernate.HbHelper
createRegisterDataStore
INFO: Returning created emf data store, initialize this newly created
data store!
Aug 22, 2008 10:44:30 PM
org.eclipse.emf.teneo.classloader.ClassLoaderResolver setClassLoaderStrategy
INFO: Class loader strategy set to:
org.eclipse.emf.teneo.classloader.ContextClassLoaderStrategy
Aug 22, 2008 10:44:30 PM
org.eclipse.emf.teneo.extension.DefaultExtensionManager getExtension
WARNING: The extension: org.eclipse.emf.teneo.PersistenceOptions is
declared as a singleton but this getInstance call passed initialization
parameters so it is not cached, org.eclipse.emf.teneo.PersistenceOptions
Aug 22, 2008 10:44:30 PM org.eclipse.emf.teneo.TeneoException <init>
SEVERE: EPackages are not set
org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are not set
at
org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
at hbtutorial.Dynamic.main(Dynamic.java:70)
Exception in thread "main"
org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are not set
at
org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
at hbtutorial.Dynamic.main(Dynamic.java:70)

Thanks in advance.
Re: [Teneo] Error running Teneo (1.x) Dynamic.java example [ with attachments] [message #128913 is a reply to message #128899] Sat, 23 August 2008 03:06 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: mduduzi.keswa.isizwe.com

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

Mdu wrote:
> Hi All,
> I have modified Dynamic.java example to run it standalone (as opposed
> to within Eclipse). I got rid of all references to Library classes to
> that I can create a class from scratch. Everything compiles. But when I
> run the example I get ff. error:
>
> Aug 22, 2008 10:44:29 PM org.eclipse.emf.teneo.hibernate.HbHelper
> createRegisterDataStore
> INFO: Creating emf data store and registering it under name: MySF
> Aug 22, 2008 10:44:29 PM org.eclipse.emf.teneo.hibernate.HbHelper
> createRegisterDataStore
> INFO: Returning created emf data store, initialize this newly created
> data store!
> Aug 22, 2008 10:44:30 PM
> org.eclipse.emf.teneo.classloader.ClassLoaderResolver
> setClassLoaderStrategy
> INFO: Class loader strategy set to:
> org.eclipse.emf.teneo.classloader.ContextClassLoaderStrategy
> Aug 22, 2008 10:44:30 PM
> org.eclipse.emf.teneo.extension.DefaultExtensionManager getExtension
> WARNING: The extension: org.eclipse.emf.teneo.PersistenceOptions is
> declared as a singleton but this getInstance call passed initialization
> parameters so it is not cached, org.eclipse.emf.teneo.PersistenceOptions
> Aug 22, 2008 10:44:30 PM org.eclipse.emf.teneo.TeneoException <init>
> SEVERE: EPackages are not set
> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are not set
> at
> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>
> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
> at hbtutorial.Dynamic.main(Dynamic.java:70)
> Exception in thread "main"
> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are not set
> at
> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>
> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
> at hbtutorial.Dynamic.main(Dynamic.java:70)
>
> Thanks in advance.


--------------040102080409070609050806
Content-Type: text/plain;
name="Dynamic.java"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="Dynamic.java"

/**
* <copyright>
*
* Copyright (c) 2005, 2006, 2007, 2008 Springsite BV (The Netherlands) and others
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Martin Taal
* </copyright>
*
* $Id: Dynamic.java,v 1.4 2008/02/28 07:07:51 mtaal Exp $
*/

package hbtutorial;

import java.util.Iterator;
import java.util.List;

import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.EcoreFactory;
import org.eclipse.emf.ecore.EcorePackage;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
import org.eclipse.emf.teneo.hibernate.HbDataStore;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;

/**
* Dynamic Tutorial
*
* @author <a href="mailto:mtaal@elver.org">Martin Taal</a>
* @version $Revision: 1.4 $
*/
public class Dynamic {

/** The main method */
public static void main(String[] args) {

// create resource set and resource
ResourceSet resourceSet = new ResourceSetImpl();

// Register XML resource factory
resourceSet.getResourceFactoryRegistry().getExtensionToFacto ryMap().put( "xmi",
new XMIResourceFactoryImpl());

final EcoreFactory efactory = EcoreFactory.eINSTANCE;
final EcorePackage epackage = EcorePackage.eINSTANCE;

EPackage companyPackage = efactory.createEPackage();
companyPackage.setName("company");
companyPackage.setNsPrefix("company");
companyPackage.setNsURI("http:///com.example.company.ecore");

companyPackage.eClass();

resourceSet.getPackageRegistry().put(companyPackage.getNsURI (), companyPackage);


// first do the quick start with the correct dbname
HbDataStore hbds = QuickStart.doQuickStart("DynamicLibrary");

// print the hibernate.hbm.xml for demo purposes
System.err.println(hbds.getMappingXML());


// This tutorial will create a new type of book which inherits from the standard
// Book

// create the SchoolBook EClass
EClass schoolBookEClass = efactory.createEClass();
schoolBookEClass.setName("SchoolBook");

// create a new attribute for this EClass
EAttribute level = efactory.createEAttribute();
level.setName("level");
level.setEType(epackage.getEInt());
schoolBookEClass.getEStructuralFeatures().add(level);

// Set the supertype of SchoolBook to the Book
//schoolBookEClass.getESuperTypes().add(LibraryPackage.eINST ANCE.getBook());

// create a course
EClass courseEClass = efactory.createEClass();
courseEClass.setName("Course");

// give the Course a name
EAttribute courseName = efactory.createEAttribute();
courseName.setName("courseName");
courseName.setEType(epackage.getEString());
courseEClass.getEStructuralFeatures().add(courseName);

// A course always uses one SchoolBook
EReference courseBook = efactory.createEReference();
courseBook.setName("courseBook");
courseBook.setEType(schoolBookEClass);
courseBook.setContainment(false);
courseEClass.getEStructuralFeatures().add(courseBook);

// Create a new EPackage and add the new EClasses
EPackage schoolPackage = efactory.createEPackage();
schoolPackage.setName("elv");
schoolPackage.setNsPrefix("elv");
schoolPackage.setNsURI("http:///www.elver.org/School");
schoolPackage.getEClassifiers().add(courseEClass);
schoolPackage.getEClassifiers().add(schoolBookEClass);
EPackage.Registry.INSTANCE.put(schoolPackage.getNsURI(), schoolPackage);

// Now reset the epackages in the datastore
//hbds.setEPackages(new EPackage[]{LibraryPackage.eINSTANCE, schoolPackage});

// recreate the database
hbds.initialize();

// print the hibernate.hbm.xml for demo purposes
System.err.println(hbds.getMappingXML());

// and create a course
EObject course = schoolPackage.getEFactoryInstance().create(courseEClass);
course.eSet(courseName, "Dutch Literature Level 1");
//course.eSet(courseBook, bk);

final SessionFactory sessionFactory = hbds.getSessionFactory();

// now persist them all

Session session = sessionFactory.openSession();
Transaction tx = session.getTransaction();
tx.begin();
session.save(course);
tx.commit();

// Now query for the books, at least one of them should be a SchoolBook
tx.begin();
Query qry = session.createQuery("from Course where courseName='Dutch Literature Level 1'");
List list = qry.list();
EObject eobject = (EObject)list.get(0);
if (eobject.eClass() != courseEClass) {
throw new Error("No Course?");
}

tx.commit();
session.close();
}
}

--------------040102080409070609050806
Content-Type: text/plain;
name="QuickStart.java"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="QuickStart.java"

LyoqDQogKiA8Y29weXJpZ2h0Pg0KICoNCiAqIENvcHlyaWdodCAoYykgMjAw NSwgMjAwNiwg
MjAwNywgMjAwOCBTcHJpbmdzaXRlIEJWIChUaGUgTmV0aGVybGFuZHMpIGFu ZCBvdGhlcnMN
CiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhl IGFjY29tcGFu
eWluZyBtYXRlcmlhbHMNCiAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0 aGUgdGVybXMg
b2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KICogd2hpY2gg YWNjb21wYW5p
ZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCiAq IGh0dHA6Ly93
d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQogKg0KICogQ29u dHJpYnV0b3Jz
Og0KICogICBNYXJ0aW4gVGFhbA0KICogPC9jb3B5cmlnaHQ+DQogKg0KICog JElkOiBRdWlj
a1N0YXJ0LmphdmEsdiAxLjUgMjAwOC8wMy8wNyAxMzoxMzo1NyBtdGFhbCBF eHAgJA0KICov
DQoNCnBhY2thZ2UgaGJ0dXRvcmlhbDsNCg0KaW1wb3J0IGphdmEudXRpbC5Q cm9wZXJ0aWVz
Ow0KDQppbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlOw0K aW1wb3J0IG9y
Zy5lY2xpcHNlLmVtZi5lY29yZS5FY29yZUZhY3Rvcnk7DQppbXBvcnQgb3Jn LmVjbGlwc2Uu
ZW1mLmVjb3JlLkVjb3JlUGFja2FnZTsNCmltcG9ydCBvcmcuZWNsaXBzZS5l bWYudGVuZW8u
aGliZXJuYXRlLkhiRGF0YVN0b3JlOw0KaW1wb3J0IG9yZy5lY2xpcHNlLmVt Zi50ZW5lby5o
aWJlcm5hdGUuSGJIZWxwZXI7DQppbXBvcnQgb3JnLmhpYmVybmF0ZS5TZXNz aW9uOw0KaW1w
b3J0IG9yZy5oaWJlcm5hdGUuU2Vzc2lvbkZhY3Rvcnk7DQppbXBvcnQgb3Jn LmhpYmVybmF0
ZS5UcmFuc2FjdGlvbjsNCmltcG9ydCBvcmcuaGliZXJuYXRlLmNmZy5FbnZp cm9ubWVudDsN
Cg0KLyoqDQogKiBRdWljayBTdGFydCBUdXRvcmlhbA0KICogDQogKiBAYXV0 aG9yIDxhIGhy
ZWY9Im1haWx0bzptdGFhbEBlbHZlci5vcmciPk1hcnRpbiBUYWFsPC9hPg0K ICogQHZlcnNp
b24gJFJldmlzaW9uOiAxLjUgJA0KKi8NCnB1YmxpYyBjbGFzcyBRdWlja1N0 YXJ0IHsNCg0K
CS8qKiBUaGUgbWFpbiBtZXRob2QgKi8NCglwdWJsaWMgc3RhdGljIHZvaWQg bWFpbihTdHJp
bmdbXSBhcmdzKSB7DQoJCS8vIHRoZSBuYW1lIG9mIHRoZSBkYXRhYmFzZSwg dGhpcyBkYXRh
YmFzZSBzaG91bGQgZXhpc3QgYnV0IGRvZXMgbm90IG5lZWQgdG8gY29udGFp biB0YWJsZXMN
CgkJU3RyaW5nIGRiTmFtZSA9ICJsaWJyYXJ5IjsgDQoJCWRvUXVpY2tTdGFy dChkYk5hbWUp
OyAvL2lnbm9yZSByZXR1cm4NCgl9DQoJDQoJLyoqIE1ldGhvZG4gd2hpY2gg Y2FuIGJlIGNh
bGxlZCBieSBvdGhlcnMgKi8NCglwdWJsaWMgc3RhdGljIEhiRGF0YVN0b3Jl IGRvUXVpY2tT
dGFydChTdHJpbmcgZGJOYW1lKSB7DQoJCS8vIHRoZSBuYW1lIG9mIHRoZSBz ZXNzaW9uIGZh
Y3RvcnkNCgkJU3RyaW5nIGhiTmFtZSA9ICJNeVNGIjsgDQoJDQoJCS8vIGNy ZWF0ZSB0aGUg
SGJEYXRhU3RvcmUNCgkJSGJEYXRhU3RvcmUgaGJkcyA9IChIYkRhdGFTdG9y ZSlIYkhlbHBl
ci5JTlNUQU5DRS5jcmVhdGVSZWdpc3RlckRhdGFTdG9yZShoYk5hbWUpOw0K CQkvL0VQYWNr
YWdlIHBrZyA9IEVjb3JlRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlRVBhY2th Z2UoKTsNCgkJ
DQoJCS8vIFRoZSBoaWJlcm5hdGUgcHJvcGVydGllcyBjYW4gYmUgc2V0IGJ5 IGhhdmluZyBh
IGhpYmVybmF0ZS5wcm9wZXJ0aWVzIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl IGNsYXNzcGF0
aC4NCgkJLy8gQW5vdGhlciBhcHByb2FjaCBpcyBzZXR0aW5nIHRoZSBwcm9w ZXJ0aWVzIGlu
IHRoZSBIYkRhdGFTdG9yZS4gVG8gZG8gdGhpcyBjb21tZW50IG91dCB0aGUg Zm9sbG93aW5n
IGxpbmVzDQoJCS8vIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSBzZWN0aW9u IDMuMSBvZiB0
aGUgSGliZXJuYXRlIG1hbnVhbA0KCQlmaW5hbCBQcm9wZXJ0aWVzIHByb3Bz ID0gbmV3IFBy
b3BlcnRpZXMoKTsNCgkJcHJvcHMuc2V0UHJvcGVydHkoRW52aXJvbm1lbnQu RFJJVkVSLCAi
Y29tLm15c3FsLmpkYmMuRHJpdmVyIik7DQoJCXByb3BzLnNldFByb3BlcnR5 KEVudmlyb25t
ZW50LlVTRVIsICJyb290Iik7DQoJCXByb3BzLnNldFByb3BlcnR5KEVudmly b25tZW50LlVS
TCwgImpkYmM6bXlzcWw6Ly8xMjcuMC4wLjE6MzMwNi8iICsgZGJOYW1lKTsN CgkJcHJvcHMu
c2V0UHJvcGVydHkoRW52aXJvbm1lbnQuUEFTUywgInJvb3QiKTsNCgkJcHJv cHMuc2V0UHJv
cGVydHkoRW52aXJvbm1lbnQuRElBTEVDVCwgb3JnLmhpYmVybmF0ZS5kaWFs ZWN0Lk15U1FM
SW5ub0RCRGlhbGVjdC5jbGFzcy5nZXROYW1lKCkpOw0KCQloYmRzLnNldFBy b3BlcnRpZXMo
cHJvcHMpOw0KDQoJCS8vIGluaXRpYWxpemUsIGFsc28gY3JlYXRlcyB0aGUg ZGF0YWJhc2Ug
dGFibGVzDQoJCWhiZHMuaW5pdGlhbGl6ZSgpOw0KCQkNCgkJU2Vzc2lvbkZh Y3Rvcnkgc2Vz
c2lvbkZhY3RvcnkgPSBoYmRzLmdldFNlc3Npb25GYWN0b3J5KCk7DQoJCQ0K CQkvLyBDcmVh
dGUgYSBzZXNzaW9uIGFuZCBhIHRyYW5zYWN0aW9uDQoJCVNlc3Npb24gc2Vz c2lvbiA9IHNl
c3Npb25GYWN0b3J5Lm9wZW5TZXNzaW9uKCk7DQoJCVRyYW5zYWN0aW9uIHR4 ID0gc2Vzc2lv
bi5nZXRUcmFuc2FjdGlvbigpOw0KCQkNCgkJLy8gU3RhcnQgYSB0cmFuc2Fj dGlvbiwgY3Jl
YXRlIGEgbGlicmFyeSBhbmQgbWFrZSBpdCBwZXJzaXN0ZW50DQoJCXR4LmJl Z2luKCk7DQoN
CgkJCSAgICAgICAgDQoJCS8vIGF0IGNvbW1pdCB0aGUgb2JqZWN0cyB3aWxs IGJlIHByZXNl
bnQgaW4gdGhlIGRhdGFiYXNlDQoJCXR4LmNvbW1pdCgpOw0KCQkvLyBhbmQg Y2xvc2Ugb2Ys
IHRoaXMgc2hvdWxkIGFjdHVhbGx5IGJlIGRvbmUgaW4gYSBmaW5hbGx5IGJs b2NrDQoJCXNl
c3Npb24uY2xvc2UoKTsNCgkJDQoJCXJldHVybiBoYmRzOw0KCX0NCn0=
--------------040102080409070609050806--
Re: [Teneo] Error running Teneo (1.x) Dynamic.java example [ with attachments] [message #128926 is a reply to message #128913] Sat, 23 August 2008 09:58 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Hi Mdu,
You have to tell the datastore which EPackages to persist. In your case the companyPackage. You can
pass this EPackage to the doQuickStart method and then set the companyPackage in the datastore by
doing something like hbds.setEPackages(new EPackage[]{companyPackage});

btw, support for Teneo is given on the EMF newsgroup, which I added to this post.

gr. Martin

Mdu wrote:
> Mdu wrote:
>> Hi All,
>> I have modified Dynamic.java example to run it standalone (as
>> opposed to within Eclipse). I got rid of all references to Library
>> classes to that I can create a class from scratch. Everything
>> compiles. But when I run the example I get ff. error:
>>
>> Aug 22, 2008 10:44:29 PM org.eclipse.emf.teneo.hibernate.HbHelper
>> createRegisterDataStore
>> INFO: Creating emf data store and registering it under name: MySF
>> Aug 22, 2008 10:44:29 PM org.eclipse.emf.teneo.hibernate.HbHelper
>> createRegisterDataStore
>> INFO: Returning created emf data store, initialize this newly created
>> data store!
>> Aug 22, 2008 10:44:30 PM
>> org.eclipse.emf.teneo.classloader.ClassLoaderResolver
>> setClassLoaderStrategy
>> INFO: Class loader strategy set to:
>> org.eclipse.emf.teneo.classloader.ContextClassLoaderStrategy
>> Aug 22, 2008 10:44:30 PM
>> org.eclipse.emf.teneo.extension.DefaultExtensionManager getExtension
>> WARNING: The extension: org.eclipse.emf.teneo.PersistenceOptions is
>> declared as a singleton but this getInstance call passed
>> initialization parameters so it is not cached,
>> org.eclipse.emf.teneo.PersistenceOptions
>> Aug 22, 2008 10:44:30 PM org.eclipse.emf.teneo.TeneoException <init>
>> SEVERE: EPackages are not set
>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are not set
>> at
>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>
>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>> Exception in thread "main"
>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are not set
>> at
>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>
>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>
>> Thanks in advance.
>


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: [Teneo] Error running Teneo (1.x) Dynamic.java example [ with attachments] [message #128939 is a reply to message #128926] Sat, 23 August 2008 11:49 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: mduduzi.keswa.isizwe.com

Thanks Martin,
That worked. Next question: I want to be able to store an ecore
metamodel of dynamically created models (e.g. companyPackage or
schoolPackage). For example, it'd be great if companyPackage definition
was stored in the db together with relevant class definitions etc. I
want to later on use this information to create dynamic forms etc. Does
this make sense?

Thnx again.
Martin Taal wrote:
> Hi Mdu,
> You have to tell the datastore which EPackages to persist. In your case
> the companyPackage. You can pass this EPackage to the doQuickStart
> method and then set the companyPackage in the datastore by doing
> something like hbds.setEPackages(new EPackage[]{companyPackage});
>
> btw, support for Teneo is given on the EMF newsgroup, which I added to
> this post.
>
> gr. Martin
>
> Mdu wrote:
>> Mdu wrote:
>>> Hi All,
>>> I have modified Dynamic.java example to run it standalone (as
>>> opposed to within Eclipse). I got rid of all references to Library
>>> classes to that I can create a class from scratch. Everything
>>> compiles. But when I run the example I get ff. error:
>>>
>>> Aug 22, 2008 10:44:29 PM org.eclipse.emf.teneo.hibernate.HbHelper
>>> createRegisterDataStore
>>> INFO: Creating emf data store and registering it under name: MySF
>>> Aug 22, 2008 10:44:29 PM org.eclipse.emf.teneo.hibernate.HbHelper
>>> createRegisterDataStore
>>> INFO: Returning created emf data store, initialize this newly created
>>> data store!
>>> Aug 22, 2008 10:44:30 PM
>>> org.eclipse.emf.teneo.classloader.ClassLoaderResolver
>>> setClassLoaderStrategy
>>> INFO: Class loader strategy set to:
>>> org.eclipse.emf.teneo.classloader.ContextClassLoaderStrategy
>>> Aug 22, 2008 10:44:30 PM
>>> org.eclipse.emf.teneo.extension.DefaultExtensionManager getExtension
>>> WARNING: The extension: org.eclipse.emf.teneo.PersistenceOptions is
>>> declared as a singleton but this getInstance call passed
>>> initialization parameters so it is not cached,
>>> org.eclipse.emf.teneo.PersistenceOptions
>>> Aug 22, 2008 10:44:30 PM org.eclipse.emf.teneo.TeneoException <init>
>>> SEVERE: EPackages are not set
>>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are not set
>>> at
>>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>>
>>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>> Exception in thread "main"
>>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are not set
>>> at
>>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>>
>>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>>
>>> Thanks in advance.
>>
>
>
Re: [Teneo] Error running Teneo (1.x) Dynamic.java example [ with attachments] [message #128952 is a reply to message #128939] Sat, 23 August 2008 12:23 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Hi Mdu,
Yes that is possible. Also pass the EcorePackage and the XMLTypePackage to the setEPackages method.
Then you can persist your EPackage in the same as another object.

gr. Martin

Mdu wrote:
> Thanks Martin,
> That worked. Next question: I want to be able to store an ecore
> metamodel of dynamically created models (e.g. companyPackage or
> schoolPackage). For example, it'd be great if companyPackage definition
> was stored in the db together with relevant class definitions etc. I
> want to later on use this information to create dynamic forms etc. Does
> this make sense?
>
> Thnx again.
> Martin Taal wrote:
>> Hi Mdu,
>> You have to tell the datastore which EPackages to persist. In your
>> case the companyPackage. You can pass this EPackage to the
>> doQuickStart method and then set the companyPackage in the datastore
>> by doing something like hbds.setEPackages(new
>> EPackage[]{companyPackage});
>>
>> btw, support for Teneo is given on the EMF newsgroup, which I added to
>> this post.
>>
>> gr. Martin
>>
>> Mdu wrote:
>>> Mdu wrote:
>>>> Hi All,
>>>> I have modified Dynamic.java example to run it standalone (as
>>>> opposed to within Eclipse). I got rid of all references to Library
>>>> classes to that I can create a class from scratch. Everything
>>>> compiles. But when I run the example I get ff. error:
>>>>
>>>> Aug 22, 2008 10:44:29 PM org.eclipse.emf.teneo.hibernate.HbHelper
>>>> createRegisterDataStore
>>>> INFO: Creating emf data store and registering it under name: MySF
>>>> Aug 22, 2008 10:44:29 PM org.eclipse.emf.teneo.hibernate.HbHelper
>>>> createRegisterDataStore
>>>> INFO: Returning created emf data store, initialize this newly
>>>> created data store!
>>>> Aug 22, 2008 10:44:30 PM
>>>> org.eclipse.emf.teneo.classloader.ClassLoaderResolver
>>>> setClassLoaderStrategy
>>>> INFO: Class loader strategy set to:
>>>> org.eclipse.emf.teneo.classloader.ContextClassLoaderStrategy
>>>> Aug 22, 2008 10:44:30 PM
>>>> org.eclipse.emf.teneo.extension.DefaultExtensionManager getExtension
>>>> WARNING: The extension: org.eclipse.emf.teneo.PersistenceOptions is
>>>> declared as a singleton but this getInstance call passed
>>>> initialization parameters so it is not cached,
>>>> org.eclipse.emf.teneo.PersistenceOptions
>>>> Aug 22, 2008 10:44:30 PM org.eclipse.emf.teneo.TeneoException <init>
>>>> SEVERE: EPackages are not set
>>>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are not
>>>> set
>>>> at
>>>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>>>
>>>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>>>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>>> Exception in thread "main"
>>>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are not
>>>> set
>>>> at
>>>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>>>
>>>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>>>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>>>
>>>> Thanks in advance.
>>>
>>
>>


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: [Teneo] Error running Teneo (1.x) Dynamic.java example [ with attachments] [message #128964 is a reply to message #128952] Sat, 23 August 2008 12:30 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Hi Mdu,
Two additions, when reading the Epackage from the db, also do the following:
- read the epackages first (before other objects refering to it).
- after reading an epackage from the db you have to register it in the EPackage Registry using the
epackage uri.

gr. Martin

Martin Taal wrote:
> Hi Mdu,
> Yes that is possible. Also pass the EcorePackage and the XMLTypePackage
> to the setEPackages method. Then you can persist your EPackage in the
> same as another object.
>
> gr. Martin
>
> Mdu wrote:
>> Thanks Martin,
>> That worked. Next question: I want to be able to store an ecore
>> metamodel of dynamically created models (e.g. companyPackage or
>> schoolPackage). For example, it'd be great if companyPackage
>> definition was stored in the db together with relevant class
>> definitions etc. I want to later on use this information to create
>> dynamic forms etc. Does this make sense?
>>
>> Thnx again.
>> Martin Taal wrote:
>>> Hi Mdu,
>>> You have to tell the datastore which EPackages to persist. In your
>>> case the companyPackage. You can pass this EPackage to the
>>> doQuickStart method and then set the companyPackage in the datastore
>>> by doing something like hbds.setEPackages(new
>>> EPackage[]{companyPackage});
>>>
>>> btw, support for Teneo is given on the EMF newsgroup, which I added
>>> to this post.
>>>
>>> gr. Martin
>>>
>>> Mdu wrote:
>>>> Mdu wrote:
>>>>> Hi All,
>>>>> I have modified Dynamic.java example to run it standalone (as
>>>>> opposed to within Eclipse). I got rid of all references to Library
>>>>> classes to that I can create a class from scratch. Everything
>>>>> compiles. But when I run the example I get ff. error:
>>>>>
>>>>> Aug 22, 2008 10:44:29 PM org.eclipse.emf.teneo.hibernate.HbHelper
>>>>> createRegisterDataStore
>>>>> INFO: Creating emf data store and registering it under name: MySF
>>>>> Aug 22, 2008 10:44:29 PM org.eclipse.emf.teneo.hibernate.HbHelper
>>>>> createRegisterDataStore
>>>>> INFO: Returning created emf data store, initialize this newly
>>>>> created data store!
>>>>> Aug 22, 2008 10:44:30 PM
>>>>> org.eclipse.emf.teneo.classloader.ClassLoaderResolver
>>>>> setClassLoaderStrategy
>>>>> INFO: Class loader strategy set to:
>>>>> org.eclipse.emf.teneo.classloader.ContextClassLoaderStrategy
>>>>> Aug 22, 2008 10:44:30 PM
>>>>> org.eclipse.emf.teneo.extension.DefaultExtensionManager getExtension
>>>>> WARNING: The extension: org.eclipse.emf.teneo.PersistenceOptions is
>>>>> declared as a singleton but this getInstance call passed
>>>>> initialization parameters so it is not cached,
>>>>> org.eclipse.emf.teneo.PersistenceOptions
>>>>> Aug 22, 2008 10:44:30 PM org.eclipse.emf.teneo.TeneoException <init>
>>>>> SEVERE: EPackages are not set
>>>>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are
>>>>> not set
>>>>> at
>>>>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>>>>
>>>>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>>>>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>>>> Exception in thread "main"
>>>>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are
>>>>> not set
>>>>> at
>>>>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>>>>
>>>>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>>>>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>>>>
>>>>> Thanks in advance.
>>>>
>>>
>>>
>
>


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: [Teneo] Error running Teneo (1.x) Dynamic.java example [ with attachments] [message #128977 is a reply to message #128964] Sat, 23 August 2008 12:21 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: mduduzi.keswa.isizwe.com

Martin, Thanks. I'm still a little lost. Here's my understanding and
questions:

Example: schoolPackage
1. I understand how to dynamically create new EObject's based on
dynamically created epackage and assoc. classes and attributes.

2. How do I store/save an instance of schoolPackage?
Do I have to create an instance of schoolPackage (if this is possible)
and call .save() for hbds to save it into the database for later retrieval?

3. Assuming I have schoolPackage instance stored in the database; to
read it back, do I call something like session.createQuery("from
EPackage where type='SchoolPackage'") - and of course this will give me
back an EPackage instance that I use to introspect the whole package
graph (classes, their attributes, etc.)

-mdu

Martin Taal wrote:
> Hi Mdu,
> Two additions, when reading the Epackage from the db, also do the
> following:
> - read the epackages first (before other objects refering to it).
> - after reading an epackage from the db you have to register it in the
> EPackage Registry using the epackage uri.
>
> gr. Martin
>
> Martin Taal wrote:
>> Hi Mdu,
>> Yes that is possible. Also pass the EcorePackage and the
>> XMLTypePackage to the setEPackages method. Then you can persist your
>> EPackage in the same as another object.
>>
>> gr. Martin
>>
>> Mdu wrote:
>>> Thanks Martin,
>>> That worked. Next question: I want to be able to store an ecore
>>> metamodel of dynamically created models (e.g. companyPackage or
>>> schoolPackage). For example, it'd be great if companyPackage
>>> definition was stored in the db together with relevant class
>>> definitions etc. I want to later on use this information to create
>>> dynamic forms etc. Does this make sense?
>>>
>>> Thnx again.
>>> Martin Taal wrote:
>>>> Hi Mdu,
>>>> You have to tell the datastore which EPackages to persist. In your
>>>> case the companyPackage. You can pass this EPackage to the
>>>> doQuickStart method and then set the companyPackage in the datastore
>>>> by doing something like hbds.setEPackages(new
>>>> EPackage[]{companyPackage});
>>>>
>>>> btw, support for Teneo is given on the EMF newsgroup, which I added
>>>> to this post.
>>>>
>>>> gr. Martin
>>>>
>>>> Mdu wrote:
>>>>> Mdu wrote:
>>>>>> Hi All,
>>>>>> I have modified Dynamic.java example to run it standalone (as
>>>>>> opposed to within Eclipse). I got rid of all references to Library
>>>>>> classes to that I can create a class from scratch. Everything
>>>>>> compiles. But when I run the example I get ff. error:
>>>>>>
>>>>>> Aug 22, 2008 10:44:29 PM org.eclipse.emf.teneo.hibernate.HbHelper
>>>>>> createRegisterDataStore
>>>>>> INFO: Creating emf data store and registering it under name: MySF
>>>>>> Aug 22, 2008 10:44:29 PM org.eclipse.emf.teneo.hibernate.HbHelper
>>>>>> createRegisterDataStore
>>>>>> INFO: Returning created emf data store, initialize this newly
>>>>>> created data store!
>>>>>> Aug 22, 2008 10:44:30 PM
>>>>>> org.eclipse.emf.teneo.classloader.ClassLoaderResolver
>>>>>> setClassLoaderStrategy
>>>>>> INFO: Class loader strategy set to:
>>>>>> org.eclipse.emf.teneo.classloader.ContextClassLoaderStrategy
>>>>>> Aug 22, 2008 10:44:30 PM
>>>>>> org.eclipse.emf.teneo.extension.DefaultExtensionManager getExtension
>>>>>> WARNING: The extension: org.eclipse.emf.teneo.PersistenceOptions
>>>>>> is declared as a singleton but this getInstance call passed
>>>>>> initialization parameters so it is not cached,
>>>>>> org.eclipse.emf.teneo.PersistenceOptions
>>>>>> Aug 22, 2008 10:44:30 PM org.eclipse.emf.teneo.TeneoException <init>
>>>>>> SEVERE: EPackages are not set
>>>>>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are
>>>>>> not set
>>>>>> at
>>>>>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>>>>>
>>>>>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>>>>>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>>>>> Exception in thread "main"
>>>>>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are
>>>>>> not set
>>>>>> at
>>>>>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>>>>>
>>>>>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>>>>>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>>>>>
>>>>>> Thanks in advance.
>>>>>
>>>>
>>>>
>>
>>
>
>
Re: [Teneo] Error running Teneo (1.x) Dynamic.java example [ with db picture] [message #128990 is a reply to message #128977] Sat, 23 August 2008 12:26 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: mduduzi.keswa.isizwe.com

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

Martin,
I have attached a snapshot of tables that were created when I added
epackage with setPackages(). All these tables have 0 rows. How do I make
sense of 'em?

Mdu wrote:
> Martin, Thanks. I'm still a little lost. Here's my understanding and
> questions:
>
> Example: schoolPackage
> 1. I understand how to dynamically create new EObject's based on
> dynamically created epackage and assoc. classes and attributes.
>
> 2. How do I store/save an instance of schoolPackage?
> Do I have to create an instance of schoolPackage (if this is possible)
> and call .save() for hbds to save it into the database for later retrieval?
>
> 3. Assuming I have schoolPackage instance stored in the database; to
> read it back, do I call something like session.createQuery("from
> EPackage where type='SchoolPackage'") - and of course this will give me
> back an EPackage instance that I use to introspect the whole package
> graph (classes, their attributes, etc.)
>
> -mdu
>
> Martin Taal wrote:
>> Hi Mdu,
>> Two additions, when reading the Epackage from the db, also do the
>> following:
>> - read the epackages first (before other objects refering to it).
>> - after reading an epackage from the db you have to register it in the
>> EPackage Registry using the epackage uri.
>>
>> gr. Martin
>>
>> Martin Taal wrote:
>>> Hi Mdu,
>>> Yes that is possible. Also pass the EcorePackage and the
>>> XMLTypePackage to the setEPackages method. Then you can persist your
>>> EPackage in the same as another object.
>>>
>>> gr. Martin
>>>
>>> Mdu wrote:
>>>> Thanks Martin,
>>>> That worked. Next question: I want to be able to store an ecore
>>>> metamodel of dynamically created models (e.g. companyPackage or
>>>> schoolPackage). For example, it'd be great if companyPackage
>>>> definition was stored in the db together with relevant class
>>>> definitions etc. I want to later on use this information to create
>>>> dynamic forms etc. Does this make sense?
>>>>
>>>> Thnx again.
>>>> Martin Taal wrote:
>>>>> Hi Mdu,
>>>>> You have to tell the datastore which EPackages to persist. In your
>>>>> case the companyPackage. You can pass this EPackage to the
>>>>> doQuickStart method and then set the companyPackage in the
>>>>> datastore by doing something like hbds.setEPackages(new
>>>>> EPackage[]{companyPackage});
>>>>>
>>>>> btw, support for Teneo is given on the EMF newsgroup, which I added
>>>>> to this post.
>>>>>
>>>>> gr. Martin
>>>>>
>>>>> Mdu wrote:
>>>>>> Mdu wrote:
>>>>>>> Hi All,
>>>>>>> I have modified Dynamic.java example to run it standalone (as
>>>>>>> opposed to within Eclipse). I got rid of all references to
>>>>>>> Library classes to that I can create a class from scratch.
>>>>>>> Everything compiles. But when I run the example I get ff. error:
>>>>>>>
>>>>>>> Aug 22, 2008 10:44:29 PM org.eclipse.emf.teneo.hibernate.HbHelper
>>>>>>> createRegisterDataStore
>>>>>>> INFO: Creating emf data store and registering it under name: MySF
>>>>>>> Aug 22, 2008 10:44:29 PM org.eclipse.emf.teneo.hibernate.HbHelper
>>>>>>> createRegisterDataStore
>>>>>>> INFO: Returning created emf data store, initialize this newly
>>>>>>> created data store!
>>>>>>> Aug 22, 2008 10:44:30 PM
>>>>>>> org.eclipse.emf.teneo.classloader.ClassLoaderResolver
>>>>>>> setClassLoaderStrategy
>>>>>>> INFO: Class loader strategy set to:
>>>>>>> org.eclipse.emf.teneo.classloader.ContextClassLoaderStrategy
>>>>>>> Aug 22, 2008 10:44:30 PM
>>>>>>> org.eclipse.emf.teneo.extension.DefaultExtensionManager getExtension
>>>>>>> WARNING: The extension: org.eclipse.emf.teneo.PersistenceOptions
>>>>>>> is declared as a singleton but this getInstance call passed
>>>>>>> initialization parameters so it is not cached,
>>>>>>> org.eclipse.emf.teneo.PersistenceOptions
>>>>>>> Aug 22, 2008 10:44:30 PM org.eclipse.emf.teneo.TeneoException <init>
>>>>>>> SEVERE: EPackages are not set
>>>>>>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are
>>>>>>> not set
>>>>>>> at
>>>>>>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>>>>>>
>>>>>>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>>>>>>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>>>>>> Exception in thread "main"
>>>>>>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are
>>>>>>> not set
>>>>>>> at
>>>>>>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>>>>>>
>>>>>>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>>>>>>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>>>>>>
>>>>>>> Thanks in advance.
>>>>>>
>>>>>
>>>>>
>>>
>>>
>>
>>


--------------070400060800000902050707
Content-Type: image/jpeg;
name="dynamiclibrary.jpg"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="dynamiclibrary.jpg"

/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsL DBkSEw8UHRof
Hh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwL DBgNDRgyIRwh
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjL/wAAR
CAHCAtADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcI CQoL/8QAtRAA
AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS 0fAkM2JyggkK
FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1 dnd4eXqDhIWG
h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW 19jZ2uHi4+Tl
5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcI CQoL/8QAtREA
AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMz UvAVYnLRChYk
NOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0 dXZ3eHl6goOE
hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU 1dbX2Nna4uPk
5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3TTCBpVnyP9Qn/oIrNtvE j3PiWfRTouox
PAgke5doPKEbGQI/EpfDGJgBtyOMgVcsWxptn/1wT/0EVn29pcR+MNSv2jxb TWFpDG+4cukl
wWGOvAkT8/Y0wNTU9Tg0q1S4nDsj3EFuBHgndLKsSnkjgM4J9s9elEmpwRaz baWwcz3FvNcI
wxtCxtGrAnOc5lXHHY/j5Nc+FdamvJ5ZdCnmW48uXU4FWxjt7yVby2lbywpV pF2LcYNwd2Gw
SCzZt3nhLV7kzNY6c+m6fIk3lWMbwBoITJYl4QgLRZk8i5O3mM+Z85G5hSA9 O1bU4NH0a+1S
4DvBZ28lxIseCxVFLEAEgZwPUVXtfENhfXGmRWrvKmpWT31vKFwpiUxdc4IJ 85CBj1ziuQtv
Dt3B8N/EOk21rdRy3tvcraWly9urIXh2BQsKrDGC4JwpI+YsTliBYk0PWbDx bJd6QtqbEabf
Na/aGJEV7PLFIyvj5jEzJv4yQTIMgbAADu9w9RRuHqK8i0rwVO+s28Nzoc/9 grdQzyWuoxWI
TcILtXfyrf5Dy9uMkbjgdlGB/B2stpVnBLaTiA2tjNqdtbtbu93dBLhZ2KzZ ikkLvbszSfe2
AgllWgD13cPUUbh6iuf8MWMml+HbWzlE6tHvKpPIjuil2KqfLVUXCkDag2rj apIAJs6ql/Pa
mHT5IonfhpHYgqP9nAPPv2/kAa+4eoo3D1FYGiW2pWEH2a9lhliUfu2RiWX2 5HI/l/LW3UAW
dw9RRuHqKrbqN1MRZ3D1FG4eoqtuo3UAWdw9RRuHqKrbqN1AFncPUUbh6iq2 6jdQBZ3D1FG4
eoqtuo3UAWdw9RSFhvHI6H+lV91IW+Zfof6UhlHVvEH9mahaWEGl3uo3N1FL MqWjQjakZjDE
mWRB1lXGM961IJjNbxSvE8DugZopCpZCR907SRkdOCR6E1xnivTri78QaTer puqXttBa3UUg
0y+FrIju8BXLebGSuI34yeccdKp6/wCHrrWrjW9TXTXF4+hwppqyypuhvFNw wIwxVZULx4kz
8u47WwWoA7+eYw28sqRPO6IWWKMqGcgfdG4gZPTkgepFSbh6ivD9dtbfV9Qu 9I0+wtb/AMRG
41Tzb+3mt5HMclvdLHE7B/NQL5kMXzqqqVC5+7norjwhqa6e8mmR/Y9Zub/U /MvfPw6QSi6M
PzgkiPe8D7F6N823cCaAPTtw9RRuHqK4jwPobaL9vZbS+srebywsF19kT5l3 bmEdqojGQyjc
SWbaAQAq567dQBZ3D1FG4eoqtuo3UxFncPUUhYbxyOh/pVfdSFvmX6H+lIZR 1bxB/ZmoWlhB
pd7qNzdRSzKlo0I2pGYwxJlkQdZVxjPerml6nBq1gl3CHQF3jeOTAaORGKOh wSMqysuQSDjI
JGDXP61oR1jxRpdxN9qWzt7K6R5La8kt2EjvblQTGysQQj8dOBnnFYr6Bcx2 1guo6D/bFhbS
6gh08+TISXuA0E7CVgjMIlbLljJmU5yWc0Aejbh6ijcPUV5ja+F/EenoJ2uf td5ZxW9+h3K3
2u9WCOCSPe5yMxwyLvYY/wBL3Y3RAm/ofhq40TXdNQWfnxWdhFatqLShdyxx BAFGd65bJMJD
RfdkDLIGDAHf7h6ijcPUVW3UbqYizuHqKNw9RVbdRuoAs7h6ikLDeOR0P9Kr 7qQt8y/Q/wBK
Qyjq3iD+zNQtLCDS73Ubm6ilmVLRoRtSMxhiTLIg6yrjGe9aFlf2uo2cd1ay h4XzgkFSCCQV
ZTgqwIIKkAggggEVzmtG/tfFGl6na6TdajBFZXVvIttJCrIzvbspPmOgIxE3 QntWJq/hq+k0
KzsLiy+327XVze3MVnFazSRzSytIoX7WPLMaiSVS2A5OwgAFhQB31vf2t3Pd wwyhpLSUQzjB
GxyiyAc9fldTx6+oNR6nqcGlWqXE4dke4gtwI8E7pZViU8kcBnBPtnr0rzW0 8MazH4cuoNQ0
37XdX/2GTUJALee4mWO1jjKAz5jaRZotx35XbIxUlzxr2Gj6ovgKw06W3nFz DqkMyxTvFvS3
S/WRQfLPljbCo+VOBjao4AoA7/cPUUbh6ivHrDwNqcdmIZoNR+0l7Rb+dri2 hW6dbqB5JkaE
LK5CxysJJWEg3cAs7Ysaza6Z4c1VxrNhp0nh43E32HSZZrWOP5obXEscUzpG ArrcA4wwMxIB
Dk0AeiyeIbBNRhsVd5J3vfsLBV4jl+zm4+YnHHlgcjPLAeuNTcPUV5D4c8Fz vYaINQ0n93JL
ZXN2zEI3lJpht/JkGQ52yggoQVKy45BcDvvDVpcadoxtLiPy/LurnyYwwISA zyGFVxwFEZQB
f4QAMDGKAOg3D1FIWG8cjof6VX3Uhb5l+h/pQA2TU4ItZttLYOZ7i3muEYY2 hY2jVgTnOcyr
jjsfxubh6iuI8Z6PqGrfafsVv5u/QNSs1+dVzNL5HlryR12Nz0GOSOKoal4W kt9Xf7JpH2zQ
h9mmudPDo326QLdLIWWRgskm57Z2aQ5bywcsygUAd1pmpwaravcQB1RLie3I kwDuilaJjwTw
WQke2OnSrm4eorxr/hCdSlji3aZfW0X78WNtavZL/Z7NdzyBizh/J+SSH5rf cw8s8EqlddoW
j6hZeKrm+ubfbZS/a/ssW9T9i3Tqz8g5k+0Eedz/AKvbsHWgDq9M1ODVbV7i AOqJcT25EmAd
0UrRMeCeCyEj2x06Vc3D1FeRX3gzVrq8kee3vnV5bk2f2WS0H2WR7y4kEpeV WaLckkJ3wguN
hyMqgq3f+F7200e4vLQpp2pSXuqyXGoyXOzybaRbsxEyZJWIO0Em1eA3zldw JoA9KuL+1tJ7
SGaULJdymGAYJ3uEaQjjp8qMefT1IqPSdTg1jRrHVLcOkF5bx3EayYDBXUMA QCRnB9TXlWhW
Ol654qXU9C8P2tvpVlcWUkkUP2VkeRVvFLqYXaMuhnhcgsGAUEDOwN0XhDw1 caB/wjxWz+zs
uitDqjeaGZ7gfZ/LDnJL7QJgvUIuVGAQKAO/3D1FIWG8cjof6VX3Uhb5l+h/ pQA2TU4ItZtt
LYOZ7i3muEYY2hY2jVgTnOcyrjjsfxNM1ODVbV7iAOqJcT25EmAd0UrRMeCe CyEj2x06Vh6w
l5beINO1i20+e/jgtbm1eC2eNZAZHhYN+8ZV2jyWB+bOWXAIyRyNxpSR6vok Gq+Gv7ZMsWr3
f2ErbyGHzbuGVS3muE3Ksm07SeScEjmgD0rU9Tg0q1S4nDsj3EFuBHgndLKs SnkjgM4J9s9e
lSXl/a6fAs11KI42ljhBwTl5HWNBx6syj2zzxXmP/CLapH9hj1LSP7X1WO60 2VNZ3xSfZ44f
s/nLvlYSjLRTvhVIPm56swFR/COsXV/cPcaQ5SdFn1OIpZpbXsyXVvMViCYe QMqThTcc4cBi
u5jQB7DuHqKpx6nBPdS29uHme3uPs9yVwBAxiEoLbiMjayD5d3Lj0YjhdH8M 31p43k1O4jvj
N9quZZLzfarDLC5fy49yp9ok2q0Y2OQgMeQSEQGn4s8JalfSa49jpyTT31xJ Os6uilkOlzWy
RsSQciU9OgEoIP39oB6luHqKNw9RXmN/4O1COa/GgWkGmyPdTQ2lxAyw+Tav p7KFBT5lj+1n
ftA+/wDPjPNa/gfQ20X7ey2l9ZW83lhYLr7InzLu3MI7VRGMhlG4ks20AgBV yAdvuHqKNw9R
VbdRupiLO4eoo3D1FVt1G6gCzuHqKNw9RVbdRuoAtAg9DRUUJzuqWkMKKKKA CiiigAooooAK
KKKACiiigDIWPb4bWeGKBrlbMNGZVyu4JxnHOM4rnXm8Vpu3Dwz8pwf3E3/x XtXTKdvhYH0s
s/8Ajlc9d3AH2gc/fH9a68Pa2yfqY1JNMbZX2urqdvHqEWhvbPKIpBbQyBxn OMFjjrXYfZLf
/nhH/wB8iuIgm36xbDPW8j/ma3fFnn/ZbDH27+z/ALX/AMTD7B5vneT5Um3b 5X73/W+TnZzj
Ofl3VGJtzKytp0HSk5K7Nr7Jb/8APCP/AL5FH2S3/wCeEf8A3yK891T+0/Il +zf8JHu/s/8A
4kO7zt32rfNj7R5fG3H2XH2r+HO/5vNqv4iuvEi6LNp1nb64dQiu9VleeBJN ojeG8a2UOPv5
3Q7Qm4Iyqp2ttB5zU9K+yW//ADwj/wC+RR9kt/8AnhH/AN8iuJ1aHWrbVr6D RDrL3KaZIlkZ
JC0KssJEeWkJicGQjliJw687oX+W54Fhvovt/nX19dWh8vyvtdnc2+1/m34+ 1SvMePL9EGBt
yxfAB1X2S3/54R/98ij7Jb/88I/++RU1FAEP2S3/AOeEf/fIo+yW/wDzwj/7 5FTUUAQ/ZLf/
AJ4R/wDfIo+yW/8Azwj/AO+RU1FAEP2S3/54R/8AfIo+yW//ADwj/wC+RU1F AEP2S3/54R/9
8ij7Jb/88I/++RU1FAEP2S3/AOeEf/fIo+yW/wDzwj/75FTUUAQ/ZLf/AJ4R /wDfIo+yW/8A
zwj/AO+RU1FAEP2S3/54R/8AfIo+yW//ADwj/wC+RU1FAFG9fTtPgWa6SOON pY4QfLzl5HWN
BwO7Mo9s88VY+yW//PCP/vkVk+LIJrnR7dIIpJXGp2DlUUsQq3cLMeOwUEk9 gCa4vV7XxJb+
Hr29s7jXJdRubvV4PLDyN5VuEu2gCIPu/OkBR8b/AJlUNtKrQB6V9kt/+eEf /fIrH1DXdB0v
UTY3YdJliWeRlspXjhjYsA8kioUjXKPyxAAUk8DNc7qdrqen6w9m1xrlxoP+ jT300bzPM7Mt
0HKNF86/vEtCUhwqg/dVWbMegahe6Trl5NqNhrNwbqyijsdtnLI0kaXV4Yke QjCP5Tw5MzKR
uy5B3GgDptQ13QdL1E2N2HSZYlnkZbKV44Y2LAPJIqFI1yj8sQAFJPAzWx9k t/8AnhH/AN8i
vKb7Q9S023bRmbUpJz4XstOSCzs2ltL+ZBcK0UsvlExoSygtviIWTO4YyPXK AIfslv8A88I/
++RR9kt/+eEf/fIqaigCH7Jb/wDPCP8A75FH2S3/AOeEf/fIqaigCjfSaXpl nJeX8lpaWseN
807LGi5IAyx4GSQPxosH07U9Otr+zSOS1uokmhfy8bkYAqcEZGQR1q9WH4Lg mtfAvh63uIpI
Z4tMtkkjkUqyMIlBBB5BB4xQBrfZLf8A54R/98ij7Jb/APPCP/vkVNRQBD9k t/8AnhH/AN8i
j7Jb/wDPCP8A75FTUUAQ/ZLf/nhH/wB8ij7Jb/8APCP/AL5FTUUAQ/ZLf/nh H/3yKx/EbGys
YHtVSJ3mCFhGp42se4PoK3qwPFv/ACDrb/r5H/oD1rRSdRJky2Maw1aOKaWX VtRt7ayjhLvN
OIo0U7lUZYqAMlsfUitOTV9Gj06xvlubmeG/iE9sttYtNJJGQDv8tIy4UBly SMAsoOCQKo+F
/wDkNN/17v8A+hJWLBYX1lo3gi5mm1nTUtNCNpcPYWP2idJWW2IjaIxSED90 +TtGCoBIyAbx
KSnZChsdmZNNxp7Leq6ag+y0eNEdZj5bSDDBSMbEY56ce4qpqGr6Npeomxu7 m5SZYlnkZbFn
jhjYsA8kixlI1yj8sQAFJPAzWfrkHiLUdK8JyJFHa60tx5t1sXdHbyGynD8/ OFG5toYhwCVJ
D/dbn9dhubu91GO2g8QRC70KCzhsns3lS7lV7pTBcTlHKjLKDIJUyHLhyCHH OWej/wBnx/8A
PRv+/af/ABNH9nx/89G/79p/8TVyigCn/Z8f/PRv+/af/E0f2fH/AM9G/wC/ af8AxNXKKAKf
9nx/89G/79p/8TVC+Q200MSMMPNEpJjTOGLZ7ewrbrH1X/j9tf8Ar4g/m9XT 1lqNbkl8thpl
nJeX99FaWseN805ijRckAZYjAySB+NUJNX0aPTrG+W5uZ4b+IT2y21i00kkZ AO/y0jLhQGXJ
IwCyg4JAro680gsL6y0bwRczTazpqWmhG0uHsLH7ROkrLbERtEYpCB+6fJ2j BUAkZAMCOzMm
m409lvVdNQfZaPGiOsx8tpBhgpGNiMc9OPcVU1DV9G0vUTY3dzcpMsSzyMti zxwxsWAeSRYy
ka5R+WIACkngZrP1yDxFqOleE5EijtdaW48262Lujt5DZTh+fnCjc20MQ4BK kh/utz+uw3N3
e6jHbQeIIhd6FBZw2T2bypdyq90pguJyjlRllBkEqZDlw5BDgA9H/s+P/no3 /ftP/iaP7Pj/
AOejf9+0/wDiauUUAU/7Pj/56N/37T/4mj+z4/8Ano3/AH7T/wCJq5RQBT/s +P8A56N/37T/
AOJohtYluZI2VZAEVhuReMlvQD0FXKij/wCP6X/rmn82oAX7Jb/88I/++RR9 kt/+eEf/AHyK
mooAh+yW/wDzwj/75FH2S3/54R/98ipqKAIfslv/AM8I/wDvkUfZLf8A54R/ 98ipqKAIfslv
/wA8I/8AvkUfZLf/AJ4R/wDfIqaigCH7Jb/88I/++RR9kt/+eEf/AHyKmooA h+yW/wDzwj/7
5FH2S3/54R/98ipqKAIfslv/AM8I/wDvkUfZLf8A54R/98ipqKAGJFHFny0V c9doxmn0UUAF
FFFABRRRQAUUUUAFFFFABRRRQBlh0j8LB5Y3liWyy8cYyzDZyByOT2rjHv7V iSdG8X8/9M1/
+LrtEOPDCn0sx/6BWJd3JAuPm/jH/s1deH5baq/zsY1HZmbpdzp0usWaNpvi KBzKDHJeIojD
c4z8x+ld/wA+o/KuIjuC+rW6k8G8j/ma6DXtQvLRtMtLAwR3Wo3ZtkmnjMiR YiklLFAylsiI
rjcMbs84wYxNuZWXT1KpO6Nfn1H5Uc+o/KvKNO8T+ItKtLuzsbCC8+wS3t7f TbY4433X12CN
0k6eQv7lju/e4Dcj5fn2LbXNdi0p7exl+26nPqupNBEbUTMtrFdOhBL3ESna zRgHcMKyqEO0
sOc0O/59R+VHPqPyryjT/FNxquvJrFnY2NrdSafKYY2YDe80WlOodiVEkmZQ iglN21Fyn3h6
Rol8+o6PBcyyQSSNuVngVlUlWKnKP80bcfNG2SjZUklckAv8+o/Kjn1H5UtF ACc+o/Kjn1H5
UtFACc+o/Kjn1H5UtFACc+o/Kjn1H5UtFACc+o/Kjn1H5UtFACc+o/Kjn1H5 UtFACc+o/Kjn
1H5UtFACc+o/Kjn1H5UtFACc+o/Kjn1H5VgeMv8AkB23/YV03/0thrm9S8a6 9pujXmrPBprQ
C41O0tYlRy262W5dJHbdjBFtsKAd9wcZ2AA9D59R+VHPqPyrjJ/EWvQa3HoE o01NQunhaK4W
J3it1kS5fYyblMpX7Iy7wY8+YDtXbhsvTk0vxJ4k1jUfENnYmTT9PihN2w2e QYbq+jeaNyd0
OfK35DZXj5iVzQB6Pz6j8qOfUflXjmpw319b3WqapplpLqFv4Ssbi6vrlfLu 9PlxdM8kCeX/
AK0MC23dF8yKMjqPZKAE59R+VHPqPypaKAE59R+VHPqPypaKAE59R+VHPqPy rA8Z/N4fSI8x
zahYwSoekkb3cSOjDurKzKQeCCQeDUfhSCGyvPEdhaRRwWdrqapb28ShY4VN rbuQijhQWd2I
HdiepNAHR8+o/Kjn1H5UtFACc+o/Kjn1H5UtFACc+o/Kjn1H5UtFACc+o/Ks LxWUGnQeYrt+
/G3Y4Qg7W7kH+Vb1YHi3/kHW3/XyP/QHrWh/ERMtjI0AFtTYW6ypL5LHc86s MblyP9X9Pyrp
vKv/APnqP++x/wDEVymi2cWoX0trM86xvbtkwTvC4w6Hh0IYdOx56dKxbK1m 1LRvAFgulabq
0DeHWmez1KUpBuVbQLJjy5AXAdgPl6O3Izg3idKgobHovlX/APz1H/fY/wDi KPKv/wDnqP8A
vsf/ABFclrOrr/YvgnV9Ms7u6je4E9vBK7PKUawuCN5+dmIBy2N7HBwHbAOH 4ph+26jrGqfZ
tKv/ALN4atbj+1kO2S15um8+0XD5bjeo8xOVT5/4hzlnpPlX/wDz1H/fY/8A iKPKv/8AnqP+
+x/8RV6igCj5V/8A89R/32P/AIijyr//AJ6j/vsf/EVeooAo+Vf/APPUf99j /wCIqhfh1lhW
bc0pni2MJBwfnx/B/St2sfVf+P21/wCviD+b1pT+Icdy15V//wA9R/32P/iK PKv/APnqP++x
/wDEVNfWcWoWclrM86xvjJgneFxgg8OhDDp2PPTpXmllazalo3gCwXStN1aB vDrTPZ6lKUg3
KtoFkx5cgLgOwHy9HbkZwcxHovlX/wDz1H/fY/8AiKPKv/8AnqP++x/8RXJa zq6/2L4J1fTL
O7uo3uBPbwSuzylGsLgjefnZiActjexwcB2wDh+KYftuo6xqn2bSr/7N4atb j+1kO2S15um8
+0XD5bjeo8xOVT5/4gAek+Vf/wDPUf8AfY/+Io8q/wD+eo/77H/xFXqKAKPl X/8Az1H/AH2P
/iKPKv8A/nqP++x/8RV6igCj5V//AM9R/wB9j/4ipLVZVuZhK2X2LzkHjLY6 AVaqKP8A4/pf
+uafzamBNz6j8qOfUflS0UgE59R+VHPqPypaKAE59R+VHPqPypaKAE59R+VH PqPypaKAE59R
+VHPqPypaKAE59R+VHPqPypaKAE59R+VHPqPypaKADnvRRRQAUUUUAFFFFAB RRRQAUUUUAFF
FFAGWuw+GFEkqwxmyG6VyAqDZyTk9BXIS3VnKzk+IPDvzHJ/0sc9f9quvVVf wsFdQymywQRk
EbK5+4sdMQTbdMsRtcAf6Onv7e1deH5ba3+VjGpa+pV02K2uNXtRFrejTyCY SeVb3IZ325PA
yc8Zrtb6xtNTs5LO/s4bu1kxvhnjWRGwcjKng8gH8q42GCzj1a2MFnbROt3G FaOJVIGTnkCu
j8SeJbDwvp0d5qDYWWUQxJ5kce9yC2N8jKi/KrH5mHTAySAYxNuZW7dSqVra D18N6EiWSLoe
nBLBy9motY8W7FtxMfHyEsAcjHODUl9oWkanFJFf6RZXcckondJ7dJA0gXYH II5baAueuMDp
WBd/EnQLLR9O1aWT/Qb3zf3v2iAeX5bbZODIDLtOR+5EmcfLnK7pLj4gaba2 95dTWOpJa2z3
cXntCoWWa3EjSRplssSsLsGxs4wWDZUc5oba6FpEcTxJpFksbxNAyLboA0ZV UKEY+6VjjXHT
CKOgGLkEMVrbx29vAkMESBI441CqigYAAHAAAAxWAfGVsHNuNN1L7e7oLeya NEluEdZGR13O
FQFYZjtkKMPLIKglQa9p4zF1qWpgWcgsLHTFu5GZo0aKZZbiOWJ2aQLkGAgE fJ8rEvgqSAdX
k+hoyfQ1wEvxItb2Iy2KzmxTT9QmvJbVoJZrV4FhYFWDtE/yzdi/zMgOMOBs X3jqw0+K7uZ7
K++wwfaVS7VYyk8sCyNLEg37wwEMvLKqnYcNyuQDp8n0NGT6GszStch1W4uL cWt3azwokvl3
UYRnhcsI5AASVDFHG1trjadyrxmPUPECWOomyj0++vZIolnuTaIrfZ4mLBWK lgz58uT5Yw7f
IeMlcgGvk+hoyfQ1zF946sNPiu7meyvvsMH2lUu1WMpPLAsjSxIN+8MBDLyy qp2HDcrmObxk
zatpVhb6bdpLc3qRSw3MapJ9nkhndJlBcbRugbKvhwFYFASoIB1eT6GjJ9DX EW3xW8N3aytA
08qr5bRiAxzvKjyxxBxHG7OuGlj+R1VznAUkEC4njJpfEFtYf2bdxotvdvfw tGsk9q8Qt3Xi
N2DhknHEe8kug4wwAB1eT6GjJ9DVDRtWTWtOS8jtp7dWwQk205BAZWV0ZkdS rAhkZhzjOQQN
CgBMn0NGT6GlooATJ9DRk+hpaKAEyfQ0ZPoaWigCKaGK4QJPAkqB1cK6hgGV gynnuGAIPYgG
q82ladPb/Z5tNtZIN8j+W8Kld0gcOcHjLB3BPfe2epqp4lvrjT9KgmtZPLkb ULKEnaDlJLqK
Nxz6qzD2zxzWXcfEDTbW3vLqax1JLW2e7i89oVCyzW4kaSNMtliVhdg2NnGC wbKgA37zStO1
FJ0vtNtbpJ0RJlnhVxIqMWQNnqAxJAPQkmq7+G9CkuLS4fQ9OeeyREtZGtYy 0CocoEOMqFPI
AxiqB8ZWwc2403Uvt7ugt7Jo0SW4R1kZHXc4VAVhmO2Qow8sgqCVBz7bUdQ8 S+I7sabrF3p0
FpZQOLVreF1+0efcxyrLlSzANAFPlyKDg7W5DUAdHd6FpF9qMOo3mkWVxfQb fJuZrdHkj2ks
u1iMjB5GOhNaGT6GvML/AMZ6jdY1G2vb6y3eH7TVLWyitVmtmml89itxMYj5 cfyIpYvEMbjk
YJHqFACZPoaMn0NLRQAmT6GjJ9DS0UARXEMV1by29xAk0EqFJI5FDK6kEEEH ggjjB9ajsrG0
0yzSzsLOG1tY87IbeNY0XJJOFGAMkk/jVDxPfXFhooktZPKmmu7W1EgUExia eOJmUHI3AOSM
gjIGQRwY/DtzdvLrFhd3Ul2dOvRbx3EqoskitBDLl9gVcgykDCjgDqckgG3k +hoyfQ0tFACZ
PoaMn0NLRQAmT6GjJ9DS0UAJk+hrC8VqG06DdIkeJwQXDEH5W4+UE/pW9WB4 t/5B1t/18j/0
B61ofxETLYyNAbydTaRJIpm8lhsRZc43LzynsPzrXu9P02+06HT7vQbK4sYN vk201sXjj2gq
u1THgYHAx0BrD0VLyS+lWwnggujbtsknhMqD50zlQyk8Z/iHrz0qqPEt9Po3 hBbrUdSt31LR
ze3Fzpun/aJ3lVYONgikCofOck7ByFAI6G8T/EFDY7GSbznieWxR3hcvEzI5 KNtK5X5ODtZh
n0YjuaoSaRpE17Fey+G9Oe7hcvFO1pl0beXyreXkHezNn1YnqTUGseIf7Lt/ DF3JqMElreXY
jnnto9yXKm1mdfLUFidzqm1VJY8KC2ecTxL4j1O01m98m81Kxe20eC8t7EWk ckBnZp8rdShH
Eafu0Ut5iKBuIbgsOcs7X7bN/wA+x/KT/wCIo+2zf8+x/KT/AOIq9RQBR+2z f8+x/KT/AOIo
+2zf8+x/KT/4ir1FAFH7bN/z7H8pP/iKoX8hllhkfbGyzxEIQ/zY34H3c8/S t2sfVf8Aj9tf
+viD+b1pT+Icdy19tm/59j+Un/xFULvT9NvtOh0+70GyuLGDb5NtNbF449oK rtUx4GBwMdAa
1b5LySzkWwnggujjZJPCZUHIzlQyk8Z/iHrz0rhB4lvp9G8ILdajqVu+paOb 24udN0/7RO8q
rBxsEUgVD5zknYOQoBHQ5iOxkm854nlsUd4XLxMyOSjbSuV+Tg7WYZ9GI7mq EmkaRNexXsvh
vTnu4XLxTtaZdG3l8q3l5B3szZ9WJ6k1BrHiH+y7fwxdyajBJa3l2I557aPc lyptZnXy1BYn
c6ptVSWPCgtnnE8S+I9TtNZvfJvNSsXttHgvLexFpHJAZ2afK3UoRxGn7tFL eYigbiG4LAA7
X7bN/wA+x/KT/wCIo+2zf8+x/KT/AOIq9RQBR+2zf8+x/KT/AOIo+2zf8+x/ KT/4ir1FAFH7
bN/z7H8pP/iKktZWluZnZNp2KNvPq3PIFWqij/4/pf8Armn82pgTZPoaMn0N LRSATJ9DRk+h
paKAEyfQ0ZPoaWigBMn0NGT6GlooATJ9DRk+hpaKAEyfQ0ZPoaWigBMn0NGT 6GlooAM+1FFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAZiK0nhlY4xmRrMBVz1JTiuZuFu5DKBY3 43Nn/Uj3966U
KX8K7BI8ZaywHjbay/J1B7H3rlJdCWLzP+Kg8QnYwH/ISfnr/hXXh0rau3yM aiTeo60tr1tW
tXayukUXKO7SR4CgZ966zVtLi1WKDN1Na3FtL51vcwFN8T7WQkB1ZTlHdfmU /eJGCARyVjaP
Y6xavHrGsTlbhYzHc3rSIwbIOVNdtfX9nplnJeX93BaWseN808gjRckAZY8D JIH41GJ+Ja30
HStbQ57UvBVvqNnPbnWtUha7tDZ30ySRO93GS5w/mRsFwZZceWEA3YAAVQsm oeC9M1HRjpc1
xdLB9ovLjcjqG3XKzrIOVxgC4kxxxhc5wc6suu6PD9h83VbGP+0MfYt1wg+0 5xjy+fnzuXpn
7w9aDrujrLNEdVsRJDE88qG4TMcaMUd2GeFVlZSTwCCDyK5zUpal4ZtNQ1Rt UF5dWt+EhWKe
AoTCY/OAZQ6spJW4lU7gRgjABGarjwXpiROqXF0skiKZZg67pJlna4SYgrtD rM0jgABDvIKl
QoXVfXdHjs7q8k1WxS1tJTBczNcIEhkBAKO2cK2SBg88iq6eKNHfUZrP7dAv lafHqXnNKgje
3cuPMVs8qNmS3QBl55oAyn8B2M8N+LvVdRuLi/S4jubqRoVdo5oY4XTCxhAM QxMCFzlOuCwM
l94H07UIru2nvr37DP8AaWS0VowlvLOsiyyodm8sRLNwzMo3nC8LizdeMdHj +zLbahYzfbLS
6ubS4a7RbaTyNu9TKM4xuySA2Ajk/drQfXdHjvLqzk1WxS6tIjPcwtcIHhjA BLuucquCDk8c
igClf2uoWmsy6ppFpaXU9zbx2863d80CosTSMhXbE5JJlfOSPurjvUb6HPqU q393dTaVfSxC
C8i026DpNEjOUXzHjDrgO/zJ5bDeeTtUjZtb+zvvP+x3cFx5ErQTeTIH8uRf vI2OjDIyDyKj
n1bTbW4lt7jULSGeK3N1JHJMqskIODIQTkIDxu6UAYV94H07UIru2nvr37DP 9pZLRWjCW8s6
yLLKh2byxEs3DMyjecLwuNC68O2V1riaw00yXkfkeWysuE8rzhwCD95biVGz ng5G1gGpg8U6
bPqmj2djdWl0mqJPJDcR3KlHWHAcIRne+5h8oxwrkn5cGxB4l0G6t4ri31vT ZoJbgWsckd0j
K8xGRGCDguRzt60AZ0Pg+0htYbNtU1GSztXgNpbNIgS2SGVJERQqAuMxIu6Q u2AcMCzE2G8L
6edWutSE90lxcvIZWjm2fI8MUTICMFR+4ibcCGDJwwBIN2HXdHuJbmKHVbGS S1lWC4RLhCYp
GbYqMAflYt8oB5J461HJ4l0GHS4dUl1vTU0+Z9kV210gidueFfOCflbgHsfS gB+j6XFo1m8C
3U1w0krzSSzFAWdjljtRVRcnk7VGTljlmYnQ3D1FVJNW02HVIdLl1C0TUJk3 xWjTKJXXnlUz
kj5W5A7H0qS1v7O+8/7HdwXHkStBN5Mgfy5F+8jY6MMjIPIoAn3D1FG4eopa KAE3D1FG4eop
aKAE3D1FG4eopaKAKWp6fBqtqlvO7qiXEFwChAO6KVZVHIPG5AD7Z6dax9Q8 F6ZqOjHS5ri6
WD7ReXG5HUNuuVnWQcrjAFxJjjjC5zg51dZ1P+yLGO58nzd93bW23dtx50yR bs4PTfnHfGOO
tB13R1lmiOq2IkhieeVDcJmONGKO7DPCqyspJ4BBB5FAFLUvDNpqGqNqgvLq 1vwkKxTwFCYT
H5wDKHVlJK3EqncCMEYAIzVOLwVb21009rrWqW3nRCK7WGSJftX72WVmZvL3 IzPNKSYymN3y
7cDGy+u6PHZ3V5JqtilraSmC5ma4QJDICAUds4VskDB55FZc3iO+m1l7XRtO tNStIrKC+edb
7Y0iStKFEQ2FHOIiQWdAdw5A5oAS/wDBtje3EpS9urOzmso9PuLC1EKwTW6G TEZyhZBiR1+R
lOOmCM10m4eorkL3xu8fn3mnWEF5pFrpUOrz3LXLRSNBJ5pHlxmM7m2wk4Zk 5IBxya7CgBNw
9RRuHqKWigBNw9RRuHqKWigClqmnwarYPaTu6DekiSRkBo5EcOjjIIyrKrYI IOMEEZFR6Tpc
WkxXH+lTXVxcy+dcXNwU3yvtVASEVVGERV+VR93JyckrrWp/2RphuhD50jSx W8UZbaGklkWN
NzYOF3OuSASBkgE8GPRdVm1IXsN3bR295Y3H2e4SKUyx7jGkgKOVUsNsiZyo 5yOQASAae4eo
o3D1FLRQAm4eoo3D1FLRQAm4eoo3D1FLRQAm4eorD8UxyTafbiKN5Ss4JEal iBtYZwK3a5/x
eobTbYMAR9pHB/3HrWh/ERMtjN8PRzW2qtLPbXMaeQy7mgcc7l9vY/lVkeH7 ODTtJtrHUNTs
ptLtPscF1DErSGHCBlYPGyHJiQk7QcrwQCQcnRyLe9llj01751t2It4BGHf5 0HG9lXgEnkjj
P0q/Brrajp2gvpuiWUl9q2n/ANoCG5n8qOKMCLcN6xsS2ZkAG0AgMcjABvE/ xNRQ2L8uiaNL
YaVYNby/YdM4htmiZ0ZPIkg2PuB3Lskbr1wMnrnPufCtncyzeZq+tGC4tFsr qBlVxcW6tKRG
7tEZOkrpuDByMEsW+atW5u4LaXRI30pUfU7gwMkmwNAfIll527gSPK28HHOQ TjnH1XxJHZ3F
5LZaTp97pdjpsWqXF0tztZoXMv8AqlEbK52wkjLqDkcjrXOWdX9ri9Jf+/L/ AOFH2uL0l/78
v/hS/Y7X/n2h/wC+BR9jtf8An2h/74FACfa4vSX/AL8v/hR9ri9Jf+/L/wCF L9jtf+faH/vg
UfY7X/n2h/74FACfa4vSX/vy/wDhWbqJaa4gkjjlZUnhLfu24AL5OMdq0/sd r/z7Q/8AfArJ
1OGJLq2RY0VGuIMqFAB5etKfxDjuav2uL0l/78v/AIVz48P2cGnaTbWOoanZ TaXafY4LqGJW
kMOEDKweNkOTEhJ2g5XggEg7N9HFaWck8OlG8kXGIIFjDvkgcF2VeOvJHT14 rn4NdbUdO0F9
N0SykvtW0/8AtAQ3M/lRxRgRbhvWNiWzMgA2gEBjkYAOYi/LomjS2GlWDW8v 2HTOIbZomdGT
yJINj7gdy7JG69cDJ65z7nwrZ3Ms3mavrRguLRbK6gZVcXFurSkRu7RGTpK6 bgwcjBLFvmrV
ubuC2l0SN9KVH1O4MDJJsDQHyJZedu4EjytvBxzkE45x9V8SR2dxeS2Wk6fe 6XY6bFqlxdLc
7WaFzL/qlEbK52wkjLqDkcjrQB1f2uL0l/78v/hR9ri9Jf8Avy/+FL9jtf8A n2h/74FH2O1/
59of++BQAn2uL0l/78v/AIUfa4vSX/vy/wDhS/Y7X/n2h/74FH2O1/59of8A vgUAJ9ri9Jf+
/L/4UkEivdSuAwXYgyyleQWz1p32O1/59of++BTYIo4ryZY0VB5aHCjHdqYF ncPUUbh6ilop
AJuHqKNw9RS0UAJuHqKNw9RS0UAJuHqKNw9RS0UAJuHqKNw9RS0UAJuHqKNw 9RS0UAJuHqKN
w9RS0UAGQehooooAKKKKACiiigAooooAKKKKACiiigDLzt8K7vSxz/45XMXV 7ExnCzwHc4I/
er7+/vXUI0sfhhZINhmWyBj8zJXcE4yB2zXKOniVdxaDwtwcN/o0vXn3+tde HTa6fNmNRJsj
tbhZdZtAskbbruMgK4Pr6V0XizQp9btbA2xzNZXf2lYvtctr5uYpIyvnRZdO JN2QDnbtPDEj
G0+fWIdWtRe22gGAzCNzaQSLIpOcEEnHWu4wPf8AOoxKamr9ug6SSWh5xrHg XWrnw5JpVm0B
jntJ4/IOr3cCW00ryO7swDtdZ8xQfNwP3ZIAEhVbGreAry88Mz6daGxiup9Q 1O8lkJKh/tMV
1HGWIXJYCeIHPQIcE4Ge/wAD3/Oq9neW2oQNNayGSNZZYScEYeN2jcc+jKw/ DjjFc5qcxqHh
a8j8R2+r6TFYrHYxWqWtk7mFG8tLuMqSqNsULdKRhW+5jABzVe18I6xZR6hL b3kCXGoRbpgk
rp5bfa5rholkC7trrcyR+aArJtDhSThe3wPf86MD3/OgDzQeANZe01pi1pFP qNvfWqxSahPd
eWs9vbormaRN7EPbD5SOFfg/KFNzWPBesalpN3o8b2KWqy6hdW1y0z75JLqO 4UI8ezCKpuj8
wZifLHyjd8vf4Hv+dGB7/nQBzEv2Xwz4hmvGt51sbjT7aztobDT55/L8h5iQ VijYIuJkC9M4
PHFU9T0KXxQNR1C1eSKC8t7BYUnWa0lL2tzLKVbKq8QbcqhwMjJYA4GezwPf 86MD3/OgDgE8
A3VxFerK8Fn9v0+/tZ8Xc966POtsisZJiGkwsBJ+5j5VAOCxsaZ4QvodasdU migt5IbtXlU6
pc3ztGsFzGMSTAfxXHCBQBhjuYkAdnDNBcoXgmSVA7IWjfcAysVYcdwwII7E Y7VJge/50Aea
Wvw1uF0620+6itJorRLa2D3F/c3QuYUuIJJP3Un7uAMsH+rUOCSo3KF+bcfw 9rFj4qvdfsEs
bmSaWUJbT3Dwjy5IbRSxcRvhg1qfl2kEPncCMHr8D3/OjA9/zoA4SPwLcQ62 suy0ktHuLW6Y
xXdzbxQtAkShEs0by2GYFKsz/LuGQwQBtzwxo15pP2oXaWKKdkUC2oJ2xrkg AsAUjyzFYcuI
9zAOVIVd/A9/zowPf86AFopMD3/OjA9/zoAWikwPf86MD3/OgBaKTA9/zowP f86AMzX9Nm1X
ToreBo1dL20uCXJA2xXEcrDgHnahA98dOtcnq3gK8vPDM+nWhsYrqfUNTvJZ CSof7TFdRxli
FyWAniBz0CHBOBnt728ttPgWa6kMcbSxwg4Jy8jiNBx6s6j2zzwKsYHv+dAH Iah4WvI/Edvq
+kxWKx2MVqlrZO5hRvLS7jKkqjbFC3SkYVvuYwAc1X0vw94k0TVLq5s00qT+ 0Iv3zzXEn+iy
Nc3M7bUEf75V+0gDLRltn8OeO3wPf86x9R8TaTpeomxvJrhJliWeRktZnjhj YsA8kiqUjXKP
yxAAUk4AzQBymofD6b7RHBYWmmzQR6PbaZaajeSn7Xp7RGUCeICIguBIjDDR /MnUcEeiVjaj
4m0nS9RNjeTXCTLEs8jJazPHDGxYB5JFUpGuUfliAApJwBmtjA9/zoAWikwP f86MD3/OgBaK
TA9/zowPf86AMzxBps2q6T5Fu0YnjuLe6jEhIV2hmSUISASoYpt3YOM5wcYM eg6feWjand34
gjutRuxcvDBIZEixFHEFDlVLZEQbO0Y3Y5xk3768ttOs5Lq7kMcKYBIBYkk4 CqoyWYkgBQCS
SAATio9N1K01a3aa0eQhHKSJLG8UkbYzh0cBlOCCAQMhlI4INAF2ikwPf86M D3/OgBaKTA9/
zowPf86AFopMD3/OjA9/zoAWsDxb/wAg62/6+R/6A9b2B7/nWF4rYpp0G0Id 04B3orj7rHow
IrWh/ERMtjK8L/8AIab/AK93/wDQkqrL4Jm/sbwvFcaZo2sT6Rpv2GS1v2Ig LFYcyqxjc5Bh
wBsGQ55GMFNNu7O2uJptTurOztI4SzzyxwxKp3KoyxUAZLY+uK15dU0OPTrG +We4mhv4hPbL
bWLTSSRkA7/LSMuFAZckgAFlBwSBV4n+JqKGxDqnhCbVdD8PaVd38lwNPcfa 7p2Iknxaywls
HcGJZ1JV8qw3BtwJBy9Z8IaxrGqz3lzZaHLdT6fHZx6gZHWawkSSY/aIFMbE NiRHC+YpDJje
cB66UnS8WDLdo6ai+y0eNEdZiY2kGGCkY2Ixz04+lVNQ1TQ9L1E2N3PcJMsS zyMlizxwxsWA
eSRYyka5R+WIACknAGa5yzpaKo/2XD/eP/fuP/4mj+y4f7x/79x//E0AXqKo /wBlw/3j/wB+
4/8A4mj+y4f7x/79x/8AxNAF6sfVf+P21/6+IP5vVr+y4f7x/wC/cf8A8TWb qsf2RPLj2kF0
OWiQ9pPbHatKXxIcdzoK4SXwTN/Y3heK40zRtYn0jTfsMlrfsRAWKw5lVjG5 yDDgDYMhzyMY
O+62Vro6ahezeWnlozFYUJLNgBVUKSzEkAKMkkgAE4qk2taCLdJRNdu7uyfZ o9Nd7hSoBO6A
ReYoAdDkqBh0P8S5hqzsIbqnhCbVdD8PaVd38lwNPcfa7p2IknxaywlsHcGJ Z1JV8qw3BtwJ
By9Z8IaxrGqz3lzZaHLdT6fHZx6gZHWawkSSY/aIFMbENiRHC+YpDJjecB66 UnS8WDLdo6ai
+y0eNEdZiY2kGGCkY2Ixz04+lVNQ1TQ9L1E2N3PcJMsSzyMlizxwxsWAeSRY yka5R+WIACkn
AGaQHS0VR/suH+8f+/cf/wATR/ZcP94/9+4//iaAL1FUf7Lh/vH/AL9x/wDx NH9lw/3j/wB+
4/8A4mgC9UUf/H9L/wBc0/m1Vv7Lh/vH/v3H/wDE1JawLBczRqeNit90L1Le gFMC5RSYHv8A
nRge/wCdIBaKTA9/zowPf86AFopMD3/OjA9/zoAWikwPf86MD3/OgBaKTA9/ zowPf86AFopM
D3/OjA9/zoAWikwPf86MD3/OgBaKMYooAKKKKACiiigAooooAKKKKACiiigD MU7fCwPpZZ/8
crnru4A+0Dn74/rVybWltdHFu9m06LaKGVHwzgxgkD35x1rmH1JmJJ0DxTz/ ALQrvoUKnLe3
4r/M5pzjJ2TNKCbfrFsM9byP+ZrV8dJqcmk2i6fPPBCbsfbZIIZpXWHy3xhY GWU/vPK/1bA9
zldwrmrPU7ePULZ5dG12ErKCj3bjyw3bP8q67/hJD/z6j/v5/wDWpV8PVlJW j+K/zCFWEFaT
/M5a3TU41t11efxHOotF/sySxhmidpvNm/1ihmA+T7Nj7WxHUvg+aKy9a/4S Cy0e4FlDqVnc
W9xqV1ZNBaXc5uZmu52VCkLqigARMGmV0YS8DCtnvf8AhJD/AM+o/wC/n/1q P+EkP/PqP+/n
/wBasfqtXt+RX1ml3MK4GpG98RIsniBQyE+aiMyoC4ACpkBgEDEG2ZZCjMrg TqjN1HhwzN4f
s2nju45ChOy7cvIoycAsQGIxjBcCQjG8B91VP+EkP/PqP+/n/wBase+t/Dup 3kl5f+FdJu7q
TG+a4to5HbAwMsVycAAfhR9Vq9vyD6zS7mdaw+JP+EovpZb7VfO8273W9vZy bfs+JPI2SzS/
ZN2PII2Jv3cPx5pqxo91qenS6ddyW+uXNiIru3ERSZzLMzQGIhJf3qK2ybDT nEZZl8zYUZuh
/wCEkP8Az6j/AL+f/Wo/4SQ/8+o/7+f/AFqPqtXt+QfWaXc4LwvPqkxiSWXx A/iCG40xGWZr
owJD9mtGuRJu/cB9rTkh/n3EEfMVo0+z8UTWYjvNQ1mS4mezTU4ora7g2SG6 g83ZM0xGAnng
m2VY9uScARiu5j12KF5nisI0eZ98rKQC7bQoLccnaqjJ7KBUn/CSH/n1H/fz /wCtR9Vq9vyD
6zS7nHXFlrGmwTWVm99Ddapd6xZRoJ3VUuLhzPbzgk7RGkMbMTHkqzMApcuK jhn1m5S/fw9L
rMuuC91VJWuGna1EatcrAE879xkSC2GE5ABB+XfXW/2raf2j/aP9lW/27yvI +04HmeXnds3Y
ztzzjpmpIdditkKQWEcSF2cqhCgszFmPA6liST3JJ70fVavb8g+s0u5yVtDq sOh35+3a5d2f
mwlVFnfW53DeXUmSWS82t+6BaIbVO07XXzlr0iw83+zrbz/P87yk3/aNnmbs DO/y/k3Z67fl
z04rI/4SQ/8APqP+/n/1qP8AhJD/AM+o/wC/n/1qPqtXt+QfWaXc36KwP+Ek P/PqP+/n/wBa
j/hJD/z6j/v5/wDWo+q1e35B9ZpdzforA/4SQ/8APqP+/n/1qP8AhJD/AM+o /wC/n/1qPqtX
t+QfWaXc36KwP+EkP/PqP+/n/wBaj/hJD/z6j/v5/wDWo+q1e35B9Zpdzfor A/4SQ/8APqP+
/n/1qP8AhJD/AM+o/wC/n/1qPqtXt+QfWaXcf4sgmudHt0giklcanYOVRSxC rdwsx47BQST2
AJri9XtfElv4evb2zuNcl1G5u9Xg8sPI3lW4S7aAIg+786QFHxv+ZVDbSq12 P/CSH/n1H/fz
/wCtR/wkh/59R/38/wDrUfVavb8g+s0u5z2p2up6frD2bXGuXGg/6NPfTRvM 8zsy3Qco0Xzr
+8S0JSHCqD91VZsx6BqF7pOuXk2o2Gs3BurKKOx22csjSRpdXhiR5CMI/lPD kzMpG7LkHca6
X/hJD/z6j/v5/wDWo/4SQ/8APqP+/n/1qPqtXt+QfWaXc4K+0PUtNt20Zm1K Sc+F7LTkgs7N
pbS/mQXCtFLL5RMaEsoLb4iFkzuGMj1ysD/hJD/z6j/v5/8AWo/4SQ/8+o/7 +f8A1qPqtXt+
QfWaXc36KwP+EkP/AD6j/v5/9aj/AISQ/wDPqP8Av5/9aj6rV7fkH1ml3N+i sD/hJD/z6j/v
5/8AWo/4SQ/8+o/7+f8A1qPqtXt+QfWaXcf4tgmn0JTDFJKYL2zuXWNSzeXF cxSOQo5YhUY7
RknGACSBUfhgPLc69qHkTxW9/qCzW/nwtE7IttBESUcBl+eNx8wGcZHBBK/8 JIf+fUf9/P8A
61H/AAkh/wCfUf8Afz/61H1Wr2/IPrNLub9FYH/CSH/n1H/fz/61H/CSH/n1 H/fz/wCtR9Vq
9vyD6zS7m/RWB/wkh/59R/38/wDrUf8ACSH/AJ9R/wB/P/rUfVavb8g+s0u5 v0Vgf8JIf+fU
f9/P/rUf8JIf+fUf9/P/AK1H1Wr2/IPrNLub9YHi3/kHW3/XyP8A0B6P+EkP /PqP+/n/ANas
rX9bS6s4kltXwJQRsmCnO1vVT61pRw1VTTt+QpYilbcXwv8A8hpv+vd//Qkr FgsL6y0bwRcz
TazpqWmhG0uHsLH7ROkrLbERtEYpCB+6fJ2jBUAkZANjSdUWG+Z4IJ1k8sjL XCkYyP8Apn9K
2/7euv7jf9/V/wDjdXiMPVlO6X5ChiKaW5U1yDxFqOleE5EijtdaW48262Lu jt5DZTh+fnCj
c20MQ4BKkh/utz+uw3N3e6jHbQeIIhd6FBZw2T2bypdyq90pguJyjlRllBkE qZDlw5BDjq/7
euv7jf8Af1f/AI3R/b11/cb/AL+r/wDG6w+q1exX1ml3Ooorl/7euv7jf9/V /wDjdH9vXX9x
v+/q/wDxuj6rV7B9ZpdzqKK5f+3rr+43/f1f/jdH9vXX9xv+/q//ABuj6rV7 B9ZpdzqKwte6
j/ej/lJVT+3rr+43/f1f/jdUr/WvMTE8EjNuUgiZR2fH8HuaunhqqktPyHHE 0r7nSJdfYtAg
uTbzzrHDGWSBN77cDJC9WwMnAyxxgAnAPG2uqXumQ3SLFrJTU71pBqz6VLJP 5aQwoXeFIvkl
LAogaNE2x7yHxiS7F4plhiSJIZAiKFUecvQdP+WdP/4S2f8A54yf9/V/+N05 YOu23b8UN4in
3DXNMuTpXhO38MxyWyWtxiAyxOPIiFlOi796koeVUM6ttZhlW+6ef12G5u73 UY7aDxBELvQo
LOGyezeVLuVXulMFxOUcqMsoMglTIcuHIIcdB/wls/8Azxk/7+r/APG6P+Et n/54yf8Af1f/
AI3U/Uq/8v4oXt6fc7OiuM/4S2f/AJ4yf9/V/wDjdH/CWz/88ZP+/q//ABuj 6lX/AJfxQe3p
9zs6K5VPEFzJGrhHAYZGZV/+N07+3rr+43/f1f8A43U/Vavb8hfWKXc6ioo/ +P6X/rmn82rn
P7euv7jf9/V/+N0+DxA6TSF4CzlV5MgPHOOiij6rV7fkH1ml3OnorA/4SQ/8 +o/7+f8A1qP+
EkP/AD6j/v5/9aj6rV7fkH1ml3N+isD/AISQ/wDPqP8Av5/9aj/hJD/z6j/v 5/8AWo+q1e35
B9ZpdzforA/4SQ/8+o/7+f8A1qP+EkP/AD6j/v5/9aj6rV7fkH1ml3N+isD/ AISQ/wDPqP8A
v5/9aj/hJD/z6j/v5/8AWo+q1e35B9ZpdzforA/4SQ/8+o/7+f8A1qP+EkP/ AD6j/v5/9aj6
rV7fkH1ml3N+isD/AISQ/wDPqP8Av5/9aj/hJD/z6j/v5/8AWo+q1e35B9Zp dzforA/4SQ/8
+o/7+f8A1qP+EkP/AD6j/v5/9aj6rV7fkH1ml3N+iqGmakdQ83MXl7MfxZzn P+FX6xlFwfLL
c1jJSV0FFFFSUFFFFABRRRQAUUUUAFFFFAHD3BwIz6QRf+i1q1d3JAuPm/jH /s1On0qWbTVu
jPBFD9lRmeV9oQCMZJPQAYrDlu4pS5OueGPmOT/p/WvSVpxjbWyOJRkpS03Y /Urgu20nIN1F
/wChGtG1hjlaQyvtRE3HnGeQOuD6+hrJgtRqV5DBDrOgyyGUOI7e83u+3J4H fjNdKmhX8Th4
5Y1YdCrkH+Vac8YLlbsZypzcr2uVXtoI8f62QSPtTZwRwp6EfN972zj34dDZ wySpCS4bEbM2
RghivAGOPvdcnpVoaLqK+Zi4QeZ9/EjfN168c/8A16BouohFQXCbUO5QJGwD 6jj/ADmp9rG3
xC9lL+Upi2tzbh/MYSOjOi8kgAnjAXnp1yPpxzBbRLNOEdtq4LE+wBP9K000 W/RPL82MxE5M
e9trfUfgKc+i3RwY0tomU5DI75/XNP20FdcwvYzdnylGS3to0MwLyRfKAFOO Tu7lefu+nf2q
W4t4x5dud5kjjkw4PHys56Y749e9WBo+prK0ouVEhGC4kbJ/HHsKT+xdR8ny ftCeV/c8xsev
TFL2sP5v6/r7yvZy/lILizgRpd0zmUmRlzkk7Sw5AXn7vXI/TlqQQJdSR+XI wiEiuSQQ2Fbk
cfKeOOv6Vbk0jUZDLmaMLI5dkV22kk56Ypp0XUTszcIfL+5+8b5fpxx0FJVY 2s5A6cr6RMai
tb/hHrz+/D/30f8ACj/hHrz+/D/30f8ACtvb0+5l7Cp2Mmitb/hHrz+/D/30 f8KP+EevP78P
/fR/wo9vT7h7Cp2Mmitb/hHrz+/D/wB9H/Cj/hHrz+/D/wB9H/Cj29PuHsKn YyaK1v8AhHrz
+/D/AN9H/Cj/AIR68/vw/wDfR/wo9vT7h7Cp2Mmitb/hHrz+/D/30f8ACj/h Hrz+/D/30f8A
Cj29PuHsKnYyaK1v+EevP78P/fR/wo/4R68/vw/99H/Cj29PuHsKnYo2f+vb /rlJ/wCgNViO
ygkmSINJu2xuxyMfNtBA/wC+s5/DHepxoF6pyskQOCOGP+H+c0o0TUFbcsyB sAZDnPHTt7D9
KzlVg3dSLjSmlZxKa28DQmceYY1BypIBbBUZzjj7/Tnp1qWQy29tDHbu+JJC dg53ZVCAR364
96nTRNQjIKTIpUkja5GM9cce1OGj6mFdRcrtcksBI2Gz1zxzSdWF9ZXGqc7f CMiKIyxRSuI2
u3VUXlJB8uAxz0/A9ayK2V0XUY42jS4RUbOVEjAH8MUz/hHrz+/D/wB9H/Cn CrTjf3hTp1Jf
ZMmitb/hHrz+/D/30f8ACj/hHrz+/D/30f8ACtPb0+5HsKnYyaK1v+EevP78 P/fR/wAKP+Ee
vP78P/fR/wAKPb0+4ewqdijZ/wDHwT3WN2B9CFJB/Oi6YulvIxLO0ZLMeSfm Ycn6AVfXQL1G
DLJEGByCGOR+lD6FfyOXeWN2PUs5JP6VHtqfNfmK9lU5bWMiitb/AIR68/vw /wDfR/wo/wCE
evP78P8A30f8Kv29PuT7Cp2Mmitb/hHrz+/D/wB9H/Cj/hHrz+/D/wB9H/Cj 29PuHsKnYyaK
1v8AhHrz+/D/AN9H/Cj/AIR68/vw/wDfR/wo9vT7h7Cp2Mms/V/+PeL/AK6f 0NdN/wAI9ef3
4f8Avo/4Vl65ok8FpE0s8CDzQATvOTtbjhSaqnXp8y1E6NS2xi6Q5j1DcoUk Rt95Qw6jsa6t
2Ec1/J5skTfaMB4xlsHfx1HHH6Cue0vTZGvD5VxBK/ln5VWXOMjnlPp+dbq2 OpRyNIj7XbOW
Hmgn8dlLEVKbluXTp1EthsMJ869hldFIXazAYGfMXp0H8h9KntTsjhi3Sx7r ll8o9G+58r9P
p0Pfiq40y+UMAFAIwcCTkf8AfHsKeLPU1RkEhCEYKgy4Ixj+56ACsZTg/tFx hNfZM+irn9lX
n91P++ZP/iKP7KvP7qf98yf/ABFa+3p9zL2FTsU6Kuf2Vef3U/75k/8AiKP7 KvP7qf8AfMn/
AMRR7en3D2FTsU6o3/UfVf5NW1/ZV5/dT/vmT/4iql7pE+zdJLDHhlGGEno3 +xn1qoV6fNuN
UKl9jHgaVJQ8OfMUEggZIwOT7YHOe2M1qyyzgxTxXUscbQgyXR4kf53AB5zn jAXJyFBOAOEi
0C++SaGWPsyOqy/UEHZVhdK1tJHkW9cO+N7BpgWx0ydvNOdak3ujWNOa6EZn 81o1jXyree2u
JWgU/JnMpGR0JGFwf9kelVY4Vl0VGJJZJZmCL1Pyx8/QdT3/AAyRbOi6uY5I zckpI251/e4Y
+pGzk8Cmr4f1JNm2VRsbcuBKNp9R8nB4H6VKq0ltJf1cbhN9BbuTfZyxedLJ stIG8px8kfEf
zLyeecdB948+uHW7JourywrDJcl4k+6jeaVGOBgbKi/4Rq+/vR/98S//ABFX TrUoq3MiZU5t
7Dbb/j1i/wBwfyqWrMej3scSJhDtUDO2TnH/AACn/wBlXn91P++ZP/iKh16d 9zP2NTsU6Yv+
vf8A3V/mav8A9lXn91P++ZP/AIinwaJdyyyHdECFHB3D19VFL29PuL2FTsUa K1v+EevP78P/
AH0f8KP+EevP78P/AH0f8KPb0+4ewqdjJorW/wCEevP78P8A30f8KP8AhHrz +/D/AN9H/Cj2
9PuHsKnYyaK1v+EevP78P/fR/wAKP+EevP78P/fR/wAKPb0+4ewqdjJorW/4 R68/vw/99H/C
j/hHrz+/D/30f8KPb0+4ewqdjJorW/4R68/vw/8AfR/wo/4R68/vw/8AfR/w o9vT7h7Cp2Mm
itb/AIR68/vw/wDfR/wo/wCEevP78P8A30f8KPb0+4ewqdjJorW/4R68/vw/ 99H/AAo/4R68
/vw/99H/AAo9vT7h7Cp2LHhv/l6/4B/Wt6szSNPmsPO80od+3G056Z/xrTrz MRJSqNo9GhFx
ppMKKKKxNQooooAKKKKACiiigAooooAy1VX8LBXUMpssEEZBGyufuLHTEE23 TLEbXAH+jp7+
3tXQorSeGVjjGZGswFXPUlOK5m4W7kMoFjfjc2f9SPf3rqoTst7GNRO+iGww WcerWxgs7aJ1
u4wrRxKpAyc8gV0fiTxLYeF9OjvNQbCyyiGJPMjj3uQWxvkZUX5VY/Mw6YGS QDzVpbXratau
1ldIouUd2kjwFAz711mraXFqsUGbqa1uLaXzre5gKb4n2shIDqynKO6/Mp+8 SMEAicRLmktb
6DpJpamJH8QdKuLAX9pb3d1aR25uryaHyytnEHdC7nf84DQzf6rzM+WSMgqW k/4Tqwi8+a9s
r6ysIpbqFb6ZY2jle38wyBVR2k6QysNyjIT1IBfdeD7S7Rkl1TUcXFv9lv8A MiMb6Lc7FJCy
EoMyS/6ry8ByBgKoWnZ+B4pYLqHW76a9tZLu+mjsQyLDELh5hkMqLJu8qZ1O WIBZsdFI5zUX
S/iNpOsT29tZwTzXU13HbeTDPbzeWHSRxIzxysm3bDLkBi/y/d5XNfUviNax XF5YafB52p2l
3DF9mE8EpmQ3UUEm3ZKdjfvBgS7OWHHytjbg8OKt1aXd7rGo39xaXHnxvcPG AP3Use3ZGioB
iVzkAMTjJIUAZ6+A7FTCrarqLwWlv9nsIGaHbZKJIpEKERhmKNbxY8wvnb82 7JyAKPGtlbxX
TeRqV3HZvcSX0+yIfZIUnmj3sNylkBhl2hA77Y/mG4jdcsPF1nf6itqtnfRI 93PYx3M0QWOS
4hMm6Nfm3H5YnYNjZgY3B8qK0vgfTnW5jS+vYYb3zlvo0aMi7iklllMTkoSq gzzAFCrYbliQ
CLFxoAtLO2bTgLi6stQn1CCO5uPKR5JjNvDMsbEKBPJgBc/KoJ6mgCz4k8S2 HhfTo7zUGwss
ohiTzI497kFsb5GVF+VWPzMOmBkkA8/cfFfwxbQWkzXGY54jNIfOhXyUDtGT 80g83DRyD9z5
mdnGQybtd7HU9aiX+1orfS7i1lE1nc6be/aHR9roxxLCq/cZl5VvvE8EA0P4 WiMqyx6zqkUz
xCG7lSdN92gZ2AdipMeDJLjyjHt34GAqhQBkvjXTYpp7fyLtriB3jlhVF3pJ 5ywxIw3fIZmd
WjLYDLliQAar6r4/0/RLe3OpWV3Z3c7uq2l1LbwMAgUswkklWJh+8T7rsfmI xlXCzy+C9Mkm
nuPtF0txO7ySzK673k85ZonY7fnMLIFjDZCrlSCCakfwxu8mca9qi6lF5g/t DdC0jI+zcmxo
zEq/uo/uovKZzlnLAEFp46sL6cNb2V8+mmW3h/tLbGId86RPENpfzfm8+Ifc 4Lc4AJGfonjo
3mnadPdWV8+qX+n2cyafCsIR3lE7ZjYvxlYJH+dxhVQcOSpt2ng8x6tfzXOq XTafJewXUNj5
iurmGGBUeV2QylxJDu4kwdq5zlgZE8D6db+S1rfXtvNaxQw2kyNGWtki88IF DIQ2EuJI/nDZ
UA/eG6gBjfEDTVM4FjqTC1t/tN6ywrttI1kljlLtuwTG0Dgqu4tjKBwCRsWG uQ6hql5Yx2t2
n2VyhmeMBHZdu4cElSNykBwu8MGTcvzVnL4L0xbDVbT7RdEapZGzupC67m3P O7yD5cB2a4lY
8bRwAoAxWhZ6LBZ6zdamLu6lknTYI5ZAVjXcWIBxuYbixActsywTYpIIBq0U m4eoo3D1FAC0
Um4eoo3D1FAC0Um4eoo3D1FAGR4lvrjT9KgmtZPLkbULKEnaDlJLqKNxz6qz D2zxzWXcfEDT
bW3vLqax1JLW2e7i89oVCyzW4kaSNMtliVhdg2NnGCwbKjf1PT4NVtUt53dU S4guAUIB3RSr
Ko5B43IAfbPTrWPqHgvTNR0Y6XNcXSwfaLy43I6ht1ys6yDlcYAuJMccYXOc HIAp8ZWwc240
3Uvt7ugt7Jo0SW4R1kZHXc4VAVhmO2Qow8sgqCVBz7bUdQ8S+I7sabrF3p0F pZQOLVreF1+0
efcxyrLlSzANAFPlyKDg7W5DVr6l4ZtNQ1RtUF5dWt+EhWKeAoTCY/OAZQ6s pJW4lU7gRgjA
BGapxeCre2umntda1S286IRXawyRL9q/eyyszN5e5GZ5pSTGUxu+XbgYAOYv /Geo3WNRtr2+
st3h+01S1sorVZrZppfPYrcTGI+XH8iKWLxDG45GCR6hXNX/AINsb24lKXt1 Z2c1lHp9xYWo
hWCa3QyYjOULIMSOvyMpx0wRmuk3D1FAC0Um4eoo3D1FAC0Um4eoo3D1FAGR 4nvriw0USWsn
lTTXdraiQKCYxNPHEzKDkbgHJGQRkDII4Mfh25u3l1iwu7qS7OnXot47iVUW SRWghly+wKuQ
ZSBhRwB1OSb+qafBqtg9pO7oN6SJJGQGjkRw6OMgjKsqtggg4wQRkVHpOlxa TFcf6VNdXFzL
51xc3BTfK+1UBIRVUYRFX5VH3cnJySAaNFJuHqKNw9RQAtFJuHqKNw9RQAtF JuHqKNw9RQAt
YHi3/kHW3/XyP/QHre3D1FYfimOSbT7cRRvKVnBIjUsQNrDOBWtH+IiZbGDo qXkl9KthPBBd
G3bZJPCZUHzpnKhlJ4z/ABD156VVHiW+n0bwgt1qOpW76lo5vbi503T/ALRO 8qrBxsEUgVD5
zknYOQoBHQ6fh6Oa21VpZ7a5jTyGXc0Djncvt7H8qsjw/ZwadpNtY6hqdlNp dp9jguoYlaQw
4QMrB42Q5MSEnaDleCASDeJ1qaChsJrHiH+y7fwxdyajBJa3l2I557aPclyp tZnXy1BYnc6p
tVSWPCgtnnE8S+I9TtNZvfJvNSsXttHgvLexFpHJAZ2afK3UoRxGn7tFLeYi gbiG4LDpJdE0
aWw0qwa3l+w6ZxDbNEzoyeRJBsfcDuXZI3XrgZPXOfc+FbO5lm8zV9aMFxaL ZXUDKri4t1aU
iN3aIydJXTcGDkYJYt81c5Z19FQfa4vSX/vy/wDhR9ri9Jf+/L/4UAT0VB9r i9Jf+/L/AOFH
2uL0l/78v/hQBPWFr3Uf70f8pK1vtcXpL/35f/CsnWA1wN0UUrAMmcRtngSZ 4x7itKXxocdy
4kNxPoEEVrdfZZnhjAmEYcoMDcVB43YzgkEA4JDAYPM2l/e3elXss/iS+tLG yuzElybKNb6c
NHEVV42i+Vt8jqEEIdx5RXrmTodqXGiRWjy3ltIIkHmwIyvGy4IIOCDgjoQV OCCCCQcZ/C8B
nhuo9c1qK+SWSeS6EETNNIyJHvZGhKBljjCAoqkKW67mzMviYnuSahr99pOn +FLnWGjsp7u4
WLUYYl3gubSZzEgG4k+aqhQpJY4AznnH8S+I9TtNZvfJvNSsXttHgvLexFpH JAZ2afK3UoRx
Gn7tFLeYigbiG4LDqL3TbHUodPi1Brm7Fk5c+db5FwTDJC3mKECkFZHJAAGf bisu58K2dzLN
5mr60YLi0WyuoGVXFxbq0pEbu0Rk6Sum4MHIwSxb5qkDr6Kg+1xekv8A35f/ AAo+1xekv/fl
/wDCgCeioPtcXpL/AN+X/wAKPtcXpL/35f8AwoAnqKP/AI/pf+uafzam/a4v SX/vy/8AhSQS
K91K4DBdiDLKV5BbPWgC1RSbh6ijcPUUALRSbh6ijcPUUALRSbh6ijcPUUAL RSbh6ijcPUUA
LRSbh6ijcPUUALRSbh6ijcPUUALRSbh6ijcPUUALRRkHoaKACiiigAooooAK KKKACiiigAoo
ooAywpfwrsEjxlrLAeNtrL8nUHsfeuUl0JYvM/4qDxCdjAf8hJ+ev+FdXnb4 V3eljn/xyuYu
r2JjOFngO5wR+9X39/euzDSkl7rMKrsxljaPY6xavHrGsTlbhYzHc3rSIwbI OVNdtfX9npln
JeX93BaWseN808gjRckAZY8DJIH41wtrcLLrNoFkjbddxkBXB9fSui8WaFPr drYG2OZrK7+0
rF9rltfNzFJGV86LLpxJuyAc7dp4YkRim3NX7FUXeJof27o//QVsf+PT7d/x 8J/x7/8APbr/
AKv/AGunvVMeKdNn1TR7OxurS6TVEnkhuI7lSjrDgOEIzvfcw+UY4VyT8uDz Y8A3X9n38AeC
L7RFZuscd3OT5sN5NdOpmYmT5jKq+aPmzuYIvC0J4BuriK9WV4LP7fp9/az4 u5710edbZFYy
TENJhYCT9zHyqAcFjzGp1kHiXQbq3iuLfW9NmgluBaxyR3SMrzEZEYIOC5HO 3rUkOu6PcS3M
UOq2MklrKsFwiXCExSM2xUYA/Kxb5QDyTx1rl9M8IX0OtWOqTRQW8kN2ryqd Uub52jWC5jGJ
JgP4rjhAoAwx3MSAMu1+GtwunW2n3UVpNFaJbWwe4v7m6FzClxBJJ+6k/dwB lg/1ahwSVG5Q
vzAHcSeJdBh0uHVJdb01NPmfZFdtdIInbnhXzgn5W4B7H0qxJq2mw6pDpcuo WiahMm+K0aZR
K688qmckfK3IHY+lc2/h7WLHxVe6/YJY3Mk0soS2nuHhHlyQ2ili4jfDBrU/ LtIIfO4EYOe/
gyaw1N7ySKCWxEtteSfZri6iSE28cShI7GIlJOYAVyxI3AbX2AMAd5PPDa28 txcSxwwRIXkk
kYKqKBkkk8AAc5rH/wCEp01720WC6tJtPuLK6vDqCXKmJFgeJW+YcY/eHJzx sP4Z+rT23jLS
Z9Ksk1KGdXhulN1Y3dkreVMkmwSsilCxUDcuWXJYA7cVl2/gG6Oo21+7wWk0 Xnzbftc99icm
18syNMczKBbHOdm35NuGQSAA7STVtNh1SHS5dQtE1CZN8Vo0yiV155VM5I+V uQOx9Kjl13R4
LNryXVbGO1WKOdpnuECCOQkRuWzjaxBAPQ44rk7rwtd/23caxeQRvBNcW+o3 CxahduIHhSLK
JbRgLcHMIKucHLD5G2BWr6V4U1IeH47i3Ea3kSRWtgtxut5IrW3My27l8OUn Kyl3zGVIJiaM
AtQB6JRVewtvsenW1rtgXyYkjxbxeVGMAD5Eydq8cLk4HGTVigAooooAKKKK ACiiigAooooA
z9Z1P+yLGO58nzd93bW23dtx50yRbs4PTfnHfGOOtB13R1lmiOq2IkhieeVD cJmONGKO7DPC
qyspJ4BBB5FR6/ps2q6dFbwNGrpe2lwS5IG2K4jlYcA87UIHvjp1rk9W8BXl 54Zn060NjFdT
6hqd5LISVD/aYrqOMsQuSwE8QOegQ4JwMgHYPrujx2d1eSarYpa2kpguZmuE CQyAgFHbOFbJ
AweeRWXN4jvptZe10bTrTUrSKygvnnW+2NIkrShRENhRziIkFnQHcOQOap6h 4WvI/Edvq+kx
WKx2MVqlrZO5hRvLS7jKkqjbFC3SkYVvuYwAc1X0vw94k0TVLq5s00qT+0Iv 3zzXEn+iyNc3
M7bUEf75V+0gDLRltn8OeACxe+N3j8+806wgvNItdKh1ee5a5aKRoJPNI8uM xnc22EnDMnJA
OOTXYV53qHw+m+0RwWFpps0Eej22mWmo3kp+16e0RlAniAiILgSIww0fzJ1H BHolABRRRQAU
UUUAZ+tan/ZGmG6EPnSNLFbxRltoaSWRY03Ng4Xc65IBIGSATwY9F1WbUhew 3dtHb3ljcfZ7
hIpTLHuMaSAo5VSw2yJnKjnI5ABJ4g02bVdJ8i3aMTx3FvdRiQkK7QzJKEJA JUMU27sHGc4O
MGPQdPvLRtTu78QR3Wo3YuXhgkMiRYijiChyqlsiINnaMbsc4yQDYooooAKK KKACiiigArn/
ABeobTbYMAR9pHB/3HroKwPFv/IOtv8Ar5H/AKA9a0P4iJlsc/o5Fveyyx6a 98627EW8AjDv
86DjeyrwCTyRxn6Vfg11tR07QX03RLKS+1bT/wC0BDcz+VHFGBFuG9Y2JbMy ADaAQGORgAs8
L/8AIab/AK93/wDQkqrL4Jm/sbwvFcaZo2sT6Rpv2GS1v2IgLFYcyqxjc5Bh wBsGQ55GMHTF
fxBQ2OhubuC2l0SN9KVH1O4MDJJsDQHyJZedu4EjytvBxzkE45x9V8SR2dxe S2Wk6fe6XY6b
FqlxdLc7WaFzL/qlEbK52wkjLqDkcjrU+qeEJtV0Pw9pV3fyXA09x9runYiS fFrLCWwdwYln
UlXyrDcG3AkHL1nwhrGsarPeXNloct1Pp8dnHqBkdZrCRJJj9ogUxsQ2JEcL 5ikMmN5wHrmL
O5+x2v8Az7Q/98Cj7Ha/8+0P/fAqaigCH7Ha/wDPtD/3wKPsdr/z7Q/98Cpq KAIfsdr/AM+0
P/fArF1uGKMBEjRVLRkgKAOkldBWFr3Uf70f8pK0pfGhx3Jli8rQoZbbToru 5MMYSMlUDMcD
LMRwozkkAnAOAxwDmQajqF4Li2tfDmntqFncGC7El5tt0PlxyDbJ5RdiVlT/ AJZgZV8kYXfs
p9s/sCA2HkG6EMZRZ87GwASpI5XIyN2Dtzna2Np5UeGtet7IWltYaMNMuLh5 rjSEvHhgiXZG
qxIwhO6JmWSR12JuZ8Hcu8PMviYPc2YtZ0+5tPDd3b6cpg1x1EfmKqtErW8k 4JAyCcR7cZ75
zxzn6r4kjs7i8lstJ0+90ux02LVLi6W52s0LmX/VKI2VzthJGXUHI5HWr3iL w7N4ntNHhuzH
AILgzXaxSlsZt5YyqErhxukXIddrKCGUglTiaz4Q1jWNVnvLmy0OW6n0+Ozj 1AyOs1hIkkx+
0QKY2IbEiOF8xSGTG84D1Ijufsdr/wA+0P8A3wKPsdr/AM+0P/fAqaigCH7H a/8APtD/AN8C
j7Ha/wDPtD/3wKmooAh+x2v/AD7Q/wDfApsEUcV5MsaKg8tDhRju1WKij/4/ pf8Armn82oAn
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAzEa
WPwwskGwzLZAx+ZkruCcZA7ZrlHTxKu4tB4W4OG/0aXrz7/WurU7fCwPpZZ/ 8crnru4A+0Dn
74/rXXh7W2T9TGpJpkWnz6xDq1qL220AwGYRubSCRZFJzggk4613GB7/AJ1w cE2/WLYZ63kf
8zW74x8/+w8w/biBKpdbPzcsoydrGH98qk4G6IFlJUlWQOpjE25lZW06DpSc ldm/ge/51XsL
y21PTra/s5DJa3USzQvgruRhlTg4I4PeuQtPtn9vD+0v+Ej+3ebb/YtmfL+z +VF5nneX/ou7
f9o3Z+fH+r/5ZVh6fpuvaR4Y8OwW7ayVn0eE6mjFy0QSS0DIigfunWBrlQIw sjbc/M6g1zmp
6nge/wCdZ8WtadPrEukx3Ja+i374trDG1YmbnGOBcRHr/F7HHEL9p88fbP8A hI/+EW82f7L5
X237Xu2W+zfs/wBJ27/tn3/l+728useysL6PxBDeeK7TXFkeKT7RNpsdyC1w bTTQ3zWn8JaO
YcfJlD3FAHr+B7/nVe9vLbT4FmupDHG0scIOCcvI4jQcerOo9s88CuAsv+Ek 8+z/ALV/tX/h
IfNsNnleZ9k+z7IPtW/y/wDR9277X9/5/u7f+WdZ8ltr93p9hFbrqpv/APQ3 1c30U8sKXy3l
qwaNXIUxri5Y+QQm0DJA2GgD1fA9/wA6MD3/ADrM0AzDS1guo7tbuBylwblz IXkPzFlfADod
2RtCgA7dqFSi6lACYHv+dGB7/nS0UAJge/50YHv+dLRQAmB7/nRge/50tFAC YHv+dGB7/nS0
UAJge/50YHv+dLRQAmB7/nRge/50tFAFa9vLbT4FmupDHG0scIOCcvI4jQce rOo9s88CrGB7
/nWJ4sgmudHt0giklcanYOVRSxCrdwsx47BQST2AJri9XtfElv4evb2zuNcl 1G5u9Xg8sPI3
lW4S7aAIg+786QFHxv8AmVQ20qtAHp+B7/nWPqPibSdL1E2N5NcJMsSzyMlr M8cMbFgHkkVS
ka5R+WIACknAGa5jU7XU9P1h7NrjXLjQf9Gnvpo3meZ2ZboOUaL51/eJaEpD hVB+6qs2Y9A1
C90nXLybUbDWbg3VlFHY7bOWRpI0urwxI8hGEfynhyZmUjdlyDuNAHV6j4m0 nS9RNjeTXCTL
Es8jJazPHDGxYB5JFUpGuUfliAApJwBmtjA9/wA68kvtD1LTbdtGZtSknPhe y05ILOzaW0v5
kFwrRSy+UTGhLKC2+IhZM7hjI9coATA9/wA6MD3/ADpaKAEwPf8AOjA9/wA6 WigCtfXltp1n
JdXchjhTAJALEknAVVGSzEkAKASSQACcVHpupWmrW7TWjyEI5SRJY3ikjbGc OjgMpwQQCBkM
pHBBqh4tgmn0JTDFJKYL2zuXWNSzeXFcxSOQo5YhUY7RknGACSBUfhgPLc69 qHkTxW9/qCzW
/nwtE7IttBESUcBl+eNx8wGcZHBBIBv4Hv8AnRge/wCdLRQAmB7/AJ0YHv8A nS0UAJge/wCd
GB7/AJ0tFACYHv8AnWF4rYpp0G0Id04B3orj7rHowIrerA8W/wDIOtv+vkf+ gPWtD+IiZbGB
pt3Z21xNNqd1Z2dpHCWeeWOGJVO5VGWKgDJbH1xWvLqmhx6dY3yz3E0N/EJ7 ZbaxaaSSMgHf
5aRlwoDLkkAAsoOCQKp+F/8AkNN/17v/AOhJWLBYX1lo3gi5mm1nTUtNCNpc PYWP2idJWW2I
jaIxSED90+TtGCoBIyAbxOlTQUNjsSdLxYMt2jpqL7LR40R1mJjaQYYKRjYj HPTj6VU1DVND
0vUTY3c9wkyxLPIyWLPHDGxYB5JFjKRrlH5YgAKScAZqjrkHiLUdK8JyJFHa 60tx5t1sXdHb
yGynD8/OFG5toYhwCVJD/dbn9dhubu91GO2g8QRC70KCzhsns3lS7lV7pTBc TlHKjLKDIJUy
HLhyCHHPcs9F/suH+8f+/cf/AMTR/ZcP94/9+4//AImr1FFwKP8AZcP94/8A fuP/AOJo/suH
+8f+/cf/AMTV6ii4FH+y4f7x/wC/cf8A8TUElnH54tiFKMVJzGnpJ/s47Vq1 Sk/5Ccf/AAH/
ANBkppsCtewWGm2b3V1L5cKYHEKEkk4VVULlmJIAUAkkgAE4qol7oz6Nd6sb mSO0s0d7nzbT
y5IQq7m3xtGHU7SGAIyQVIyCKl8WwTT6EphiklMF7Z3LrGpZvLiuYpHIUcsQ qMdoyTjABJAr
Avbe5v8Awd4+uLezuyNUSd7ON7d45ZR9iii/1bAOCXjYAEAnAIyCCS4G9pk2 mav5otXuFkiw
XiubI28ig5w2ySNW2nDANjBKkA5U4v8A9lw/3j/37j/+JrC8KJNJrOp3rS6l dwSW9vEl7qVo
bad2Vpi0fl+XGNih1IbZyZGG5tuF6ulcCj/ZcP8AeP8A37j/APiaP7Lh/vH/ AL9x/wDxNXqK
LgUf7Lh/vH/v3H/8TR/ZcP8AeP8A37j/APiavUUXAo/2XD/eP/fuP/4mpLWB YLmaNTxsVvuh
epb0Aq1UUf8Ax/S/9c0/m1MCbA9/zowPf86WikAmB7/nRge/50tFACYHv+dG B7/nS0UAJge/
50YHv+dLRQAmB7/nRge/50tFACYHv+dGB7/nS0UAJge/50YHv+dLRQAYxRRR QAUUUUAFFFFA
BRRRQAUUUUAFFFFAFK1t/M0aC2mUgNbrG6kEEfLgj2rPbwtbOSTe33P/AE3N btFUpNbMTSe5
hweF7SC5inFxdO0Th1Ekm4ZHStvn1H5UtFJyb3BJLYTn1H5Uc+o/KlopDE59 R+VHPqPypaKA
E59R+VHPqPypaKAE59R+VHPqPypaKAE59R+VHPqPypaKAE59R+VHPqPypaKA E59R+VHPqPyp
aKAE59R+VHPqPypaKAE59R+VHPqPypaKAE59R+VHPqPypaKAE59R+VHPqPyp aKAE59R+VHPq
PypaKAE59R+VHPqPypaKAE59R+VHPqPypaKAE59R+VHPqPypaKAE59R+VHPq PypaKAE59R+V
HPqPypaKAE59R+VHPqPypaKAE59R+VHPqPypaKAE59R+VUtT0yPVLdIZZHQI +8GPGc4I7g+t
XqKabTugMey8PQ2FwZ4Lu53lCnzbDwSD/d9hWh9nl/5+5f8AvlP8KsUU5Scn diSsV/s8v/P3
L/3yn+FH2eX/AJ+5f++U/wAKsUVIyv8AZ5f+fuX/AL5T/Cj7PL/z9y/98p/h ViigCv8AZ5f+
fuX/AL5T/Cj7PL/z9y/98p/hViigCv8AZ5f+fuX/AL5T/CmGyJfebiQvkYbC 8YDD0x/Eat0U
AV/s8v8Az9y/98p/hR9nl/5+5f8AvlP8KsUUAV/s8v8Az9y/98p/hR9nl/5+ 5f8AvlP8KsUU
AV/s8v8Az9y/98p/hR9nl/5+5f8AvlP8KsUUAV/s8v8Az9y/98p/hR9nl/5+ 5f8AvlP8KsUU
AV/s8v8Az9y/98p/hTooGjd3MrOzADLAcAZx0x61NRQAnPqPyo59R+VLRQAn PqPyo59R+VLR
QAnPqPyo59R+VLRQAnPqPyo59R+VLRQAnPqPyo59R+VLRQAnPqPyo59R+VLR QAnPqPyo59R+
VLRQAc96KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooA//9k=
--------------070400060800000902050707--
Re: [Teneo] Error running Teneo (1.x) Dynamic.java example [ with db picture] [message #129004 is a reply to message #128990] Sat, 23 August 2008 21:24 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Hi Mdu,
Take a look at the ecore model itself, there are about 20 classes in there. As a default Teneo uses
single-table inheritance mapping (check the jpa spec and articles on orm about that). This means
that an inheritance tree is stored in one table. In this case many classes of the ecore package
inherit from the eobject type. Therefore the one eobject table.

gr. Martin

Mdu wrote:
> Martin,
> I have attached a snapshot of tables that were created when I added
> epackage with setPackages(). All these tables have 0 rows. How do I make
> sense of 'em?
>
> Mdu wrote:
>> Martin, Thanks. I'm still a little lost. Here's my understanding and
>> questions:
>>
>> Example: schoolPackage
>> 1. I understand how to dynamically create new EObject's based on
>> dynamically created epackage and assoc. classes and attributes.
>>
>> 2. How do I store/save an instance of schoolPackage?
>> Do I have to create an instance of schoolPackage (if this is possible)
>> and call .save() for hbds to save it into the database for later
>> retrieval?
>>
>> 3. Assuming I have schoolPackage instance stored in the database; to
>> read it back, do I call something like session.createQuery("from
>> EPackage where type='SchoolPackage'") - and of course this will give
>> me back an EPackage instance that I use to introspect the whole
>> package graph (classes, their attributes, etc.)
>>
>> -mdu
>>
>> Martin Taal wrote:
>>> Hi Mdu,
>>> Two additions, when reading the Epackage from the db, also do the
>>> following:
>>> - read the epackages first (before other objects refering to it).
>>> - after reading an epackage from the db you have to register it in
>>> the EPackage Registry using the epackage uri.
>>>
>>> gr. Martin
>>>
>>> Martin Taal wrote:
>>>> Hi Mdu,
>>>> Yes that is possible. Also pass the EcorePackage and the
>>>> XMLTypePackage to the setEPackages method. Then you can persist your
>>>> EPackage in the same as another object.
>>>>
>>>> gr. Martin
>>>>
>>>> Mdu wrote:
>>>>> Thanks Martin,
>>>>> That worked. Next question: I want to be able to store an ecore
>>>>> metamodel of dynamically created models (e.g. companyPackage or
>>>>> schoolPackage). For example, it'd be great if companyPackage
>>>>> definition was stored in the db together with relevant class
>>>>> definitions etc. I want to later on use this information to create
>>>>> dynamic forms etc. Does this make sense?
>>>>>
>>>>> Thnx again.
>>>>> Martin Taal wrote:
>>>>>> Hi Mdu,
>>>>>> You have to tell the datastore which EPackages to persist. In your
>>>>>> case the companyPackage. You can pass this EPackage to the
>>>>>> doQuickStart method and then set the companyPackage in the
>>>>>> datastore by doing something like hbds.setEPackages(new
>>>>>> EPackage[]{companyPackage});
>>>>>>
>>>>>> btw, support for Teneo is given on the EMF newsgroup, which I
>>>>>> added to this post.
>>>>>>
>>>>>> gr. Martin
>>>>>>
>>>>>> Mdu wrote:
>>>>>>> Mdu wrote:
>>>>>>>> Hi All,
>>>>>>>> I have modified Dynamic.java example to run it standalone (as
>>>>>>>> opposed to within Eclipse). I got rid of all references to
>>>>>>>> Library classes to that I can create a class from scratch.
>>>>>>>> Everything compiles. But when I run the example I get ff. error:
>>>>>>>>
>>>>>>>> Aug 22, 2008 10:44:29 PM
>>>>>>>> org.eclipse.emf.teneo.hibernate.HbHelper createRegisterDataStore
>>>>>>>> INFO: Creating emf data store and registering it under name: MySF
>>>>>>>> Aug 22, 2008 10:44:29 PM
>>>>>>>> org.eclipse.emf.teneo.hibernate.HbHelper createRegisterDataStore
>>>>>>>> INFO: Returning created emf data store, initialize this newly
>>>>>>>> created data store!
>>>>>>>> Aug 22, 2008 10:44:30 PM
>>>>>>>> org.eclipse.emf.teneo.classloader.ClassLoaderResolver
>>>>>>>> setClassLoaderStrategy
>>>>>>>> INFO: Class loader strategy set to:
>>>>>>>> org.eclipse.emf.teneo.classloader.ContextClassLoaderStrategy
>>>>>>>> Aug 22, 2008 10:44:30 PM
>>>>>>>> org.eclipse.emf.teneo.extension.DefaultExtensionManager
>>>>>>>> getExtension
>>>>>>>> WARNING: The extension: org.eclipse.emf.teneo.PersistenceOptions
>>>>>>>> is declared as a singleton but this getInstance call passed
>>>>>>>> initialization parameters so it is not cached,
>>>>>>>> org.eclipse.emf.teneo.PersistenceOptions
>>>>>>>> Aug 22, 2008 10:44:30 PM org.eclipse.emf.teneo.TeneoException
>>>>>>>> <init>
>>>>>>>> SEVERE: EPackages are not set
>>>>>>>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are
>>>>>>>> not set
>>>>>>>> at
>>>>>>>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>>>>>>>
>>>>>>>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>>>>>>>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>>>>>>> Exception in thread "main"
>>>>>>>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are
>>>>>>>> not set
>>>>>>>> at
>>>>>>>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>>>>>>>
>>>>>>>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>>>>>>>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>>>>>>>
>>>>>>>> Thanks in advance.
>>>>>>>
>>>>>>
>>>>>>
>>>>
>>>>
>>>
>>>
>


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: [Teneo] Error running Teneo (1.x) Dynamic.java example [ with attachments] [message #129017 is a reply to message #128977] Sat, 23 August 2008 21:29 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
hi Mdu,
See comments inline.

See also my post, 2 posts back which may have crossed your post.

gr. Martin

Mdu wrote:
> Martin, Thanks. I'm still a little lost. Here's my understanding and
> questions:
>
> Example: schoolPackage
> 1. I understand how to dynamically create new EObject's based on
> dynamically created epackage and assoc. classes and attributes.
>
> 2. How do I store/save an instance of schoolPackage?
> Do I have to create an instance of schoolPackage (if this is possible)
> and call .save() for hbds to save it into the database for later retrieval?
MT>> Yes, but there is only one instance for schoolpackage (at least there should be), the one you
created dynamically once and then persist and then read from the db. To store an epackage do this:
final SessionFactory sessionFactory = hbds.getSessionFactory();

// now persist them all

Session session = sessionFactory.openSession();
Transaction tx = session.getTransaction();
tx.begin();
session.save(schoolPackage);
tx.commit();


>
> 3. Assuming I have schoolPackage instance stored in the database; to
> read it back, do I call something like session.createQuery("from
> EPackage where type='SchoolPackage'") - and of course this will give me
> back an EPackage instance that I use to introspect the whole package
> graph (classes, their attributes, etc.)
MT>> Yes, although the where clause using type is not correct, you can use name='elv' (at least
according to the dynamic.java you attached in a previous post, or just do "from EPackage"

>
> -mdu
>
> Martin Taal wrote:
>> Hi Mdu,
>> Two additions, when reading the Epackage from the db, also do the
>> following:
>> - read the epackages first (before other objects refering to it).
>> - after reading an epackage from the db you have to register it in the
>> EPackage Registry using the epackage uri.
>>
>> gr. Martin
>>
>> Martin Taal wrote:
>>> Hi Mdu,
>>> Yes that is possible. Also pass the EcorePackage and the
>>> XMLTypePackage to the setEPackages method. Then you can persist your
>>> EPackage in the same as another object.
>>>
>>> gr. Martin
>>>
>>> Mdu wrote:
>>>> Thanks Martin,
>>>> That worked. Next question: I want to be able to store an ecore
>>>> metamodel of dynamically created models (e.g. companyPackage or
>>>> schoolPackage). For example, it'd be great if companyPackage
>>>> definition was stored in the db together with relevant class
>>>> definitions etc. I want to later on use this information to create
>>>> dynamic forms etc. Does this make sense?
>>>>
>>>> Thnx again.
>>>> Martin Taal wrote:
>>>>> Hi Mdu,
>>>>> You have to tell the datastore which EPackages to persist. In your
>>>>> case the companyPackage. You can pass this EPackage to the
>>>>> doQuickStart method and then set the companyPackage in the
>>>>> datastore by doing something like hbds.setEPackages(new
>>>>> EPackage[]{companyPackage});
>>>>>
>>>>> btw, support for Teneo is given on the EMF newsgroup, which I added
>>>>> to this post.
>>>>>
>>>>> gr. Martin
>>>>>
>>>>> Mdu wrote:
>>>>>> Mdu wrote:
>>>>>>> Hi All,
>>>>>>> I have modified Dynamic.java example to run it standalone (as
>>>>>>> opposed to within Eclipse). I got rid of all references to
>>>>>>> Library classes to that I can create a class from scratch.
>>>>>>> Everything compiles. But when I run the example I get ff. error:
>>>>>>>
>>>>>>> Aug 22, 2008 10:44:29 PM org.eclipse.emf.teneo.hibernate.HbHelper
>>>>>>> createRegisterDataStore
>>>>>>> INFO: Creating emf data store and registering it under name: MySF
>>>>>>> Aug 22, 2008 10:44:29 PM org.eclipse.emf.teneo.hibernate.HbHelper
>>>>>>> createRegisterDataStore
>>>>>>> INFO: Returning created emf data store, initialize this newly
>>>>>>> created data store!
>>>>>>> Aug 22, 2008 10:44:30 PM
>>>>>>> org.eclipse.emf.teneo.classloader.ClassLoaderResolver
>>>>>>> setClassLoaderStrategy
>>>>>>> INFO: Class loader strategy set to:
>>>>>>> org.eclipse.emf.teneo.classloader.ContextClassLoaderStrategy
>>>>>>> Aug 22, 2008 10:44:30 PM
>>>>>>> org.eclipse.emf.teneo.extension.DefaultExtensionManager getExtension
>>>>>>> WARNING: The extension: org.eclipse.emf.teneo.PersistenceOptions
>>>>>>> is declared as a singleton but this getInstance call passed
>>>>>>> initialization parameters so it is not cached,
>>>>>>> org.eclipse.emf.teneo.PersistenceOptions
>>>>>>> Aug 22, 2008 10:44:30 PM org.eclipse.emf.teneo.TeneoException <init>
>>>>>>> SEVERE: EPackages are not set
>>>>>>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are
>>>>>>> not set
>>>>>>> at
>>>>>>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>>>>>>
>>>>>>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>>>>>>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>>>>>> Exception in thread "main"
>>>>>>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are
>>>>>>> not set
>>>>>>> at
>>>>>>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>>>>>>
>>>>>>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>>>>>>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>>>>>>
>>>>>>> Thanks in advance.
>>>>>>
>>>>>
>>>>>
>>>
>>>
>>
>>


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: [Teneo] Error running Teneo (1.x) Dynamic.java example [ with attachments] [message #129030 is a reply to message #129017] Sat, 23 August 2008 23:05 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: mduduzi.keswa.isizwe.com

Duh! Yes, I missed your earlier comment. I got it now. I feel like have
to pay something for this ;-)

OK. I can save my packages. Now, what is the best way to introspect an
epackage in such a away that I can make calls like:

1. Get all classes in the package

2. For each class, get all attributes and their types

3. etc.

4. I then want to use all aforementioned metadata to automagically
create a web form.

5. Also, when I change an EObject, do a delta on what's changed between
modified and original version

Did I mention that this is a wishlist.

Is there an EMFT tool (e.g. query) that makes some of this easier?

Thanks again,
-Mdu

Martin Taal wrote:
> hi Mdu,
> See comments inline.
>
> See also my post, 2 posts back which may have crossed your post.
>
> gr. Martin
>
> Mdu wrote:
>> Martin, Thanks. I'm still a little lost. Here's my understanding and
>> questions:
>>
>> Example: schoolPackage
>> 1. I understand how to dynamically create new EObject's based on
>> dynamically created epackage and assoc. classes and attributes.
>>
>> 2. How do I store/save an instance of schoolPackage?
>> Do I have to create an instance of schoolPackage (if this is possible)
>> and call .save() for hbds to save it into the database for later
>> retrieval?
> MT>> Yes, but there is only one instance for schoolpackage (at least
> there should be), the one you created dynamically once and then persist
> and then read from the db. To store an epackage do this:
> final SessionFactory sessionFactory = hbds.getSessionFactory();
>
> // now persist them all
>
> Session session = sessionFactory.openSession();
> Transaction tx = session.getTransaction();
> tx.begin();
> session.save(schoolPackage);
> tx.commit();
>
>
>>
>> 3. Assuming I have schoolPackage instance stored in the database; to
>> read it back, do I call something like session.createQuery("from
>> EPackage where type='SchoolPackage'") - and of course this will give
>> me back an EPackage instance that I use to introspect the whole
>> package graph (classes, their attributes, etc.)
> MT>> Yes, although the where clause using type is not correct, you can
> use name='elv' (at least according to the dynamic.java you attached in a
> previous post, or just do "from EPackage"
>
>>
>> -mdu
>>
>> Martin Taal wrote:
>>> Hi Mdu,
>>> Two additions, when reading the Epackage from the db, also do the
>>> following:
>>> - read the epackages first (before other objects refering to it).
>>> - after reading an epackage from the db you have to register it in
>>> the EPackage Registry using the epackage uri.
>>>
>>> gr. Martin
>>>
>>> Martin Taal wrote:
>>>> Hi Mdu,
>>>> Yes that is possible. Also pass the EcorePackage and the
>>>> XMLTypePackage to the setEPackages method. Then you can persist your
>>>> EPackage in the same as another object.
>>>>
>>>> gr. Martin
>>>>
>>>> Mdu wrote:
>>>>> Thanks Martin,
>>>>> That worked. Next question: I want to be able to store an ecore
>>>>> metamodel of dynamically created models (e.g. companyPackage or
>>>>> schoolPackage). For example, it'd be great if companyPackage
>>>>> definition was stored in the db together with relevant class
>>>>> definitions etc. I want to later on use this information to create
>>>>> dynamic forms etc. Does this make sense?
>>>>>
>>>>> Thnx again.
>>>>> Martin Taal wrote:
>>>>>> Hi Mdu,
>>>>>> You have to tell the datastore which EPackages to persist. In your
>>>>>> case the companyPackage. You can pass this EPackage to the
>>>>>> doQuickStart method and then set the companyPackage in the
>>>>>> datastore by doing something like hbds.setEPackages(new
>>>>>> EPackage[]{companyPackage});
>>>>>>
>>>>>> btw, support for Teneo is given on the EMF newsgroup, which I
>>>>>> added to this post.
>>>>>>
>>>>>> gr. Martin
>>>>>>
>>>>>> Mdu wrote:
>>>>>>> Mdu wrote:
>>>>>>>> Hi All,
>>>>>>>> I have modified Dynamic.java example to run it standalone (as
>>>>>>>> opposed to within Eclipse). I got rid of all references to
>>>>>>>> Library classes to that I can create a class from scratch.
>>>>>>>> Everything compiles. But when I run the example I get ff. error:
>>>>>>>>
>>>>>>>> Aug 22, 2008 10:44:29 PM
>>>>>>>> org.eclipse.emf.teneo.hibernate.HbHelper createRegisterDataStore
>>>>>>>> INFO: Creating emf data store and registering it under name: MySF
>>>>>>>> Aug 22, 2008 10:44:29 PM
>>>>>>>> org.eclipse.emf.teneo.hibernate.HbHelper createRegisterDataStore
>>>>>>>> INFO: Returning created emf data store, initialize this newly
>>>>>>>> created data store!
>>>>>>>> Aug 22, 2008 10:44:30 PM
>>>>>>>> org.eclipse.emf.teneo.classloader.ClassLoaderResolver
>>>>>>>> setClassLoaderStrategy
>>>>>>>> INFO: Class loader strategy set to:
>>>>>>>> org.eclipse.emf.teneo.classloader.ContextClassLoaderStrategy
>>>>>>>> Aug 22, 2008 10:44:30 PM
>>>>>>>> org.eclipse.emf.teneo.extension.DefaultExtensionManager
>>>>>>>> getExtension
>>>>>>>> WARNING: The extension: org.eclipse.emf.teneo.PersistenceOptions
>>>>>>>> is declared as a singleton but this getInstance call passed
>>>>>>>> initialization parameters so it is not cached,
>>>>>>>> org.eclipse.emf.teneo.PersistenceOptions
>>>>>>>> Aug 22, 2008 10:44:30 PM org.eclipse.emf.teneo.TeneoException
>>>>>>>> <init>
>>>>>>>> SEVERE: EPackages are not set
>>>>>>>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are
>>>>>>>> not set
>>>>>>>> at
>>>>>>>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>>>>>>>
>>>>>>>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>>>>>>>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>>>>>>> Exception in thread "main"
>>>>>>>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are
>>>>>>>> not set
>>>>>>>> at
>>>>>>>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>>>>>>>
>>>>>>>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>>>>>>>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>>>>>>>
>>>>>>>> Thanks in advance.
>>>>>>>
>>>>>>
>>>>>>
>>>>
>>>>
>>>
>>>
>
>
Re: [Teneo] Error running Teneo (1.x) Dynamic.java example [ with attachments] [message #129044 is a reply to message #129030] Sun, 24 August 2008 10:07 Go to previous message
Ed Merks is currently offline Ed MerksFriend
Messages: 33113
Registered: July 2009
Senior Member
Mdu,

Comments below...


Mdu wrote:
> Duh! Yes, I missed your earlier comment. I got it now. I feel like
> have to pay something for this ;-)
>
> OK. I can save my packages. Now, what is the best way to introspect an
> epackage in such a away that I can make calls like:
>
> 1. Get all classes in the package
EPackage.getEClassifiers and look for the ones that are instances of EClass.
>
> 2. For each class, get all attributes and their types
EClass.getEAllStructuralFeatures() and EStrucuturalFeatureFeature.getEType
>
> 3. etc.
And so on.
>
> 4. I then want to use all aforementioned metadata to automagically
> create a web form.
Just like the generated properties view of the generated EMF editor?
>
> 5. Also, when I change an EObject, do a delta on what's changed
> between modified and original version
Like the notifications produced whenever an EObject is changed?
>
> Did I mention that this is a wishlist.
>
> Is there an EMFT tool (e.g. query) that makes some of this easier?
>
> Thanks again,
> -Mdu
>
> Martin Taal wrote:
>> hi Mdu,
>> See comments inline.
>>
>> See also my post, 2 posts back which may have crossed your post.
>>
>> gr. Martin
>>
>> Mdu wrote:
>>> Martin, Thanks. I'm still a little lost. Here's my understanding and
>>> questions:
>>>
>>> Example: schoolPackage
>>> 1. I understand how to dynamically create new EObject's based on
>>> dynamically created epackage and assoc. classes and attributes.
>>>
>>> 2. How do I store/save an instance of schoolPackage?
>>> Do I have to create an instance of schoolPackage (if this is
>>> possible) and call .save() for hbds to save it into the database for
>>> later retrieval?
>> MT>> Yes, but there is only one instance for schoolpackage (at least
>> there should be), the one you created dynamically once and then
>> persist and then read from the db. To store an epackage do this:
>> final SessionFactory sessionFactory = hbds.getSessionFactory();
>>
>> // now persist them all
>> Session session = sessionFactory.openSession();
>> Transaction tx = session.getTransaction();
>> tx.begin();
>> session.save(schoolPackage);
>> tx.commit();
>>
>>
>>>
>>> 3. Assuming I have schoolPackage instance stored in the database; to
>>> read it back, do I call something like session.createQuery("from
>>> EPackage where type='SchoolPackage'") - and of course this will give
>>> me back an EPackage instance that I use to introspect the whole
>>> package graph (classes, their attributes, etc.)
>> MT>> Yes, although the where clause using type is not correct, you
>> can use name='elv' (at least according to the dynamic.java you
>> attached in a previous post, or just do "from EPackage"
>>
>>>
>>> -mdu
>>>
>>> Martin Taal wrote:
>>>> Hi Mdu,
>>>> Two additions, when reading the Epackage from the db, also do the
>>>> following:
>>>> - read the epackages first (before other objects refering to it).
>>>> - after reading an epackage from the db you have to register it in
>>>> the EPackage Registry using the epackage uri.
>>>>
>>>> gr. Martin
>>>>
>>>> Martin Taal wrote:
>>>>> Hi Mdu,
>>>>> Yes that is possible. Also pass the EcorePackage and the
>>>>> XMLTypePackage to the setEPackages method. Then you can persist
>>>>> your EPackage in the same as another object.
>>>>>
>>>>> gr. Martin
>>>>>
>>>>> Mdu wrote:
>>>>>> Thanks Martin,
>>>>>> That worked. Next question: I want to be able to store an ecore
>>>>>> metamodel of dynamically created models (e.g. companyPackage or
>>>>>> schoolPackage). For example, it'd be great if companyPackage
>>>>>> definition was stored in the db together with relevant class
>>>>>> definitions etc. I want to later on use this information to
>>>>>> create dynamic forms etc. Does this make sense?
>>>>>>
>>>>>> Thnx again.
>>>>>> Martin Taal wrote:
>>>>>>> Hi Mdu,
>>>>>>> You have to tell the datastore which EPackages to persist. In
>>>>>>> your case the companyPackage. You can pass this EPackage to the
>>>>>>> doQuickStart method and then set the companyPackage in the
>>>>>>> datastore by doing something like hbds.setEPackages(new
>>>>>>> EPackage[]{companyPackage});
>>>>>>>
>>>>>>> btw, support for Teneo is given on the EMF newsgroup, which I
>>>>>>> added to this post.
>>>>>>>
>>>>>>> gr. Martin
>>>>>>>
>>>>>>> Mdu wrote:
>>>>>>>> Mdu wrote:
>>>>>>>>> Hi All,
>>>>>>>>> I have modified Dynamic.java example to run it standalone
>>>>>>>>> (as opposed to within Eclipse). I got rid of all references to
>>>>>>>>> Library classes to that I can create a class from scratch.
>>>>>>>>> Everything compiles. But when I run the example I get ff. error:
>>>>>>>>>
>>>>>>>>> Aug 22, 2008 10:44:29 PM
>>>>>>>>> org.eclipse.emf.teneo.hibernate.HbHelper createRegisterDataStore
>>>>>>>>> INFO: Creating emf data store and registering it under name: MySF
>>>>>>>>> Aug 22, 2008 10:44:29 PM
>>>>>>>>> org.eclipse.emf.teneo.hibernate.HbHelper createRegisterDataStore
>>>>>>>>> INFO: Returning created emf data store, initialize this newly
>>>>>>>>> created data store!
>>>>>>>>> Aug 22, 2008 10:44:30 PM
>>>>>>>>> org.eclipse.emf.teneo.classloader.ClassLoaderResolver
>>>>>>>>> setClassLoaderStrategy
>>>>>>>>> INFO: Class loader strategy set to:
>>>>>>>>> org.eclipse.emf.teneo.classloader.ContextClassLoaderStrategy
>>>>>>>>> Aug 22, 2008 10:44:30 PM
>>>>>>>>> org.eclipse.emf.teneo.extension.DefaultExtensionManager
>>>>>>>>> getExtension
>>>>>>>>> WARNING: The extension:
>>>>>>>>> org.eclipse.emf.teneo.PersistenceOptions is declared as a
>>>>>>>>> singleton but this getInstance call passed initialization
>>>>>>>>> parameters so it is not cached,
>>>>>>>>> org.eclipse.emf.teneo.PersistenceOptions
>>>>>>>>> Aug 22, 2008 10:44:30 PM org.eclipse.emf.teneo.TeneoException
>>>>>>>>> <init>
>>>>>>>>> SEVERE: EPackages are not set
>>>>>>>>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages
>>>>>>>>> are not set
>>>>>>>>> at
>>>>>>>>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>>>>>>>>
>>>>>>>>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>>>>>>>>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>>>>>>>> Exception in thread "main"
>>>>>>>>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages
>>>>>>>>> are not set
>>>>>>>>> at
>>>>>>>>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>>>>>>>>
>>>>>>>>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>>>>>>>>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>>>>>>>>
>>>>>>>>> Thanks in advance.
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>
>>


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: [Teneo] Error running Teneo (1.x) Dynamic.java example [ with attachments] [message #620250 is a reply to message #128899] Sat, 23 August 2008 03:06 Go to previous message
Mdu Mising name is currently offline Mdu Mising nameFriend
Messages: 22
Registered: October 2009
Junior Member
This is a multi-part message in MIME format.
--------------040102080409070609050806
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Mdu wrote:
> Hi All,
> I have modified Dynamic.java example to run it standalone (as opposed
> to within Eclipse). I got rid of all references to Library classes to
> that I can create a class from scratch. Everything compiles. But when I
> run the example I get ff. error:
>
> Aug 22, 2008 10:44:29 PM org.eclipse.emf.teneo.hibernate.HbHelper
> createRegisterDataStore
> INFO: Creating emf data store and registering it under name: MySF
> Aug 22, 2008 10:44:29 PM org.eclipse.emf.teneo.hibernate.HbHelper
> createRegisterDataStore
> INFO: Returning created emf data store, initialize this newly created
> data store!
> Aug 22, 2008 10:44:30 PM
> org.eclipse.emf.teneo.classloader.ClassLoaderResolver
> setClassLoaderStrategy
> INFO: Class loader strategy set to:
> org.eclipse.emf.teneo.classloader.ContextClassLoaderStrategy
> Aug 22, 2008 10:44:30 PM
> org.eclipse.emf.teneo.extension.DefaultExtensionManager getExtension
> WARNING: The extension: org.eclipse.emf.teneo.PersistenceOptions is
> declared as a singleton but this getInstance call passed initialization
> parameters so it is not cached, org.eclipse.emf.teneo.PersistenceOptions
> Aug 22, 2008 10:44:30 PM org.eclipse.emf.teneo.TeneoException <init>
> SEVERE: EPackages are not set
> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are not set
> at
> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>
> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
> at hbtutorial.Dynamic.main(Dynamic.java:70)
> Exception in thread "main"
> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are not set
> at
> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>
> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
> at hbtutorial.Dynamic.main(Dynamic.java:70)
>
> Thanks in advance.


--------------040102080409070609050806
Content-Type: text/plain;
name="Dynamic.java"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="Dynamic.java"

/**
* <copyright>
*
* Copyright (c) 2005, 2006, 2007, 2008 Springsite BV (The Netherlands) and others
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Martin Taal
* </copyright>
*
* $Id: Dynamic.java,v 1.4 2008/02/28 07:07:51 mtaal Exp $
*/

package hbtutorial;

import java.util.Iterator;
import java.util.List;

import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.EcoreFactory;
import org.eclipse.emf.ecore.EcorePackage;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
import org.eclipse.emf.teneo.hibernate.HbDataStore;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;

/**
* Dynamic Tutorial
*
* @author <a href="mailto:mtaal@elver.org">Martin Taal</a>
* @version $Revision: 1.4 $
*/
public class Dynamic {

/** The main method */
public static void main(String[] args) {

// create resource set and resource
ResourceSet resourceSet = new ResourceSetImpl();

// Register XML resource factory
resourceSet.getResourceFactoryRegistry().getExtensionToFacto ryMap().put( "xmi",
new XMIResourceFactoryImpl());

final EcoreFactory efactory = EcoreFactory.eINSTANCE;
final EcorePackage epackage = EcorePackage.eINSTANCE;

EPackage companyPackage = efactory.createEPackage();
companyPackage.setName("company");
companyPackage.setNsPrefix("company");
companyPackage.setNsURI("http:///com.example.company.ecore");

companyPackage.eClass();

resourceSet.getPackageRegistry().put(companyPackage.getNsURI (), companyPackage);


// first do the quick start with the correct dbname
HbDataStore hbds = QuickStart.doQuickStart("DynamicLibrary");

// print the hibernate.hbm.xml for demo purposes
System.err.println(hbds.getMappingXML());


// This tutorial will create a new type of book which inherits from the standard
// Book

// create the SchoolBook EClass
EClass schoolBookEClass = efactory.createEClass();
schoolBookEClass.setName("SchoolBook");

// create a new attribute for this EClass
EAttribute level = efactory.createEAttribute();
level.setName("level");
level.setEType(epackage.getEInt());
schoolBookEClass.getEStructuralFeatures().add(level);

// Set the supertype of SchoolBook to the Book
//schoolBookEClass.getESuperTypes().add(LibraryPackage.eINST ANCE.getBook());

// create a course
EClass courseEClass = efactory.createEClass();
courseEClass.setName("Course");

// give the Course a name
EAttribute courseName = efactory.createEAttribute();
courseName.setName("courseName");
courseName.setEType(epackage.getEString());
courseEClass.getEStructuralFeatures().add(courseName);

// A course always uses one SchoolBook
EReference courseBook = efactory.createEReference();
courseBook.setName("courseBook");
courseBook.setEType(schoolBookEClass);
courseBook.setContainment(false);
courseEClass.getEStructuralFeatures().add(courseBook);

// Create a new EPackage and add the new EClasses
EPackage schoolPackage = efactory.createEPackage();
schoolPackage.setName("elv");
schoolPackage.setNsPrefix("elv");
schoolPackage.setNsURI("http:///www.elver.org/School");
schoolPackage.getEClassifiers().add(courseEClass);
schoolPackage.getEClassifiers().add(schoolBookEClass);
EPackage.Registry.INSTANCE.put(schoolPackage.getNsURI(), schoolPackage);

// Now reset the epackages in the datastore
//hbds.setEPackages(new EPackage[]{LibraryPackage.eINSTANCE, schoolPackage});

// recreate the database
hbds.initialize();

// print the hibernate.hbm.xml for demo purposes
System.err.println(hbds.getMappingXML());

// and create a course
EObject course = schoolPackage.getEFactoryInstance().create(courseEClass);
course.eSet(courseName, "Dutch Literature Level 1");
//course.eSet(courseBook, bk);

final SessionFactory sessionFactory = hbds.getSessionFactory();

// now persist them all

Session session = sessionFactory.openSession();
Transaction tx = session.getTransaction();
tx.begin();
session.save(course);
tx.commit();

// Now query for the books, at least one of them should be a SchoolBook
tx.begin();
Query qry = session.createQuery("from Course where courseName='Dutch Literature Level 1'");
List list = qry.list();
EObject eobject = (EObject)list.get(0);
if (eobject.eClass() != courseEClass) {
throw new Error("No Course?");
}

tx.commit();
session.close();
}
}

--------------040102080409070609050806
Content-Type: text/plain;
name="QuickStart.java"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="QuickStart.java"

LyoqDQogKiA8Y29weXJpZ2h0Pg0KICoNCiAqIENvcHlyaWdodCAoYykgMjAw NSwgMjAwNiwg
MjAwNywgMjAwOCBTcHJpbmdzaXRlIEJWIChUaGUgTmV0aGVybGFuZHMpIGFu ZCBvdGhlcnMN
CiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhl IGFjY29tcGFu
eWluZyBtYXRlcmlhbHMNCiAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0 aGUgdGVybXMg
b2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KICogd2hpY2gg YWNjb21wYW5p
ZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCiAq IGh0dHA6Ly93
d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQogKg0KICogQ29u dHJpYnV0b3Jz
Og0KICogICBNYXJ0aW4gVGFhbA0KICogPC9jb3B5cmlnaHQ+DQogKg0KICog JElkOiBRdWlj
a1N0YXJ0LmphdmEsdiAxLjUgMjAwOC8wMy8wNyAxMzoxMzo1NyBtdGFhbCBF eHAgJA0KICov
DQoNCnBhY2thZ2UgaGJ0dXRvcmlhbDsNCg0KaW1wb3J0IGphdmEudXRpbC5Q cm9wZXJ0aWVz
Ow0KDQppbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlOw0K aW1wb3J0IG9y
Zy5lY2xpcHNlLmVtZi5lY29yZS5FY29yZUZhY3Rvcnk7DQppbXBvcnQgb3Jn LmVjbGlwc2Uu
ZW1mLmVjb3JlLkVjb3JlUGFja2FnZTsNCmltcG9ydCBvcmcuZWNsaXBzZS5l bWYudGVuZW8u
aGliZXJuYXRlLkhiRGF0YVN0b3JlOw0KaW1wb3J0IG9yZy5lY2xpcHNlLmVt Zi50ZW5lby5o
aWJlcm5hdGUuSGJIZWxwZXI7DQppbXBvcnQgb3JnLmhpYmVybmF0ZS5TZXNz aW9uOw0KaW1w
b3J0IG9yZy5oaWJlcm5hdGUuU2Vzc2lvbkZhY3Rvcnk7DQppbXBvcnQgb3Jn LmhpYmVybmF0
ZS5UcmFuc2FjdGlvbjsNCmltcG9ydCBvcmcuaGliZXJuYXRlLmNmZy5FbnZp cm9ubWVudDsN
Cg0KLyoqDQogKiBRdWljayBTdGFydCBUdXRvcmlhbA0KICogDQogKiBAYXV0 aG9yIDxhIGhy
ZWY9Im1haWx0bzptdGFhbEBlbHZlci5vcmciPk1hcnRpbiBUYWFsPC9hPg0K ICogQHZlcnNp
b24gJFJldmlzaW9uOiAxLjUgJA0KKi8NCnB1YmxpYyBjbGFzcyBRdWlja1N0 YXJ0IHsNCg0K
CS8qKiBUaGUgbWFpbiBtZXRob2QgKi8NCglwdWJsaWMgc3RhdGljIHZvaWQg bWFpbihTdHJp
bmdbXSBhcmdzKSB7DQoJCS8vIHRoZSBuYW1lIG9mIHRoZSBkYXRhYmFzZSwg dGhpcyBkYXRh
YmFzZSBzaG91bGQgZXhpc3QgYnV0IGRvZXMgbm90IG5lZWQgdG8gY29udGFp biB0YWJsZXMN
CgkJU3RyaW5nIGRiTmFtZSA9ICJsaWJyYXJ5IjsgDQoJCWRvUXVpY2tTdGFy dChkYk5hbWUp
OyAvL2lnbm9yZSByZXR1cm4NCgl9DQoJDQoJLyoqIE1ldGhvZG4gd2hpY2gg Y2FuIGJlIGNh
bGxlZCBieSBvdGhlcnMgKi8NCglwdWJsaWMgc3RhdGljIEhiRGF0YVN0b3Jl IGRvUXVpY2tT
dGFydChTdHJpbmcgZGJOYW1lKSB7DQoJCS8vIHRoZSBuYW1lIG9mIHRoZSBz ZXNzaW9uIGZh
Y3RvcnkNCgkJU3RyaW5nIGhiTmFtZSA9ICJNeVNGIjsgDQoJDQoJCS8vIGNy ZWF0ZSB0aGUg
SGJEYXRhU3RvcmUNCgkJSGJEYXRhU3RvcmUgaGJkcyA9IChIYkRhdGFTdG9y ZSlIYkhlbHBl
ci5JTlNUQU5DRS5jcmVhdGVSZWdpc3RlckRhdGFTdG9yZShoYk5hbWUpOw0K CQkvL0VQYWNr
YWdlIHBrZyA9IEVjb3JlRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlRVBhY2th Z2UoKTsNCgkJ
DQoJCS8vIFRoZSBoaWJlcm5hdGUgcHJvcGVydGllcyBjYW4gYmUgc2V0IGJ5 IGhhdmluZyBh
IGhpYmVybmF0ZS5wcm9wZXJ0aWVzIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhl IGNsYXNzcGF0
aC4NCgkJLy8gQW5vdGhlciBhcHByb2FjaCBpcyBzZXR0aW5nIHRoZSBwcm9w ZXJ0aWVzIGlu
IHRoZSBIYkRhdGFTdG9yZS4gVG8gZG8gdGhpcyBjb21tZW50IG91dCB0aGUg Zm9sbG93aW5n
IGxpbmVzDQoJCS8vIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSBzZWN0aW9u IDMuMSBvZiB0
aGUgSGliZXJuYXRlIG1hbnVhbA0KCQlmaW5hbCBQcm9wZXJ0aWVzIHByb3Bz ID0gbmV3IFBy
b3BlcnRpZXMoKTsNCgkJcHJvcHMuc2V0UHJvcGVydHkoRW52aXJvbm1lbnQu RFJJVkVSLCAi
Y29tLm15c3FsLmpkYmMuRHJpdmVyIik7DQoJCXByb3BzLnNldFByb3BlcnR5 KEVudmlyb25t
ZW50LlVTRVIsICJyb290Iik7DQoJCXByb3BzLnNldFByb3BlcnR5KEVudmly b25tZW50LlVS
TCwgImpkYmM6bXlzcWw6Ly8xMjcuMC4wLjE6MzMwNi8iICsgZGJOYW1lKTsN CgkJcHJvcHMu
c2V0UHJvcGVydHkoRW52aXJvbm1lbnQuUEFTUywgInJvb3QiKTsNCgkJcHJv cHMuc2V0UHJv
cGVydHkoRW52aXJvbm1lbnQuRElBTEVDVCwgb3JnLmhpYmVybmF0ZS5kaWFs ZWN0Lk15U1FM
SW5ub0RCRGlhbGVjdC5jbGFzcy5nZXROYW1lKCkpOw0KCQloYmRzLnNldFBy b3BlcnRpZXMo
cHJvcHMpOw0KDQoJCS8vIGluaXRpYWxpemUsIGFsc28gY3JlYXRlcyB0aGUg ZGF0YWJhc2Ug
dGFibGVzDQoJCWhiZHMuaW5pdGlhbGl6ZSgpOw0KCQkNCgkJU2Vzc2lvbkZh Y3Rvcnkgc2Vz
c2lvbkZhY3RvcnkgPSBoYmRzLmdldFNlc3Npb25GYWN0b3J5KCk7DQoJCQ0K CQkvLyBDcmVh
dGUgYSBzZXNzaW9uIGFuZCBhIHRyYW5zYWN0aW9uDQoJCVNlc3Npb24gc2Vz c2lvbiA9IHNl
c3Npb25GYWN0b3J5Lm9wZW5TZXNzaW9uKCk7DQoJCVRyYW5zYWN0aW9uIHR4 ID0gc2Vzc2lv
bi5nZXRUcmFuc2FjdGlvbigpOw0KCQkNCgkJLy8gU3RhcnQgYSB0cmFuc2Fj dGlvbiwgY3Jl
YXRlIGEgbGlicmFyeSBhbmQgbWFrZSBpdCBwZXJzaXN0ZW50DQoJCXR4LmJl Z2luKCk7DQoN
CgkJCSAgICAgICAgDQoJCS8vIGF0IGNvbW1pdCB0aGUgb2JqZWN0cyB3aWxs IGJlIHByZXNl
bnQgaW4gdGhlIGRhdGFiYXNlDQoJCXR4LmNvbW1pdCgpOw0KCQkvLyBhbmQg Y2xvc2Ugb2Ys
IHRoaXMgc2hvdWxkIGFjdHVhbGx5IGJlIGRvbmUgaW4gYSBmaW5hbGx5IGJs b2NrDQoJCXNl
c3Npb24uY2xvc2UoKTsNCgkJDQoJCXJldHVybiBoYmRzOw0KCX0NCn0=
--------------040102080409070609050806--
Re: [Teneo] Error running Teneo (1.x) Dynamic.java example [ with attachments] [message #620251 is a reply to message #128913] Sat, 23 August 2008 09:58 Go to previous message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Hi Mdu,
You have to tell the datastore which EPackages to persist. In your case the companyPackage. You can
pass this EPackage to the doQuickStart method and then set the companyPackage in the datastore by
doing something like hbds.setEPackages(new EPackage[]{companyPackage});

btw, support for Teneo is given on the EMF newsgroup, which I added to this post.

gr. Martin

Mdu wrote:
> Mdu wrote:
>> Hi All,
>> I have modified Dynamic.java example to run it standalone (as
>> opposed to within Eclipse). I got rid of all references to Library
>> classes to that I can create a class from scratch. Everything
>> compiles. But when I run the example I get ff. error:
>>
>> Aug 22, 2008 10:44:29 PM org.eclipse.emf.teneo.hibernate.HbHelper
>> createRegisterDataStore
>> INFO: Creating emf data store and registering it under name: MySF
>> Aug 22, 2008 10:44:29 PM org.eclipse.emf.teneo.hibernate.HbHelper
>> createRegisterDataStore
>> INFO: Returning created emf data store, initialize this newly created
>> data store!
>> Aug 22, 2008 10:44:30 PM
>> org.eclipse.emf.teneo.classloader.ClassLoaderResolver
>> setClassLoaderStrategy
>> INFO: Class loader strategy set to:
>> org.eclipse.emf.teneo.classloader.ContextClassLoaderStrategy
>> Aug 22, 2008 10:44:30 PM
>> org.eclipse.emf.teneo.extension.DefaultExtensionManager getExtension
>> WARNING: The extension: org.eclipse.emf.teneo.PersistenceOptions is
>> declared as a singleton but this getInstance call passed
>> initialization parameters so it is not cached,
>> org.eclipse.emf.teneo.PersistenceOptions
>> Aug 22, 2008 10:44:30 PM org.eclipse.emf.teneo.TeneoException <init>
>> SEVERE: EPackages are not set
>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are not set
>> at
>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>
>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>> Exception in thread "main"
>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are not set
>> at
>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>
>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>
>> Thanks in advance.
>


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: [Teneo] Error running Teneo (1.x) Dynamic.java example [ with attachments] [message #620252 is a reply to message #128926] Sat, 23 August 2008 11:49 Go to previous message
Mdu Mising name is currently offline Mdu Mising nameFriend
Messages: 22
Registered: October 2009
Junior Member
Thanks Martin,
That worked. Next question: I want to be able to store an ecore
metamodel of dynamically created models (e.g. companyPackage or
schoolPackage). For example, it'd be great if companyPackage definition
was stored in the db together with relevant class definitions etc. I
want to later on use this information to create dynamic forms etc. Does
this make sense?

Thnx again.
Martin Taal wrote:
> Hi Mdu,
> You have to tell the datastore which EPackages to persist. In your case
> the companyPackage. You can pass this EPackage to the doQuickStart
> method and then set the companyPackage in the datastore by doing
> something like hbds.setEPackages(new EPackage[]{companyPackage});
>
> btw, support for Teneo is given on the EMF newsgroup, which I added to
> this post.
>
> gr. Martin
>
> Mdu wrote:
>> Mdu wrote:
>>> Hi All,
>>> I have modified Dynamic.java example to run it standalone (as
>>> opposed to within Eclipse). I got rid of all references to Library
>>> classes to that I can create a class from scratch. Everything
>>> compiles. But when I run the example I get ff. error:
>>>
>>> Aug 22, 2008 10:44:29 PM org.eclipse.emf.teneo.hibernate.HbHelper
>>> createRegisterDataStore
>>> INFO: Creating emf data store and registering it under name: MySF
>>> Aug 22, 2008 10:44:29 PM org.eclipse.emf.teneo.hibernate.HbHelper
>>> createRegisterDataStore
>>> INFO: Returning created emf data store, initialize this newly created
>>> data store!
>>> Aug 22, 2008 10:44:30 PM
>>> org.eclipse.emf.teneo.classloader.ClassLoaderResolver
>>> setClassLoaderStrategy
>>> INFO: Class loader strategy set to:
>>> org.eclipse.emf.teneo.classloader.ContextClassLoaderStrategy
>>> Aug 22, 2008 10:44:30 PM
>>> org.eclipse.emf.teneo.extension.DefaultExtensionManager getExtension
>>> WARNING: The extension: org.eclipse.emf.teneo.PersistenceOptions is
>>> declared as a singleton but this getInstance call passed
>>> initialization parameters so it is not cached,
>>> org.eclipse.emf.teneo.PersistenceOptions
>>> Aug 22, 2008 10:44:30 PM org.eclipse.emf.teneo.TeneoException <init>
>>> SEVERE: EPackages are not set
>>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are not set
>>> at
>>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>>
>>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>> Exception in thread "main"
>>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are not set
>>> at
>>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>>
>>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>>
>>> Thanks in advance.
>>
>
>
Re: [Teneo] Error running Teneo (1.x) Dynamic.java example [ with attachments] [message #620253 is a reply to message #128939] Sat, 23 August 2008 12:23 Go to previous message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Hi Mdu,
Yes that is possible. Also pass the EcorePackage and the XMLTypePackage to the setEPackages method.
Then you can persist your EPackage in the same as another object.

gr. Martin

Mdu wrote:
> Thanks Martin,
> That worked. Next question: I want to be able to store an ecore
> metamodel of dynamically created models (e.g. companyPackage or
> schoolPackage). For example, it'd be great if companyPackage definition
> was stored in the db together with relevant class definitions etc. I
> want to later on use this information to create dynamic forms etc. Does
> this make sense?
>
> Thnx again.
> Martin Taal wrote:
>> Hi Mdu,
>> You have to tell the datastore which EPackages to persist. In your
>> case the companyPackage. You can pass this EPackage to the
>> doQuickStart method and then set the companyPackage in the datastore
>> by doing something like hbds.setEPackages(new
>> EPackage[]{companyPackage});
>>
>> btw, support for Teneo is given on the EMF newsgroup, which I added to
>> this post.
>>
>> gr. Martin
>>
>> Mdu wrote:
>>> Mdu wrote:
>>>> Hi All,
>>>> I have modified Dynamic.java example to run it standalone (as
>>>> opposed to within Eclipse). I got rid of all references to Library
>>>> classes to that I can create a class from scratch. Everything
>>>> compiles. But when I run the example I get ff. error:
>>>>
>>>> Aug 22, 2008 10:44:29 PM org.eclipse.emf.teneo.hibernate.HbHelper
>>>> createRegisterDataStore
>>>> INFO: Creating emf data store and registering it under name: MySF
>>>> Aug 22, 2008 10:44:29 PM org.eclipse.emf.teneo.hibernate.HbHelper
>>>> createRegisterDataStore
>>>> INFO: Returning created emf data store, initialize this newly
>>>> created data store!
>>>> Aug 22, 2008 10:44:30 PM
>>>> org.eclipse.emf.teneo.classloader.ClassLoaderResolver
>>>> setClassLoaderStrategy
>>>> INFO: Class loader strategy set to:
>>>> org.eclipse.emf.teneo.classloader.ContextClassLoaderStrategy
>>>> Aug 22, 2008 10:44:30 PM
>>>> org.eclipse.emf.teneo.extension.DefaultExtensionManager getExtension
>>>> WARNING: The extension: org.eclipse.emf.teneo.PersistenceOptions is
>>>> declared as a singleton but this getInstance call passed
>>>> initialization parameters so it is not cached,
>>>> org.eclipse.emf.teneo.PersistenceOptions
>>>> Aug 22, 2008 10:44:30 PM org.eclipse.emf.teneo.TeneoException <init>
>>>> SEVERE: EPackages are not set
>>>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are not
>>>> set
>>>> at
>>>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>>>
>>>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>>>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>>> Exception in thread "main"
>>>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are not
>>>> set
>>>> at
>>>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>>>
>>>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>>>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>>>
>>>> Thanks in advance.
>>>
>>
>>


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: [Teneo] Error running Teneo (1.x) Dynamic.java example [ with attachments] [message #620254 is a reply to message #128952] Sat, 23 August 2008 12:30 Go to previous message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Hi Mdu,
Two additions, when reading the Epackage from the db, also do the following:
- read the epackages first (before other objects refering to it).
- after reading an epackage from the db you have to register it in the EPackage Registry using the
epackage uri.

gr. Martin

Martin Taal wrote:
> Hi Mdu,
> Yes that is possible. Also pass the EcorePackage and the XMLTypePackage
> to the setEPackages method. Then you can persist your EPackage in the
> same as another object.
>
> gr. Martin
>
> Mdu wrote:
>> Thanks Martin,
>> That worked. Next question: I want to be able to store an ecore
>> metamodel of dynamically created models (e.g. companyPackage or
>> schoolPackage). For example, it'd be great if companyPackage
>> definition was stored in the db together with relevant class
>> definitions etc. I want to later on use this information to create
>> dynamic forms etc. Does this make sense?
>>
>> Thnx again.
>> Martin Taal wrote:
>>> Hi Mdu,
>>> You have to tell the datastore which EPackages to persist. In your
>>> case the companyPackage. You can pass this EPackage to the
>>> doQuickStart method and then set the companyPackage in the datastore
>>> by doing something like hbds.setEPackages(new
>>> EPackage[]{companyPackage});
>>>
>>> btw, support for Teneo is given on the EMF newsgroup, which I added
>>> to this post.
>>>
>>> gr. Martin
>>>
>>> Mdu wrote:
>>>> Mdu wrote:
>>>>> Hi All,
>>>>> I have modified Dynamic.java example to run it standalone (as
>>>>> opposed to within Eclipse). I got rid of all references to Library
>>>>> classes to that I can create a class from scratch. Everything
>>>>> compiles. But when I run the example I get ff. error:
>>>>>
>>>>> Aug 22, 2008 10:44:29 PM org.eclipse.emf.teneo.hibernate.HbHelper
>>>>> createRegisterDataStore
>>>>> INFO: Creating emf data store and registering it under name: MySF
>>>>> Aug 22, 2008 10:44:29 PM org.eclipse.emf.teneo.hibernate.HbHelper
>>>>> createRegisterDataStore
>>>>> INFO: Returning created emf data store, initialize this newly
>>>>> created data store!
>>>>> Aug 22, 2008 10:44:30 PM
>>>>> org.eclipse.emf.teneo.classloader.ClassLoaderResolver
>>>>> setClassLoaderStrategy
>>>>> INFO: Class loader strategy set to:
>>>>> org.eclipse.emf.teneo.classloader.ContextClassLoaderStrategy
>>>>> Aug 22, 2008 10:44:30 PM
>>>>> org.eclipse.emf.teneo.extension.DefaultExtensionManager getExtension
>>>>> WARNING: The extension: org.eclipse.emf.teneo.PersistenceOptions is
>>>>> declared as a singleton but this getInstance call passed
>>>>> initialization parameters so it is not cached,
>>>>> org.eclipse.emf.teneo.PersistenceOptions
>>>>> Aug 22, 2008 10:44:30 PM org.eclipse.emf.teneo.TeneoException <init>
>>>>> SEVERE: EPackages are not set
>>>>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are
>>>>> not set
>>>>> at
>>>>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>>>>
>>>>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>>>>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>>>> Exception in thread "main"
>>>>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are
>>>>> not set
>>>>> at
>>>>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>>>>
>>>>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>>>>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>>>>
>>>>> Thanks in advance.
>>>>
>>>
>>>
>
>


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: [Teneo] Error running Teneo (1.x) Dynamic.java example [ with attachments] [message #620255 is a reply to message #128964] Sat, 23 August 2008 12:21 Go to previous message
Mdu Mising name is currently offline Mdu Mising nameFriend
Messages: 22
Registered: October 2009
Junior Member
Martin, Thanks. I'm still a little lost. Here's my understanding and
questions:

Example: schoolPackage
1. I understand how to dynamically create new EObject's based on
dynamically created epackage and assoc. classes and attributes.

2. How do I store/save an instance of schoolPackage?
Do I have to create an instance of schoolPackage (if this is possible)
and call .save() for hbds to save it into the database for later retrieval?

3. Assuming I have schoolPackage instance stored in the database; to
read it back, do I call something like session.createQuery("from
EPackage where type='SchoolPackage'") - and of course this will give me
back an EPackage instance that I use to introspect the whole package
graph (classes, their attributes, etc.)

-mdu

Martin Taal wrote:
> Hi Mdu,
> Two additions, when reading the Epackage from the db, also do the
> following:
> - read the epackages first (before other objects refering to it).
> - after reading an epackage from the db you have to register it in the
> EPackage Registry using the epackage uri.
>
> gr. Martin
>
> Martin Taal wrote:
>> Hi Mdu,
>> Yes that is possible. Also pass the EcorePackage and the
>> XMLTypePackage to the setEPackages method. Then you can persist your
>> EPackage in the same as another object.
>>
>> gr. Martin
>>
>> Mdu wrote:
>>> Thanks Martin,
>>> That worked. Next question: I want to be able to store an ecore
>>> metamodel of dynamically created models (e.g. companyPackage or
>>> schoolPackage). For example, it'd be great if companyPackage
>>> definition was stored in the db together with relevant class
>>> definitions etc. I want to later on use this information to create
>>> dynamic forms etc. Does this make sense?
>>>
>>> Thnx again.
>>> Martin Taal wrote:
>>>> Hi Mdu,
>>>> You have to tell the datastore which EPackages to persist. In your
>>>> case the companyPackage. You can pass this EPackage to the
>>>> doQuickStart method and then set the companyPackage in the datastore
>>>> by doing something like hbds.setEPackages(new
>>>> EPackage[]{companyPackage});
>>>>
>>>> btw, support for Teneo is given on the EMF newsgroup, which I added
>>>> to this post.
>>>>
>>>> gr. Martin
>>>>
>>>> Mdu wrote:
>>>>> Mdu wrote:
>>>>>> Hi All,
>>>>>> I have modified Dynamic.java example to run it standalone (as
>>>>>> opposed to within Eclipse). I got rid of all references to Library
>>>>>> classes to that I can create a class from scratch. Everything
>>>>>> compiles. But when I run the example I get ff. error:
>>>>>>
>>>>>> Aug 22, 2008 10:44:29 PM org.eclipse.emf.teneo.hibernate.HbHelper
>>>>>> createRegisterDataStore
>>>>>> INFO: Creating emf data store and registering it under name: MySF
>>>>>> Aug 22, 2008 10:44:29 PM org.eclipse.emf.teneo.hibernate.HbHelper
>>>>>> createRegisterDataStore
>>>>>> INFO: Returning created emf data store, initialize this newly
>>>>>> created data store!
>>>>>> Aug 22, 2008 10:44:30 PM
>>>>>> org.eclipse.emf.teneo.classloader.ClassLoaderResolver
>>>>>> setClassLoaderStrategy
>>>>>> INFO: Class loader strategy set to:
>>>>>> org.eclipse.emf.teneo.classloader.ContextClassLoaderStrategy
>>>>>> Aug 22, 2008 10:44:30 PM
>>>>>> org.eclipse.emf.teneo.extension.DefaultExtensionManager getExtension
>>>>>> WARNING: The extension: org.eclipse.emf.teneo.PersistenceOptions
>>>>>> is declared as a singleton but this getInstance call passed
>>>>>> initialization parameters so it is not cached,
>>>>>> org.eclipse.emf.teneo.PersistenceOptions
>>>>>> Aug 22, 2008 10:44:30 PM org.eclipse.emf.teneo.TeneoException <init>
>>>>>> SEVERE: EPackages are not set
>>>>>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are
>>>>>> not set
>>>>>> at
>>>>>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>>>>>
>>>>>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>>>>>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>>>>> Exception in thread "main"
>>>>>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are
>>>>>> not set
>>>>>> at
>>>>>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>>>>>
>>>>>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>>>>>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>>>>>
>>>>>> Thanks in advance.
>>>>>
>>>>
>>>>
>>
>>
>
>
Re: [Teneo] Error running Teneo (1.x) Dynamic.java example [ with db picture] [message #620256 is a reply to message #128977] Sat, 23 August 2008 12:26 Go to previous message
Mdu Mising name is currently offline Mdu Mising nameFriend
Messages: 22
Registered: October 2009
Junior Member
This is a multi-part message in MIME format.
--------------070400060800000902050707
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Martin,
I have attached a snapshot of tables that were created when I added
epackage with setPackages(). All these tables have 0 rows. How do I make
sense of 'em?

Mdu wrote:
> Martin, Thanks. I'm still a little lost. Here's my understanding and
> questions:
>
> Example: schoolPackage
> 1. I understand how to dynamically create new EObject's based on
> dynamically created epackage and assoc. classes and attributes.
>
> 2. How do I store/save an instance of schoolPackage?
> Do I have to create an instance of schoolPackage (if this is possible)
> and call .save() for hbds to save it into the database for later retrieval?
>
> 3. Assuming I have schoolPackage instance stored in the database; to
> read it back, do I call something like session.createQuery("from
> EPackage where type='SchoolPackage'") - and of course this will give me
> back an EPackage instance that I use to introspect the whole package
> graph (classes, their attributes, etc.)
>
> -mdu
>
> Martin Taal wrote:
>> Hi Mdu,
>> Two additions, when reading the Epackage from the db, also do the
>> following:
>> - read the epackages first (before other objects refering to it).
>> - after reading an epackage from the db you have to register it in the
>> EPackage Registry using the epackage uri.
>>
>> gr. Martin
>>
>> Martin Taal wrote:
>>> Hi Mdu,
>>> Yes that is possible. Also pass the EcorePackage and the
>>> XMLTypePackage to the setEPackages method. Then you can persist your
>>> EPackage in the same as another object.
>>>
>>> gr. Martin
>>>
>>> Mdu wrote:
>>>> Thanks Martin,
>>>> That worked. Next question: I want to be able to store an ecore
>>>> metamodel of dynamically created models (e.g. companyPackage or
>>>> schoolPackage). For example, it'd be great if companyPackage
>>>> definition was stored in the db together with relevant class
>>>> definitions etc. I want to later on use this information to create
>>>> dynamic forms etc. Does this make sense?
>>>>
>>>> Thnx again.
>>>> Martin Taal wrote:
>>>>> Hi Mdu,
>>>>> You have to tell the datastore which EPackages to persist. In your
>>>>> case the companyPackage. You can pass this EPackage to the
>>>>> doQuickStart method and then set the companyPackage in the
>>>>> datastore by doing something like hbds.setEPackages(new
>>>>> EPackage[]{companyPackage});
>>>>>
>>>>> btw, support for Teneo is given on the EMF newsgroup, which I added
>>>>> to this post.
>>>>>
>>>>> gr. Martin
>>>>>
>>>>> Mdu wrote:
>>>>>> Mdu wrote:
>>>>>>> Hi All,
>>>>>>> I have modified Dynamic.java example to run it standalone (as
>>>>>>> opposed to within Eclipse). I got rid of all references to
>>>>>>> Library classes to that I can create a class from scratch.
>>>>>>> Everything compiles. But when I run the example I get ff. error:
>>>>>>>
>>>>>>> Aug 22, 2008 10:44:29 PM org.eclipse.emf.teneo.hibernate.HbHelper
>>>>>>> createRegisterDataStore
>>>>>>> INFO: Creating emf data store and registering it under name: MySF
>>>>>>> Aug 22, 2008 10:44:29 PM org.eclipse.emf.teneo.hibernate.HbHelper
>>>>>>> createRegisterDataStore
>>>>>>> INFO: Returning created emf data store, initialize this newly
>>>>>>> created data store!
>>>>>>> Aug 22, 2008 10:44:30 PM
>>>>>>> org.eclipse.emf.teneo.classloader.ClassLoaderResolver
>>>>>>> setClassLoaderStrategy
>>>>>>> INFO: Class loader strategy set to:
>>>>>>> org.eclipse.emf.teneo.classloader.ContextClassLoaderStrategy
>>>>>>> Aug 22, 2008 10:44:30 PM
>>>>>>> org.eclipse.emf.teneo.extension.DefaultExtensionManager getExtension
>>>>>>> WARNING: The extension: org.eclipse.emf.teneo.PersistenceOptions
>>>>>>> is declared as a singleton but this getInstance call passed
>>>>>>> initialization parameters so it is not cached,
>>>>>>> org.eclipse.emf.teneo.PersistenceOptions
>>>>>>> Aug 22, 2008 10:44:30 PM org.eclipse.emf.teneo.TeneoException <init>
>>>>>>> SEVERE: EPackages are not set
>>>>>>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are
>>>>>>> not set
>>>>>>> at
>>>>>>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>>>>>>
>>>>>>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>>>>>>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>>>>>> Exception in thread "main"
>>>>>>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are
>>>>>>> not set
>>>>>>> at
>>>>>>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>>>>>>
>>>>>>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>>>>>>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>>>>>>
>>>>>>> Thanks in advance.
>>>>>>
>>>>>
>>>>>
>>>
>>>
>>
>>


--------------070400060800000902050707
Content-Type: image/jpeg;
name="dynamiclibrary.jpg"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="dynamiclibrary.jpg"

/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsL DBkSEw8UHRof
Hh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwL DBgNDRgyIRwh
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjL/wAAR
CAHCAtADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcI CQoL/8QAtRAA
AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS 0fAkM2JyggkK
FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1 dnd4eXqDhIWG
h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW 19jZ2uHi4+Tl
5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcI CQoL/8QAtREA
AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMz UvAVYnLRChYk
NOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0 dXZ3eHl6goOE
hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU 1dbX2Nna4uPk
5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3TTCBpVnyP9Qn/oIrNtvE j3PiWfRTouox
PAgke5doPKEbGQI/EpfDGJgBtyOMgVcsWxptn/1wT/0EVn29pcR+MNSv2jxb TWFpDG+4cukl
wWGOvAkT8/Y0wNTU9Tg0q1S4nDsj3EFuBHgndLKsSnkjgM4J9s9elEmpwRaz baWwcz3FvNcI
wxtCxtGrAnOc5lXHHY/j5Nc+FdamvJ5ZdCnmW48uXU4FWxjt7yVby2lbywpV pF2LcYNwd2Gw
SCzZt3nhLV7kzNY6c+m6fIk3lWMbwBoITJYl4QgLRZk8i5O3mM+Z85G5hSA9 O1bU4NH0a+1S
4DvBZ28lxIseCxVFLEAEgZwPUVXtfENhfXGmRWrvKmpWT31vKFwpiUxdc4IJ 85CBj1ziuQtv
Dt3B8N/EOk21rdRy3tvcraWly9urIXh2BQsKrDGC4JwpI+YsTliBYk0PWbDx bJd6QtqbEabf
Na/aGJEV7PLFIyvj5jEzJv4yQTIMgbAADu9w9RRuHqK8i0rwVO+s28Nzoc/9 grdQzyWuoxWI
TcILtXfyrf5Dy9uMkbjgdlGB/B2stpVnBLaTiA2tjNqdtbtbu93dBLhZ2KzZ ikkLvbszSfe2
AgllWgD13cPUUbh6iuf8MWMml+HbWzlE6tHvKpPIjuil2KqfLVUXCkDag2rj apIAJs6ql/Pa
mHT5IonfhpHYgqP9nAPPv2/kAa+4eoo3D1FYGiW2pWEH2a9lhliUfu2RiWX2 5HI/l/LW3UAW
dw9RRuHqKrbqN1MRZ3D1FG4eoqtuo3UAWdw9RRuHqKrbqN1AFncPUUbh6iq2 6jdQBZ3D1FG4
eoqtuo3UAWdw9RSFhvHI6H+lV91IW+Zfof6UhlHVvEH9mahaWEGl3uo3N1FL MqWjQjakZjDE
mWRB1lXGM961IJjNbxSvE8DugZopCpZCR907SRkdOCR6E1xnivTri78QaTer puqXttBa3UUg
0y+FrIju8BXLebGSuI34yeccdKp6/wCHrrWrjW9TXTXF4+hwppqyypuhvFNw wIwxVZULx4kz
8u47WwWoA7+eYw28sqRPO6IWWKMqGcgfdG4gZPTkgepFSbh6ivD9dtbfV9Qu 9I0+wtb/AMRG
41Tzb+3mt5HMclvdLHE7B/NQL5kMXzqqqVC5+7norjwhqa6e8mmR/Y9Zub/U /MvfPw6QSi6M
PzgkiPe8D7F6N823cCaAPTtw9RRuHqK4jwPobaL9vZbS+srebywsF19kT5l3 bmEdqojGQyjc
SWbaAQAq567dQBZ3D1FG4eoqtuo3UxFncPUUhYbxyOh/pVfdSFvmX6H+lIZR 1bxB/ZmoWlhB
pd7qNzdRSzKlo0I2pGYwxJlkQdZVxjPerml6nBq1gl3CHQF3jeOTAaORGKOh wSMqysuQSDjI
JGDXP61oR1jxRpdxN9qWzt7K6R5La8kt2EjvblQTGysQQj8dOBnnFYr6Bcx2 1guo6D/bFhbS
6gh08+TISXuA0E7CVgjMIlbLljJmU5yWc0Aejbh6ijcPUV5ja+F/EenoJ2uf td5ZxW9+h3K3
2u9WCOCSPe5yMxwyLvYY/wBL3Y3RAm/ofhq40TXdNQWfnxWdhFatqLShdyxx BAFGd65bJMJD
RfdkDLIGDAHf7h6ijcPUVW3UbqYizuHqKNw9RVbdRuoAs7h6ikLDeOR0P9Kr 7qQt8y/Q/wBK
Qyjq3iD+zNQtLCDS73Ubm6ilmVLRoRtSMxhiTLIg6yrjGe9aFlf2uo2cd1ay h4XzgkFSCCQV
ZTgqwIIKkAggggEVzmtG/tfFGl6na6TdajBFZXVvIttJCrIzvbspPmOgIxE3 QntWJq/hq+k0
KzsLiy+327XVze3MVnFazSRzSytIoX7WPLMaiSVS2A5OwgAFhQB31vf2t3Pd wwyhpLSUQzjB
GxyiyAc9fldTx6+oNR6nqcGlWqXE4dke4gtwI8E7pZViU8kcBnBPtnr0rzW0 8MazH4cuoNQ0
37XdX/2GTUJALee4mWO1jjKAz5jaRZotx35XbIxUlzxr2Gj6ovgKw06W3nFz DqkMyxTvFvS3
S/WRQfLPljbCo+VOBjao4AoA7/cPUUbh6ivHrDwNqcdmIZoNR+0l7Rb+dri2 hW6dbqB5JkaE
LK5CxysJJWEg3cAs7Ysaza6Z4c1VxrNhp0nh43E32HSZZrWOP5obXEscUzpG ArrcA4wwMxIB
Dk0AeiyeIbBNRhsVd5J3vfsLBV4jl+zm4+YnHHlgcjPLAeuNTcPUV5D4c8Fz vYaINQ0n93JL
ZXN2zEI3lJpht/JkGQ52yggoQVKy45BcDvvDVpcadoxtLiPy/LurnyYwwISA zyGFVxwFEZQB
f4QAMDGKAOg3D1FIWG8cjof6VX3Uhb5l+h/pQA2TU4ItZttLYOZ7i3muEYY2 hY2jVgTnOcyr
jjsfxubh6iuI8Z6PqGrfafsVv5u/QNSs1+dVzNL5HlryR12Nz0GOSOKoal4W kt9Xf7JpH2zQ
h9mmudPDo326QLdLIWWRgskm57Z2aQ5bywcsygUAd1pmpwaravcQB1RLie3I kwDuilaJjwTw
WQke2OnSrm4eorxr/hCdSlji3aZfW0X78WNtavZL/Z7NdzyBizh/J+SSH5rf cw8s8EqlddoW
j6hZeKrm+ubfbZS/a/ssW9T9i3Tqz8g5k+0Eedz/AKvbsHWgDq9M1ODVbV7i AOqJcT25EmAd
0UrRMeCeCyEj2x06Vc3D1FeRX3gzVrq8kee3vnV5bk2f2WS0H2WR7y4kEpeV WaLckkJ3wguN
hyMqgq3f+F7200e4vLQpp2pSXuqyXGoyXOzybaRbsxEyZJWIO0Em1eA3zldw JoA9KuL+1tJ7
SGaULJdymGAYJ3uEaQjjp8qMefT1IqPSdTg1jRrHVLcOkF5bx3EayYDBXUMA QCRnB9TXlWhW
Ol654qXU9C8P2tvpVlcWUkkUP2VkeRVvFLqYXaMuhnhcgsGAUEDOwN0XhDw1 caB/wjxWz+zs
uitDqjeaGZ7gfZ/LDnJL7QJgvUIuVGAQKAO/3D1FIWG8cjof6VX3Uhb5l+h/ pQA2TU4ItZtt
LYOZ7i3muEYY2hY2jVgTnOcyrjjsfxNM1ODVbV7iAOqJcT25EmAd0UrRMeCe CyEj2x06Vh6w
l5beINO1i20+e/jgtbm1eC2eNZAZHhYN+8ZV2jyWB+bOWXAIyRyNxpSR6vok Gq+Gv7ZMsWr3
f2ErbyGHzbuGVS3muE3Ksm07SeScEjmgD0rU9Tg0q1S4nDsj3EFuBHgndLKs SnkjgM4J9s9e
lSXl/a6fAs11KI42ljhBwTl5HWNBx6syj2zzxXmP/CLapH9hj1LSP7X1WO60 2VNZ3xSfZ44f
s/nLvlYSjLRTvhVIPm56swFR/COsXV/cPcaQ5SdFn1OIpZpbXsyXVvMViCYe QMqThTcc4cBi
u5jQB7DuHqKpx6nBPdS29uHme3uPs9yVwBAxiEoLbiMjayD5d3Lj0YjhdH8M 31p43k1O4jvj
N9quZZLzfarDLC5fy49yp9ok2q0Y2OQgMeQSEQGn4s8JalfSa49jpyTT31xJ Os6uilkOlzWy
RsSQciU9OgEoIP39oB6luHqKNw9RXmN/4O1COa/GgWkGmyPdTQ2lxAyw+Tav p7KFBT5lj+1n
ftA+/wDPjPNa/gfQ20X7ey2l9ZW83lhYLr7InzLu3MI7VRGMhlG4ks20AgBV yAdvuHqKNw9R
VbdRupiLO4eoo3D1FVt1G6gCzuHqKNw9RVbdRuoAtAg9DRUUJzuqWkMKKKKA CiiigAooooAK
KKKACiiigDIWPb4bWeGKBrlbMNGZVyu4JxnHOM4rnXm8Vpu3Dwz8pwf3E3/x XtXTKdvhYH0s
s/8Ajlc9d3AH2gc/fH9a68Pa2yfqY1JNMbZX2urqdvHqEWhvbPKIpBbQyBxn OMFjjrXYfZLf
/nhH/wB8iuIgm36xbDPW8j/ma3fFnn/ZbDH27+z/ALX/AMTD7B5vneT5Um3b 5X73/W+TnZzj
Ofl3VGJtzKytp0HSk5K7Nr7Jb/8APCP/AL5FH2S3/wCeEf8A3yK891T+0/Il +zf8JHu/s/8A
4kO7zt32rfNj7R5fG3H2XH2r+HO/5vNqv4iuvEi6LNp1nb64dQiu9VleeBJN ojeG8a2UOPv5
3Q7Qm4Iyqp2ttB5zU9K+yW//ADwj/wC+RR9kt/8AnhH/AN8iuJ1aHWrbVr6D RDrL3KaZIlkZ
JC0KssJEeWkJicGQjliJw687oX+W54Fhvovt/nX19dWh8vyvtdnc2+1/m34+ 1SvMePL9EGBt
yxfAB1X2S3/54R/98ij7Jb/88I/++RU1FAEP2S3/AOeEf/fIo+yW/wDzwj/7 5FTUUAQ/ZLf/
AJ4R/wDfIo+yW/8Azwj/AO+RU1FAEP2S3/54R/8AfIo+yW//ADwj/wC+RU1F AEP2S3/54R/9
8ij7Jb/88I/++RU1FAEP2S3/AOeEf/fIo+yW/wDzwj/75FTUUAQ/ZLf/AJ4R /wDfIo+yW/8A
zwj/AO+RU1FAEP2S3/54R/8AfIo+yW//ADwj/wC+RU1FAFG9fTtPgWa6SOON pY4QfLzl5HWN
BwO7Mo9s88VY+yW//PCP/vkVk+LIJrnR7dIIpJXGp2DlUUsQq3cLMeOwUEk9 gCa4vV7XxJb+
Hr29s7jXJdRubvV4PLDyN5VuEu2gCIPu/OkBR8b/AJlUNtKrQB6V9kt/+eEf /fIrH1DXdB0v
UTY3YdJliWeRlspXjhjYsA8kioUjXKPyxAAUk8DNc7qdrqen6w9m1xrlxoP+ jT300bzPM7Mt
0HKNF86/vEtCUhwqg/dVWbMegahe6Trl5NqNhrNwbqyijsdtnLI0kaXV4Yke QjCP5Tw5MzKR
uy5B3GgDptQ13QdL1E2N2HSZYlnkZbKV44Y2LAPJIqFI1yj8sQAFJPAzWx9k t/8AnhH/AN8i
vKb7Q9S023bRmbUpJz4XstOSCzs2ltL+ZBcK0UsvlExoSygtviIWTO4YyPXK AIfslv8A88I/
++RR9kt/+eEf/fIqaigCH7Jb/wDPCP8A75FH2S3/AOeEf/fIqaigCjfSaXpl nJeX8lpaWseN
807LGi5IAyx4GSQPxosH07U9Otr+zSOS1uokmhfy8bkYAqcEZGQR1q9WH4Lg mtfAvh63uIpI
Z4tMtkkjkUqyMIlBBB5BB4xQBrfZLf8A54R/98ij7Jb/APPCP/vkVNRQBD9k t/8AnhH/AN8i
j7Jb/wDPCP8A75FTUUAQ/ZLf/nhH/wB8ij7Jb/8APCP/AL5FTUUAQ/ZLf/nh H/3yKx/EbGys
YHtVSJ3mCFhGp42se4PoK3qwPFv/ACDrb/r5H/oD1rRSdRJky2Maw1aOKaWX VtRt7ayjhLvN
OIo0U7lUZYqAMlsfUitOTV9Gj06xvlubmeG/iE9sttYtNJJGQDv8tIy4UBly SMAsoOCQKo+F
/wDkNN/17v8A+hJWLBYX1lo3gi5mm1nTUtNCNpcPYWP2idJWW2IjaIxSED90 +TtGCoBIyAbx
KSnZChsdmZNNxp7Leq6ag+y0eNEdZj5bSDDBSMbEY56ce4qpqGr6Npeomxu7 m5SZYlnkZbFn
jhjYsA8kixlI1yj8sQAFJPAzWfrkHiLUdK8JyJFHa60tx5t1sXdHbyGynD8/ OFG5toYhwCVJ
D/dbn9dhubu91GO2g8QRC70KCzhsns3lS7lV7pTBcTlHKjLKDIJUyHLhyCHH OWej/wBnx/8A
PRv+/af/ABNH9nx/89G/79p/8TVyigCn/Z8f/PRv+/af/E0f2fH/AM9G/wC/ af8AxNXKKAKf
9nx/89G/79p/8TVC+Q200MSMMPNEpJjTOGLZ7ewrbrH1X/j9tf8Ar4g/m9XT 1lqNbkl8thpl
nJeX99FaWseN805ijRckAZYjAySB+NUJNX0aPTrG+W5uZ4b+IT2y21i00kkZ AO/y0jLhQGXJ
IwCyg4JAro680gsL6y0bwRczTazpqWmhG0uHsLH7ROkrLbERtEYpCB+6fJ2j BUAkZAMCOzMm
m409lvVdNQfZaPGiOsx8tpBhgpGNiMc9OPcVU1DV9G0vUTY3dzcpMsSzyMti zxwxsWAeSRYy
ka5R+WIACkngZrP1yDxFqOleE5EijtdaW48262Lujt5DZTh+fnCjc20MQ4BK kh/utz+uw3N3
e6jHbQeIIhd6FBZw2T2bypdyq90pguJyjlRllBkEqZDlw5BDgA9H/s+P/no3 /ftP/iaP7Pj/
AOejf9+0/wDiauUUAU/7Pj/56N/37T/4mj+z4/8Ano3/AH7T/wCJq5RQBT/s +P8A56N/37T/
AOJohtYluZI2VZAEVhuReMlvQD0FXKij/wCP6X/rmn82oAX7Jb/88I/++RR9 kt/+eEf/AHyK
mooAh+yW/wDzwj/75FH2S3/54R/98ipqKAIfslv/AM8I/wDvkUfZLf8A54R/ 98ipqKAIfslv
/wA8I/8AvkUfZLf/AJ4R/wDfIqaigCH7Jb/88I/++RR9kt/+eEf/AHyKmooA h+yW/wDzwj/7
5FH2S3/54R/98ipqKAIfslv/AM8I/wDvkUfZLf8A54R/98ipqKAGJFHFny0V c9doxmn0UUAF
FFFABRRRQAUUUUAFFFFABRRRQBlh0j8LB5Y3liWyy8cYyzDZyByOT2rjHv7V iSdG8X8/9M1/
+LrtEOPDCn0sx/6BWJd3JAuPm/jH/s1deH5baq/zsY1HZmbpdzp0usWaNpvi KBzKDHJeIojD
c4z8x+ld/wA+o/KuIjuC+rW6k8G8j/ma6DXtQvLRtMtLAwR3Wo3ZtkmnjMiR YiklLFAylsiI
rjcMbs84wYxNuZWXT1KpO6Nfn1H5Uc+o/KvKNO8T+ItKtLuzsbCC8+wS3t7f TbY4433X12CN
0k6eQv7lju/e4Dcj5fn2LbXNdi0p7exl+26nPqupNBEbUTMtrFdOhBL3ESna zRgHcMKyqEO0
sOc0O/59R+VHPqPyryjT/FNxquvJrFnY2NrdSafKYY2YDe80WlOodiVEkmZQ iglN21Fyn3h6
Rol8+o6PBcyyQSSNuVngVlUlWKnKP80bcfNG2SjZUklckAv8+o/Kjn1H5UtF ACc+o/Kjn1H5
UtFACc+o/Kjn1H5UtFACc+o/Kjn1H5UtFACc+o/Kjn1H5UtFACc+o/Kjn1H5 UtFACc+o/Kjn
1H5UtFACc+o/Kjn1H5UtFACc+o/Kjn1H5VgeMv8AkB23/YV03/0thrm9S8a6 9pujXmrPBprQ
C41O0tYlRy262W5dJHbdjBFtsKAd9wcZ2AA9D59R+VHPqPyrjJ/EWvQa3HoE o01NQunhaK4W
J3it1kS5fYyblMpX7Iy7wY8+YDtXbhsvTk0vxJ4k1jUfENnYmTT9PihN2w2e QYbq+jeaNyd0
OfK35DZXj5iVzQB6Pz6j8qOfUflXjmpw319b3WqapplpLqFv4Ssbi6vrlfLu 9PlxdM8kCeX/
AK0MC23dF8yKMjqPZKAE59R+VHPqPypaKAE59R+VHPqPypaKAE59R+VHPqPy rA8Z/N4fSI8x
zahYwSoekkb3cSOjDurKzKQeCCQeDUfhSCGyvPEdhaRRwWdrqapb28ShY4VN rbuQijhQWd2I
HdiepNAHR8+o/Kjn1H5UtFACc+o/Kjn1H5UtFACc+o/Kjn1H5UtFACc+o/Ks LxWUGnQeYrt+
/G3Y4Qg7W7kH+Vb1YHi3/kHW3/XyP/QHrWh/ERMtjI0AFtTYW6ypL5LHc86s MblyP9X9Pyrp
vKv/APnqP++x/wDEVymi2cWoX0trM86xvbtkwTvC4w6Hh0IYdOx56dKxbK1m 1LRvAFgulabq
0DeHWmez1KUpBuVbQLJjy5AXAdgPl6O3Izg3idKgobHovlX/APz1H/fY/wDi KPKv/wDnqP8A
vsf/ABFclrOrr/YvgnV9Ms7u6je4E9vBK7PKUawuCN5+dmIBy2N7HBwHbAOH 4ph+26jrGqfZ
tKv/ALN4atbj+1kO2S15um8+0XD5bjeo8xOVT5/4hzlnpPlX/wDz1H/fY/8A iKPKv/8AnqP+
+x/8RV6igCj5V/8A89R/32P/AIijyr//AJ6j/vsf/EVeooAo+Vf/APPUf99j /wCIqhfh1lhW
bc0pni2MJBwfnx/B/St2sfVf+P21/wCviD+b1pT+Icdy15V//wA9R/32P/iK PKv/APnqP++x
/wDEVNfWcWoWclrM86xvjJgneFxgg8OhDDp2PPTpXmllazalo3gCwXStN1aB vDrTPZ6lKUg3
KtoFkx5cgLgOwHy9HbkZwcxHovlX/wDz1H/fY/8AiKPKv/8AnqP++x/8RXJa zq6/2L4J1fTL
O7uo3uBPbwSuzylGsLgjefnZiActjexwcB2wDh+KYftuo6xqn2bSr/7N4atb j+1kO2S15um8
+0XD5bjeo8xOVT5/4gAek+Vf/wDPUf8AfY/+Io8q/wD+eo/77H/xFXqKAKPl X/8Az1H/AH2P
/iKPKv8A/nqP++x/8RV6igCj5V//AM9R/wB9j/4ipLVZVuZhK2X2LzkHjLY6 AVaqKP8A4/pf
+uafzamBNz6j8qOfUflS0UgE59R+VHPqPypaKAE59R+VHPqPypaKAE59R+VH PqPypaKAE59R
+VHPqPypaKAE59R+VHPqPypaKAE59R+VHPqPypaKADnvRRRQAUUUUAFFFFAB RRRQAUUUUAFF
FFAGWuw+GFEkqwxmyG6VyAqDZyTk9BXIS3VnKzk+IPDvzHJ/0sc9f9quvVVf wsFdQymywQRk
EbK5+4sdMQTbdMsRtcAf6Onv7e1deH5ba3+VjGpa+pV02K2uNXtRFrejTyCY SeVb3IZ325PA
yc8Zrtb6xtNTs5LO/s4bu1kxvhnjWRGwcjKng8gH8q42GCzj1a2MFnbROt3G FaOJVIGTnkCu
j8SeJbDwvp0d5qDYWWUQxJ5kce9yC2N8jKi/KrH5mHTAySAYxNuZW7dSqVra D18N6EiWSLoe
nBLBy9motY8W7FtxMfHyEsAcjHODUl9oWkanFJFf6RZXcckondJ7dJA0gXYH II5baAueuMDp
WBd/EnQLLR9O1aWT/Qb3zf3v2iAeX5bbZODIDLtOR+5EmcfLnK7pLj4gaba2 95dTWOpJa2z3
cXntCoWWa3EjSRplssSsLsGxs4wWDZUc5oba6FpEcTxJpFksbxNAyLboA0ZV UKEY+6VjjXHT
CKOgGLkEMVrbx29vAkMESBI441CqigYAAHAAAAxWAfGVsHNuNN1L7e7oLeya NEluEdZGR13O
FQFYZjtkKMPLIKglQa9p4zF1qWpgWcgsLHTFu5GZo0aKZZbiOWJ2aQLkGAgE fJ8rEvgqSAdX
k+hoyfQ1wEvxItb2Iy2KzmxTT9QmvJbVoJZrV4FhYFWDtE/yzdi/zMgOMOBs X3jqw0+K7uZ7
K++wwfaVS7VYyk8sCyNLEg37wwEMvLKqnYcNyuQDp8n0NGT6GszStch1W4uL cWt3azwokvl3
UYRnhcsI5AASVDFHG1trjadyrxmPUPECWOomyj0++vZIolnuTaIrfZ4mLBWK lgz58uT5Yw7f
IeMlcgGvk+hoyfQ1zF946sNPiu7meyvvsMH2lUu1WMpPLAsjSxIN+8MBDLyy qp2HDcrmObxk
zatpVhb6bdpLc3qRSw3MapJ9nkhndJlBcbRugbKvhwFYFASoIB1eT6GjJ9DX EW3xW8N3aytA
08qr5bRiAxzvKjyxxBxHG7OuGlj+R1VznAUkEC4njJpfEFtYf2bdxotvdvfw tGsk9q8Qt3Xi
N2DhknHEe8kug4wwAB1eT6GjJ9DVDRtWTWtOS8jtp7dWwQk205BAZWV0ZkdS rAhkZhzjOQQN
CgBMn0NGT6GlooATJ9DRk+hpaKAEyfQ0ZPoaWigCKaGK4QJPAkqB1cK6hgGV gynnuGAIPYgG
q82ladPb/Z5tNtZIN8j+W8Kld0gcOcHjLB3BPfe2epqp4lvrjT9KgmtZPLkb ULKEnaDlJLqK
Nxz6qzD2zxzWXcfEDTbW3vLqax1JLW2e7i89oVCyzW4kaSNMtliVhdg2NnGC wbKgA37zStO1
FJ0vtNtbpJ0RJlnhVxIqMWQNnqAxJAPQkmq7+G9CkuLS4fQ9OeeyREtZGtYy 0CocoEOMqFPI
AxiqB8ZWwc2403Uvt7ugt7Jo0SW4R1kZHXc4VAVhmO2Qow8sgqCVBz7bUdQ8 S+I7sabrF3p0
FpZQOLVreF1+0efcxyrLlSzANAFPlyKDg7W5DUAdHd6FpF9qMOo3mkWVxfQb fJuZrdHkj2ks
u1iMjB5GOhNaGT6GvML/AMZ6jdY1G2vb6y3eH7TVLWyitVmtmml89itxMYj5 cfyIpYvEMbjk
YJHqFACZPoaMn0NLRQAmT6GjJ9DS0UARXEMV1by29xAk0EqFJI5FDK6kEEEH ggjjB9ajsrG0
0yzSzsLOG1tY87IbeNY0XJJOFGAMkk/jVDxPfXFhooktZPKmmu7W1EgUExia eOJmUHI3AOSM
gjIGQRwY/DtzdvLrFhd3Ul2dOvRbx3EqoskitBDLl9gVcgykDCjgDqckgG3k +hoyfQ0tFACZ
PoaMn0NLRQAmT6GjJ9DS0UAJk+hrC8VqG06DdIkeJwQXDEH5W4+UE/pW9WB4 t/5B1t/18j/0
B61ofxETLYyNAbydTaRJIpm8lhsRZc43LzynsPzrXu9P02+06HT7vQbK4sYN vk201sXjj2gq
u1THgYHAx0BrD0VLyS+lWwnggujbtsknhMqD50zlQyk8Z/iHrz0qqPEt9Po3 hBbrUdSt31LR
ze3Fzpun/aJ3lVYONgikCofOck7ByFAI6G8T/EFDY7GSbznieWxR3hcvEzI5 KNtK5X5ODtZh
n0YjuaoSaRpE17Fey+G9Oe7hcvFO1pl0beXyreXkHezNn1YnqTUGseIf7Lt/ DF3JqMElreXY
jnnto9yXKm1mdfLUFidzqm1VJY8KC2ecTxL4j1O01m98m81Kxe20eC8t7EWk ckBnZp8rdShH
Eafu0Ut5iKBuIbgsOcs7X7bN/wA+x/KT/wCIo+2zf8+x/KT/AOIq9RQBR+2z f8+x/KT/AOIo
+2zf8+x/KT/4ir1FAFH7bN/z7H8pP/iKoX8hllhkfbGyzxEIQ/zY34H3c8/S t2sfVf8Aj9tf
+viD+b1pT+Icdy19tm/59j+Un/xFULvT9NvtOh0+70GyuLGDb5NtNbF449oK rtUx4GBwMdAa
1b5LySzkWwnggujjZJPCZUHIzlQyk8Z/iHrz0rhB4lvp9G8ILdajqVu+paOb 24udN0/7RO8q
rBxsEUgVD5zknYOQoBHQ5iOxkm854nlsUd4XLxMyOSjbSuV+Tg7WYZ9GI7mq EmkaRNexXsvh
vTnu4XLxTtaZdG3l8q3l5B3szZ9WJ6k1BrHiH+y7fwxdyajBJa3l2I557aPc lyptZnXy1BYn
c6ptVSWPCgtnnE8S+I9TtNZvfJvNSsXttHgvLexFpHJAZ2afK3UoRxGn7tFL eYigbiG4LAA7
X7bN/wA+x/KT/wCIo+2zf8+x/KT/AOIq9RQBR+2zf8+x/KT/AOIo+2zf8+x/ KT/4ir1FAFH7
bN/z7H8pP/iKktZWluZnZNp2KNvPq3PIFWqij/4/pf8Armn82pgTZPoaMn0N LRSATJ9DRk+h
paKAEyfQ0ZPoaWigBMn0NGT6GlooATJ9DRk+hpaKAEyfQ0ZPoaWigBMn0NGT 6GlooAM+1FFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAZiK0nhlY4xmRrMBVz1JTiuZuFu5DKBY3 43Nn/Uj3966U
KX8K7BI8ZaywHjbay/J1B7H3rlJdCWLzP+Kg8QnYwH/ISfnr/hXXh0rau3yM aiTeo60tr1tW
tXayukUXKO7SR4CgZ966zVtLi1WKDN1Na3FtL51vcwFN8T7WQkB1ZTlHdfmU /eJGCARyVjaP
Y6xavHrGsTlbhYzHc3rSIwbIOVNdtfX9nplnJeX93BaWseN808gjRckAZY8D JIH41GJ+Ja30
HStbQ57UvBVvqNnPbnWtUha7tDZ30ySRO93GS5w/mRsFwZZceWEA3YAAVQsm oeC9M1HRjpc1
xdLB9ovLjcjqG3XKzrIOVxgC4kxxxhc5wc6suu6PD9h83VbGP+0MfYt1wg+0 5xjy+fnzuXpn
7w9aDrujrLNEdVsRJDE88qG4TMcaMUd2GeFVlZSTwCCDyK5zUpal4ZtNQ1Rt UF5dWt+EhWKe
AoTCY/OAZQ6spJW4lU7gRgjABGarjwXpiROqXF0skiKZZg67pJlna4SYgrtD rM0jgABDvIKl
QoXVfXdHjs7q8k1WxS1tJTBczNcIEhkBAKO2cK2SBg88iq6eKNHfUZrP7dAv lafHqXnNKgje
3cuPMVs8qNmS3QBl55oAyn8B2M8N+LvVdRuLi/S4jubqRoVdo5oY4XTCxhAM QxMCFzlOuCwM
l94H07UIru2nvr37DP8AaWS0VowlvLOsiyyodm8sRLNwzMo3nC8LizdeMdHj +zLbahYzfbLS
6ubS4a7RbaTyNu9TKM4xuySA2Ajk/drQfXdHjvLqzk1WxS6tIjPcwtcIHhjA BLuucquCDk8c
igClf2uoWmsy6ppFpaXU9zbx2863d80CosTSMhXbE5JJlfOSPurjvUb6HPqU q393dTaVfSxC
C8i026DpNEjOUXzHjDrgO/zJ5bDeeTtUjZtb+zvvP+x3cFx5ErQTeTIH8uRf vI2OjDIyDyKj
n1bTbW4lt7jULSGeK3N1JHJMqskIODIQTkIDxu6UAYV94H07UIru2nvr37DP 9pZLRWjCW8s6
yLLKh2byxEs3DMyjecLwuNC68O2V1riaw00yXkfkeWysuE8rzhwCD95biVGz ng5G1gGpg8U6
bPqmj2djdWl0mqJPJDcR3KlHWHAcIRne+5h8oxwrkn5cGxB4l0G6t4ri31vT ZoJbgWsckd0j
K8xGRGCDguRzt60AZ0Pg+0htYbNtU1GSztXgNpbNIgS2SGVJERQqAuMxIu6Q u2AcMCzE2G8L
6edWutSE90lxcvIZWjm2fI8MUTICMFR+4ibcCGDJwwBIN2HXdHuJbmKHVbGS S1lWC4RLhCYp
GbYqMAflYt8oB5J461HJ4l0GHS4dUl1vTU0+Z9kV210gidueFfOCflbgHsfS gB+j6XFo1m8C
3U1w0krzSSzFAWdjljtRVRcnk7VGTljlmYnQ3D1FVJNW02HVIdLl1C0TUJk3 xWjTKJXXnlUz
kj5W5A7H0qS1v7O+8/7HdwXHkStBN5Mgfy5F+8jY6MMjIPIoAn3D1FG4eopa KAE3D1FG4eop
aKAE3D1FG4eopaKAKWp6fBqtqlvO7qiXEFwChAO6KVZVHIPG5AD7Z6dax9Q8 F6ZqOjHS5ri6
WD7ReXG5HUNuuVnWQcrjAFxJjjjC5zg51dZ1P+yLGO58nzd93bW23dtx50yR bs4PTfnHfGOO
tB13R1lmiOq2IkhieeVDcJmONGKO7DPCqyspJ4BBB5FAFLUvDNpqGqNqgvLq 1vwkKxTwFCYT
H5wDKHVlJK3EqncCMEYAIzVOLwVb21009rrWqW3nRCK7WGSJftX72WVmZvL3 IzPNKSYymN3y
7cDGy+u6PHZ3V5JqtilraSmC5ma4QJDICAUds4VskDB55FZc3iO+m1l7XRtO tNStIrKC+edb
7Y0iStKFEQ2FHOIiQWdAdw5A5oAS/wDBtje3EpS9urOzmso9PuLC1EKwTW6G TEZyhZBiR1+R
lOOmCM10m4eorkL3xu8fn3mnWEF5pFrpUOrz3LXLRSNBJ5pHlxmM7m2wk4Zk 5IBxya7CgBNw
9RRuHqKWigBNw9RRuHqKWigClqmnwarYPaTu6DekiSRkBo5EcOjjIIyrKrYI IOMEEZFR6Tpc
WkxXH+lTXVxcy+dcXNwU3yvtVASEVVGERV+VR93JyckrrWp/2RphuhD50jSx W8UZbaGklkWN
NzYOF3OuSASBkgE8GPRdVm1IXsN3bR295Y3H2e4SKUyx7jGkgKOVUsNsiZyo 5yOQASAae4eo
o3D1FLRQAm4eoo3D1FLRQAm4eoo3D1FLRQAm4eorD8UxyTafbiKN5Ss4JEal iBtYZwK3a5/x
eobTbYMAR9pHB/3HrWh/ERMtjN8PRzW2qtLPbXMaeQy7mgcc7l9vY/lVkeH7 ODTtJtrHUNTs
ptLtPscF1DErSGHCBlYPGyHJiQk7QcrwQCQcnRyLe9llj01751t2It4BGHf5 0HG9lXgEnkjj
P0q/Brrajp2gvpuiWUl9q2n/ANoCG5n8qOKMCLcN6xsS2ZkAG0AgMcjABvE/ xNRQ2L8uiaNL
YaVYNby/YdM4htmiZ0ZPIkg2PuB3Lskbr1wMnrnPufCtncyzeZq+tGC4tFsr qBlVxcW6tKRG
7tEZOkrpuDByMEsW+atW5u4LaXRI30pUfU7gwMkmwNAfIll527gSPK28HHOQ TjnH1XxJHZ3F
5LZaTp97pdjpsWqXF0tztZoXMv8AqlEbK52wkjLqDkcjrXOWdX9ri9Jf+/L/ AOFH2uL0l/78
v/hS/Y7X/n2h/wC+BR9jtf8An2h/74FACfa4vSX/AL8v/hR9ri9Jf+/L/wCF L9jtf+faH/vg
UfY7X/n2h/74FACfa4vSX/vy/wDhWbqJaa4gkjjlZUnhLfu24AL5OMdq0/sd r/z7Q/8AfArJ
1OGJLq2RY0VGuIMqFAB5etKfxDjuav2uL0l/78v/AIVz48P2cGnaTbWOoanZ TaXafY4LqGJW
kMOEDKweNkOTEhJ2g5XggEg7N9HFaWck8OlG8kXGIIFjDvkgcF2VeOvJHT14 rn4NdbUdO0F9
N0SykvtW0/8AtAQ3M/lRxRgRbhvWNiWzMgA2gEBjkYAOYi/LomjS2GlWDW8v 2HTOIbZomdGT
yJINj7gdy7JG69cDJ65z7nwrZ3Ms3mavrRguLRbK6gZVcXFurSkRu7RGTpK6 bgwcjBLFvmrV
ubuC2l0SN9KVH1O4MDJJsDQHyJZedu4EjytvBxzkE45x9V8SR2dxeS2Wk6fe 6XY6bFqlxdLc
7WaFzL/qlEbK52wkjLqDkcjrQB1f2uL0l/78v/hR9ri9Jf8Avy/+FL9jtf8A n2h/74FH2O1/
59of++BQAn2uL0l/78v/AIUfa4vSX/vy/wDhS/Y7X/n2h/74FH2O1/59of8A vgUAJ9ri9Jf+
/L/4UkEivdSuAwXYgyyleQWz1p32O1/59of++BTYIo4ryZY0VB5aHCjHdqYF ncPUUbh6ilop
AJuHqKNw9RS0UAJuHqKNw9RS0UAJuHqKNw9RS0UAJuHqKNw9RS0UAJuHqKNw 9RS0UAJuHqKN
w9RS0UAGQehooooAKKKKACiiigAooooAKKKKACiiigDLzt8K7vSxz/45XMXV 7ExnCzwHc4I/
er7+/vXUI0sfhhZINhmWyBj8zJXcE4yB2zXKOniVdxaDwtwcN/o0vXn3+tde HTa6fNmNRJsj
tbhZdZtAskbbruMgK4Pr6V0XizQp9btbA2xzNZXf2lYvtctr5uYpIyvnRZdO JN2QDnbtPDEj
G0+fWIdWtRe22gGAzCNzaQSLIpOcEEnHWu4wPf8AOoxKamr9ug6SSWh5xrHg XWrnw5JpVm0B
jntJ4/IOr3cCW00ryO7swDtdZ8xQfNwP3ZIAEhVbGreAry88Mz6daGxiup9Q 1O8lkJKh/tMV
1HGWIXJYCeIHPQIcE4Ge/wAD3/Oq9neW2oQNNayGSNZZYScEYeN2jcc+jKw/ DjjFc5qcxqHh
a8j8R2+r6TFYrHYxWqWtk7mFG8tLuMqSqNsULdKRhW+5jABzVe18I6xZR6hL b3kCXGoRbpgk
rp5bfa5rholkC7trrcyR+aArJtDhSThe3wPf86MD3/OgDzQeANZe01pi1pFP qNvfWqxSahPd
eWs9vbormaRN7EPbD5SOFfg/KFNzWPBesalpN3o8b2KWqy6hdW1y0z75JLqO 4UI8ezCKpuj8
wZifLHyjd8vf4Hv+dGB7/nQBzEv2Xwz4hmvGt51sbjT7aztobDT55/L8h5iQ VijYIuJkC9M4
PHFU9T0KXxQNR1C1eSKC8t7BYUnWa0lL2tzLKVbKq8QbcqhwMjJYA4GezwPf 86MD3/OgDgE8
A3VxFerK8Fn9v0+/tZ8Xc966POtsisZJiGkwsBJ+5j5VAOCxsaZ4QvodasdU migt5IbtXlU6
pc3ztGsFzGMSTAfxXHCBQBhjuYkAdnDNBcoXgmSVA7IWjfcAysVYcdwwII7E Y7VJge/50Aea
Wvw1uF0620+6itJorRLa2D3F/c3QuYUuIJJP3Un7uAMsH+rUOCSo3KF+bcfw 9rFj4qvdfsEs
bmSaWUJbT3Dwjy5IbRSxcRvhg1qfl2kEPncCMHr8D3/OjA9/zoA4SPwLcQ62 suy0ktHuLW6Y
xXdzbxQtAkShEs0by2GYFKsz/LuGQwQBtzwxo15pP2oXaWKKdkUC2oJ2xrkg AsAUjyzFYcuI
9zAOVIVd/A9/zowPf86AFopMD3/OjA9/zoAWikwPf86MD3/OgBaKTA9/zowP f86AMzX9Nm1X
ToreBo1dL20uCXJA2xXEcrDgHnahA98dOtcnq3gK8vPDM+nWhsYrqfUNTvJZ CSof7TFdRxli
FyWAniBz0CHBOBnt728ttPgWa6kMcbSxwg4Jy8jiNBx6s6j2zzwKsYHv+dAH Iah4WvI/Edvq
+kxWKx2MVqlrZO5hRvLS7jKkqjbFC3SkYVvuYwAc1X0vw94k0TVLq5s00qT+ 0Iv3zzXEn+iy
Nc3M7bUEf75V+0gDLRltn8OeO3wPf86x9R8TaTpeomxvJrhJliWeRktZnjhj YsA8kiqUjXKP
yxAAUk4AzQBymofD6b7RHBYWmmzQR6PbaZaajeSn7Xp7RGUCeICIguBIjDDR /MnUcEeiVjaj
4m0nS9RNjeTXCTLEs8jJazPHDGxYB5JFUpGuUfliAApJwBmtjA9/zoAWikwP f86MD3/OgBaK
TA9/zowPf86AMzxBps2q6T5Fu0YnjuLe6jEhIV2hmSUISASoYpt3YOM5wcYM eg6feWjand34
gjutRuxcvDBIZEixFHEFDlVLZEQbO0Y3Y5xk3768ttOs5Lq7kMcKYBIBYkk4 CqoyWYkgBQCS
SAATio9N1K01a3aa0eQhHKSJLG8UkbYzh0cBlOCCAQMhlI4INAF2ikwPf86M D3/OgBaKTA9/
zowPf86AFopMD3/OjA9/zoAWsDxb/wAg62/6+R/6A9b2B7/nWF4rYpp0G0Id 04B3orj7rHow
IrWh/ERMtjK8L/8AIab/AK93/wDQkqrL4Jm/sbwvFcaZo2sT6Rpv2GS1v2Ig LFYcyqxjc5Bh
wBsGQ55GMFNNu7O2uJptTurOztI4SzzyxwxKp3KoyxUAZLY+uK15dU0OPTrG +We4mhv4hPbL
bWLTSSRkA7/LSMuFAZckgAFlBwSBV4n+JqKGxDqnhCbVdD8PaVd38lwNPcfa 7p2Iknxaywls
HcGJZ1JV8qw3BtwJBy9Z8IaxrGqz3lzZaHLdT6fHZx6gZHWawkSSY/aIFMbE NiRHC+YpDJje
cB66UnS8WDLdo6ai+y0eNEdZiY2kGGCkY2Ixz04+lVNQ1TQ9L1E2N3PcJMsS zyMlizxwxsWA
eSRYyka5R+WIACknAGa5yzpaKo/2XD/eP/fuP/4mj+y4f7x/79x//E0AXqKo /wBlw/3j/wB+
4/8A4mj+y4f7x/79x/8AxNAF6sfVf+P21/6+IP5vVr+y4f7x/wC/cf8A8TWb qsf2RPLj2kF0
OWiQ9pPbHatKXxIcdzoK4SXwTN/Y3heK40zRtYn0jTfsMlrfsRAWKw5lVjG5 yDDgDYMhzyMY
O+62Vro6ahezeWnlozFYUJLNgBVUKSzEkAKMkkgAE4qk2taCLdJRNdu7uyfZ o9Nd7hSoBO6A
ReYoAdDkqBh0P8S5hqzsIbqnhCbVdD8PaVd38lwNPcfa7p2IknxaywlsHcGJ Z1JV8qw3BtwJ
By9Z8IaxrGqz3lzZaHLdT6fHZx6gZHWawkSSY/aIFMbENiRHC+YpDJjecB66 UnS8WDLdo6ai
+y0eNEdZiY2kGGCkY2Ixz04+lVNQ1TQ9L1E2N3PcJMsSzyMlizxwxsWAeSRY yka5R+WIACkn
AGaQHS0VR/suH+8f+/cf/wATR/ZcP94/9+4//iaAL1FUf7Lh/vH/AL9x/wDx NH9lw/3j/wB+
4/8A4mgC9UUf/H9L/wBc0/m1Vv7Lh/vH/v3H/wDE1JawLBczRqeNit90L1Le gFMC5RSYHv8A
nRge/wCdIBaKTA9/zowPf86AFopMD3/OjA9/zoAWikwPf86MD3/OgBaKTA9/ zowPf86AFopM
D3/OjA9/zoAWikwPf86MD3/OgBaKMYooAKKKKACiiigAooooAKKKKACiiigD MU7fCwPpZZ/8
crnru4A+0Dn74/rVybWltdHFu9m06LaKGVHwzgxgkD35x1rmH1JmJJ0DxTz/ ALQrvoUKnLe3
4r/M5pzjJ2TNKCbfrFsM9byP+ZrV8dJqcmk2i6fPPBCbsfbZIIZpXWHy3xhY GWU/vPK/1bA9
zldwrmrPU7ePULZ5dG12ErKCj3bjyw3bP8q67/hJD/z6j/v5/wDWpV8PVlJW j+K/zCFWEFaT
/M5a3TU41t11efxHOotF/sySxhmidpvNm/1ihmA+T7Nj7WxHUvg+aKy9a/4S Cy0e4FlDqVnc
W9xqV1ZNBaXc5uZmu52VCkLqigARMGmV0YS8DCtnvf8AhJD/AM+o/wC/n/1q P+EkP/PqP+/n
/wBasfqtXt+RX1ml3MK4GpG98RIsniBQyE+aiMyoC4ACpkBgEDEG2ZZCjMrg TqjN1HhwzN4f
s2nju45ChOy7cvIoycAsQGIxjBcCQjG8B91VP+EkP/PqP+/n/wBase+t/Dup 3kl5f+FdJu7q
TG+a4to5HbAwMsVycAAfhR9Vq9vyD6zS7mdaw+JP+EovpZb7VfO8273W9vZy bfs+JPI2SzS/
ZN2PII2Jv3cPx5pqxo91qenS6ddyW+uXNiIru3ERSZzLMzQGIhJf3qK2ybDT nEZZl8zYUZuh
/wCEkP8Az6j/AL+f/Wo/4SQ/8+o/7+f/AFqPqtXt+QfWaXc4LwvPqkxiSWXx A/iCG40xGWZr
owJD9mtGuRJu/cB9rTkh/n3EEfMVo0+z8UTWYjvNQ1mS4mezTU4ora7g2SG6 g83ZM0xGAnng
m2VY9uScARiu5j12KF5nisI0eZ98rKQC7bQoLccnaqjJ7KBUn/CSH/n1H/fz /wCtR9Vq9vyD
6zS7nHXFlrGmwTWVm99Ddapd6xZRoJ3VUuLhzPbzgk7RGkMbMTHkqzMApcuK jhn1m5S/fw9L
rMuuC91VJWuGna1EatcrAE879xkSC2GE5ABB+XfXW/2raf2j/aP9lW/27yvI +04HmeXnds3Y
ztzzjpmpIdditkKQWEcSF2cqhCgszFmPA6liST3JJ70fVavb8g+s0u5yVtDq sOh35+3a5d2f
mwlVFnfW53DeXUmSWS82t+6BaIbVO07XXzlr0iw83+zrbz/P87yk3/aNnmbs DO/y/k3Z67fl
z04rI/4SQ/8APqP+/n/1qP8AhJD/AM+o/wC/n/1qPqtXt+QfWaXc36KwP+Ek P/PqP+/n/wBa
j/hJD/z6j/v5/wDWo+q1e35B9ZpdzforA/4SQ/8APqP+/n/1qP8AhJD/AM+o /wC/n/1qPqtX
t+QfWaXc36KwP+EkP/PqP+/n/wBaj/hJD/z6j/v5/wDWo+q1e35B9Zpdzfor A/4SQ/8APqP+
/n/1qP8AhJD/AM+o/wC/n/1qPqtXt+QfWaXcf4sgmudHt0giklcanYOVRSxC rdwsx47BQST2
AJri9XtfElv4evb2zuNcl1G5u9Xg8sPI3lW4S7aAIg+786QFHxv+ZVDbSq12 P/CSH/n1H/fz
/wCtR/wkh/59R/38/wDrUfVavb8g+s0u5z2p2up6frD2bXGuXGg/6NPfTRvM 8zsy3Qco0Xzr
+8S0JSHCqD91VZsx6BqF7pOuXk2o2Gs3BurKKOx22csjSRpdXhiR5CMI/lPD kzMpG7LkHca6
X/hJD/z6j/v5/wDWo/4SQ/8APqP+/n/1qPqtXt+QfWaXc4K+0PUtNt20Zm1K Sc+F7LTkgs7N
pbS/mQXCtFLL5RMaEsoLb4iFkzuGMj1ysD/hJD/z6j/v5/8AWo/4SQ/8+o/7 +f8A1qPqtXt+
QfWaXc36KwP+EkP/AD6j/v5/9aj/AISQ/wDPqP8Av5/9aj6rV7fkH1ml3N+i sD/hJD/z6j/v
5/8AWo/4SQ/8+o/7+f8A1qPqtXt+QfWaXcf4tgmn0JTDFJKYL2zuXWNSzeXF cxSOQo5YhUY7
RknGACSBUfhgPLc69qHkTxW9/qCzW/nwtE7IttBESUcBl+eNx8wGcZHBBK/8 JIf+fUf9/P8A
61H/AAkh/wCfUf8Afz/61H1Wr2/IPrNLub9FYH/CSH/n1H/fz/61H/CSH/n1 H/fz/wCtR9Vq
9vyD6zS7m/RWB/wkh/59R/38/wDrUf8ACSH/AJ9R/wB/P/rUfVavb8g+s0u5 v0Vgf8JIf+fU
f9/P/rUf8JIf+fUf9/P/AK1H1Wr2/IPrNLub9YHi3/kHW3/XyP8A0B6P+EkP /PqP+/n/ANas
rX9bS6s4kltXwJQRsmCnO1vVT61pRw1VTTt+QpYilbcXwv8A8hpv+vd//Qkr FgsL6y0bwRcz
TazpqWmhG0uHsLH7ROkrLbERtEYpCB+6fJ2jBUAkZANjSdUWG+Z4IJ1k8sjL XCkYyP8Apn9K
2/7euv7jf9/V/wDjdXiMPVlO6X5ChiKaW5U1yDxFqOleE5EijtdaW48262Lu jt5DZTh+fnCj
c20MQ4BKkh/utz+uw3N3e6jHbQeIIhd6FBZw2T2bypdyq90pguJyjlRllBkE qZDlw5BDjq/7
euv7jf8Af1f/AI3R/b11/cb/AL+r/wDG6w+q1exX1ml3Ooorl/7euv7jf9/V /wDjdH9vXX9x
v+/q/wDxuj6rV7B9ZpdzqKK5f+3rr+43/f1f/jdH9vXX9xv+/q//ABuj6rV7 B9ZpdzqKwte6
j/ej/lJVT+3rr+43/f1f/jdUr/WvMTE8EjNuUgiZR2fH8HuaunhqqktPyHHE 0r7nSJdfYtAg
uTbzzrHDGWSBN77cDJC9WwMnAyxxgAnAPG2uqXumQ3SLFrJTU71pBqz6VLJP 5aQwoXeFIvkl
LAogaNE2x7yHxiS7F4plhiSJIZAiKFUecvQdP+WdP/4S2f8A54yf9/V/+N05 YOu23b8UN4in
3DXNMuTpXhO38MxyWyWtxiAyxOPIiFlOi796koeVUM6ttZhlW+6ef12G5u73 UY7aDxBELvQo
LOGyezeVLuVXulMFxOUcqMsoMglTIcuHIIcdB/wls/8Azxk/7+r/APG6P+Et n/54yf8Af1f/
AI3U/Uq/8v4oXt6fc7OiuM/4S2f/AJ4yf9/V/wDjdH/CWz/88ZP+/q//ABuj 6lX/AJfxQe3p
9zs6K5VPEFzJGrhHAYZGZV/+N07+3rr+43/f1f8A43U/Vavb8hfWKXc6ioo/ +P6X/rmn82rn
P7euv7jf9/V/+N0+DxA6TSF4CzlV5MgPHOOiij6rV7fkH1ml3OnorA/4SQ/8 +o/7+f8A1qP+
EkP/AD6j/v5/9aj6rV7fkH1ml3N+isD/AISQ/wDPqP8Av5/9aj/hJD/z6j/v 5/8AWo+q1e35
B9ZpdzforA/4SQ/8+o/7+f8A1qP+EkP/AD6j/v5/9aj6rV7fkH1ml3N+isD/ AISQ/wDPqP8A
v5/9aj/hJD/z6j/v5/8AWo+q1e35B9ZpdzforA/4SQ/8+o/7+f8A1qP+EkP/ AD6j/v5/9aj6
rV7fkH1ml3N+isD/AISQ/wDPqP8Av5/9aj/hJD/z6j/v5/8AWo+q1e35B9Zp dzforA/4SQ/8
+o/7+f8A1qP+EkP/AD6j/v5/9aj6rV7fkH1ml3N+iqGmakdQ83MXl7MfxZzn P+FX6xlFwfLL
c1jJSV0FFFFSUFFFFABRRRQAUUUUAFFFFAHD3BwIz6QRf+i1q1d3JAuPm/jH /s1On0qWbTVu
jPBFD9lRmeV9oQCMZJPQAYrDlu4pS5OueGPmOT/p/WvSVpxjbWyOJRkpS03Y /Urgu20nIN1F
/wChGtG1hjlaQyvtRE3HnGeQOuD6+hrJgtRqV5DBDrOgyyGUOI7e83u+3J4H fjNdKmhX8Th4
5Y1YdCrkH+Vac8YLlbsZypzcr2uVXtoI8f62QSPtTZwRwp6EfN972zj34dDZ wySpCS4bEbM2
RghivAGOPvdcnpVoaLqK+Zi4QeZ9/EjfN168c/8A16BouohFQXCbUO5QJGwD 6jj/ADmp9rG3
xC9lL+Upi2tzbh/MYSOjOi8kgAnjAXnp1yPpxzBbRLNOEdtq4LE+wBP9K000 W/RPL82MxE5M
e9trfUfgKc+i3RwY0tomU5DI75/XNP20FdcwvYzdnylGS3to0MwLyRfKAFOO Tu7lefu+nf2q
W4t4x5dud5kjjkw4PHys56Y749e9WBo+prK0ouVEhGC4kbJ/HHsKT+xdR8ny ftCeV/c8xsev
TFL2sP5v6/r7yvZy/lILizgRpd0zmUmRlzkk7Sw5AXn7vXI/TlqQQJdSR+XI wiEiuSQQ2Fbk
cfKeOOv6Vbk0jUZDLmaMLI5dkV22kk56Ypp0XUTszcIfL+5+8b5fpxx0FJVY 2s5A6cr6RMai
tb/hHrz+/D/30f8ACj/hHrz+/D/30f8ACtvb0+5l7Cp2Mmitb/hHrz+/D/30 f8KP+EevP78P
/fR/wo9vT7h7Cp2Mmitb/hHrz+/D/wB9H/Cj/hHrz+/D/wB9H/Cj29PuHsKn YyaK1v8AhHrz
+/D/AN9H/Cj/AIR68/vw/wDfR/wo9vT7h7Cp2Mmitb/hHrz+/D/30f8ACj/h Hrz+/D/30f8A
Cj29PuHsKnYyaK1v+EevP78P/fR/wo/4R68/vw/99H/Cj29PuHsKnYo2f+vb /rlJ/wCgNViO
ygkmSINJu2xuxyMfNtBA/wC+s5/DHepxoF6pyskQOCOGP+H+c0o0TUFbcsyB sAZDnPHTt7D9
KzlVg3dSLjSmlZxKa28DQmceYY1BypIBbBUZzjj7/Tnp1qWQy29tDHbu+JJC dg53ZVCAR364
96nTRNQjIKTIpUkja5GM9cce1OGj6mFdRcrtcksBI2Gz1zxzSdWF9ZXGqc7f CMiKIyxRSuI2
u3VUXlJB8uAxz0/A9ayK2V0XUY42jS4RUbOVEjAH8MUz/hHrz+/D/wB9H/Cn CrTjf3hTp1Jf
ZMmitb/hHrz+/D/30f8ACj/hHrz+/D/30f8ACtPb0+5HsKnYyaK1v+EevP78 P/fR/wAKP+Ee
vP78P/fR/wAKPb0+4ewqdijZ/wDHwT3WN2B9CFJB/Oi6YulvIxLO0ZLMeSfm Ycn6AVfXQL1G
DLJEGByCGOR+lD6FfyOXeWN2PUs5JP6VHtqfNfmK9lU5bWMiitb/AIR68/vw /wDfR/wo/wCE
evP78P8A30f8Kv29PuT7Cp2Mmitb/hHrz+/D/wB9H/Cj/hHrz+/D/wB9H/Cj 29PuHsKnYyaK
1v8AhHrz+/D/AN9H/Cj/AIR68/vw/wDfR/wo9vT7h7Cp2Mms/V/+PeL/AK6f 0NdN/wAI9ef3
4f8Avo/4Vl65ok8FpE0s8CDzQATvOTtbjhSaqnXp8y1E6NS2xi6Q5j1DcoUk Rt95Qw6jsa6t
2Ec1/J5skTfaMB4xlsHfx1HHH6Cue0vTZGvD5VxBK/ln5VWXOMjnlPp+dbq2 OpRyNIj7XbOW
Hmgn8dlLEVKbluXTp1EthsMJ869hldFIXazAYGfMXp0H8h9KntTsjhi3Sx7r ll8o9G+58r9P
p0Pfiq40y+UMAFAIwcCTkf8AfHsKeLPU1RkEhCEYKgy4Ixj+56ACsZTg/tFx hNfZM+irn9lX
n91P++ZP/iKP7KvP7qf98yf/ABFa+3p9zL2FTsU6Kuf2Vef3U/75k/8AiKP7 KvP7qf8AfMn/
AMRR7en3D2FTsU6o3/UfVf5NW1/ZV5/dT/vmT/4iql7pE+zdJLDHhlGGEno3 +xn1qoV6fNuN
UKl9jHgaVJQ8OfMUEggZIwOT7YHOe2M1qyyzgxTxXUscbQgyXR4kf53AB5zn jAXJyFBOAOEi
0C++SaGWPsyOqy/UEHZVhdK1tJHkW9cO+N7BpgWx0ydvNOdak3ujWNOa6EZn 81o1jXyree2u
JWgU/JnMpGR0JGFwf9kelVY4Vl0VGJJZJZmCL1Pyx8/QdT3/AAyRbOi6uY5I zckpI251/e4Y
+pGzk8Cmr4f1JNm2VRsbcuBKNp9R8nB4H6VKq0ltJf1cbhN9BbuTfZyxedLJ stIG8px8kfEf
zLyeecdB948+uHW7JourywrDJcl4k+6jeaVGOBgbKi/4Rq+/vR/98S//ABFX TrUoq3MiZU5t
7Dbb/j1i/wBwfyqWrMej3scSJhDtUDO2TnH/AACn/wBlXn91P++ZP/iKh16d 9zP2NTsU6Yv+
vf8A3V/mav8A9lXn91P++ZP/AIinwaJdyyyHdECFHB3D19VFL29PuL2FTsUa K1v+EevP78P/
AH0f8KP+EevP78P/AH0f8KPb0+4ewqdjJorW/wCEevP78P8A30f8KP8AhHrz +/D/AN9H/Cj2
9PuHsKnYyaK1v+EevP78P/fR/wAKP+EevP78P/fR/wAKPb0+4ewqdjJorW/4 R68/vw/99H/C
j/hHrz+/D/30f8KPb0+4ewqdjJorW/4R68/vw/8AfR/wo/4R68/vw/8AfR/w o9vT7h7Cp2Mm
itb/AIR68/vw/wDfR/wo/wCEevP78P8A30f8KPb0+4ewqdjJorW/4R68/vw/ 99H/AAo/4R68
/vw/99H/AAo9vT7h7Cp2LHhv/l6/4B/Wt6szSNPmsPO80od+3G056Z/xrTrz MRJSqNo9GhFx
ppMKKKKxNQooooAKKKKACiiigAooooAy1VX8LBXUMpssEEZBGyufuLHTEE23 TLEbXAH+jp7+
3tXQorSeGVjjGZGswFXPUlOK5m4W7kMoFjfjc2f9SPf3rqoTst7GNRO+iGww WcerWxgs7aJ1
u4wrRxKpAyc8gV0fiTxLYeF9OjvNQbCyyiGJPMjj3uQWxvkZUX5VY/Mw6YGS QDzVpbXratau
1ldIouUd2kjwFAz711mraXFqsUGbqa1uLaXzre5gKb4n2shIDqynKO6/Mp+8 SMEAicRLmktb
6DpJpamJH8QdKuLAX9pb3d1aR25uryaHyytnEHdC7nf84DQzf6rzM+WSMgqW k/4Tqwi8+a9s
r6ysIpbqFb6ZY2jle38wyBVR2k6QysNyjIT1IBfdeD7S7Rkl1TUcXFv9lv8A MiMb6Lc7FJCy
EoMyS/6ry8ByBgKoWnZ+B4pYLqHW76a9tZLu+mjsQyLDELh5hkMqLJu8qZ1O WIBZsdFI5zUX
S/iNpOsT29tZwTzXU13HbeTDPbzeWHSRxIzxysm3bDLkBi/y/d5XNfUviNax XF5YafB52p2l
3DF9mE8EpmQ3UUEm3ZKdjfvBgS7OWHHytjbg8OKt1aXd7rGo39xaXHnxvcPG AP3Use3ZGioB
iVzkAMTjJIUAZ6+A7FTCrarqLwWlv9nsIGaHbZKJIpEKERhmKNbxY8wvnb82 7JyAKPGtlbxX
TeRqV3HZvcSX0+yIfZIUnmj3sNylkBhl2hA77Y/mG4jdcsPF1nf6itqtnfRI 93PYx3M0QWOS
4hMm6Nfm3H5YnYNjZgY3B8qK0vgfTnW5jS+vYYb3zlvo0aMi7iklllMTkoSq gzzAFCrYbliQ
CLFxoAtLO2bTgLi6stQn1CCO5uPKR5JjNvDMsbEKBPJgBc/KoJ6mgCz4k8S2 HhfTo7zUGwss
ohiTzI497kFsb5GVF+VWPzMOmBkkA8/cfFfwxbQWkzXGY54jNIfOhXyUDtGT 80g83DRyD9z5
mdnGQybtd7HU9aiX+1orfS7i1lE1nc6be/aHR9roxxLCq/cZl5VvvE8EA0P4 WiMqyx6zqkUz
xCG7lSdN92gZ2AdipMeDJLjyjHt34GAqhQBkvjXTYpp7fyLtriB3jlhVF3pJ 5ywxIw3fIZmd
WjLYDLliQAar6r4/0/RLe3OpWV3Z3c7uq2l1LbwMAgUswkklWJh+8T7rsfmI xlXCzy+C9Mkm
nuPtF0txO7ySzK673k85ZonY7fnMLIFjDZCrlSCCakfwxu8mca9qi6lF5g/t DdC0jI+zcmxo
zEq/uo/uovKZzlnLAEFp46sL6cNb2V8+mmW3h/tLbGId86RPENpfzfm8+Ifc 4Lc4AJGfonjo
3mnadPdWV8+qX+n2cyafCsIR3lE7ZjYvxlYJH+dxhVQcOSpt2ng8x6tfzXOq XTafJewXUNj5
iurmGGBUeV2QylxJDu4kwdq5zlgZE8D6db+S1rfXtvNaxQw2kyNGWtki88IF DIQ2EuJI/nDZ
UA/eG6gBjfEDTVM4FjqTC1t/tN6ywrttI1kljlLtuwTG0Dgqu4tjKBwCRsWG uQ6hql5Yx2t2
n2VyhmeMBHZdu4cElSNykBwu8MGTcvzVnL4L0xbDVbT7RdEapZGzupC67m3P O7yD5cB2a4lY
8bRwAoAxWhZ6LBZ6zdamLu6lknTYI5ZAVjXcWIBxuYbixActsywTYpIIBq0U m4eoo3D1FAC0
Um4eoo3D1FAC0Um4eoo3D1FAGR4lvrjT9KgmtZPLkbULKEnaDlJLqKNxz6qz D2zxzWXcfEDT
bW3vLqax1JLW2e7i89oVCyzW4kaSNMtliVhdg2NnGCwbKjf1PT4NVtUt53dU S4guAUIB3RSr
Ko5B43IAfbPTrWPqHgvTNR0Y6XNcXSwfaLy43I6ht1ys6yDlcYAuJMccYXOc HIAp8ZWwc240
3Uvt7ugt7Jo0SW4R1kZHXc4VAVhmO2Qow8sgqCVBz7bUdQ8S+I7sabrF3p0F pZQOLVreF1+0
efcxyrLlSzANAFPlyKDg7W5DVr6l4ZtNQ1RtUF5dWt+EhWKeAoTCY/OAZQ6s pJW4lU7gRgjA
BGapxeCre2umntda1S286IRXawyRL9q/eyyszN5e5GZ5pSTGUxu+XbgYAOYv /Geo3WNRtr2+
st3h+01S1sorVZrZppfPYrcTGI+XH8iKWLxDG45GCR6hXNX/AINsb24lKXt1 Z2c1lHp9xYWo
hWCa3QyYjOULIMSOvyMpx0wRmuk3D1FAC0Um4eoo3D1FAC0Um4eoo3D1FAGR 4nvriw0USWsn
lTTXdraiQKCYxNPHEzKDkbgHJGQRkDII4Mfh25u3l1iwu7qS7OnXot47iVUW SRWghly+wKuQ
ZSBhRwB1OSb+qafBqtg9pO7oN6SJJGQGjkRw6OMgjKsqtggg4wQRkVHpOlxa TFcf6VNdXFzL
51xc3BTfK+1UBIRVUYRFX5VH3cnJySAaNFJuHqKNw9RQAtFJuHqKNw9RQAtF JuHqKNw9RQAt
YHi3/kHW3/XyP/QHre3D1FYfimOSbT7cRRvKVnBIjUsQNrDOBWtH+IiZbGDo qXkl9KthPBBd
G3bZJPCZUHzpnKhlJ4z/ABD156VVHiW+n0bwgt1qOpW76lo5vbi503T/ALRO 8qrBxsEUgVD5
zknYOQoBHQ6fh6Oa21VpZ7a5jTyGXc0Djncvt7H8qsjw/ZwadpNtY6hqdlNp dp9jguoYlaQw
4QMrB42Q5MSEnaDleCASDeJ1qaChsJrHiH+y7fwxdyajBJa3l2I557aPclyp tZnXy1BYnc6p
tVSWPCgtnnE8S+I9TtNZvfJvNSsXttHgvLexFpHJAZ2afK3UoRxGn7tFLeYi gbiG4LDpJdE0
aWw0qwa3l+w6ZxDbNEzoyeRJBsfcDuXZI3XrgZPXOfc+FbO5lm8zV9aMFxaL ZXUDKri4t1aU
iN3aIydJXTcGDkYJYt81c5Z19FQfa4vSX/vy/wDhR9ri9Jf+/L/4UAT0VB9r i9Jf+/L/AOFH
2uL0l/78v/hQBPWFr3Uf70f8pK1vtcXpL/35f/CsnWA1wN0UUrAMmcRtngSZ 4x7itKXxocdy
4kNxPoEEVrdfZZnhjAmEYcoMDcVB43YzgkEA4JDAYPM2l/e3elXss/iS+tLG yuzElybKNb6c
NHEVV42i+Vt8jqEEIdx5RXrmTodqXGiRWjy3ltIIkHmwIyvGy4IIOCDgjoQV OCCCCQcZ/C8B
nhuo9c1qK+SWSeS6EETNNIyJHvZGhKBljjCAoqkKW67mzMviYnuSahr99pOn +FLnWGjsp7u4
WLUYYl3gubSZzEgG4k+aqhQpJY4AznnH8S+I9TtNZvfJvNSsXttHgvLexFpH JAZ2afK3UoRx
Gn7tFLeYigbiG4LDqL3TbHUodPi1Brm7Fk5c+db5FwTDJC3mKECkFZHJAAGf bisu58K2dzLN
5mr60YLi0WyuoGVXFxbq0pEbu0Rk6Sum4MHIwSxb5qkDr6Kg+1xekv8A35f/ AAo+1xekv/fl
/wDCgCeioPtcXpL/AN+X/wAKPtcXpL/35f8AwoAnqKP/AI/pf+uafzam/a4v SX/vy/8AhSQS
K91K4DBdiDLKV5BbPWgC1RSbh6ijcPUUALRSbh6ijcPUUALRSbh6ijcPUUAL RSbh6ijcPUUA
LRSbh6ijcPUUALRSbh6ijcPUUALRSbh6ijcPUUALRRkHoaKACiiigAooooAK KKKACiiigAoo
ooAywpfwrsEjxlrLAeNtrL8nUHsfeuUl0JYvM/4qDxCdjAf8hJ+ev+FdXnb4 V3eljn/xyuYu
r2JjOFngO5wR+9X39/euzDSkl7rMKrsxljaPY6xavHrGsTlbhYzHc3rSIwbI OVNdtfX9npln
JeX93BaWseN808gjRckAZY8DJIH41wtrcLLrNoFkjbddxkBXB9fSui8WaFPr drYG2OZrK7+0
rF9rltfNzFJGV86LLpxJuyAc7dp4YkRim3NX7FUXeJof27o//QVsf+PT7d/x 8J/x7/8APbr/
AKv/AGunvVMeKdNn1TR7OxurS6TVEnkhuI7lSjrDgOEIzvfcw+UY4VyT8uDz Y8A3X9n38AeC
L7RFZuscd3OT5sN5NdOpmYmT5jKq+aPmzuYIvC0J4BuriK9WV4LP7fp9/az4 u5710edbZFYy
TENJhYCT9zHyqAcFjzGp1kHiXQbq3iuLfW9NmgluBaxyR3SMrzEZEYIOC5HO 3rUkOu6PcS3M
UOq2MklrKsFwiXCExSM2xUYA/Kxb5QDyTx1rl9M8IX0OtWOqTRQW8kN2ryqd Uub52jWC5jGJ
JgP4rjhAoAwx3MSAMu1+GtwunW2n3UVpNFaJbWwe4v7m6FzClxBJJ+6k/dwB lg/1ahwSVG5Q
vzAHcSeJdBh0uHVJdb01NPmfZFdtdIInbnhXzgn5W4B7H0qxJq2mw6pDpcuo WiahMm+K0aZR
K688qmckfK3IHY+lc2/h7WLHxVe6/YJY3Mk0soS2nuHhHlyQ2ili4jfDBrU/ LtIIfO4EYOe/
gyaw1N7ySKCWxEtteSfZri6iSE28cShI7GIlJOYAVyxI3AbX2AMAd5PPDa28 txcSxwwRIXkk
kYKqKBkkk8AAc5rH/wCEp01720WC6tJtPuLK6vDqCXKmJFgeJW+YcY/eHJzx sP4Z+rT23jLS
Z9Ksk1KGdXhulN1Y3dkreVMkmwSsilCxUDcuWXJYA7cVl2/gG6Oo21+7wWk0 Xnzbftc99icm
18syNMczKBbHOdm35NuGQSAA7STVtNh1SHS5dQtE1CZN8Vo0yiV155VM5I+V uQOx9Kjl13R4
LNryXVbGO1WKOdpnuECCOQkRuWzjaxBAPQ44rk7rwtd/23caxeQRvBNcW+o3 CxahduIHhSLK
JbRgLcHMIKucHLD5G2BWr6V4U1IeH47i3Ea3kSRWtgtxut5IrW3My27l8OUn Kyl3zGVIJiaM
AtQB6JRVewtvsenW1rtgXyYkjxbxeVGMAD5Eydq8cLk4HGTVigAooooAKKKK ACiiigAooooA
z9Z1P+yLGO58nzd93bW23dtx50yRbs4PTfnHfGOOtB13R1lmiOq2IkhieeVD cJmONGKO7DPC
qyspJ4BBB5FR6/ps2q6dFbwNGrpe2lwS5IG2K4jlYcA87UIHvjp1rk9W8BXl 54Zn060NjFdT
6hqd5LISVD/aYrqOMsQuSwE8QOegQ4JwMgHYPrujx2d1eSarYpa2kpguZmuE CQyAgFHbOFbJ
AweeRWXN4jvptZe10bTrTUrSKygvnnW+2NIkrShRENhRziIkFnQHcOQOap6h 4WvI/Edvq+kx
WKx2MVqlrZO5hRvLS7jKkqjbFC3SkYVvuYwAc1X0vw94k0TVLq5s00qT+0Iv 3zzXEn+iyNc3
M7bUEf75V+0gDLRltn8OeACxe+N3j8+806wgvNItdKh1ee5a5aKRoJPNI8uM xnc22EnDMnJA
OOTXYV53qHw+m+0RwWFpps0Eej22mWmo3kp+16e0RlAniAiILgSIww0fzJ1H BHolABRRRQAU
UUUAZ+tan/ZGmG6EPnSNLFbxRltoaSWRY03Ng4Xc65IBIGSATwY9F1WbUhew 3dtHb3ljcfZ7
hIpTLHuMaSAo5VSw2yJnKjnI5ABJ4g02bVdJ8i3aMTx3FvdRiQkK7QzJKEJA JUMU27sHGc4O
MGPQdPvLRtTu78QR3Wo3YuXhgkMiRYijiChyqlsiINnaMbsc4yQDYooooAKK KKACiiigArn/
ABeobTbYMAR9pHB/3HroKwPFv/IOtv8Ar5H/AKA9a0P4iJlsc/o5Fveyyx6a 98627EW8AjDv
86DjeyrwCTyRxn6Vfg11tR07QX03RLKS+1bT/wC0BDcz+VHFGBFuG9Y2JbMy ADaAQGORgAs8
L/8AIab/AK93/wDQkqrL4Jm/sbwvFcaZo2sT6Rpv2GS1v2IgLFYcyqxjc5Bh wBsGQ55GMHTF
fxBQ2OhubuC2l0SN9KVH1O4MDJJsDQHyJZedu4EjytvBxzkE45x9V8SR2dxe S2Wk6fe6XY6b
FqlxdLc7WaFzL/qlEbK52wkjLqDkcjrU+qeEJtV0Pw9pV3fyXA09x9runYiS fFrLCWwdwYln
UlXyrDcG3AkHL1nwhrGsarPeXNloct1Pp8dnHqBkdZrCRJJj9ogUxsQ2JEcL 5ikMmN5wHrmL
O5+x2v8Az7Q/98Cj7Ha/8+0P/fAqaigCH7Ha/wDPtD/3wKPsdr/z7Q/98Cpq KAIfsdr/AM+0
P/fArF1uGKMBEjRVLRkgKAOkldBWFr3Uf70f8pK0pfGhx3Jli8rQoZbbToru 5MMYSMlUDMcD
LMRwozkkAnAOAxwDmQajqF4Li2tfDmntqFncGC7El5tt0PlxyDbJ5RdiVlT/ AJZgZV8kYXfs
p9s/sCA2HkG6EMZRZ87GwASpI5XIyN2Dtzna2Np5UeGtet7IWltYaMNMuLh5 rjSEvHhgiXZG
qxIwhO6JmWSR12JuZ8Hcu8PMviYPc2YtZ0+5tPDd3b6cpg1x1EfmKqtErW8k 4JAyCcR7cZ75
zxzn6r4kjs7i8lstJ0+90ux02LVLi6W52s0LmX/VKI2VzthJGXUHI5HWr3iL w7N4ntNHhuzH
AILgzXaxSlsZt5YyqErhxukXIddrKCGUglTiaz4Q1jWNVnvLmy0OW6n0+Ozj 1AyOs1hIkkx+
0QKY2IbEiOF8xSGTG84D1Ijufsdr/wA+0P8A3wKPsdr/AM+0P/fAqaigCH7H a/8APtD/AN8C
j7Ha/wDPtD/3wKmooAh+x2v/AD7Q/wDfApsEUcV5MsaKg8tDhRju1WKij/4/ pf8Armn82oAn
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAzEa
WPwwskGwzLZAx+ZkruCcZA7ZrlHTxKu4tB4W4OG/0aXrz7/WurU7fCwPpZZ/ 8crnru4A+0Dn
74/rXXh7W2T9TGpJpkWnz6xDq1qL220AwGYRubSCRZFJzggk4613GB7/AJ1w cE2/WLYZ63kf
8zW74x8/+w8w/biBKpdbPzcsoydrGH98qk4G6IFlJUlWQOpjE25lZW06DpSc ldm/ge/51XsL
y21PTra/s5DJa3USzQvgruRhlTg4I4PeuQtPtn9vD+0v+Ej+3ebb/YtmfL+z +VF5nneX/ou7
f9o3Z+fH+r/5ZVh6fpuvaR4Y8OwW7ayVn0eE6mjFy0QSS0DIigfunWBrlQIw sjbc/M6g1zmp
6nge/wCdZ8WtadPrEukx3Ja+i374trDG1YmbnGOBcRHr/F7HHEL9p88fbP8A hI/+EW82f7L5
X237Xu2W+zfs/wBJ27/tn3/l+728useysL6PxBDeeK7TXFkeKT7RNpsdyC1w bTTQ3zWn8JaO
YcfJlD3FAHr+B7/nVe9vLbT4FmupDHG0scIOCcvI4jQcerOo9s88CuAsv+Ek 8+z/ALV/tX/h
IfNsNnleZ9k+z7IPtW/y/wDR9277X9/5/u7f+WdZ8ltr93p9hFbrqpv/APQ3 1c30U8sKXy3l
qwaNXIUxri5Y+QQm0DJA2GgD1fA9/wA6MD3/ADrM0AzDS1guo7tbuBylwblz IXkPzFlfADod
2RtCgA7dqFSi6lACYHv+dGB7/nS0UAJge/50YHv+dLRQAmB7/nRge/50tFAC YHv+dGB7/nS0
UAJge/50YHv+dLRQAmB7/nRge/50tFAFa9vLbT4FmupDHG0scIOCcvI4jQce rOo9s88CrGB7
/nWJ4sgmudHt0giklcanYOVRSxCrdwsx47BQST2AJri9XtfElv4evb2zuNcl 1G5u9Xg8sPI3
lW4S7aAIg+786QFHxv8AmVQ20qtAHp+B7/nWPqPibSdL1E2N5NcJMsSzyMlr M8cMbFgHkkVS
ka5R+WIACknAGa5jU7XU9P1h7NrjXLjQf9Gnvpo3meZ2ZboOUaL51/eJaEpD hVB+6qs2Y9A1
C90nXLybUbDWbg3VlFHY7bOWRpI0urwxI8hGEfynhyZmUjdlyDuNAHV6j4m0 nS9RNjeTXCTL
Es8jJazPHDGxYB5JFUpGuUfliAApJwBmtjA9/wA68kvtD1LTbdtGZtSknPhe y05ILOzaW0v5
kFwrRSy+UTGhLKC2+IhZM7hjI9coATA9/wA6MD3/ADpaKAEwPf8AOjA9/wA6 WigCtfXltp1n
JdXchjhTAJALEknAVVGSzEkAKASSQACcVHpupWmrW7TWjyEI5SRJY3ikjbGc OjgMpwQQCBkM
pHBBqh4tgmn0JTDFJKYL2zuXWNSzeXFcxSOQo5YhUY7RknGACSBUfhgPLc69 qHkTxW9/qCzW
/nwtE7IttBESUcBl+eNx8wGcZHBBIBv4Hv8AnRge/wCdLRQAmB7/AJ0YHv8A nS0UAJge/wCd
GB7/AJ0tFACYHv8AnWF4rYpp0G0Id04B3orj7rHowIrerA8W/wDIOtv+vkf+ gPWtD+IiZbGB
pt3Z21xNNqd1Z2dpHCWeeWOGJVO5VGWKgDJbH1xWvLqmhx6dY3yz3E0N/EJ7 ZbaxaaSSMgHf
5aRlwoDLkkAAsoOCQKp+F/8AkNN/17v/AOhJWLBYX1lo3gi5mm1nTUtNCNpc PYWP2idJWW2I
jaIxSED90+TtGCoBIyAbxOlTQUNjsSdLxYMt2jpqL7LR40R1mJjaQYYKRjYj HPTj6VU1DVND
0vUTY3c9wkyxLPIyWLPHDGxYB5JFjKRrlH5YgAKScAZqjrkHiLUdK8JyJFHa 60tx5t1sXdHb
yGynD8/OFG5toYhwCVJD/dbn9dhubu91GO2g8QRC70KCzhsns3lS7lV7pTBc TlHKjLKDIJUy
HLhyCHHPcs9F/suH+8f+/cf/AMTR/ZcP94/9+4//AImr1FFwKP8AZcP94/8A fuP/AOJo/suH
+8f+/cf/AMTV6ii4FH+y4f7x/wC/cf8A8TUElnH54tiFKMVJzGnpJ/s47Vq1 Sk/5Ccf/AAH/
ANBkppsCtewWGm2b3V1L5cKYHEKEkk4VVULlmJIAUAkkgAE4qol7oz6Nd6sb mSO0s0d7nzbT
y5IQq7m3xtGHU7SGAIyQVIyCKl8WwTT6EphiklMF7Z3LrGpZvLiuYpHIUcsQ qMdoyTjABJAr
Avbe5v8Awd4+uLezuyNUSd7ON7d45ZR9iii/1bAOCXjYAEAnAIyCCS4G9pk2 mav5otXuFkiw
XiubI28ig5w2ySNW2nDANjBKkA5U4v8A9lw/3j/37j/+JrC8KJNJrOp3rS6l dwSW9vEl7qVo
bad2Vpi0fl+XGNih1IbZyZGG5tuF6ulcCj/ZcP8AeP8A37j/APiaP7Lh/vH/ AL9x/wDxNXqK
LgUf7Lh/vH/v3H/8TR/ZcP8AeP8A37j/APiavUUXAo/2XD/eP/fuP/4mpLWB YLmaNTxsVvuh
epb0Aq1UUf8Ax/S/9c0/m1MCbA9/zowPf86WikAmB7/nRge/50tFACYHv+dG B7/nS0UAJge/
50YHv+dLRQAmB7/nRge/50tFACYHv+dGB7/nS0UAJge/50YHv+dLRQAYxRRR QAUUUUAFFFFA
BRRRQAUUUUAFFFFAFK1t/M0aC2mUgNbrG6kEEfLgj2rPbwtbOSTe33P/AE3N btFUpNbMTSe5
hweF7SC5inFxdO0Th1Ekm4ZHStvn1H5UtFJyb3BJLYTn1H5Uc+o/KlopDE59 R+VHPqPypaKA
E59R+VHPqPypaKAE59R+VHPqPypaKAE59R+VHPqPypaKAE59R+VHPqPypaKA E59R+VHPqPyp
aKAE59R+VHPqPypaKAE59R+VHPqPypaKAE59R+VHPqPypaKAE59R+VHPqPyp aKAE59R+VHPq
PypaKAE59R+VHPqPypaKAE59R+VHPqPypaKAE59R+VHPqPypaKAE59R+VHPq PypaKAE59R+V
HPqPypaKAE59R+VHPqPypaKAE59R+VHPqPypaKAE59R+VUtT0yPVLdIZZHQI +8GPGc4I7g+t
XqKabTugMey8PQ2FwZ4Lu53lCnzbDwSD/d9hWh9nl/5+5f8AvlP8KsUU5Scn diSsV/s8v/P3
L/3yn+FH2eX/AJ+5f++U/wAKsUVIyv8AZ5f+fuX/AL5T/Cj7PL/z9y/98p/h ViigCv8AZ5f+
fuX/AL5T/Cj7PL/z9y/98p/hViigCv8AZ5f+fuX/AL5T/CmGyJfebiQvkYbC 8YDD0x/Eat0U
AV/s8v8Az9y/98p/hR9nl/5+5f8AvlP8KsUUAV/s8v8Az9y/98p/hR9nl/5+ 5f8AvlP8KsUU
AV/s8v8Az9y/98p/hR9nl/5+5f8AvlP8KsUUAV/s8v8Az9y/98p/hR9nl/5+ 5f8AvlP8KsUU
AV/s8v8Az9y/98p/hTooGjd3MrOzADLAcAZx0x61NRQAnPqPyo59R+VLRQAn PqPyo59R+VLR
QAnPqPyo59R+VLRQAnPqPyo59R+VLRQAnPqPyo59R+VLRQAnPqPyo59R+VLR QAnPqPyo59R+
VLRQAc96KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooA//9k=
--------------070400060800000902050707--
Re: [Teneo] Error running Teneo (1.x) Dynamic.java example [ with db picture] [message #620257 is a reply to message #128990] Sat, 23 August 2008 21:24 Go to previous message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Hi Mdu,
Take a look at the ecore model itself, there are about 20 classes in there. As a default Teneo uses
single-table inheritance mapping (check the jpa spec and articles on orm about that). This means
that an inheritance tree is stored in one table. In this case many classes of the ecore package
inherit from the eobject type. Therefore the one eobject table.

gr. Martin

Mdu wrote:
> Martin,
> I have attached a snapshot of tables that were created when I added
> epackage with setPackages(). All these tables have 0 rows. How do I make
> sense of 'em?
>
> Mdu wrote:
>> Martin, Thanks. I'm still a little lost. Here's my understanding and
>> questions:
>>
>> Example: schoolPackage
>> 1. I understand how to dynamically create new EObject's based on
>> dynamically created epackage and assoc. classes and attributes.
>>
>> 2. How do I store/save an instance of schoolPackage?
>> Do I have to create an instance of schoolPackage (if this is possible)
>> and call .save() for hbds to save it into the database for later
>> retrieval?
>>
>> 3. Assuming I have schoolPackage instance stored in the database; to
>> read it back, do I call something like session.createQuery("from
>> EPackage where type='SchoolPackage'") - and of course this will give
>> me back an EPackage instance that I use to introspect the whole
>> package graph (classes, their attributes, etc.)
>>
>> -mdu
>>
>> Martin Taal wrote:
>>> Hi Mdu,
>>> Two additions, when reading the Epackage from the db, also do the
>>> following:
>>> - read the epackages first (before other objects refering to it).
>>> - after reading an epackage from the db you have to register it in
>>> the EPackage Registry using the epackage uri.
>>>
>>> gr. Martin
>>>
>>> Martin Taal wrote:
>>>> Hi Mdu,
>>>> Yes that is possible. Also pass the EcorePackage and the
>>>> XMLTypePackage to the setEPackages method. Then you can persist your
>>>> EPackage in the same as another object.
>>>>
>>>> gr. Martin
>>>>
>>>> Mdu wrote:
>>>>> Thanks Martin,
>>>>> That worked. Next question: I want to be able to store an ecore
>>>>> metamodel of dynamically created models (e.g. companyPackage or
>>>>> schoolPackage). For example, it'd be great if companyPackage
>>>>> definition was stored in the db together with relevant class
>>>>> definitions etc. I want to later on use this information to create
>>>>> dynamic forms etc. Does this make sense?
>>>>>
>>>>> Thnx again.
>>>>> Martin Taal wrote:
>>>>>> Hi Mdu,
>>>>>> You have to tell the datastore which EPackages to persist. In your
>>>>>> case the companyPackage. You can pass this EPackage to the
>>>>>> doQuickStart method and then set the companyPackage in the
>>>>>> datastore by doing something like hbds.setEPackages(new
>>>>>> EPackage[]{companyPackage});
>>>>>>
>>>>>> btw, support for Teneo is given on the EMF newsgroup, which I
>>>>>> added to this post.
>>>>>>
>>>>>> gr. Martin
>>>>>>
>>>>>> Mdu wrote:
>>>>>>> Mdu wrote:
>>>>>>>> Hi All,
>>>>>>>> I have modified Dynamic.java example to run it standalone (as
>>>>>>>> opposed to within Eclipse). I got rid of all references to
>>>>>>>> Library classes to that I can create a class from scratch.
>>>>>>>> Everything compiles. But when I run the example I get ff. error:
>>>>>>>>
>>>>>>>> Aug 22, 2008 10:44:29 PM
>>>>>>>> org.eclipse.emf.teneo.hibernate.HbHelper createRegisterDataStore
>>>>>>>> INFO: Creating emf data store and registering it under name: MySF
>>>>>>>> Aug 22, 2008 10:44:29 PM
>>>>>>>> org.eclipse.emf.teneo.hibernate.HbHelper createRegisterDataStore
>>>>>>>> INFO: Returning created emf data store, initialize this newly
>>>>>>>> created data store!
>>>>>>>> Aug 22, 2008 10:44:30 PM
>>>>>>>> org.eclipse.emf.teneo.classloader.ClassLoaderResolver
>>>>>>>> setClassLoaderStrategy
>>>>>>>> INFO: Class loader strategy set to:
>>>>>>>> org.eclipse.emf.teneo.classloader.ContextClassLoaderStrategy
>>>>>>>> Aug 22, 2008 10:44:30 PM
>>>>>>>> org.eclipse.emf.teneo.extension.DefaultExtensionManager
>>>>>>>> getExtension
>>>>>>>> WARNING: The extension: org.eclipse.emf.teneo.PersistenceOptions
>>>>>>>> is declared as a singleton but this getInstance call passed
>>>>>>>> initialization parameters so it is not cached,
>>>>>>>> org.eclipse.emf.teneo.PersistenceOptions
>>>>>>>> Aug 22, 2008 10:44:30 PM org.eclipse.emf.teneo.TeneoException
>>>>>>>> <init>
>>>>>>>> SEVERE: EPackages are not set
>>>>>>>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are
>>>>>>>> not set
>>>>>>>> at
>>>>>>>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>>>>>>>
>>>>>>>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>>>>>>>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>>>>>>> Exception in thread "main"
>>>>>>>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are
>>>>>>>> not set
>>>>>>>> at
>>>>>>>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>>>>>>>
>>>>>>>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>>>>>>>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>>>>>>>
>>>>>>>> Thanks in advance.
>>>>>>>
>>>>>>
>>>>>>
>>>>
>>>>
>>>
>>>
>


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: [Teneo] Error running Teneo (1.x) Dynamic.java example [ with attachments] [message #620258 is a reply to message #128977] Sat, 23 August 2008 21:29 Go to previous message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
hi Mdu,
See comments inline.

See also my post, 2 posts back which may have crossed your post.

gr. Martin

Mdu wrote:
> Martin, Thanks. I'm still a little lost. Here's my understanding and
> questions:
>
> Example: schoolPackage
> 1. I understand how to dynamically create new EObject's based on
> dynamically created epackage and assoc. classes and attributes.
>
> 2. How do I store/save an instance of schoolPackage?
> Do I have to create an instance of schoolPackage (if this is possible)
> and call .save() for hbds to save it into the database for later retrieval?
MT>> Yes, but there is only one instance for schoolpackage (at least there should be), the one you
created dynamically once and then persist and then read from the db. To store an epackage do this:
final SessionFactory sessionFactory = hbds.getSessionFactory();

// now persist them all

Session session = sessionFactory.openSession();
Transaction tx = session.getTransaction();
tx.begin();
session.save(schoolPackage);
tx.commit();


>
> 3. Assuming I have schoolPackage instance stored in the database; to
> read it back, do I call something like session.createQuery("from
> EPackage where type='SchoolPackage'") - and of course this will give me
> back an EPackage instance that I use to introspect the whole package
> graph (classes, their attributes, etc.)
MT>> Yes, although the where clause using type is not correct, you can use name='elv' (at least
according to the dynamic.java you attached in a previous post, or just do "from EPackage"

>
> -mdu
>
> Martin Taal wrote:
>> Hi Mdu,
>> Two additions, when reading the Epackage from the db, also do the
>> following:
>> - read the epackages first (before other objects refering to it).
>> - after reading an epackage from the db you have to register it in the
>> EPackage Registry using the epackage uri.
>>
>> gr. Martin
>>
>> Martin Taal wrote:
>>> Hi Mdu,
>>> Yes that is possible. Also pass the EcorePackage and the
>>> XMLTypePackage to the setEPackages method. Then you can persist your
>>> EPackage in the same as another object.
>>>
>>> gr. Martin
>>>
>>> Mdu wrote:
>>>> Thanks Martin,
>>>> That worked. Next question: I want to be able to store an ecore
>>>> metamodel of dynamically created models (e.g. companyPackage or
>>>> schoolPackage). For example, it'd be great if companyPackage
>>>> definition was stored in the db together with relevant class
>>>> definitions etc. I want to later on use this information to create
>>>> dynamic forms etc. Does this make sense?
>>>>
>>>> Thnx again.
>>>> Martin Taal wrote:
>>>>> Hi Mdu,
>>>>> You have to tell the datastore which EPackages to persist. In your
>>>>> case the companyPackage. You can pass this EPackage to the
>>>>> doQuickStart method and then set the companyPackage in the
>>>>> datastore by doing something like hbds.setEPackages(new
>>>>> EPackage[]{companyPackage});
>>>>>
>>>>> btw, support for Teneo is given on the EMF newsgroup, which I added
>>>>> to this post.
>>>>>
>>>>> gr. Martin
>>>>>
>>>>> Mdu wrote:
>>>>>> Mdu wrote:
>>>>>>> Hi All,
>>>>>>> I have modified Dynamic.java example to run it standalone (as
>>>>>>> opposed to within Eclipse). I got rid of all references to
>>>>>>> Library classes to that I can create a class from scratch.
>>>>>>> Everything compiles. But when I run the example I get ff. error:
>>>>>>>
>>>>>>> Aug 22, 2008 10:44:29 PM org.eclipse.emf.teneo.hibernate.HbHelper
>>>>>>> createRegisterDataStore
>>>>>>> INFO: Creating emf data store and registering it under name: MySF
>>>>>>> Aug 22, 2008 10:44:29 PM org.eclipse.emf.teneo.hibernate.HbHelper
>>>>>>> createRegisterDataStore
>>>>>>> INFO: Returning created emf data store, initialize this newly
>>>>>>> created data store!
>>>>>>> Aug 22, 2008 10:44:30 PM
>>>>>>> org.eclipse.emf.teneo.classloader.ClassLoaderResolver
>>>>>>> setClassLoaderStrategy
>>>>>>> INFO: Class loader strategy set to:
>>>>>>> org.eclipse.emf.teneo.classloader.ContextClassLoaderStrategy
>>>>>>> Aug 22, 2008 10:44:30 PM
>>>>>>> org.eclipse.emf.teneo.extension.DefaultExtensionManager getExtension
>>>>>>> WARNING: The extension: org.eclipse.emf.teneo.PersistenceOptions
>>>>>>> is declared as a singleton but this getInstance call passed
>>>>>>> initialization parameters so it is not cached,
>>>>>>> org.eclipse.emf.teneo.PersistenceOptions
>>>>>>> Aug 22, 2008 10:44:30 PM org.eclipse.emf.teneo.TeneoException <init>
>>>>>>> SEVERE: EPackages are not set
>>>>>>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are
>>>>>>> not set
>>>>>>> at
>>>>>>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>>>>>>
>>>>>>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>>>>>>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>>>>>> Exception in thread "main"
>>>>>>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are
>>>>>>> not set
>>>>>>> at
>>>>>>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>>>>>>
>>>>>>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>>>>>>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>>>>>>
>>>>>>> Thanks in advance.
>>>>>>
>>>>>
>>>>>
>>>
>>>
>>
>>


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: [Teneo] Error running Teneo (1.x) Dynamic.java example [ with attachments] [message #620259 is a reply to message #129017] Sat, 23 August 2008 23:05 Go to previous message
Mdu Mising name is currently offline Mdu Mising nameFriend
Messages: 22
Registered: October 2009
Junior Member
Duh! Yes, I missed your earlier comment. I got it now. I feel like have
to pay something for this ;-)

OK. I can save my packages. Now, what is the best way to introspect an
epackage in such a away that I can make calls like:

1. Get all classes in the package

2. For each class, get all attributes and their types

3. etc.

4. I then want to use all aforementioned metadata to automagically
create a web form.

5. Also, when I change an EObject, do a delta on what's changed between
modified and original version

Did I mention that this is a wishlist.

Is there an EMFT tool (e.g. query) that makes some of this easier?

Thanks again,
-Mdu

Martin Taal wrote:
> hi Mdu,
> See comments inline.
>
> See also my post, 2 posts back which may have crossed your post.
>
> gr. Martin
>
> Mdu wrote:
>> Martin, Thanks. I'm still a little lost. Here's my understanding and
>> questions:
>>
>> Example: schoolPackage
>> 1. I understand how to dynamically create new EObject's based on
>> dynamically created epackage and assoc. classes and attributes.
>>
>> 2. How do I store/save an instance of schoolPackage?
>> Do I have to create an instance of schoolPackage (if this is possible)
>> and call .save() for hbds to save it into the database for later
>> retrieval?
> MT>> Yes, but there is only one instance for schoolpackage (at least
> there should be), the one you created dynamically once and then persist
> and then read from the db. To store an epackage do this:
> final SessionFactory sessionFactory = hbds.getSessionFactory();
>
> // now persist them all
>
> Session session = sessionFactory.openSession();
> Transaction tx = session.getTransaction();
> tx.begin();
> session.save(schoolPackage);
> tx.commit();
>
>
>>
>> 3. Assuming I have schoolPackage instance stored in the database; to
>> read it back, do I call something like session.createQuery("from
>> EPackage where type='SchoolPackage'") - and of course this will give
>> me back an EPackage instance that I use to introspect the whole
>> package graph (classes, their attributes, etc.)
> MT>> Yes, although the where clause using type is not correct, you can
> use name='elv' (at least according to the dynamic.java you attached in a
> previous post, or just do "from EPackage"
>
>>
>> -mdu
>>
>> Martin Taal wrote:
>>> Hi Mdu,
>>> Two additions, when reading the Epackage from the db, also do the
>>> following:
>>> - read the epackages first (before other objects refering to it).
>>> - after reading an epackage from the db you have to register it in
>>> the EPackage Registry using the epackage uri.
>>>
>>> gr. Martin
>>>
>>> Martin Taal wrote:
>>>> Hi Mdu,
>>>> Yes that is possible. Also pass the EcorePackage and the
>>>> XMLTypePackage to the setEPackages method. Then you can persist your
>>>> EPackage in the same as another object.
>>>>
>>>> gr. Martin
>>>>
>>>> Mdu wrote:
>>>>> Thanks Martin,
>>>>> That worked. Next question: I want to be able to store an ecore
>>>>> metamodel of dynamically created models (e.g. companyPackage or
>>>>> schoolPackage). For example, it'd be great if companyPackage
>>>>> definition was stored in the db together with relevant class
>>>>> definitions etc. I want to later on use this information to create
>>>>> dynamic forms etc. Does this make sense?
>>>>>
>>>>> Thnx again.
>>>>> Martin Taal wrote:
>>>>>> Hi Mdu,
>>>>>> You have to tell the datastore which EPackages to persist. In your
>>>>>> case the companyPackage. You can pass this EPackage to the
>>>>>> doQuickStart method and then set the companyPackage in the
>>>>>> datastore by doing something like hbds.setEPackages(new
>>>>>> EPackage[]{companyPackage});
>>>>>>
>>>>>> btw, support for Teneo is given on the EMF newsgroup, which I
>>>>>> added to this post.
>>>>>>
>>>>>> gr. Martin
>>>>>>
>>>>>> Mdu wrote:
>>>>>>> Mdu wrote:
>>>>>>>> Hi All,
>>>>>>>> I have modified Dynamic.java example to run it standalone (as
>>>>>>>> opposed to within Eclipse). I got rid of all references to
>>>>>>>> Library classes to that I can create a class from scratch.
>>>>>>>> Everything compiles. But when I run the example I get ff. error:
>>>>>>>>
>>>>>>>> Aug 22, 2008 10:44:29 PM
>>>>>>>> org.eclipse.emf.teneo.hibernate.HbHelper createRegisterDataStore
>>>>>>>> INFO: Creating emf data store and registering it under name: MySF
>>>>>>>> Aug 22, 2008 10:44:29 PM
>>>>>>>> org.eclipse.emf.teneo.hibernate.HbHelper createRegisterDataStore
>>>>>>>> INFO: Returning created emf data store, initialize this newly
>>>>>>>> created data store!
>>>>>>>> Aug 22, 2008 10:44:30 PM
>>>>>>>> org.eclipse.emf.teneo.classloader.ClassLoaderResolver
>>>>>>>> setClassLoaderStrategy
>>>>>>>> INFO: Class loader strategy set to:
>>>>>>>> org.eclipse.emf.teneo.classloader.ContextClassLoaderStrategy
>>>>>>>> Aug 22, 2008 10:44:30 PM
>>>>>>>> org.eclipse.emf.teneo.extension.DefaultExtensionManager
>>>>>>>> getExtension
>>>>>>>> WARNING: The extension: org.eclipse.emf.teneo.PersistenceOptions
>>>>>>>> is declared as a singleton but this getInstance call passed
>>>>>>>> initialization parameters so it is not cached,
>>>>>>>> org.eclipse.emf.teneo.PersistenceOptions
>>>>>>>> Aug 22, 2008 10:44:30 PM org.eclipse.emf.teneo.TeneoException
>>>>>>>> <init>
>>>>>>>> SEVERE: EPackages are not set
>>>>>>>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are
>>>>>>>> not set
>>>>>>>> at
>>>>>>>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>>>>>>>
>>>>>>>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>>>>>>>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>>>>>>> Exception in thread "main"
>>>>>>>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages are
>>>>>>>> not set
>>>>>>>> at
>>>>>>>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>>>>>>>
>>>>>>>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>>>>>>>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>>>>>>>
>>>>>>>> Thanks in advance.
>>>>>>>
>>>>>>
>>>>>>
>>>>
>>>>
>>>
>>>
>
>
Re: [Teneo] Error running Teneo (1.x) Dynamic.java example [ with attachments] [message #620260 is a reply to message #129030] Sun, 24 August 2008 10:07 Go to previous message
Ed Merks is currently offline Ed MerksFriend
Messages: 33113
Registered: July 2009
Senior Member
Mdu,

Comments below...


Mdu wrote:
> Duh! Yes, I missed your earlier comment. I got it now. I feel like
> have to pay something for this ;-)
>
> OK. I can save my packages. Now, what is the best way to introspect an
> epackage in such a away that I can make calls like:
>
> 1. Get all classes in the package
EPackage.getEClassifiers and look for the ones that are instances of EClass.
>
> 2. For each class, get all attributes and their types
EClass.getEAllStructuralFeatures() and EStrucuturalFeatureFeature.getEType
>
> 3. etc.
And so on.
>
> 4. I then want to use all aforementioned metadata to automagically
> create a web form.
Just like the generated properties view of the generated EMF editor?
>
> 5. Also, when I change an EObject, do a delta on what's changed
> between modified and original version
Like the notifications produced whenever an EObject is changed?
>
> Did I mention that this is a wishlist.
>
> Is there an EMFT tool (e.g. query) that makes some of this easier?
>
> Thanks again,
> -Mdu
>
> Martin Taal wrote:
>> hi Mdu,
>> See comments inline.
>>
>> See also my post, 2 posts back which may have crossed your post.
>>
>> gr. Martin
>>
>> Mdu wrote:
>>> Martin, Thanks. I'm still a little lost. Here's my understanding and
>>> questions:
>>>
>>> Example: schoolPackage
>>> 1. I understand how to dynamically create new EObject's based on
>>> dynamically created epackage and assoc. classes and attributes.
>>>
>>> 2. How do I store/save an instance of schoolPackage?
>>> Do I have to create an instance of schoolPackage (if this is
>>> possible) and call .save() for hbds to save it into the database for
>>> later retrieval?
>> MT>> Yes, but there is only one instance for schoolpackage (at least
>> there should be), the one you created dynamically once and then
>> persist and then read from the db. To store an epackage do this:
>> final SessionFactory sessionFactory = hbds.getSessionFactory();
>>
>> // now persist them all
>> Session session = sessionFactory.openSession();
>> Transaction tx = session.getTransaction();
>> tx.begin();
>> session.save(schoolPackage);
>> tx.commit();
>>
>>
>>>
>>> 3. Assuming I have schoolPackage instance stored in the database; to
>>> read it back, do I call something like session.createQuery("from
>>> EPackage where type='SchoolPackage'") - and of course this will give
>>> me back an EPackage instance that I use to introspect the whole
>>> package graph (classes, their attributes, etc.)
>> MT>> Yes, although the where clause using type is not correct, you
>> can use name='elv' (at least according to the dynamic.java you
>> attached in a previous post, or just do "from EPackage"
>>
>>>
>>> -mdu
>>>
>>> Martin Taal wrote:
>>>> Hi Mdu,
>>>> Two additions, when reading the Epackage from the db, also do the
>>>> following:
>>>> - read the epackages first (before other objects refering to it).
>>>> - after reading an epackage from the db you have to register it in
>>>> the EPackage Registry using the epackage uri.
>>>>
>>>> gr. Martin
>>>>
>>>> Martin Taal wrote:
>>>>> Hi Mdu,
>>>>> Yes that is possible. Also pass the EcorePackage and the
>>>>> XMLTypePackage to the setEPackages method. Then you can persist
>>>>> your EPackage in the same as another object.
>>>>>
>>>>> gr. Martin
>>>>>
>>>>> Mdu wrote:
>>>>>> Thanks Martin,
>>>>>> That worked. Next question: I want to be able to store an ecore
>>>>>> metamodel of dynamically created models (e.g. companyPackage or
>>>>>> schoolPackage). For example, it'd be great if companyPackage
>>>>>> definition was stored in the db together with relevant class
>>>>>> definitions etc. I want to later on use this information to
>>>>>> create dynamic forms etc. Does this make sense?
>>>>>>
>>>>>> Thnx again.
>>>>>> Martin Taal wrote:
>>>>>>> Hi Mdu,
>>>>>>> You have to tell the datastore which EPackages to persist. In
>>>>>>> your case the companyPackage. You can pass this EPackage to the
>>>>>>> doQuickStart method and then set the companyPackage in the
>>>>>>> datastore by doing something like hbds.setEPackages(new
>>>>>>> EPackage[]{companyPackage});
>>>>>>>
>>>>>>> btw, support for Teneo is given on the EMF newsgroup, which I
>>>>>>> added to this post.
>>>>>>>
>>>>>>> gr. Martin
>>>>>>>
>>>>>>> Mdu wrote:
>>>>>>>> Mdu wrote:
>>>>>>>>> Hi All,
>>>>>>>>> I have modified Dynamic.java example to run it standalone
>>>>>>>>> (as opposed to within Eclipse). I got rid of all references to
>>>>>>>>> Library classes to that I can create a class from scratch.
>>>>>>>>> Everything compiles. But when I run the example I get ff. error:
>>>>>>>>>
>>>>>>>>> Aug 22, 2008 10:44:29 PM
>>>>>>>>> org.eclipse.emf.teneo.hibernate.HbHelper createRegisterDataStore
>>>>>>>>> INFO: Creating emf data store and registering it under name: MySF
>>>>>>>>> Aug 22, 2008 10:44:29 PM
>>>>>>>>> org.eclipse.emf.teneo.hibernate.HbHelper createRegisterDataStore
>>>>>>>>> INFO: Returning created emf data store, initialize this newly
>>>>>>>>> created data store!
>>>>>>>>> Aug 22, 2008 10:44:30 PM
>>>>>>>>> org.eclipse.emf.teneo.classloader.ClassLoaderResolver
>>>>>>>>> setClassLoaderStrategy
>>>>>>>>> INFO: Class loader strategy set to:
>>>>>>>>> org.eclipse.emf.teneo.classloader.ContextClassLoaderStrategy
>>>>>>>>> Aug 22, 2008 10:44:30 PM
>>>>>>>>> org.eclipse.emf.teneo.extension.DefaultExtensionManager
>>>>>>>>> getExtension
>>>>>>>>> WARNING: The extension:
>>>>>>>>> org.eclipse.emf.teneo.PersistenceOptions is declared as a
>>>>>>>>> singleton but this getInstance call passed initialization
>>>>>>>>> parameters so it is not cached,
>>>>>>>>> org.eclipse.emf.teneo.PersistenceOptions
>>>>>>>>> Aug 22, 2008 10:44:30 PM org.eclipse.emf.teneo.TeneoException
>>>>>>>>> <init>
>>>>>>>>> SEVERE: EPackages are not set
>>>>>>>>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages
>>>>>>>>> are not set
>>>>>>>>> at
>>>>>>>>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>>>>>>>>
>>>>>>>>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>>>>>>>>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>>>>>>>> Exception in thread "main"
>>>>>>>>> org.eclipse.emf.teneo.hibernate.HbMapperException: EPackages
>>>>>>>>> are not set
>>>>>>>>> at
>>>>>>>>> org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:62)
>>>>>>>>>
>>>>>>>>> at hbtutorial.QuickStart.doQuickStart(QuickStart.java:67)
>>>>>>>>> at hbtutorial.Dynamic.main(Dynamic.java:70)
>>>>>>>>>
>>>>>>>>> Thanks in advance.
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>
>>


Ed Merks
Professional Support: https://www.macromodeling.com/
Previous Topic:[Teneo] Error running Teneo (1.x) Dynamic.java example
Next Topic:Turning off Comparison with EMF-Compare
Goto Forum:
  


Current Time: Fri Mar 29 02:22:55 GMT 2024

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

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

Back to the top