Re: [Boost-users] Deriving Serialization classes

Hi Miguel, you can find what you seek in the documentation under Reference, Serializable Concept, Pointers, Pointers to Objects of Derived Classes. Two possibilities: * eiter call ar.register_class<A>() * or use the macro BOOST_CLASS_EXPORT(A) Have fun, Christian Pfligersdorffer Software Engineering EOS GmbH
-----Ursprüngliche Nachricht----- Von: boost-users-bounces@lists.boost.org [mailto:boost-users-bounces@lists.boost.org]Im Auftrag von Miguel Silvestre Gesendet: Montag, 15. Januar 2007 16:30 An: boost-users@lists.boost.org Betreff: Re: [Boost-users] Deriving Serialization classes
Anyone???
In the boost code I found this comment:
// note:if this exception is thrown, be sure that derived pointer // is either regsitered or exported.
How can I register a class????????
On 1/15/07, Miguel Silvestre <msilvestre@gmail.com> wrote:
Just make the test without a pointer ant it works just fine.
I've looked at the documentation and it only refers to this problem on derivated classes! But I'm not deriving any class. I'm just including the ponter of a class :(
On 1/15/07, Miguel Silvestre <msilvestre@gmail.com> wrote:
Ok!!!
Now I'm getting unregistered_class exceptions when trying to seryalize a class that has another class. Like:
class C : public Serializer { typedef Serializer Parent; public: std::string text; A* m_owner; int32 dasse; C():m_owner(0) { text = "Ola sua puta rabeta!"; dasse = 69; }
void Serialize(IArchive& ar, const unsigned int version) { ar.Serialize(dasse); ar.Serialize(text); //ar.Serialize(m_owner); } };
class A : public Serializer { typedef Serializer Parent; public:
void Serialize(IArchive& ar, const unsigned int version) { ar.Serialize(dumbi); ar.Serialize(vectorTest); ar.Serialize(matrix); ar.Serialize(testing); ar.Serialize((void*)test_void, sizeof(Vector3f)); }
int dumbi; float dumbf; Vector2f vectorTest; Matrix33 matrix; C* testing; Vector3f* test_void;
A():dumbi(12), dumbf(69.69f) { testing = new C(); testing->m_owner = this; matrix.SetIdentity(); test_void = new Vector3f(1,2,3); }
A(int dumb1, float dumb2) : dumbi(dumb1), dumbf(dumb2) { testing = new C(); testing->m_owner = this; matrix.SetIdentity(); test_void = new Vector3f(1,2,3); } };
If I comment the line that serializes C object from A (ar.Serialize(testing);) everything works fine. I can serialize Object A. And I can serialiaze the Object C to. But when I have apoibter to C on object A It throws the unregistered_class exception?
Why?
How can I avoid this??? On 1/12/07, Robert Ramey <ramey@rrsd.com> wrote:
Use binary_object.
Robert Ramey
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
-- Miguel Silvestre
-- Miguel Silvestre
-- Miguel Silvestre _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users

Now I have the Unregister_cast exception :S. On 1/15/07, Pfligersdorffer, Christian <Christian.Pfligersdorffer@eos.info> wrote:
Hi Miguel,
you can find what you seek in the documentation under Reference, Serializable Concept, Pointers, Pointers to Objects of Derived Classes.
Two possibilities: * eiter call ar.register_class<A>() * or use the macro BOOST_CLASS_EXPORT(A)
Have fun,
Christian Pfligersdorffer Software Engineering EOS GmbH
-----Ursprüngliche Nachricht----- Von: boost-users-bounces@lists.boost.org [mailto:boost-users-bounces@lists.boost.org]Im Auftrag von Miguel Silvestre Gesendet: Montag, 15. Januar 2007 16:30 An: boost-users@lists.boost.org Betreff: Re: [Boost-users] Deriving Serialization classes
Anyone???
In the boost code I found this comment:
// note:if this exception is thrown, be sure that derived pointer // is either regsitered or exported.
How can I register a class????????
On 1/15/07, Miguel Silvestre <msilvestre@gmail.com> wrote:
Just make the test without a pointer ant it works just fine.
I've looked at the documentation and it only refers to this problem on derivated classes! But I'm not deriving any class. I'm just including the ponter of a class :(
On 1/15/07, Miguel Silvestre <msilvestre@gmail.com> wrote:
Ok!!!
Now I'm getting unregistered_class exceptions when trying to seryalize a class that has another class. Like:
class C : public Serializer { typedef Serializer Parent; public: std::string text; A* m_owner; int32 dasse; C():m_owner(0) { text = "Ola sua puta rabeta!"; dasse = 69; }
void Serialize(IArchive& ar, const unsigned int version) { ar.Serialize(dasse); ar.Serialize(text); //ar.Serialize(m_owner); } };
class A : public Serializer { typedef Serializer Parent; public:
void Serialize(IArchive& ar, const unsigned int version) { ar.Serialize(dumbi); ar.Serialize(vectorTest); ar.Serialize(matrix); ar.Serialize(testing); ar.Serialize((void*)test_void, sizeof(Vector3f)); }
int dumbi; float dumbf; Vector2f vectorTest; Matrix33 matrix; C* testing; Vector3f* test_void;
A():dumbi(12), dumbf(69.69f) { testing = new C(); testing->m_owner = this; matrix.SetIdentity(); test_void = new Vector3f(1,2,3); }
A(int dumb1, float dumb2) : dumbi(dumb1), dumbf(dumb2) { testing = new C(); testing->m_owner = this; matrix.SetIdentity(); test_void = new Vector3f(1,2,3); } };
If I comment the line that serializes C object from A (ar.Serialize(testing);) everything works fine. I can serialize Object A. And I can serialiaze the Object C to. But when I have apoibter to C on object A It throws the unregistered_class exception?
Why?
How can I avoid this??? On 1/12/07, Robert Ramey <ramey@rrsd.com> wrote:
Use binary_object.
Robert Ramey
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
-- Miguel Silvestre
-- Miguel Silvestre
-- Miguel Silvestre _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
-- Miguel Silvestre

Could it be the RTTI? I'm must use RTTI Disabled for my project. I'm reading the documentation, and trying to use the BOOST_CLASS_TYPE_INFO BOOST_CLASS_EXPORT now, but without any sucess either :S On 1/15/07, Miguel Silvestre <msilvestre@gmail.com> wrote:
Now I have the Unregister_cast exception :S.
On 1/15/07, Pfligersdorffer, Christian <Christian.Pfligersdorffer@eos.info> wrote:
Hi Miguel,
you can find what you seek in the documentation under Reference, Serializable Concept, Pointers, Pointers to Objects of Derived Classes.
Two possibilities: * eiter call ar.register_class<A>() * or use the macro BOOST_CLASS_EXPORT(A)
Have fun,
Christian Pfligersdorffer Software Engineering EOS GmbH
-----Ursprüngliche Nachricht----- Von: boost-users-bounces@lists.boost.org [mailto:boost-users-bounces@lists.boost.org]Im Auftrag von Miguel Silvestre Gesendet: Montag, 15. Januar 2007 16:30 An: boost-users@lists.boost.org Betreff: Re: [Boost-users] Deriving Serialization classes
Anyone???
In the boost code I found this comment:
// note:if this exception is thrown, be sure that derived pointer // is either regsitered or exported.
How can I register a class????????
On 1/15/07, Miguel Silvestre <msilvestre@gmail.com> wrote:
Just make the test without a pointer ant it works just fine.
I've looked at the documentation and it only refers to this problem on derivated classes! But I'm not deriving any class. I'm just including the ponter of a class :(
On 1/15/07, Miguel Silvestre <msilvestre@gmail.com> wrote:
Ok!!!
Now I'm getting unregistered_class exceptions when trying to seryalize a class that has another class. Like:
class C : public Serializer { typedef Serializer Parent; public: std::string text; A* m_owner; int32 dasse; C():m_owner(0) { text = "Ola sua puta rabeta!"; dasse = 69; }
void Serialize(IArchive& ar, const unsigned int version) { ar.Serialize(dasse); ar.Serialize(text); //ar.Serialize(m_owner); } };
class A : public Serializer { typedef Serializer Parent; public:
void Serialize(IArchive& ar, const unsigned int version) { ar.Serialize(dumbi); ar.Serialize(vectorTest); ar.Serialize(matrix); ar.Serialize(testing); ar.Serialize((void*)test_void, sizeof(Vector3f)); }
int dumbi; float dumbf; Vector2f vectorTest; Matrix33 matrix; C* testing; Vector3f* test_void;
A():dumbi(12), dumbf(69.69f) { testing = new C(); testing->m_owner = this; matrix.SetIdentity(); test_void = new Vector3f(1,2,3); }
A(int dumb1, float dumb2) : dumbi(dumb1), dumbf(dumb2) { testing = new C(); testing->m_owner = this; matrix.SetIdentity(); test_void = new Vector3f(1,2,3); } };
If I comment the line that serializes C object from A (ar.Serialize(testing);) everything works fine. I can serialize Object A. And I can serialiaze the Object C to. But when I have apoibter to C on object A It throws the unregistered_class exception?
Why?
How can I avoid this??? On 1/12/07, Robert Ramey <ramey@rrsd.com> wrote:
Use binary_object.
Robert Ramey
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
-- Miguel Silvestre
-- Miguel Silvestre
-- Miguel Silvestre _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
-- Miguel Silvestre
-- Miguel Silvestre

Try the following:
class A : public Serializer { typedef Serializer Parent; public:
void Serialize(IArchive& ar, const unsigned int version) { ar.template register_type<C>(); ar.Serialize(dumbi); ar.Serialize(vectorTest); ar.Serialize(matrix); ar.Serialize(testing); ar.Serialize((void*)test_void, sizeof(Vector3f)); }

I can't do that. It gives me a compilation error. My IArchive class is pure virtual and without templates.. I just don't now how to turn around this mess :P. Running out of ideas. Recapitulating: I have a pure virtual class IArchive with the funtions: virtual void Serialize(int & t) = 0; ... virtual void Serialize(Serializer& t) = 0; virtual void Serialize(Serializer* t) = 0; And my BinaryOArchive extends the IArchive Class and the binary_oarchive_impl like: class BinaryArchiveO : public IArchive, // don't derive from binary_oarchive !!! public boost::archive::binary_oarchive_impl<BinaryArchiveO> { public: BinaryArchiveO(std::ostream & os, unsigned flags = 0) : boost::archive::binary_oarchive_impl<BinaryArchiveO>(os, flags) {} FE_SERIALIZATION_SERIALIZE; virtual void Serialize(void * data, size_t size) { save_binary(data, size); } }; the macro FE_SERIALIZATION_SERIALIZE; is the implementation of the Serialize basic type functions: virtual void Serialize(Quaternion& t) { *this & BOOST_SERIALIZATION_NVP(t.q); }\ virtual void Serialize(Serializer* t){*this & BOOST_SERIALIZATION_NVP(t);} ... And I have the classes I want to serialize derived by the Serializer class: like: class C : public Serializer { typedef Serializer Parent; public: std::string text; A* m_owner; int32 dasse; Vector<float> vector_test; C():m_owner(0) { text = "Ola sua puta rabeta!"; dasse = 69; vector_test.push_back(1); vector_test.push_back(1.2f); vector_test.push_back(1.3f); vector_test.push_back(1.4f); } void Serialize(IArchive& ar, const unsigned int version) { //ar.template register_type<C>(); ar.Serialize(dasse); ar.Serialize(text); //ar.Serialize(m_owner); //ar.Serialize(vector_test); } }; but if I do something like: int SilvTask::WriteObject() { Serializer* testC = new C(); std::ofstream ofs(m_filename.c_str()); TextArchiveO oa(ofs); oa & BOOST_SERIALIZATION_NVP(testC); return FE_OK; } It gives me a cast_exception or a class_exception as I said. :S On 1/15/07, Robert Ramey <ramey@rrsd.com> wrote:
Try the following:
class A : public Serializer { typedef Serializer Parent; public:
void Serialize(IArchive& ar, const unsigned int version) { ar.template register_type<C>(); ar.Serialize(dumbi); ar.Serialize(vectorTest); ar.Serialize(matrix); ar.Serialize(testing); ar.Serialize((void*)test_void, sizeof(Vector3f)); }
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
-- Miguel Silvestre

And here is my Serializer class: class Serializer : public Object { //RTTI_DECLARE; typedef Object Parent; public: virtual void Serialize(IArchive& ar, const unsigned int version) { }; template<class Archive> void serialize(Archive & ar, const unsigned int version) { Serialize((IArchive&)ar, version); } }; On 1/16/07, Miguel Silvestre <msilvestre@gmail.com> wrote:
I can't do that.
It gives me a compilation error. My IArchive class is pure virtual and without templates..
I just don't now how to turn around this mess :P.
Running out of ideas. Recapitulating:
I have a pure virtual class IArchive with the funtions: virtual void Serialize(int & t) = 0; ... virtual void Serialize(Serializer& t) = 0; virtual void Serialize(Serializer* t) = 0;
And my BinaryOArchive extends the IArchive Class and the binary_oarchive_impl like:
class BinaryArchiveO : public IArchive, // don't derive from binary_oarchive !!! public boost::archive::binary_oarchive_impl<BinaryArchiveO> { public: BinaryArchiveO(std::ostream & os, unsigned flags = 0) : boost::archive::binary_oarchive_impl<BinaryArchiveO>(os, flags) {}
FE_SERIALIZATION_SERIALIZE;
virtual void Serialize(void * data, size_t size) { save_binary(data, size); } };
the macro FE_SERIALIZATION_SERIALIZE; is the implementation of the Serialize basic type functions: virtual void Serialize(Quaternion& t) { *this & BOOST_SERIALIZATION_NVP(t.q); }\ virtual void Serialize(Serializer* t){*this & BOOST_SERIALIZATION_NVP(t);} ...
And I have the classes I want to serialize derived by the Serializer class: like:
class C : public Serializer { typedef Serializer Parent; public: std::string text; A* m_owner; int32 dasse; Vector<float> vector_test;
C():m_owner(0) { text = "Ola sua puta rabeta!"; dasse = 69; vector_test.push_back(1); vector_test.push_back(1.2f); vector_test.push_back(1.3f); vector_test.push_back(1.4f); }
void Serialize(IArchive& ar, const unsigned int version) { //ar.template register_type<C>(); ar.Serialize(dasse); ar.Serialize(text); //ar.Serialize(m_owner); //ar.Serialize(vector_test); } };
but if I do something like:
int SilvTask::WriteObject() { Serializer* testC = new C();
std::ofstream ofs(m_filename.c_str()); TextArchiveO oa(ofs);
oa & BOOST_SERIALIZATION_NVP(testC);
return FE_OK; }
It gives me a cast_exception or a class_exception as I said.
:S
On 1/15/07, Robert Ramey <ramey@rrsd.com> wrote:
Try the following:
> class A : public Serializer > { > typedef Serializer Parent; > public: > > void Serialize(IArchive& ar, const unsigned int version) > { ar.template register_type<C>(); > ar.Serialize(dumbi); > ar.Serialize(vectorTest); > ar.Serialize(matrix); > ar.Serialize(testing); > ar.Serialize((void*)test_void, sizeof(Vector3f)); > } >
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
-- Miguel Silvestre
-- Miguel Silvestre

The following changes would make your classes compatible with all archive types and might well fix your problem. class C : public Serializer { typedef Serializer Parent; public: std::string text; A* m_owner; int32 dasse; Vector<float> vector_test; C():m_owner(0) { text = "Ola sua puta rabeta!"; dasse = 69; vector_test.push_back(1); vector_test.push_back(1.2f); vector_test.push_back(1.3f); vector_test.push_back(1.4f); } // standard way of specifying serialization for a class template<class Archive> serialize(Archive & ar, const unsigned int version){ ar.template register_type<C>(); ar.Serialize(dasse); ar.Serialize(text); //ar.Serialize(m_owner); //ar.Serialize(vector_test); } void Serialize(IArchive& ar, const unsigned int version) { // forward to correct function from virtual call serialize(ar, version); } }; BTW - if you want a virtual function interface to the serialization system you might want to check out "polymorphic archives" in the documentation. Robert Ramey

I've just tried that! Now I have this compiling warnings: d:\flow project\flowengine\3rdparty\include\boost\serialization\extended_type_info_typeid.hpp(92) : warning C4541: 'typeid' used on polymorphic type 'FlowEngine::Serializer' with /GR-; unpredictable behavior may result d:\flow project\flowengine\3rdparty\include\boost\serialization\extended_type_info_typeid.hpp(86) : while compiling class template member function 'const boost::serialization::extended_type_info *boost::serialization::detail::extended_type_info_typeid_1<T>::get_derived_extended_type_info(const FlowEngine::Serializer &)' with [ T=const FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\serialization\extended_type_info_typeid.hpp(111) : see reference to class template instantiation 'boost::serialization::detail::extended_type_info_typeid_1<T>' being compiled with [ T=const FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\oserializer.hpp(131) : see reference to class template instantiation 'boost::serialization::extended_type_info_typeid<T>' being compiled with [ T=const FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\oserializer.hpp(128) : while compiling class template member function 'bool boost::archive::detail::oserializer<Archive,T>::is_polymorphic(void) const' with [ Archive=FlowEngine::TextArchiveO, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\oserializer.hpp(264) : see reference to class template instantiation 'boost::archive::detail::oserializer<Archive,T>' being compiled with [ Archive=FlowEngine::TextArchiveO, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\oserializer.hpp(263) : while compiling class template member function 'void boost::archive::detail::save_non_pointer_type<Archive,T>::save_standard::invoke(Archive &,const T &)' with [ Archive=FlowEngine::TextArchiveO, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\oserializer.hpp(322) : see reference to class template instantiation 'boost::archive::detail::save_non_pointer_type<Archive,T>::save_standard' being compiled with [ Archive=FlowEngine::TextArchiveO, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\oserializer.hpp(310) : while compiling class template member function 'void boost::archive::detail::save_non_pointer_type<Archive,T>::invoke(Archive &,const T &)' with [ Archive=FlowEngine::TextArchiveO, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\oserializer.hpp(536) : see reference to class template instantiation 'boost::archive::detail::save_non_pointer_type<Archive,T>' being compiled with [ Archive=FlowEngine::TextArchiveO, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\basic_text_oarchive.hpp(78) : see reference to function template instantiation 'void boost::archive::save<Archive,const T>(Archive &,const T &)' being compiled with [ Archive=FlowEngine::TextArchiveO, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\interface_oarchive.hpp(78) : see reference to function template instantiation 'void boost::archive::basic_text_oarchive<Archive>::save_override<T>(T &,int)' being compiled with [ Archive=FlowEngine::TextArchiveO, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\interface_oarchive.hpp(86) : see reference to function template instantiation 'Archive &boost::archive::detail::interface_oarchive<Archive>::operator <<<const T>(T &)' being compiled with [ Archive=FlowEngine::TextArchiveO, T=FlowEngine::Serializer ] d:\flow project\flowengine\engine\include\core\serialization\textserializer.h(66) : see reference to function template instantiation 'Archive &boost::archive::detail::interface_oarchive<Archive>::operator &<FlowEngine::Serializer>(T &)' being compiled with [ Archive=FlowEngine::TextArchiveO, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\smart_cast.hpp(76) : warning C4541: 'dynamic_cast' used on polymorphic type 'boost::archive::detail::basic_oarchive' with /GR-; unpredictable behavior may result d:\flow project\flowengine\3rdparty\include\boost\smart_cast.hpp(87) : see reference to function template instantiation 'T boost::smart_cast_impl::reference<T>::polymorphic::cross::cast<U>(U &)' being compiled with [ T=FlowEngine::TextArchiveO &, U=boost::archive::detail::basic_oarchive ] d:\flow project\flowengine\3rdparty\include\boost\smart_cast.hpp(135) : see reference to function template instantiation 'T boost::smart_cast_impl::reference<T>::polymorphic::cast<U>(U &)' being compiled with [ T=FlowEngine::TextArchiveO &, U=boost::archive::detail::basic_oarchive ] d:\flow project\flowengine\3rdparty\include\boost\smart_cast.hpp(293) : see reference to function template instantiation 'T boost::smart_cast_impl::reference<T>::cast<U>(U &)' being compiled with [ T=FlowEngine::TextArchiveO &, U=boost::archive::detail::basic_oarchive ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\oserializer.hpp(149) : see reference to function template instantiation 'T boost::smart_cast_reference<Archive&,boost::archive::detail::basic_oarchive>(U &)' being compiled with [ T=FlowEngine::TextArchiveO &, Archive=FlowEngine::TextArchiveO, U=boost::archive::detail::basic_oarchive ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\oserializer.hpp(145) : while compiling class template member function 'void boost::archive::detail::oserializer<Archive,T>::save_object_data(boost::archive::detail::basic_oarchive &,const void *) const' with [ Archive=FlowEngine::TextArchiveO, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\smart_cast.hpp(76) : warning C4541: 'dynamic_cast' used on polymorphic type 'boost::archive::detail::basic_iarchive' with /GR-; unpredictable behavior may result d:\flow project\flowengine\3rdparty\include\boost\smart_cast.hpp(87) : see reference to function template instantiation 'T boost::smart_cast_impl::reference<T>::polymorphic::cross::cast<U>(U &)' being compiled with [ T=FlowEngine::TextArchiveI &, U=boost::archive::detail::basic_iarchive ] d:\flow project\flowengine\3rdparty\include\boost\smart_cast.hpp(135) : see reference to function template instantiation 'T boost::smart_cast_impl::reference<T>::polymorphic::cast<U>(U &)' being compiled with [ T=FlowEngine::TextArchiveI &, U=boost::archive::detail::basic_iarchive ] d:\flow project\flowengine\3rdparty\include\boost\smart_cast.hpp(293) : see reference to function template instantiation 'T boost::smart_cast_impl::reference<T>::cast<U>(U &)' being compiled with [ T=FlowEngine::TextArchiveI &, U=boost::archive::detail::basic_iarchive ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\iserializer.hpp(161) : see reference to function template instantiation 'T boost::smart_cast_reference<Archive&,boost::archive::detail::basic_iarchive>(U &)' being compiled with [ T=FlowEngine::TextArchiveI &, Archive=FlowEngine::TextArchiveI, U=boost::archive::detail::basic_iarchive ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\iserializer.hpp(157) : while compiling class template member function 'void boost::archive::detail::iserializer<Archive,T>::load_object_data(boost::archive::detail::basic_iarchive &,void *,const unsigned int) const' with [ Archive=FlowEngine::TextArchiveI, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\iserializer.hpp(375) : see reference to class template instantiation 'boost::archive::detail::iserializer<Archive,T>' being compiled with [ Archive=FlowEngine::TextArchiveI, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\iserializer.hpp(369) : while compiling class template member function 'void boost::archive::detail::load_non_pointer_type<Archive,T>::load_standard::invoke(Archive &,T &)' with [ Archive=FlowEngine::TextArchiveI, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\iserializer.hpp(425) : see reference to class template instantiation 'boost::archive::detail::load_non_pointer_type<Archive,T>::load_standard' being compiled with [ Archive=FlowEngine::TextArchiveI, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\iserializer.hpp(418) : while compiling class template member function 'void boost::archive::detail::load_non_pointer_type<Archive,T>::invoke(Archive &,T &)' with [ Archive=FlowEngine::TextArchiveI, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\iserializer.hpp(572) : see reference to class template instantiation 'boost::archive::detail::load_non_pointer_type<Archive,T>' being compiled with [ Archive=FlowEngine::TextArchiveI, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\basic_text_iarchive.hpp(64) : see reference to function template instantiation 'void boost::archive::load<Archive,T>(Archive &,T &)' being compiled with [ Archive=FlowEngine::TextArchiveI, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\text_iarchive.hpp(64) : see reference to function template instantiation 'void boost::archive::basic_text_iarchive<Archive>::load_override<T>(T &,int)' being compiled with [ Archive=FlowEngine::TextArchiveI, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\interface_iarchive.hpp(76) : see reference to function template instantiation 'void boost::archive::text_iarchive_impl<Archive>::load_override<T>(T &,int)' being compiled with [ Archive=FlowEngine::TextArchiveI, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\interface_iarchive.hpp(83) : see reference to function template instantiation 'Archive &boost::archive::detail::interface_iarchive<Archive>::operator >><T>(T &)' being compiled with [ Archive=FlowEngine::TextArchiveI, T=FlowEngine::Serializer ] d:\flow project\flowengine\engine\include\core\serialization\textserializer.h(97) : see reference to function template instantiation 'Archive &boost::archive::detail::interface_iarchive<Archive>::operator &<FlowEngine::Serializer>(T &)' being compiled with [ Archive=FlowEngine::TextArchiveI, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\serialization\extended_type_info_typeid.hpp(92) : warning C4541: 'typeid' used on polymorphic type 'FlowEngine::A' with /GR-; unpredictable behavior may result d:\flow project\flowengine\3rdparty\include\boost\serialization\extended_type_info_typeid.hpp(86) : while compiling class template member function 'const boost::serialization::extended_type_info *boost::serialization::detail::extended_type_info_typeid_1<T>::get_derived_extended_type_info(const FlowEngine::A &)' with [ T=const FlowEngine::A ] d:\flow project\flowengine\3rdparty\include\boost\serialization\extended_type_info_typeid.hpp(111) : see reference to class template instantiation 'boost::serialization::detail::extended_type_info_typeid_1<T>' being compiled with [ T=const FlowEngine::A ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\oserializer.hpp(435) : see reference to class template instantiation 'boost::serialization::extended_type_info_typeid<T>' being compiled with [ T=const FlowEngine::A ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\oserializer.hpp(467) : see reference to function template instantiation 'void boost::archive::detail::save_pointer_type<Archive,TPtr>::save<FlowEngine::A>(Archive &,const T &,const boost::archive::detail::basic_pointer_oserializer *)' being compiled with [ Archive=FlowEngine::TextArchiveO, TPtr=FlowEngine::A *, T=FlowEngine::A ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\oserializer.hpp(447) : while compiling class template member function 'void boost::archive::detail::save_pointer_type<Archive,TPtr>::invoke(Archive &,const TPtr)' with [ Archive=FlowEngine::TextArchiveO, TPtr=FlowEngine::A * ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\oserializer.hpp(536) : see reference to class template instantiation 'boost::archive::detail::save_pointer_type<Archive,TPtr>' being compiled with [ Archive=FlowEngine::TextArchiveO, TPtr=FlowEngine::A * ] d:\flow project\flowengine\3rdparty\include\boost\archive\basic_text_oarchive.hpp(78) : see reference to function template instantiation 'void boost::archive::save<Archive,const T>(Archive &,const T &)' being compiled with [ Archive=FlowEngine::TextArchiveO, T=FlowEngine::A * ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\interface_oarchive.hpp(78) : see reference to function template instantiation 'void boost::archive::basic_text_oarchive<Archive>::save_override<T>(T &,int)' being compiled with [ Archive=FlowEngine::TextArchiveO, T=FlowEngine::A * ] d:\flow project\flowengine\3rdparty\include\boost\serialization\nvp.hpp(77) : see reference to function template instantiation 'Archive &boost::archive::detail::interface_oarchive<Archive>::operator <<<const T>(T &)' being compiled with [ Archive=FlowEngine::TextArchiveO, T=FlowEngine::A * ] d:\flow project\flowengine\3rdparty\include\boost\serialization\access.hpp(93) : see reference to function template instantiation 'void boost::serialization::nvp<T>::save<Archive>(Archivex &,const unsigned int) const' being compiled with [ T=FlowEngine::A *, Archive=FlowEngine::TextArchiveO, Archivex=FlowEngine::TextArchiveO ] d:\flow project\flowengine\3rdparty\include\boost\serialization\split_member.hpp(43) : see reference to function template instantiation 'void boost::serialization::access::member_save<Archive,const T>(Archive &,T &,const unsigned int)' being compiled with [ Archive=FlowEngine::TextArchiveO, T=boost::serialization::nvp<FlowEngine::A *> ] d:\flow project\flowengine\3rdparty\include\boost\serialization\split_member.hpp(42) : while compiling class template member function 'void boost::serialization::detail::member_saver<Archive,T>::invoke(Archive &,const T &,const unsigned int)' with [ Archive=FlowEngine::TextArchiveO, T=boost::serialization::nvp<FlowEngine::A *> ] d:\flow project\flowengine\3rdparty\include\boost\serialization\split_member.hpp(69) : see reference to class template instantiation 'boost::serialization::detail::member_saver<Archive,T>' being compiled with [ Archive=FlowEngine::TextArchiveO, T=boost::serialization::nvp<FlowEngine::A *> ] d:\flow project\flowengine\3rdparty\include\boost\serialization\nvp.hpp(87) : see reference to function template instantiation 'void boost::serialization::split_member<Archive,boost::serialization::nvp<T>>(Archive &,boost::serialization::nvp<T> &,const unsigned int)' being compiled with [ Archive=FlowEngine::TextArchiveO, T=FlowEngine::A * ] d:\flow project\flowengine\3rdparty\include\boost\serialization\access.hpp(109) : see reference to function template instantiation 'void boost::serialization::nvp<T>::serialize<Archive>(Archive &,const unsigned int)' being compiled with [ T=FlowEngine::A *, Archive=FlowEngine::TextArchiveO ] d:\flow project\flowengine\3rdparty\include\boost\serialization\serialization.hpp(81) : see reference to function template instantiation 'void boost::serialization::access::serialize<Archive,T>(Archive &,T &,const unsigned int)' being compiled with [ Archive=FlowEngine::TextArchiveO, T=const boost::serialization::nvp<FlowEngine::A *> ] d:\flow project\flowengine\3rdparty\include\boost\serialization\serialization.hpp(140) : see reference to function template instantiation 'void boost::serialization::serialize<Archive,T>(Archive &,T &,const unsigned int)' being compiled with [ Archive=FlowEngine::TextArchiveO, T=const boost::serialization::nvp<FlowEngine::A *> ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\oserializer.hpp(257) : see reference to function template instantiation 'void boost::serialization::serialize_adl<Archive,T>(Archive &,T &,const unsigned int)' being compiled with [ Archive=FlowEngine::TextArchiveO, T=const boost::serialization::nvp<FlowEngine::A *> ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\oserializer.hpp(250) : while compiling class template member function 'void boost::archive::detail::save_non_pointer_type<Archive,T>::save_only::invoke(Archive &,const boost::serialization::nvp<FlowEngine::A *> &)' with [ Archive=FlowEngine::TextArchiveO, T=boost::serialization::nvp<FlowEngine::A *> ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\oserializer.hpp(322) : see reference to class template instantiation 'boost::archive::detail::save_non_pointer_type<Archive,T>::save_only' being compiled with [ Archive=FlowEngine::TextArchiveO, T=boost::serialization::nvp<FlowEngine::A *> ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\oserializer.hpp(310) : while compiling class template member function 'void boost::archive::detail::save_non_pointer_type<Archive,T>::invoke(Archive &,const boost::serialization::nvp<FlowEngine::A *> &)' with [ Archive=FlowEngine::TextArchiveO, T=boost::serialization::nvp<FlowEngine::A *> ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\oserializer.hpp(536) : see reference to class template instantiation 'boost::archive::detail::save_non_pointer_type<Archive,T>' being compiled with [ Archive=FlowEngine::TextArchiveO, T=boost::serialization::nvp<FlowEngine::A *> ] d:\flow project\flowengine\3rdparty\include\boost\archive\basic_text_oarchive.hpp(78) : see reference to function template instantiation 'void boost::archive::save<Archive,const T>(Archive &,const T &)' being compiled with [ Archive=FlowEngine::TextArchiveO, T=const boost::serialization::nvp<FlowEngine::A *> ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\interface_oarchive.hpp(78) : see reference to function template instantiation 'void boost::archive::basic_text_oarchive<Archive>::save_override<T>(T &,int)' being compiled with [ Archive=FlowEngine::TextArchiveO, T=const boost::serialization::nvp<FlowEngine::A *> ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\interface_oarchive.hpp(86) : see reference to function template instantiation 'Archive &boost::archive::detail::interface_oarchive<Archive>::operator <<<T>(T &)' being compiled with [ Archive=FlowEngine::TextArchiveO, T=const boost::serialization::nvp<FlowEngine::A *> ] d:\flow project\flowengine\samples\silvestre\main4.cpp(222) : see reference to function template instantiation 'Archive &boost::archive::detail::interface_oarchive<Archive>::operator &<const boost::serialization::nvp<T>>(const boost::serialization::nvp<T> &)' being compiled with [ Archive=FlowEngine::TextArchiveO, T=FlowEngine::A * ] and crashes in the file dgbheap line 266. It was called here -> extnded_type_info_typeid.hpp line 92: return detail::extended_type_info_typeid_0::get_derived_extended_type_info(typeid(t)); Any clue?? I'm going to send to you the files, again so you can have a better look. Thanks for all the support. This thing is starting to make me crazy :S. On 1/16/07, Robert Ramey <ramey@rrsd.com> wrote:
The following changes would make your classes compatible with all archive types and might well fix your problem.
class C : public Serializer { typedef Serializer Parent; public: std::string text; A* m_owner; int32 dasse; Vector<float> vector_test;
C():m_owner(0) { text = "Ola sua puta rabeta!"; dasse = 69; vector_test.push_back(1); vector_test.push_back(1.2f); vector_test.push_back(1.3f); vector_test.push_back(1.4f); }
// standard way of specifying serialization for a class template<class Archive> serialize(Archive & ar, const unsigned int version){ ar.template register_type<C>(); ar.Serialize(dasse); ar.Serialize(text); //ar.Serialize(m_owner); //ar.Serialize(vector_test); }
void Serialize(IArchive& ar, const unsigned int version) { // forward to correct function from virtual call serialize(ar, version); }
};
BTW - if you want a virtual function interface to the serialization system you might want to check out "polymorphic archives" in the documentation.
Robert Ramey
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
-- Miguel Silvestre

I've looked at your code and the purpose and motivation are totally incomprehensible to me. I cannot follow it. I see no reason for a lot of the stuff you do here and a thorough analysis of the compile time error is really beyond me. I did take a little bit of time with your main program and recast it in a form which I believe reflects your intention as well as the way I would expect most people to find the serialization library useful. I started out with your main program and comment out parts which were irrelevant to our question here. I added some #defines and typedefs for constants and types presumably specified in other headers. I've attached my amended copy of your code. I compiles on MSVC 7.1. I think a more careful study of the documentation demos and tests would be of value. I hope this is helpful. Robert Ramey begin 666 test_zmisc.cpp M(VEF(# -"B-I;F-L=61E(")C;W)E+W-Y<W1E;2]0<F5C;VUP:6QE9"YH(@T* M#0HC:6YC;'5D92 \9G-T<F5A;3X-"@T*(VEN8VQU9&4@(F-O<F4O<V5R:6%L M:7IA=&EO;B]497AT4V5R:6%L:7IE<BYH(@T*#0HC:6YC;'5D92 B8V]R92]$ M969A=6QT5&%S:RYH(@T*(VEN8VQU9&4@(F-O<F4O8V]N=&%I;F5R+U-P:&5R M951R964N:"(-"B-I;F-L=61E(")R97-O=7)C97,O4F5S;W5R8V5"=69F97)& M86-T;W)Y+F@B#0HC:6YC;'5D92 B<F5S;W5R8V5S+T%)4F5S;W5R8V4N:"(- M"B-I;F-L=61E(")S8V5N92]M871E<FEA;"],:6=H=&EN9TUA=&5R:6%L+F@B M#0HC:6YC;'5D92 B<V-E;F4O<F5N9&5R+W)E;F1E<D5F9F5C=',O1&5F875L M=$5F9F5C="YH(@T*(VEN8VQU9&4@(G-C96YE+W)E;F1E<B]R96YD97)%9F9E M8W1S+T1E8G5G169F96-T+F@B#0HC:6YC;'5D92 B<V-E;F4O<F5N9&5R+W)E M;F1E<D5F9F5C=',O1&5B=6=0:'ES:6-S+F@B#0HC:6YC;'5D92 B<V-E;F4O M86-T:6]N=')I9V=E<B]!8W1I;VY-86YA9V5R+F@B#0HC:6YC;'5D92 B<V-E M;F4O<&AY<VEC<R]0:'ES:6-A;%=O<FQD+F@B#0HC:6YC;'5D92 B9W5I+T=5 M24UA;F%G97(N:"(-"B-I;F-L=61E(")G=6DO1EA0;&%Y4W1R96%M+F@B#0HC M:6YC;'5D92 B86DO86=E;G1S>7-T96TO06=E;G1-86YA9V5R+F@B#0HC:6YC M;'5D92 B86DO86=E;G1S>7-T96TO04E#;VYT<F]L;&5R+F@B#0HC:6YC;'5D M92 B;6]D=6QE+T5N9VEN94UO9'5L92YH(@T*(VEN8VQU9&4@(F=A;65P;&%Y M+T=A;65-86YA9V5R+F@B#0HC:6YC;'5D92 B<F5S;W5R8V5S+U-O=6YD4F5S M;W5R8V4N:"(-"B-I;F-L=61E(")S8V5N92]N;V1E+U-P:&5R951R965#;VQL M96-T;W(N:"(-"B-E;F1I9@T*#0HC:6YC;'5D92 \9G-T<F5A;3X-"@T*='EP M961E9B!I;G0@:6YT,S([#0IT>7!E9&5F('5N<VEG;F5D(&EN="!U:6YT,S([ M#0HC:6YC;'5D92 \=F5C=&]R/@T*(V1E9FEN92!696-T;W(@<W1D.CIV96-T M;W(-"B-D969I;F4@1D5?3TL@, T*(V1E9FEN92!&15])3E9!3$E$4$%204T@ M, T*(V1E9FEN92!&15]&04E,140H>"D@, T*#0HC:6YC;'5D92 \8F]O<W0O M<V5R:6%L:7IA=&EO;B]N=G N:'!P/@T*(VEN8VQU9&4@/&)O;W-T+W-E<FEA M;&EZ871I;VXO<W1R:6YG+FAP<#X-"@T*(VEN8VQU9&4@/&)O;W-T+V%R8VAI M=F4O=&5X=%]O87)C:&EV92YH<' ^#0IT>7!E9&5F(&)O;W-T.CIA<F-H:79E M.CIT97AT7V]A<F-H:79E(%1E>'1!<F-H:79E3SL-"B-I;F-L=61E(#QB;V]S M="]A<F-H:79E+W1E>'1?:6%R8VAI=F4N:'!P/@T*='EP961E9B!B;V]S=#HZ M87)C:&EV93HZ=&5X=%]I87)C:&EV92!497AT07)C:&EV94D[#0H-"@T*;F%M M97-P86-E($9L;W=%;F=I;F4-"GL-"@EC;&%S<R!!.PT*"6-L87-S($,@>PT* M"7!U8FQI8SH-"@D)<W1D.CIS=')I;F<@=&5X=#L-"@D)02H@;5]O=VYE<CL- M"@D):6YT,S(@9&%S<V4[#0H)"59E8W1O<CQF;&]A=#X@=F5C=&]R7W1E<W0[ M#0H-"@D)0R@I.FU?;W=N97(H,"D-"@D)>PT*"0D)=&5X=" ](")/;&$@<W5A M('!U=&$@<F%B971A(2([#0H)"0ED87-S92 ](#8Y.PT*"0D)=F5C=&]R7W1E M<W0N<'5S:%]B86-K*#$I.PT*"0D)=F5C=&]R7W1E<W0N<'5S:%]B86-K*#$N M,F8I.PT*"0D)=F5C=&]R7W1E<W0N<'5S:%]B86-K*#$N,V8I.PT*"0D)=F5C M=&]R7W1E<W0N<'5S:%]B86-K*#$N-&8I.PT*"0E]#0H)"0T*"0ET96UP;&%T M93QC;&%S<R!!<F-H:79E/@T*"0EV;VED('-E<FEA;&EZ92A!<F-H:79E)B!A M<BP@8V]N<W0@=6YS:6=N960@:6YT('9E<G-I;VXI#0H)"7L-"@D)"6%R+G1E M;7!L871E(')E9VES=&5R7W1Y<&4\0SXH*3L-"B @(" @(" @(" @(&%R("8@ M9&%S<V4[#0H@(" @(" @(" @("!A<B F('1E>'0[#0H)"0DO+V%R("8@;5]O M=VYE<BD[#0H)"0DO+V%R("8@=F5C=&]R7W1E<W0I.PT*"0E]#0H)?3L-"@T* M(" @(&-L87-S($$@>PT*"7!U8FQI8SH)"0T*#0H)"6EN="!D=6UB:3L-"@D) M9FQO870@9'5M8F8[#0HO+PD)5F5C=&]R,F8@=F5C=&]R5&5S=#L-"B\O"0E- M871R:7@S,R!M871R:7@[#0H)"4,J('1E<W1I;F<[#0HO+PD)5F5C=&]R,V8J M('1E<W1?=F]I9#L-"@T*"0E!*"DZ9'5M8FDH,3(I+"!D=6UB9B@V.2XV.68I M#0H)"7L@#0H)"0ET97-T:6YG(#T@;F5W($,H*3L)#0H)"0ET97-T:6YG+3YM M7V]W;F5R(#T@=&AI<SL)"0D-"B\O"0D);6%T<FEX+E-E=$ED96YT:71Y*"D[ M#0HO+PD)"71E<W1?=F]I9" ](&YE=R!696-T;W(S9B@Q+#(L,RD[#0H)"7T- M"@T*"0E!*&EN="!D=6UB,2P@9FQO870@9'5M8C(I(#H@9'5M8FDH9'5M8C$I M+"!D=6UB9BAD=6UB,BD-"@D)>R -"@D)"71E<W1I;F<@/2!N97<@0R@I.PT* M+R\)"0ET97-T:6YG+3YM7V]W;F5R(#T@=&AI<SL-"B\O"0D);6%T<FEX+E-E M=$ED96YT:71Y*"D[#0HO+PD)"71E<W1?=F]I9" ](&YE=R!696-T;W(S9B@Q M+#(L,RD[#0H)"7T-"@D)#0H)"71E;7!L871E/&-L87-S($%R8VAI=F4^#0H) M"79O:60@<V5R:6%L:7IE*$%R8VAI=F4F(&%R+"!C;VYS="!U;G-I9VYE9"!I M;G0@=F5R<VEO;BD-"@D)>PD-"B @(" @(" @(" @(&%R("8@9'5M8FD[#0H) M"0DO+V%R("8@=F5C=&]R5&5S=#L-"@D)"2\O87(@)B!M871R:7@[#0H@(" @ M(" @(" @("!A<B F('1E<W1I;F<[#0H)"0DO+V%R+E-E<FEA;&EZ92AT97-T M:6YG*3L-"B\O(&YO=&4Z('1H92!F;VQL;W=I;F<@;6%K92!N;R!S96YS92!A M="!A;&P-"@D)"2\O87(@)B H=F]I9"HI=&5S=%]V;VED+"!S:7IE;V8H5F5C M=&]R,V8I.PT*"0E]#0H)?3L-"@T*#0H)8VQA<W,@0B Z('!U8FQI8R!!#0H) M>PT*"7!R:79A=&4Z#0H)"6EN="!D=6UB0FD[#0H)"69L;V%T(&1U;6)"9CL- M"@T*"7!U8FQI8SH-"@T*"0E"*"DZ9'5M8D)I*#DI+"!D=6UB0F8H,"XY.#<V M9BD-"@D)>PT*"0E]#0H)"0T*"0ET96UP;&%T92 \8VQA<W,@07)C:&EV93X- M"@D)=F]I9"!S97)I86QI>F4H07)C:&EV928@87(L(&-O;G-T('5N<VEG;F5D M(&EN="!V97)S:6]N*0T*"0E["0T*"0D)+R]A<B F(&)O;W-T.CIS97)I86QI M>F%T:6]N.CIB87-E7V]B:F5C=#Q087)E;G0^*"IT:&ES*3L-"@D)"2\O87(N M4V5R:6%L:7IE*%!A<F5N="D[#0H)"0EA<BY397)I86QI>F4H9'5M8D)I*3L- M"@D)"6%R+E-E<FEA;&EZ92AD=6UB0F8I.PT*"0E]#0H)?3L-"@T*#0H)8VQA M<W,@4VEL=E1A<VL@+R\Z('!U8FQI8R!$969A=6QT5&%S:PT*"7L-"@EP<FEV M871E.@T*+R\)"71Y<&5D968@1&5F875L=%1A<VL@4&%R96YT.PT*"0T*"0EI M;G0@9'5M8FD[#0H)"69L;V%T(&1U;6)F.PT*"0D-"@D)02!T97-T03L-"@D) M02H@=&5S=$%0;VEN=&5R.PT*#0H)"6)O;VP@;5]S879E+"!M7WAM;#L-"@D) M<W1D.CIS=')I;F<@;5]F:6QE;F%M93L-"@T*"7!U8FQI8SH-"@D)4VEL=E1A M<VLH*3IM7W-A=F4H9F%L<V4I+"!D=6UB9B@V.2XV.68I+"!D=6UB:2@W*2P@ M;5]X;6PH9F%L<V4I+'1E<W1!4&]I;G1E<B@P*0T*"0E[?0T*#0H)"6EN="!3 M:6QV5&%S:SHZ4&%R<V5!<F=U;65N=',H8V]N<W0@<W1D.CIV96-T;W(\<W1D M.CIS=')I;F<^)B!A<F=S*0T*"0E[#0H)"0EF;W(H=6EN=#,R(&D@/2 P.R!I M(#P@*'5I;G0S,BEA<F=S+G-I>F4H*3L@:2LK*0T*"0D)>PT*"0D)"6EF*&%R M9W-;:5TN9FEN9"@B+7AM;"(I("$]('-T9#HZ<W1R:6YG.CIN<&]S*0T*"0D) M"0EM7WAM;" ]('1R=64[#0H-"@D)"0EI9BAA<F=S6VE=+F9I;F0H(BUS879E M/2(I("$]('-T9#HZ<W1R:6YG.CIN<&]S*0T*"0D)"7L-"@D)"0D);5]F:6QE M;F%M92 ](&%R9W-;:5TN<W5B<W1R*#8I.PT*"0D)"0EM7W-A=F4@/2!T<G5E M.PT*"0D)"7T-"@D)"0EE;'-E(&EF*&%R9W-;:5TN9FEN9"@B+6QO860](BD@ M(3T@<W1D.CIS=')I;F<Z.FYP;W,I#0H)"0D)>PT*"0D)"0EM7V9I;&5N86UE M(#T@87)G<UMI72YS=6)S='(H-BD[#0H)"0D)"6U?<V%V92 ](&9A;'-E.PT* M"0D)"7T-"@D)"7T-"@T*"0D)<F5T=7)N($9%7T]+.PT*"0E]#0H-"@D):6YT M(%-I;'9487-K.CI,;V%D1&%T82@I#0H)"7L-"@D)"0D)#0H)"0DO+T)/3U-4 M7T-,05-37U1204-+24Y'*$$L('1R86-K7VYE=F5R*0T*"0D):68H;5]S879E M*0T*"0D)"5=R:71E3V)J96-T*"D[#0H)"0EE;'-E#0H)"0D)3&]A9$]B:F5C M="@I.PT*#0H)"0ER971U<FX@1D5?3TL["0D)#0H)"7T-"@T*"0EI;G0@4VEL M=E1A<VLZ.E=R:71E3V)J96-T*"D-"@D)>PT*"0D)#0H)"0EC;VYS="!!(&%U M>"@Q,C,U-BP@.#DU-BXV.68I.PD-"@D)"71E<W1!4&]I;G1E<B ](&YE=R!! M*#DX-RP@,3(S+C4V.3@W9BD[#0HO+PD)"71E<W1!4&]I;G1E<BT^=F5C=&]R M5&5S="Y3970H,3(S+C8U9BP@-CDN,# P,# P,#%F*3L-"@T*"0D)02H@=&5S M=$$@/2!N97<@02@I.PT*"0D)#0H)"0ES=&0Z.F]F<W1R96%M(&]F<RAM7V9I M;&5N86UE+F-?<W1R*"DI.PT*"0D)+R\@8W)E871E(&%N9"!O<&5N(&$@=&5X M="!A<F-H:79E(&9O<B!O=71P=70-"@D)"2\O8F]O<W0Z.F%R8VAI=F4Z.G1E M>'1?;V%R8VAI=F4@;V$H;V9S*3L-"@D)"51E>'1!<F-H:79E3R!O82AO9G,I M.PT*#0H)"0DO+R!C<F5A=&4@86YD(&]P96X@82!B:6YA<GD@87)C:&EV92!F M;W(@;W5T<'5T"0D)"0D)#0H)"0DO+V)O;W-T.CIA<F-H:79E.CIB:6YA<GE? M;V%R8VAI=F4@;V$H;V9S*3L-"@D)"2\O0FEN87)Y07)C:&EV94\@;V$H(&]F M<RD[#0H-"@D)"2\O(&-R96%T92!A;F0@;W!E;B!A('AM;"!A<F-H:79E(&9O M<B!O=71P=70)"0D-"@D)"2\O8F]O<W0Z.F%R8VAI=F4Z.GAM;%]O87)C:&EV M92!O82AO9G,I.PT*"0D)+R]834Q!<F-H:79E3R!O82AO9G,I.PT*#0H)"0D- M"@D)"2\O=W)I=&4@8VQA<W,@:6YS=&%N8V4@=&\@87)C:&EV90T*"0D)+R]O M82 F($)/3U-47U-%4DE!3$E:051)3TY?3E90*'1E<W1!4&]I;G1E<BD[#0H) M"0EO82 F($)/3U-47U-%4DE!3$E:051)3TY?3E90*'1E<W1!*3L-"@T*#0H) M"0ER971U<FX@1D5?3TL[#0H)"7T-"@T*#0H)"6EN="!3:6QV5&%S:SHZ3&]A M9$]B:F5C="@I#0H)"7L-"@D)"4,J('1E<W1#(#T@,#L-"@D)"4(J('1E<W1" M(#T@,#L-"@D)"4$J('1E<W1!(#T@,#L-"@D)"2\O02!A=7@H,"P@,"D[#0H) M"0ES=&0Z.FEF<W1R96%M(&EF<RAM7V9I;&5N86UE+F-?<W1R*"DL('-T9#HZ M:6]S.CIB:6YA<GDI.PD)"0T*"0D)#0H)"0DO+V-R96%T92!A;F0@;W!E;B!A M(&-H87)A8W1E<B!A<F-H:79E(&9O<B!I;G!U= D)"0T*"0D)+R]B;V]S=#HZ M87)C:&EV93HZ=&5X=%]I87)C:&EV92!I82AI9G,I.PT*"0D)5&5X=$%R8VAI M=F5)(&EA*&EF<RD[#0H-"@D)"2\O8W)E871E(&%N9"!O<&5N(&$@8FEN87)Y M(&%R8VAI=F4@9F]R(&EN<'5T#0H)"0DO+V)O;W-T.CIA<F-H:79E.CIB:6YA M<GE?:6%R8VAI=F4@:6$H:69S*3L-"@D)"2\O0FEN87)Y07)C:&EV94D@:6$H M:69S*3L-"@T*"0D)+R]C<F5A=&4@86YD(&]P96X@82!X;6P@87)C:&EV92!F M;W(@:6YP=70-"@D)"2\O8F]O<W0Z.F%R8VAI=F4Z.GAM;%]I87)C:&EV92!I M82AI9G,I.PT*"0D)+R]834Q!<F-H:79E22!I82AI9G,I.PT*#0H)"0T*"0D) M+R\@<F5A9"!C;&%S<R!S=&%T92!F<F]M(&%R8VAI=F4-"@D)"2\O:6$@)B!" M3T]35%]315))04Q)6D%424].7TY64"AT97-T05!O:6YT97(I.PT*"0D):6$@ M)B!"3T]35%]315))04Q)6D%424].7TY64"AT97-T02D[#0H-"@D)"7)E='5R M;B!&15]/2SL-"@D)?0T*#0H)"6EN="!3:6QV5&%S:SHZ0W)E871E4F5N9&5R M169F96-T<R@I#0H)"7L-"@D)"7)E='5R;B!&15]/2SL-"@D)?0T*(VEF(# - M"@D):6YT($]N4W1A<G0H375T97@J(&UU=&5X*0T*"0E[#0H)"0EI;G0@<CL- M"@D)"7-T<FEN9R!L;V%D:6YG4V-R965N3F%M93L-"@D)"7-T<FEN9R!G86UM M84-O<G)E8W1I;VX[#0H)"0E&6%!L87E3=')E86TJ(&QO861I;F=38W)E96Y- M;W9I92 ](# [#0H-"@D)"2\O($EN:71I86QI>F4@<G1T:2!O8FIE8W1S#0H) M"0ER(#T@4F5G:7-T97)/8FIE8W1S*"D[#0H)"0EI9B H1D5?1D%)3$5$*'(I M*0T*"0D)>PT*"0D)"49%7TQ/1U]#4DE424-!3"A&15]&04E,+" B6T]N4W1A M<G0H*5TZ($5R<F]R(%)E9VES=&5R:6YG(&]B:F5C=',B*3L-"@D)"0EG;W1O M(')E='5R;E-!1D5&04E,.PT*"0D)?0T*#0H)"0DO+R!0<F4M26YI=&EA;&EZ M92!T87-K+@T*"0D)<B ]($]N4')E26YI="@I.PT*"0D):68@*$9%7T9!24Q% M1"AR*2D-"@D)"7L-"@D)"0E&15],3T=?0U))5$E#04PH1D5?1D%)3"P@(EM/ M;E-T87)T*"E=.B!%<G)O<B!/;E!R94EN:70H*2(I.PT*"0D)"6=O=&\@<F5T M=7)N4T%&149!24P[#0H)"0E]#0H-"@D)"2\O(%1E<W1I;F<@=&AE('!A<G-I M;F<@;V8@=&AE(&1I<@T*"0D)1FQO=T-O<F4Z.D=E=%-C<FEP=%-Y<W1E;2@I M+E!R;V-E<W-38W)I<'1$:7(H*3L-"@T*"0D)+R\@4F5G:7-T97(@<V-R:7!T M(&]B:F5C=',-"@D)"7(@/2!296=I<W1E<E-C<FEP=$]B:F5C=',H*3L-"@D) M"6EF("A&15]&04E,140H<BDI#0H)"0E[#0H)"0D)1D5?3$]'7T-2251)0T%, M*$9%7T9!24PL(");3VY3=&%R="@I73H@17)R;W(@<F5G:7-T97)I;F<@<V-R M:7!T(&]B:F5C=',N(BD[#0H)"0D)9V]T;R!R971U<FY3049%1D%)3#L-"@D) M"7T-"@T*"0D)+R\@;&]A9"!P<F5F97)E;F-E<PT*"0D)<B ]($9L;W=#;W)E M.CI'9710<F5F97)E;F-E<R@I+DEN:70H1V5T4')E9F5R96YC97-&:6QE;F%M M92@I*3L-"@D)"6EF("A&15]&04E,140H<BDI#0H)"0E[#0H)"0D)1D5?3$]' M7T-2251)0T%,*$9%7T9!24PL('-T<FEN9R@B6T]N4W1A<G0H*5TZ($5R<F]R M($EN:71I86QI>FEN9R!0<F5F97)E;F-E<SH@(BD@*R!'9710<F5F97)E;F-E M<T9I;&5N86UE*"DI.PT*"0D)"6=O=&\@<F5T=7)N4T%&149!24P[#0H)"0E] M#0H-"@D)"2\O('!A<G-E('5P9&%T92!M971H;V0-"@D)"5!R969E<F5N8V5S M)B!P<F5F97)E;F-E<R ]($9L;W=#;W)E.CI'9710<F5F97)E;F-E<R@I.PT* M"0D)<')E9F5R96YC97,N1V5T5F%L=64H(E-C96YE+E5P9&%T94UE=&AO9"(L M("AU:6YT,S(J*29M7W5P9&%T94UE=&AO9"D[#0H-"@D)"69L;V%T('8@/2 H M9FQO870I;5]U<&1A=&5);G1E<G9A;#L-"@D)"7!R969E<F5N8V5S+D=E=%9A M;'5E*")38V5N92Y5<&1A=&5);G1E<G9A;"(L("9V*3L-"@D)"6U?=7!D871E M26YT97)V86P@/2 H9&]U8FQE*78[#0H-"@D)"78@/2 H9FQO870I;5]D96QT M855P9&%T93L-"@D)"7!R969E<F5N8V5S+D=E=%9A;'5E*")38V5N92Y$96QT M855P9&%T92(L("9V*3L-"@D)"6U?9&5L=&%5<&1A=&4@/2 H9&]U8FQE*78[ M#0H-"@D)"2\O(&-R96%T92!W:6YD;W<-"@D)"6U?=VEN9&]W(#T@0W)E871E M36%I;E=I;F1O=R@I.PT*"0D):68@*"%M7W=I;F1O=RD-"@D)"7L-"@D)"0E& M15],3T=?0U))5$E#04PH1D5?1D%)3"P@(EM/;E-T87)T*"E=.B!%<G)O<B!) M;FET:6%L:7II;F<@=VEN9&]W(BD[#0H)"0D)9V]T;R!R971U<FY3049%1D%) M3#L-"@D)"7T-"@T*"0D)+R\@0W)E871E(&EN<'5T(&1E=FEC90T*"0D);5]I M;G!U=$1E=FEC92 ]($-R96%T94EN<'5T1&5V:6-E*"D[#0H)"0EI9B H(6U? M:6YP=71$979I8V4I#0H)"0E[#0H)"0D)1D5?3$]'7T-2251)0T%,*$9%7T9! M24PL(");3VY3=&%R="@I73H@17)R;W(@26YI=&EA;&EZ:6YG(&EN<'5T(&1E M=FEC92(I.PT*"0D)"6=O=&\@<F5T=7)N4T%&149!24P[#0H)"0E]#0H-"@D) M"2\O($-R96%T92!R96YD97(@9&5V:6-E#0H)"0EM7W)E;F1E<D1E=FEC92 ] M($-R96%T95)E;F1E<D1E=FEC92@I.PT*"0D):68@*"%M7W)E;F1E<D1E=FEC M92D-"@D)"7L-"@D)"0E&15],3T=?0U))5$E#04PH1D5?1D%)3"P@(EM/;E-T M87)T*"E=.B!%<G)O<B!);FET:6%L:7II;F<@<F5N9&5R(&1E=FEC92(I.PT* M"0D)"6=O=&\@<F5T=7)N4T%&149!24P[#0H)"0E]#0H)"0DO+R!792!N965D M('1O('-E="!T:&4@<')O<&5R(')E;F1E<B!D979I8V4@=&\@=&AE(&9A8W1O M<GD-"@D)"5)E<V]U<F-E0G5F9F5R1F%C=&]R>2H@<F)F(#T@4F5S;W5R8V5" M=69F97)&86-T;W)Y.CI'971&86-T;W)Y*"D[#0H)"0ER8F8M/E-E=%)E;F1E M<D1E=FEC92AM7W)E;F1E<D1E=FEC92D[#0H-"@D)"2\O($-R96%T92!T:&4@ M<F5S;W5R8V4@=&%S:PT*"0D);5]R97-O=7)C951A<VL@/2!#<F5A=&5297-O M=7)C951A<VLH*3L-"@D)"6EF("@A;5]R97-O=7)C951A<VLI#0H)"0E[#0H) M"0D)1D5?3$]'7T-2251)0T%,*$9%7T9!24PL(");3VY3=&%R="@I73H@17)R M;W(@8W)E871I;F<@=&AE(')E<V]U<F-E('1A<VLN(BD[#0H)"0D)9V]T;R!R M971U<FY3049%1D%)3#L-"@D)"7T-"@D)"2\O(%1/1$\Z(&9R97%U96YC>2!V M86QU92!I<R!H87)D8V]D960N(%5S92!A('!R969E<F5N8V4@9F]R('1H870- M"@D)"49L;W=#;W)E.CI'97138VAE9'5L97(H*2Y296=I<W1E<E1A<VLH;5]R M97-O=7)C951A<VLL(")297-O=7)C951A<VLB+" P+" P+C(U939F+" N,&8I M.PT*#0H)"0DO+R!);FET($UA;F%G97)S#0H)"0ER(#T@26YI=$UA;F%G97)S M*"D[#0H)"0EI9B H1D5?1D%)3$5$*'(I*0T*"0D)>PT*"0D)"49%7TQ/1U]# M4DE424-!3"A&15]&04E,+" B6T]N4W1A<G0H*5TZ($5R<F]R($EN:71I86QI M>FEN9R!M86YA9V5R<RXB*3L-"@D)"0EG;W1O(')E='5R;E-!1D5&04E,.PT* M"0D)?0T*#0H)"0DO+R!S970@9V%M;6$@;W!T:6]N<PT*"0D):68@*$9%7U-5 M0T-%141%1"AP<F5F97)E;F-E<RY'971686QU92@B5FED96\N1V%M;6%#;W)R M96-T:6]N(BP@)F=A;6UA0V]R<F5C=&EO;BDI*0T*"0D)>PT*"0D)"5-H87)E M9%1O;VQS.CI3=')I;F=4;U9E8W1O<BAG86UM84-O<G)E8W1I;VXL(&U?9V%M M;6%#;W)R96-T:6]N*3L-"@D)"7T-"@T*"0D)+R\@3&]A9&EN9R!S8W)E96X- M"@D)"7!R969E<F5N8V5S+D=E=%9A;'5E*")6:61E;RY,;V%D:6YG4V-R965N M(BP@)FQO861I;F=38W)E96Y.86UE*3L-"@D)"6EF*&QO861I;F=38W)E96Y. M86UE("$]("(B*0T*"0D)>PT*"0D)"6QO861I;F=38W)E96Y-;W9I92 ]($=E M=$=524UA;F%G97(H*2T^3&]A9$UO=FEE*&QO861I;F=38W)E96Y.86UE*3L- M"@D)"0EI9BAL;V%D:6YG4V-R965N36]V:64I#0H)"0D)>PT*"0D)"0EL;V%D M:6YG4V-R965N36]V:64M/E-E=%9I97=P;W)T*# L(# L(&U?<')E<V5N=%!A M<F%M<RYW:61T:"P@;5]P<F5S96YT4&%R86US+FAE:6=H="D[#0H)"0D)"4=E M=$=524UA;F%G97(H*2T^4F5N9&5R5&]P36]V:65S*# I.PT*"0D)"0E'9712 M96YD97)$979I8V4H*2T^4')E<V5N="@I.PT*"0D)"7T-"@D)"7T-"@T*"0D) M+R\@0W)E871E(&=L;V)A;"!E9F9E8W0@;6%C<F]S#0H)"0ER(#T@0W)E871E M1VQO8F%L169F96-T36%C<F]S*"D[#0H)"0EI9B H1D5?1D%)3$5$*'(I*0T* M"0D)>PT*"0D)"49%7TQ/1U]#4DE424-!3"A&15]&04E,+" B6T]N4W1A<G0H M*5TZ($5R<F]R(&-R96%T:6YG('1H92!G;&]B86P@969F96-T(&UA8W)O<RXB M*3L-"@D)"0EG;W1O(')E='5R;E-!1D5&04E,.PT*"0D)?0T*#0H)"0DO+R!# M<F5A=&4@9VQO8F%L(&5F9F5C="!P87)A;65T97)S('1A8FQE#0H)"0ER(#T@ M0W)E871E1VQO8F%L169F96-T4&%R86UE=&5R<U1A8FQE*"D[#0H)"0EI9B H M1D5?1D%)3$5$*'(I*0T*"0D)>PT*"0D)"49%7TQ/1U]#4DE424-!3"A&15]& M04E,+" B6T]N4W1A<G0H*5TZ($5R<F]R(&-R96%T:6YG('1H92!G;&]B86P@ M969F96-T('!A<F%M971E<G,@=&%B;&4N(BD[#0H)"0D)9V]T;R!R971U<FY3 M049%1D%)3#L-"@D)"7T-"@T*"0D)+R\@0W)E871E('1H92!D969A=6QT(&UA M=&5R:6%L#0H)"0ER(#T@0W)E871E1&5F875L=$UA=&5R:6%L*"D[#0H)"0EI M9B H1D5?1D%)3$5$*'(I*0T*"0D)>PT*"0D)"49%7TQ/1U]#4DE424-!3"A& M15]&04E,+" B6T]N4W1A<G0H*5TZ($5R<F]R(&-R96%T:6YG(&1E9F%U;'0@ M;6%T97)I86PN(BD[#0H)"0D)9V]T;R!R971U<FY3049%1D%)3#L-"@D)"7T- M"@T*"0D)+R\@;&]A9"!M871E<FEA;',-"@D)"7(@/2!&;&]W0V]R93HZ1V5T M36%T97)I86Q-86YA9V5R*"DM/DQO860H*3L-"@D)"6EF("A&15]&04E,140H M<BDI#0H)"0E[#0H)"0D)1D5?3$]'7T-2251)0T%,*$9%7T9!24PL(");3VY3 M=&%R="@I73H@17)R;W(@;&]A9&EN9R!M871E<FEA;',N(BD[#0H)"0D)9V]T M;R!R971U<FY3049%1D%)3#L-"@D)"7T-"@T*"0D)+R\@8W)E871E('1H92!R M96YD97(@8V]L;&5C=&]R#0H)"0EM7W)E;F1E<D-O;&QE8W1O<B ]($-R96%T M95)E;F1E<D-O;&QE8W1O<B@I.PT*"0D):68@*"%M7W)E;F1E<D-O;&QE8W1O M<BD-"@D)"7L-"@D)"0E&15],3T=?0U))5$E#04PH1D5?1D%)3"P@(EM/;E-T M87)T*"E=.B!%<G)O<B!C<F5A=&EN9R!296YD97(@0V]L;&5C=&]R+B(I.PT* M"0D)"6=O=&\@<F5T=7)N4T%&149!24P[#0H)"0E]#0H)"0EM7W)E;F1E<D-O M;&QE8W1O<BT^4V5T4V-E;F5-86YA9V5R*&U?<V-E;F5-86YA9V5R*3L-"@T* M"0D)+R\@0W)E871E(%-H87)E9"!R97-O=7)C97,@8F5T=V5E;B!E9F9E8W1S M#0H)"0ER(#T@0W)E871E169F96-T4VAA<F5D4F5S;W5R8V5S*"D[#0H)"0EI M9B H1D5?1D%)3$5$*'(I*0T*"0D)>PT*"0D)"49%7TQ/1U]#4DE424-!3"A& M15]&04E,+" B6T]N4W1A<G0H*5TZ($5R<F]R(&-R96%T:6YG('1H92!E9F9E M8W0@<VAA<F5D(')E<V]U<F-E<RXB*3L-"@D)"0EG;W1O(')E='5R;E-!1D5& M04E,.PT*"0D)?0T*#0H)"0DO+R!#<F5A=&4@<F5N9&5R(&5F9F5C=',-"@D) M"7(@/2!#<F5A=&5296YD97)%9F9E8W1S*"D[#0H)"0EI9B H1D5?1D%)3$5$ M*'(I*0T*"0D)>PT*"0D)"49%7TQ/1U]#4DE424-!3"A&15]&04E,+" B6T]N M4W1A<G0H*5TZ($5R<F]R(&-R96%T:6YG(')E;F1E<B!E9F9E8W1S+B(I.PT* M"0D)"6=O=&\@<F5T=7)N4T%&149!24P[#0H)"0E]#0H-"@D)"2\O(&-R96%T M92!T:&4@<F5N9&5R(&5F9F5C= T*"0D);5]D96)U9T5F9F5C=" ]($-R96%T M941E8G5G4F5N9&5R169F96-T*"D[#0H-"@D)"2\O(&-R96%T92!T:&4@<F5N M9&5R('!H>7-I8W,@9&5B=6<@969F96-T+B!">2!D969A=6QT(&ET)W,@9&ES M86)L960N#0H)"0EM7V1E8G5G4&AY<VEC<T5F9F5C=" ]($-R96%T941E8G5G M4&AY<VEC<U)E;F1E<D5F9F5C="@I.PT*"0D):68@*&U?9&5B=6=0:'ES:6-S M169F96-T*0T*"0D)"6U?9&5B=6=0:'ES:6-S169F96-T+3Y3971%;F%B;&4H M9F%L<V4I.PT*#0H)"0DO+R!E;F%B;&4@9&5B=6<@<&AY<VEC<PT*"0D):68@ M*&U?9&5B=6=0:'ES:6-S*0T*"0D)"45N86)L941E8G5G4&AY<VEC<RAM7V1E M8G5G4&AY<VEC<RD[#0H-"@T*"0D)+R\@8W)E871E('1H92!S8W)I<'0@=W)A M<'!E<@T*"0D);5]S>7-T96U38W)I<'17<F%P<&5R(#T@,#L@+R]#<F5A=&53 M>7-T96U38W)I<'17<F%P<&5R*"D[#0H-"@D)"2\O(&-R96%T92!D969A=6QT M)W,@:'5M86X@8V]N=')O;&QE<B!T;R!T:&4@8V%M97)A#0H)"0EM7VAU;6%N M0V]N=')O;&QE<B ](&U?:'5M86Y#;VYT<F]L;&5R36%N86=E<BT^0W)E871E M0V]N=')O;&QE<CQ(=6UA;D-O;G1R;VQL97(^*"D[#0H-"@T*"0D)+R\@3&]A M9"!U<V5R(&1A=&$-"@D)"7(@/2!,;V%D1&%T82@I.PT*"0D):68@*$9%7T9! M24Q%1"AR*2D-"@D)"7L-"@D)"0E&15],3T=?0U))5$E#04PH1D5?1D%)3"P@ M(EM/;E-T87)T*"E=.B!%<G)O<B!,;V%D1&%T82@I+B(I.PT*"0D)"6=O=&\@ M<F5T=7)N4T%&149!24P[#0H)"0E]#0H-"@T*"0D)+R\@8VAE8VL@9F]R(&5R M<F]R<PT*"0D):68@*&U?<F5N9&5R0V]L;&5C=&]R+3Y'971296YD97)#;VQL M96-T:6]N*"DM/D=E=%-C96YE0V%M97)A*# I(#T](# I#0H)"0D)1D5?3$]' M7U=!4DY)3D<H(EM$969A=6QT5&%S:SHZ3VY3=&%R="@I73H@4V-E;F4@0V%M M97)A(&ES;B=T('-E="XB*3L-"@T*"0D)+R\@17)R;W(@;VX@<&]S="!I;FET M#0H)"0ER(#T@3VY0;W-T26YI="@I.PT*"0D):68@*$9%7T9!24Q%1"AR*2D- M"@D)"7L-"@D)"0E&15],3T=?0U))5$E#04PH1D5?1D%)3"P@(EM/;E-T87)T M*"E=.B!%<G)O<B!/;E!O<W1);FET*"DN(BD[#0H)"0D)9V]T;R!R971U<FY3 M049%1D%)3#L-"@D)"7T-"@T*"0D)+R\@5$]$3SH@54Y#3TU-14Y4(%1(25,A M(2$A(2$A(2$A(2$-"@D)"2\J*B\-"@D)"2\O(&1O(&%N(&EN:71I86P@=7!D M871E('=I=&@@82!V97)Y('-M86QL(&1E;'1A#0H)"0E%34987T%#5$]234%. M04=%4BY0<F]C97-S*# N,#%F*3L-"@D)"55P9&%T95-C96YE*# N,#%F*3L- M"@D)"55P9&%T95)E;F1E<B@P+C Q9BD[#0H)"0DO*BHO#0H-"@D)"2\O(')E M;6]V92!L;V%D:6YG('-C<F5E;@T*"0D):68H;&]A9&EN9U-C<F5E;DUO=FEE M*0T*"0D)>PT*"0D)"4=E=$=524UA;F%G97(H*2T^56Y,;V%D36]V:64H;&]A M9&EN9U-C<F5E;DYA;64I.PT*"0D)?0T*#0H)"0E39714:')E861!9F9I;FET M>4UA<VLH1V5T0W5R<F5N=%1H<F5A9"@I+" P># Q*3L-"@D)"5-E=%1H<F5A M9%!R:6]R:71Y*$=E=$-U<G)E;G14:')E860H*2P@5$A214%$7U!224]22519 M7T%"3U9%7TY/4DU!3"D[#0H-"@D)"7)E='5R;B!&15]/2SL-"@T*<F5T=7)N M4T%&149!24PZ#0H-"@D)"2\O(')E;6]V92!L;V%D:6YG('-C<F5E;@T*"0D) M:68H;&]A9&EN9U-C<F5E;DUO=FEE*0T*"0D)>PT*"0D)"4=E=$=524UA;F%G M97(H*2T^56Y,;V%D36]V:64H;&]A9&EN9U-C<F5E;DYA;64I.PT*"0D)?0T* M#0H)"0ER971U<FX@<CL-"@D)?0T*(" @("-E;F1I9@T*"7T[#0H):6YT($9L M;W=-86EN*&-O;G-T('-T9#HZ=F5C=&]R/'-T9#HZ<W1R:6YG/B8@8VUD3&EN M92D-"@E[#0H)"6EF*&-M9$QI;F4N<VEZ92@I(#P@,2D-"@D)>PT*+R\)"0E& M15],3T=?15)23U(H1D5?24Y604Q)1%!!4D%-+" B4&QE87-E(&EN<V5R="!T M:&4@9FEL92!T;R!R96%D(&9R;VTA(BD[#0H)"0ER971U<FX@1D5?24Y604Q) M1%!!4D%-.PT*"0E]#0H-"@D)4VEL=E1A<VLJ('1A<VL@/2!N97<@4VEL=E1A M<VLH*3L-"@T*"0EI;G0@<B ]('1A<VLM/E!A<G-E07)G=6UE;G1S*&-M9$QI M;F4I.PT*"0EI9B H1D5?1D%)3$5$*'(I*0T*"0E[#0H)"0ED96QE=&4@=&%S M:SL-"@D)"7)E='5R;B!R.PT*"0E]#0H-"@D)+R]&;&]W0V]R93HZ1V5T4V-H M961U;&5R*"DN4F5G:7-T97)487-K*'1A<VLL(")S:6QV97(@5&%S:R(L(# L M("XP9BP@+C!F*3L-"@T*"0ED96QE=&4@=&%S:SL-"@D)<F5T=7)N($9%7T]+ M.PT*"7T-"GT-"B\J#0I"3T]35%]#3$%34U]465!%7TE.1D\H#0H)"0D)"2 @ M1FQO=T5N9VEN93HZ02P@#0H)"0D)"2 @97AT96YD961?='EP95]I;F9O7VYO M7W)T=&D\1FQO=T5N9VEN93HZ03X-"@D)"0D)(" I#0H-"D)/3U-47T-,05-3 M7T584$]25"A&;&]W16YG:6YE.CI!*0T*#0I"3T]35%]#3$%34U]465!%7TE. M1D\H#0H)"0D)"2 @1FQO=T5N9VEN93HZ0BP@#0H)"0D)"2 @97AT96YD961? M='EP95]I;F9O7VYO7W)T=&D\1FQO=T5N9VEN93HZ0CX-"@D)"0D)(" I#0H- M"D)/3U-47T-,05-37T584$]25"A&;&]W16YG:6YE.CI"*0T*+R]"3T]35%]# J3$%34U]%6%!/4E1?1U5)1"A&;&]W16YG:6YE.CI"+" B0B(I#0HJ+PT* ` end
participants (3)
-
Miguel Silvestre
-
Pfligersdorffer, Christian
-
Robert Ramey