From 915ee03cbe4b77f506d70b29c5366b05f4ae63ab Mon Sep 17 00:00:00 2001 From: Martin Kutter Date: Fri, 16 May 2008 04:20:13 -0800 Subject: [PATCH] import SOAP-WSDL 2.00.02 from CPAN git-cpan-module: SOAP-WSDL git-cpan-version: 2.00.02 git-cpan-authorid: MKUTTER git-cpan-file: authors/id/M/MK/MKUTTER/SOAP-WSDL-2.00.02.tar.gz --- Build.PL | 6 +- Changes | 26 +- LICENSE | 141 +++- MANIFEST | 23 +- META.yml | 740 +++++++++--------- Makefile.PL | 12 +- SOAP-WSDL-2.00_32.tar | Bin 1351680 -> 0 bytes TEST_COVERAGE | 2 +- benchmark/MEMORY_FOOTPRINT | 59 ++ benchmark/README | 77 ++ benchmark/XSD/strftime.pl | 24 + bin/wsdl2perl.pl | 32 +- example/cgi-bin/helloworld.pl | 0 example/cgi-bin/person.pl | 0 lib/SOAP/WSDL.pm | 18 +- lib/SOAP/WSDL/Base.pm | 19 +- lib/SOAP/WSDL/Binding.pm | 2 +- lib/SOAP/WSDL/Client.pm | 53 +- lib/SOAP/WSDL/Client/Base.pm | 8 +- lib/SOAP/WSDL/Definitions.pm | 8 +- lib/SOAP/WSDL/Deserializer/Hash.pm | 8 +- lib/SOAP/WSDL/Deserializer/SOM.pm | 8 +- lib/SOAP/WSDL/Deserializer/XSD.pm | 10 +- lib/SOAP/WSDL/Expat/Base.pm | 4 +- lib/SOAP/WSDL/Expat/Message2Hash.pm | 2 +- lib/SOAP/WSDL/Expat/MessageParser.pm | 16 +- lib/SOAP/WSDL/Expat/MessageStreamParser.pm | 8 +- lib/SOAP/WSDL/Expat/WSDLParser.pm | 71 +- lib/SOAP/WSDL/Factory/Deserializer.pm | 2 +- lib/SOAP/WSDL/Factory/Generator.pm | 2 +- lib/SOAP/WSDL/Factory/Serializer.pm | 8 +- lib/SOAP/WSDL/Factory/Transport.pm | 8 +- lib/SOAP/WSDL/Generator/Iterator/WSDL11.pm | 2 +- lib/SOAP/WSDL/Generator/PrefixResolver.pm | 2 +- lib/SOAP/WSDL/Generator/Template.pm | 2 +- .../WSDL/Generator/Template/Plugin/XSD.pm | 39 +- lib/SOAP/WSDL/Generator/Template/XSD.pm | 2 +- .../WSDL/Generator/Template/XSD/Interface.tt | 4 +- .../Generator/Template/XSD/complexType.tt | 10 +- .../Template/XSD/complexType/POD/all.tt | 3 +- .../XSD/complexType/POD/attributeSet.tt | 3 + .../Template/XSD/complexType/POD/choice.tt | 3 +- .../Generator/Template/XSD/complexType/all.tt | 38 +- .../XSD/complexType/complexContent.tt | 2 + .../Template/XSD/complexType/extension.tt | 58 +- .../Template/XSD/complexType/variety.tt | 4 +- lib/SOAP/WSDL/Generator/Visitor.pm | 2 +- lib/SOAP/WSDL/Generator/Visitor/Typelib.pm | 2 +- lib/SOAP/WSDL/Generator/Visitor/Typemap.pm | 75 +- lib/SOAP/WSDL/Manual/Cookbook.pod | 133 ++++ lib/SOAP/WSDL/Manual/FAQ.pod | 152 ++++ lib/SOAP/WSDL/Manual/Glossary.pod | 2 +- lib/SOAP/WSDL/Manual/Parser.pod | 2 +- lib/SOAP/WSDL/Manual/WS_I.pod | 2 +- lib/SOAP/WSDL/Message.pm | 2 +- lib/SOAP/WSDL/OpMessage.pm | 2 +- lib/SOAP/WSDL/Operation.pm | 2 +- lib/SOAP/WSDL/Part.pm | 2 +- lib/SOAP/WSDL/Port.pm | 2 +- lib/SOAP/WSDL/PortType.pm | 2 +- lib/SOAP/WSDL/SOAP/Address.pm | 2 +- lib/SOAP/WSDL/SOAP/Body.pm | 2 +- lib/SOAP/WSDL/SOAP/Header.pm | 2 +- lib/SOAP/WSDL/SOAP/HeaderFault.pm | 2 +- lib/SOAP/WSDL/SOAP/Operation.pm | 2 +- lib/SOAP/WSDL/SOAP/Typelib/Fault11.pm | 8 +- lib/SOAP/WSDL/Serializer/XSD.pm | 17 +- lib/SOAP/WSDL/Server.pm | 2 +- lib/SOAP/WSDL/Server/CGI.pm | 2 +- lib/SOAP/WSDL/Server/Mod_Perl2.pm | 285 +++++++ lib/SOAP/WSDL/Service.pm | 2 +- lib/SOAP/WSDL/Transport/HTTP.pm | 8 +- lib/SOAP/WSDL/Transport/Loopback.pm | 2 +- lib/SOAP/WSDL/Transport/Test.pm | 6 +- lib/SOAP/WSDL/TypeLookup.pm | 6 +- lib/SOAP/WSDL/Types.pm | 2 +- lib/SOAP/WSDL/XSD/Annotation.pm | 2 +- lib/SOAP/WSDL/XSD/Attribute.pm | 2 +- lib/SOAP/WSDL/XSD/AttributeGroup.pm | 2 +- lib/SOAP/WSDL/XSD/Builtin.pm | 2 +- lib/SOAP/WSDL/XSD/ComplexType.pm | 19 +- lib/SOAP/WSDL/XSD/Element.pm | 2 +- lib/SOAP/WSDL/XSD/Enumeration.pm | 2 +- lib/SOAP/WSDL/XSD/FractionDigits.pm | 2 +- lib/SOAP/WSDL/XSD/Group.pm | 2 +- lib/SOAP/WSDL/XSD/Length.pm | 2 +- lib/SOAP/WSDL/XSD/MaxExclusive.pm | 2 +- lib/SOAP/WSDL/XSD/MaxInclusive.pm | 2 +- lib/SOAP/WSDL/XSD/MaxLength.pm | 2 +- lib/SOAP/WSDL/XSD/MinExclusive.pm | 2 +- lib/SOAP/WSDL/XSD/MinInclusive.pm | 2 +- lib/SOAP/WSDL/XSD/MinLength.pm | 2 +- lib/SOAP/WSDL/XSD/Pattern.pm | 2 +- lib/SOAP/WSDL/XSD/Schema.pm | 2 +- lib/SOAP/WSDL/XSD/Schema/Builtin.pm | 8 +- lib/SOAP/WSDL/XSD/SimpleType.pm | 2 +- lib/SOAP/WSDL/XSD/TotalDigits.pm | 2 +- lib/SOAP/WSDL/XSD/Typelib/Attribute.pm | 2 +- lib/SOAP/WSDL/XSD/Typelib/AttributeSet.pm | 2 +- lib/SOAP/WSDL/XSD/Typelib/Builtin.pm | 2 +- lib/SOAP/WSDL/XSD/Typelib/Builtin/anyType.pm | 67 +- lib/SOAP/WSDL/XSD/Typelib/Builtin/boolean.pm | 2 +- lib/SOAP/WSDL/XSD/Typelib/Builtin/time.pm | 2 +- lib/SOAP/WSDL/XSD/Typelib/ComplexType.pm | 56 +- lib/SOAP/WSDL/XSD/Typelib/Element.pm | 8 +- lib/SOAP/WSDL/XSD/Typelib/SimpleType.pm | 10 +- lib/SOAP/WSDL/XSD/WhiteSpace.pm | 2 +- t/001_use.t | 38 - t/004_parse_wsdl.t | 398 ---------- t/006_client.t | 4 +- t/017_generator.t | 437 ----------- t/SOAP/WSDL/01_use.t | 7 - t/SOAP/WSDL/03_complexType-element-ref.t | 4 +- t/SOAP/WSDL/Client.t | 2 - t/SOAP/WSDL/Expat/WSDLParser.t | 64 +- t/SOAP/WSDL/Generator/Template.t | 28 - t/SOAP/WSDL/Generator/XSD.t | 18 +- t/SOAP/WSDL/Generator/XSD_custom_resolver.t | 131 ++++ t/SOAP/WSDL/Generator/XSD_dot_names.t | 9 +- .../WSDL/Generator/XSD_nested_complextype.t | 3 +- t/SOAP/WSDL/Generator/XSD_unsupported.t | 7 +- t/SOAP/WSDL/Generator/attr.pl | 23 - t/SOAP/WSDL/Serializer/XSD.t | 17 +- t/SOAP/WSDL/Server/Mod_Perl2.t | 173 ++++ t/SOAP/WSDL/Transport/{02_HTTP.t => HTTP.t} | 8 +- .../WSDL/XSD/Typelib/Builtin/anySimpleType.t | 4 +- t/SOAP/WSDL/XSD/Typelib/ComplexType.t | 24 +- t/acceptance/wsdl/006_sax_client.wsdl | 13 +- t/acceptance/wsdl/008_complexType.wsdl | 3 +- t/acceptance/wsdl/02_port.wsdl | 199 ++--- t/acceptance/wsdl/03_complexType-all.wsdl | 7 +- .../wsdl/03_complexType-element-ref.wsdl | 8 +- .../wsdl/03_complexType-sequence.wsdl | 175 +++-- t/acceptance/wsdl/04_element-simpleType.wsdl | 21 +- t/acceptance/wsdl/04_element.wsdl | 96 +-- t/acceptance/wsdl/05_simpleType-list.wsdl | 120 ++- .../wsdl/05_simpleType-restriction.wsdl | 14 +- t/acceptance/wsdl/05_simpleType-union.wsdl | 191 +++-- t/acceptance/wsdl/11_helloworld.wsdl | 2 + t/acceptance/wsdl/WSDLParser-import.wsdl | 1 + .../wsdl/WSDLParser/import_cascade.xsd | 4 + .../wsdl/WSDLParser/import_no_location.wsdl | 13 + .../wsdl/WSDLParser/import_xsd_cascade.wsdl | 15 + t/acceptance/wsdl/WSDLParser/imported.xsd | 4 + .../WSDLParser/xsd_import_no_location.wsdl | 15 + t/acceptance/wsdl/email_account.wsdl | 67 +- t/acceptance/wsdl/generator_test.wsdl | 268 ++++--- .../wsdl/generator_test_dot_names.wsdl | 485 ++++++------ .../wsdl/generator_unsupported_test.wsdl | 89 +-- t/acceptance/wsdl/helloWorld_header.wsdl | 43 + t/acceptance/wsdl/message_gateway.wsdl | 12 +- t/acceptance/wsdl/nested_complextype.wsdl | 4 +- t/lib/Mod_Perl2Test.pm | 15 + 153 files changed, 3289 insertions(+), 2513 deletions(-) delete mode 100644 SOAP-WSDL-2.00_32.tar create mode 100644 benchmark/MEMORY_FOOTPRINT create mode 100644 benchmark/README create mode 100644 benchmark/XSD/strftime.pl mode change 100755 => 100644 example/cgi-bin/helloworld.pl mode change 100755 => 100644 example/cgi-bin/person.pl create mode 100644 lib/SOAP/WSDL/Manual/Cookbook.pod create mode 100644 lib/SOAP/WSDL/Manual/FAQ.pod create mode 100644 lib/SOAP/WSDL/Server/Mod_Perl2.pm delete mode 100644 t/001_use.t delete mode 100644 t/004_parse_wsdl.t delete mode 100644 t/017_generator.t delete mode 100644 t/SOAP/WSDL/01_use.t create mode 100644 t/SOAP/WSDL/Generator/XSD_custom_resolver.t delete mode 100644 t/SOAP/WSDL/Generator/attr.pl create mode 100644 t/SOAP/WSDL/Server/Mod_Perl2.t rename t/SOAP/WSDL/Transport/{02_HTTP.t => HTTP.t} (68%) create mode 100644 t/acceptance/wsdl/WSDLParser/import_cascade.xsd create mode 100644 t/acceptance/wsdl/WSDLParser/import_no_location.wsdl create mode 100644 t/acceptance/wsdl/WSDLParser/import_xsd_cascade.wsdl create mode 100644 t/acceptance/wsdl/WSDLParser/imported.xsd create mode 100644 t/acceptance/wsdl/WSDLParser/xsd_import_no_location.wsdl create mode 100644 t/acceptance/wsdl/helloWorld_header.wsdl create mode 100644 t/lib/Mod_Perl2Test.pm diff --git a/Build.PL b/Build.PL index 5c84976..b6fe961 100644 --- a/Build.PL +++ b/Build.PL @@ -5,7 +5,7 @@ $build = Module::Build->new( create_makefile_pl => 'small', dist_abstract => 'SOAP with WSDL support', dist_name => 'SOAP-WSDL', - dist_version => '2.00.01', + dist_version => '2.00.02', module_name => 'SOAP::WSDL', license => 'artistic', requires => { @@ -22,7 +22,7 @@ $build = Module::Build->new( 'Getopt::Long' => 0, 'List::Util' => 0, 'LWP::UserAgent' => 0, - 'Template' => 0, + 'Template' => q(2.18), 'Term::ReadKey' => 0, 'URI' => 0, 'XML::Parser::Expat' => 0, @@ -41,7 +41,7 @@ $build = Module::Build->new( 'File::Spec' => 0, 'Storable' => 0, 'Test::More' => 0, - 'Template' => 0, + 'Template' => q(2.18), 'XML::Parser::Expat' => 0, }, recursive_test_files => 1, diff --git a/Changes b/Changes index f8c3b68..af04e5a 100644 --- a/Changes +++ b/Changes @@ -1,4 +1,4 @@ -Release notes for SOAP::WSDL 2.00.01 +Release notes for SOAP::WSDL 2.00.02 ------- I'm proud to present a new release of SOAP::WSDL. @@ -36,6 +36,30 @@ Features: The following changes have been made: +2.00.02 - May 16 2008 + +The following features were added (the numbers in square brackets are the +tracker IDs from https://sourceforge.net/tracker/?group_id=111978&atid=660924): + + * [ 1941134 ] Server for mod_perl2. Thanks to Noah Robin for contributing. + (I actually forgot to include it in 2.00.01) + +The following bugs have been fixed (the numbers in square brackets are the +tracker IDs from https://sourceforge.net/tracker/?group_id=111978&atid=660921): +The numbers with # are CPAN RT IDs (http://rt.cpan.org/). + + * [ 1943667 ] Error parsing complexType/extension + * [ 1960650 ] multi-level inheritance of complexTypes fails + * [ 1960319 ] ComplexType as_hash_ref returns objects on maximum depth + * [ 1943673 ] Relative schemaLocation="" URLs not resolved in + * [ 1953598 ] Cannot set server and attribute prefixes with wsdl2perl + * [ 1941080 ] 017_generator.t (test 2) fails with Template-Toolkit 2.15 + * [ 1949209 ] spelling/grammar in Mod_Perl2.pm + * [ 1950670 ] on_action removed in SOAP::WSDL >= 2.00 + * #35346 element ref="" not handled properly + +The following uncategorized improvements have been made: + 2.00.01 The following features were added (the numbers in square brackets are the diff --git a/LICENSE b/LICENSE index fd6bcd3..2785c8f 100644 --- a/LICENSE +++ b/LICENSE @@ -2,6 +2,145 @@ SOAP::WSDL is dual licensed under the same terms as Perl itself. This means at your choice, either the Perl Artistic License, or -the GNU GPL version 1 or higher. +the GNU GPL version 1 or - at your choice - any higher version. + +The GNU GPL can be obtained from +http://www.gnu.org/licenses/old-licenses/gpl-1.0.txt + +Newer versions can be found at http://www.gnu.org/licenses/gpl.html + +The Artistic License can be obtained from +http://dev.perl.org/licenses/artistic.html and is included below. + +ARTISTIC LICENSE +================ + The "Artistic License" + + Preamble + +The intent of this document is to state the conditions under which a +Package may be copied, such that the Copyright Holder maintains some +semblance of artistic control over the development of the package, +while giving the users of the package the right to use and distribute +the Package in a more-or-less customary fashion, plus the right to make +reasonable modifications. + +Definitions: + + "Package" refers to the collection of files distributed by the + Copyright Holder, and derivatives of that collection of files + created through textual modification. + + "Standard Version" refers to such a Package if it has not been + modified, or has been modified in accordance with the wishes + of the Copyright Holder as specified below. + + "Copyright Holder" is whoever is named in the copyright or + copyrights for the package. + + "You" is you, if you're thinking about copying or distributing + this Package. + + "Reasonable copying fee" is whatever you can justify on the + basis of media cost, duplication charges, time of people involved, + and so on. (You will not be required to justify it to the + Copyright Holder, but only to the computing community at large + as a market that must bear the fee.) + + "Freely Available" means that no fee is charged for the item + itself, though there may be fees involved in handling the item. + It also means that recipients of the item may redistribute it + under the same conditions they received it. + +1. You may make and give away verbatim copies of the source form of the +Standard Version of this Package without restriction, provided that you +duplicate all of the original copyright notices and associated disclaimers. + +2. You may apply bug fixes, portability fixes and other modifications +derived from the Public Domain or from the Copyright Holder. A Package +modified in such a way shall still be considered the Standard Version. + +3. You may otherwise modify your copy of this Package in any way, provided +that you insert a prominent notice in each changed file stating how and +when you changed that file, and provided that you do at least ONE of the +following: + + a) place your modifications in the Public Domain or otherwise make them + Freely Available, such as by posting said modifications to Usenet or + an equivalent medium, or placing the modifications on a major archive + site such as uunet.uu.net, or by allowing the Copyright Holder to include + your modifications in the Standard Version of the Package. + + b) use the modified Package only within your corporation or organization. + + c) rename any non-standard executables so the names do not conflict + with standard executables, which must also be provided, and provide + a separate manual page for each non-standard executable that clearly + documents how it differs from the Standard Version. + + d) make other distribution arrangements with the Copyright Holder. + +4. You may distribute the programs of this Package in object code or +executable form, provided that you do at least ONE of the following: + + a) distribute a Standard Version of the executables and library files, + together with instructions (in the manual page or equivalent) on where + to get the Standard Version. + + b) accompany the distribution with the machine-readable source of + the Package with your modifications. + + c) give non-standard executables non-standard names, and clearly + document the differences in manual pages (or equivalent), together + with instructions on where to get the Standard Version. + + d) make other distribution arrangements with the Copyright Holder. + +5. You may charge a reasonable copying fee for any distribution of this +Package. You may charge any fee you choose for support of this +Package. You may not charge a fee for this Package itself. However, +you may distribute this Package in aggregate with other (possibly +commercial) programs as part of a larger (possibly commercial) software +distribution provided that you do not advertise this Package as a +product of your own. You may embed this Package's interpreter within +an executable of yours (by linking); this shall be construed as a mere +form of aggregation, provided that the complete Standard Version of the +interpreter is so embedded. + +6. The scripts and library files supplied as input to or produced as +output from the programs of this Package do not automatically fall +under the copyright of this Package, but belong to whoever generated +them, and may be sold commercially, and may be aggregated with this +Package. If such scripts or library files are aggregated with this +Package via the so-called "undump" or "unexec" methods of producing a +binary executable image, then distribution of such an image shall +neither be construed as a distribution of this Package nor shall it +fall under the restrictions of Paragraphs 3 and 4, provided that you do +not represent such an executable image as a Standard Version of this +Package. + +7. C subroutines (or comparably compiled subroutines in other +languages) supplied by you and linked into this Package in order to +emulate subroutines and variables of the language defined by this +Package shall not be considered part of this Package, but are the +equivalent of input as in Paragraph 6, provided these subroutines do +not change the language in any way that would cause it to fail the +regression tests for the language. + +8. Aggregation of this Package with a commercial distribution is always +permitted provided that the use of this Package is embedded; that is, +when no overt attempt is made to make this Package's interfaces visible +to the end user of the commercial distribution. Such use shall not be +construed as a distribution of this Package. + +9. The name of the Copyright Holder may not be used to endorse or promote +products derived from this software without specific prior written permission. + +10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + The End + diff --git a/MANIFEST b/MANIFEST index 2fda1aa..3fd204d 100644 --- a/MANIFEST +++ b/MANIFEST @@ -1,12 +1,15 @@ benchmark/01_expat.t benchmark/hello.pl +benchmark/MEMORY_FOOTPRINT benchmark/person.pl benchmark/person.xml benchmark/person_profile.pl benchmark/person_single.pl +benchmark/README benchmark/XSD/01_anyType.t benchmark/XSD/02_anySimpleType.t benchmark/XSD/03_string.t +benchmark/XSD/strftime.pl bin/wsdl2perl.pl Build.PL Changes @@ -157,7 +160,9 @@ lib/SOAP/WSDL/Generator/Visitor.pm lib/SOAP/WSDL/Generator/Visitor/Typelib.pm lib/SOAP/WSDL/Generator/Visitor/Typemap.pm lib/SOAP/WSDL/Manual.pod +lib/SOAP/WSDL/Manual/Cookbook.pod lib/SOAP/WSDL/Manual/Deserializer.pod +lib/SOAP/WSDL/Manual/FAQ.pod lib/SOAP/WSDL/Manual/Glossary.pod lib/SOAP/WSDL/Manual/Parser.pod lib/SOAP/WSDL/Manual/Serializer.pod @@ -172,6 +177,7 @@ lib/SOAP/WSDL/PortType.pm lib/SOAP/WSDL/Serializer/XSD.pm lib/SOAP/WSDL/Server.pm lib/SOAP/WSDL/Server/CGI.pm +lib/SOAP/WSDL/Server/Mod_Perl2.pm lib/SOAP/WSDL/Service.pm lib/SOAP/WSDL/SOAP/Address.pm lib/SOAP/WSDL/SOAP/Body.pm @@ -264,11 +270,8 @@ MANIFEST This list of files META.yml MIGRATING README -SOAP-WSDL-2.00_32.tar -t/001_use.t t/002_parse_wsdl.t t/003_wsdl_based_serializer.t -t/004_parse_wsdl.t t/006_client.t t/007_envelope.t t/008_client_wsdl_complexType.t @@ -277,7 +280,6 @@ t/011_simpleType.t t/012_element.t t/013_complexType.t t/016_client_object.t -t/017_generator.t t/020_storable.t t/095_copying.t t/096_characters.t @@ -315,6 +317,7 @@ t/acceptance/wsdl/email_account.wsdl t/acceptance/wsdl/generator_test.wsdl t/acceptance/wsdl/generator_test_dot_names.wsdl t/acceptance/wsdl/generator_unsupported_test.wsdl +t/acceptance/wsdl/helloWorld_header.wsdl t/acceptance/wsdl/import.xsd t/acceptance/wsdl/import_loop.xsd t/acceptance/wsdl/message_gateway.wsdl @@ -322,9 +325,15 @@ t/acceptance/wsdl/nested_complextype.wsdl t/acceptance/wsdl/WSDLParser-import.wsdl t/acceptance/wsdl/WSDLParser-imported.wsdl t/acceptance/wsdl/WSDLParser.wsdl +t/acceptance/wsdl/WSDLParser/import_cascade.xsd +t/acceptance/wsdl/WSDLParser/import_no_location.wsdl +t/acceptance/wsdl/WSDLParser/import_xsd_cascade.wsdl +t/acceptance/wsdl/WSDLParser/imported.xsd +t/acceptance/wsdl/WSDLParser/xsd_import_no_location.wsdl t/acceptance/wsdl/WSDLParser_import_loop.wsdl t/contributed.wsdl t/Expat/03_wsdl.t +t/lib/Mod_Perl2Test.pm t/lib/MyComplexType.pm t/lib/MyElement.pm t/lib/MySimpleType.pm @@ -336,7 +345,6 @@ t/lib/Typelib/Base.pm t/lib/Typelib/TEnqueueMessage.pm t/lib/Typelib/TMessage.pm t/SOAP/WSDL.t -t/SOAP/WSDL/01_use.t t/SOAP/WSDL/02_port.t t/SOAP/WSDL/03_complexType-all.t t/SOAP/WSDL/03_complexType-choice.t @@ -366,11 +374,11 @@ t/SOAP/WSDL/Expat/WSDLParser.t t/SOAP/WSDL/Factory/Deserializer.t t/SOAP/WSDL/Factory/Serializer.t t/SOAP/WSDL/Factory/Transport.t -t/SOAP/WSDL/Generator/attr.pl t/SOAP/WSDL/Generator/Template.t t/SOAP/WSDL/Generator/Visitor.t t/SOAP/WSDL/Generator/Visitor/Typemap.t t/SOAP/WSDL/Generator/XSD.t +t/SOAP/WSDL/Generator/XSD_custom_resolver.t t/SOAP/WSDL/Generator/XSD_dot_names.t t/SOAP/WSDL/Generator/XSD_nested_complextype.t t/SOAP/WSDL/Generator/XSD_unsupported.t @@ -379,10 +387,11 @@ t/SOAP/WSDL/PortType.t t/SOAP/WSDL/Serializer/XSD.t t/SOAP/WSDL/Server.t t/SOAP/WSDL/Server/CGI.t +t/SOAP/WSDL/Server/Mod_Perl2.t t/SOAP/WSDL/Transport/01_Test.t -t/SOAP/WSDL/Transport/02_HTTP.t t/SOAP/WSDL/Transport/acceptance/test2.xml t/SOAP/WSDL/Transport/acceptance/test3.xml +t/SOAP/WSDL/Transport/HTTP.t t/SOAP/WSDL/Typelib/Fault11.t t/SOAP/WSDL/Types.t t/SOAP/WSDL/XSD/Attribute.t diff --git a/META.yml b/META.yml index f27aa1f..099eb0a 100644 --- a/META.yml +++ b/META.yml @@ -1,367 +1,373 @@ ---- -name: SOAP-WSDL -version: 2.00.01 -author: - - 'Martin Kutter ' -abstract: SOAP with WSDL support -license: artistic -resources: - license: http://opensource.org/licenses/artistic-license.php -requires: - Class::Std::Fast: 0.0.5 - Data::Dumper: 0 - Date::Format: 0 - Date::Parse: 0 - File::Basename: 0 - File::Path: 0 - Getopt::Long: 0 - LWP::UserAgent: 0 - List::Util: 0 - Template: 0 - Term::ReadKey: 0 - URI: 0 - XML::Parser::Expat: 0 - perl: 5.8.0 -build_requires: - Class::Std::Fast: 0.0.5 - Cwd: 0 - Date::Format: 0 - Date::Parse: 0 - File::Basename: 0 - File::Path: 0 - File::Spec: 0 - Getopt::Long: 0 - LWP::UserAgent: 0 - List::Util: 0 - Module::Build: 0 - Storable: 0 - Template: 0 - Test::More: 0 - XML::Parser::Expat: 0 -provides: - SOAP::WSDL: - file: lib/SOAP/WSDL.pm - version: 2.00.01 - SOAP::WSDL::Base: - file: lib/SOAP/WSDL/Base.pm - version: 2.00.01 - SOAP::WSDL::Binding: - file: lib/SOAP/WSDL/Binding.pm - version: 2.00.01 - SOAP::WSDL::Client: - file: lib/SOAP/WSDL/Client.pm - version: 2.00.01 - SOAP::WSDL::Client::Base: - file: lib/SOAP/WSDL/Client/Base.pm - version: 2.00.01 - SOAP::WSDL::Definitions: - file: lib/SOAP/WSDL/Definitions.pm - version: 2.00.01 - SOAP::WSDL::Deserializer::Hash: - file: lib/SOAP/WSDL/Deserializer/Hash.pm - version: 2.00.01 - SOAP::WSDL::Deserializer::SOM: - file: lib/SOAP/WSDL/Deserializer/SOM.pm - version: 2.00.01 - SOAP::WSDL::Deserializer::XSD: - file: lib/SOAP/WSDL/Deserializer/XSD.pm - version: 2.00.01 - SOAP::WSDL::Expat::Base: - file: lib/SOAP/WSDL/Expat/Base.pm - version: 2.00.01 - SOAP::WSDL::Expat::Message2Hash: - file: lib/SOAP/WSDL/Expat/Message2Hash.pm - version: 2.00.01 - SOAP::WSDL::Expat::MessageParser: - file: lib/SOAP/WSDL/Expat/MessageParser.pm - version: 2.00.01 - SOAP::WSDL::Expat::MessageStreamParser: - file: lib/SOAP/WSDL/Expat/MessageStreamParser.pm - version: 2.00.01 - SOAP::WSDL::Factory::Deserializer: - file: lib/SOAP/WSDL/Factory/Deserializer.pm - version: 2.00.01 - SOAP::WSDL::Factory::Generator: - file: lib/SOAP/WSDL/Factory/Generator.pm - version: 2.00.01 - SOAP::WSDL::Factory::Serializer: - file: lib/SOAP/WSDL/Factory/Serializer.pm - version: 2.00.01 - SOAP::WSDL::Factory::Transport: - file: lib/SOAP/WSDL/Factory/Transport.pm - version: 2.00.01 - SOAP::WSDL::Generator::Iterator::WSDL11: - file: lib/SOAP/WSDL/Generator/Iterator/WSDL11.pm - version: 2.00.01 - SOAP::WSDL::Generator::PrefixResolver: - file: lib/SOAP/WSDL/Generator/PrefixResolver.pm - version: 2.00.01 - SOAP::WSDL::Generator::Template: - file: lib/SOAP/WSDL/Generator/Template.pm - version: 2.00.01 - SOAP::WSDL::Generator::Template::Plugin::XSD: - file: lib/SOAP/WSDL/Generator/Template/Plugin/XSD.pm - version: 2.00.01 - SOAP::WSDL::Generator::Template::XSD: - file: lib/SOAP/WSDL/Generator/Template/XSD.pm - version: 2.00.01 - SOAP::WSDL::Generator::Visitor: - file: lib/SOAP/WSDL/Generator/Visitor.pm - version: 2.00.01 - SOAP::WSDL::Generator::Visitor::Typelib: - file: lib/SOAP/WSDL/Generator/Visitor/Typelib.pm - version: 2.00.01 - SOAP::WSDL::Generator::Visitor::Typemap: - file: lib/SOAP/WSDL/Generator/Visitor/Typemap.pm - version: 2.00.01 - SOAP::WSDL::Message: - file: lib/SOAP/WSDL/Message.pm - version: 2.00.01 - SOAP::WSDL::OpMessage: - file: lib/SOAP/WSDL/OpMessage.pm - version: 2.00.01 - SOAP::WSDL::Operation: - file: lib/SOAP/WSDL/Operation.pm - version: 2.00.01 - SOAP::WSDL::Part: - file: lib/SOAP/WSDL/Part.pm - version: 2.00.01 - SOAP::WSDL::Port: - file: lib/SOAP/WSDL/Port.pm - version: 2.00.01 - SOAP::WSDL::PortType: - file: lib/SOAP/WSDL/PortType.pm - version: 2.00.01 - SOAP::WSDL::SOAP::Address: - file: lib/SOAP/WSDL/SOAP/Address.pm - version: 2.00.01 - SOAP::WSDL::SOAP::Body: - file: lib/SOAP/WSDL/SOAP/Body.pm - version: 2.00.01 - SOAP::WSDL::SOAP::Header: - file: lib/SOAP/WSDL/SOAP/Header.pm - version: 2.00.01 - SOAP::WSDL::SOAP::HeaderFault: - file: lib/SOAP/WSDL/SOAP/HeaderFault.pm - version: 2.00.01 - SOAP::WSDL::SOAP::Operation: - file: lib/SOAP/WSDL/SOAP/Operation.pm - version: 2.00.01 - SOAP::WSDL::SOAP::Typelib::Fault11: - file: lib/SOAP/WSDL/SOAP/Typelib/Fault11.pm - version: 2.00.01 - SOAP::WSDL::Serializer::XSD: - file: lib/SOAP/WSDL/Serializer/XSD.pm - version: 2.00.01 - SOAP::WSDL::Server: - file: lib/SOAP/WSDL/Server.pm - version: 2.00.01 - SOAP::WSDL::Server::CGI: - file: lib/SOAP/WSDL/Server/CGI.pm - version: 2.00.01 - SOAP::WSDL::Service: - file: lib/SOAP/WSDL/Service.pm - version: 2.00.01 - SOAP::WSDL::Transport::HTTP: - file: lib/SOAP/WSDL/Transport/HTTP.pm - version: 2.00.01 - SOAP::WSDL::Transport::Loopback: - file: lib/SOAP/WSDL/Transport/Loopback.pm - version: 2.00.01 - SOAP::WSDL::Transport::Test: - file: lib/SOAP/WSDL/Transport/Test.pm - version: 2.00.01 - SOAP::WSDL::TypeLookup: - file: lib/SOAP/WSDL/TypeLookup.pm - version: 2.00.01 - SOAP::WSDL::Types: - file: lib/SOAP/WSDL/Types.pm - version: 2.00.01 - SOAP::WSDL::XSD::Annotation: - file: lib/SOAP/WSDL/XSD/Annotation.pm - version: 2.00.01 - SOAP::WSDL::XSD::Attribute: - file: lib/SOAP/WSDL/XSD/Attribute.pm - version: 2.00.01 - SOAP::WSDL::XSD::AttributeGroup: - file: lib/SOAP/WSDL/XSD/AttributeGroup.pm - version: 2.00.01 - SOAP::WSDL::XSD::Builtin: - file: lib/SOAP/WSDL/XSD/Builtin.pm - version: 2.00.01 - SOAP::WSDL::XSD::ComplexType: - file: lib/SOAP/WSDL/XSD/ComplexType.pm - version: 2.00.01 - SOAP::WSDL::XSD::Element: - file: lib/SOAP/WSDL/XSD/Element.pm - version: 2.00.01 - SOAP::WSDL::XSD::Enumeration: - file: lib/SOAP/WSDL/XSD/Enumeration.pm - version: 2.00.01 - SOAP::WSDL::XSD::FractionDigits: - file: lib/SOAP/WSDL/XSD/FractionDigits.pm - version: 2.00.01 - SOAP::WSDL::XSD::Group: - file: lib/SOAP/WSDL/XSD/Group.pm - version: 2.00.01 - SOAP::WSDL::XSD::Length: - file: lib/SOAP/WSDL/XSD/Length.pm - version: 2.00.01 - SOAP::WSDL::XSD::MaxExclusive: - file: lib/SOAP/WSDL/XSD/MaxExclusive.pm - version: 2.00.01 - SOAP::WSDL::XSD::MaxInclusive: - file: lib/SOAP/WSDL/XSD/MaxInclusive.pm - version: 2.00.01 - SOAP::WSDL::XSD::MaxLength: - file: lib/SOAP/WSDL/XSD/MaxLength.pm - version: 2.00.01 - SOAP::WSDL::XSD::MinExclusive: - file: lib/SOAP/WSDL/XSD/MinExclusive.pm - version: 2.00.01 - SOAP::WSDL::XSD::MinInclusive: - file: lib/SOAP/WSDL/XSD/MinInclusive.pm - version: 2.00.01 - SOAP::WSDL::XSD::MinLength: - file: lib/SOAP/WSDL/XSD/MinLength.pm - version: 2.00.01 - SOAP::WSDL::XSD::Pattern: - file: lib/SOAP/WSDL/XSD/Pattern.pm - version: 2.00.01 - SOAP::WSDL::XSD::Schema: - file: lib/SOAP/WSDL/XSD/Schema.pm - version: 2.00.01 - SOAP::WSDL::XSD::Schema::Builtin: - file: lib/SOAP/WSDL/XSD/Schema/Builtin.pm - version: 2.00.01 - SOAP::WSDL::XSD::SimpleType: - file: lib/SOAP/WSDL/XSD/SimpleType.pm - version: 2.00.01 - SOAP::WSDL::XSD::TotalDigits: - file: lib/SOAP/WSDL/XSD/TotalDigits.pm - version: 2.00.01 - SOAP::WSDL::XSD::Typelib::Attribute: - file: lib/SOAP/WSDL/XSD/Typelib/Attribute.pm - version: 2.00.01 - SOAP::WSDL::XSD::Typelib::AttributeSet: - file: lib/SOAP/WSDL/XSD/Typelib/AttributeSet.pm - version: 2.00.01 - SOAP::WSDL::XSD::Typelib::Builtin: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin.pm - version: 2.00.01 - SOAP::WSDL::XSD::Typelib::Builtin::ENTITY: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/ENTITY.pm - SOAP::WSDL::XSD::Typelib::Builtin::ID: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/ID.pm - SOAP::WSDL::XSD::Typelib::Builtin::IDREF: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/IDREF.pm - SOAP::WSDL::XSD::Typelib::Builtin::IDREFS: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/IDREFS.pm - SOAP::WSDL::XSD::Typelib::Builtin::NCName: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/NCName.pm - SOAP::WSDL::XSD::Typelib::Builtin::NMTOKEN: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/NMTOKEN.pm - SOAP::WSDL::XSD::Typelib::Builtin::NMTOKENS: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/NMTOKENS.pm - SOAP::WSDL::XSD::Typelib::Builtin::NOTATION: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/NOTATION.pm - SOAP::WSDL::XSD::Typelib::Builtin::Name: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/Name.pm - SOAP::WSDL::XSD::Typelib::Builtin::QName: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/QName.pm - SOAP::WSDL::XSD::Typelib::Builtin::anySimpleType: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/anySimpleType.pm - SOAP::WSDL::XSD::Typelib::Builtin::anyType: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/anyType.pm - version: 2.00_29 - SOAP::WSDL::XSD::Typelib::Builtin::anyURI: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/anyURI.pm - SOAP::WSDL::XSD::Typelib::Builtin::base64Binary: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/base64Binary.pm - SOAP::WSDL::XSD::Typelib::Builtin::boolean: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/boolean.pm - version: 2.00_23 - SOAP::WSDL::XSD::Typelib::Builtin::byte: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/byte.pm - SOAP::WSDL::XSD::Typelib::Builtin::date: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/date.pm - SOAP::WSDL::XSD::Typelib::Builtin::dateTime: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/dateTime.pm - SOAP::WSDL::XSD::Typelib::Builtin::decimal: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/decimal.pm - SOAP::WSDL::XSD::Typelib::Builtin::double: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/double.pm - SOAP::WSDL::XSD::Typelib::Builtin::duration: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/duration.pm - SOAP::WSDL::XSD::Typelib::Builtin::float: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/float.pm - SOAP::WSDL::XSD::Typelib::Builtin::gDay: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/gDay.pm - SOAP::WSDL::XSD::Typelib::Builtin::gMonth: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/gMonth.pm - SOAP::WSDL::XSD::Typelib::Builtin::gMonthDay: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/gMonthDay.pm - SOAP::WSDL::XSD::Typelib::Builtin::gYear: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/gYear.pm - SOAP::WSDL::XSD::Typelib::Builtin::gYearMonth: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/gYearMonth.pm - SOAP::WSDL::XSD::Typelib::Builtin::hexBinary: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/hexBinary.pm - SOAP::WSDL::XSD::Typelib::Builtin::int: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/int.pm - SOAP::WSDL::XSD::Typelib::Builtin::integer: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/integer.pm - SOAP::WSDL::XSD::Typelib::Builtin::language: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/language.pm - SOAP::WSDL::XSD::Typelib::Builtin::list: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/list.pm - SOAP::WSDL::XSD::Typelib::Builtin::long: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/long.pm - SOAP::WSDL::XSD::Typelib::Builtin::negativeInteger: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/negativeInteger.pm - SOAP::WSDL::XSD::Typelib::Builtin::nonNegativeInteger: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/nonNegativeInteger.pm - SOAP::WSDL::XSD::Typelib::Builtin::nonPositiveInteger: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/nonPositiveInteger.pm - SOAP::WSDL::XSD::Typelib::Builtin::normalizedString: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/normalizedString.pm - SOAP::WSDL::XSD::Typelib::Builtin::positiveInteger: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/positiveInteger.pm - SOAP::WSDL::XSD::Typelib::Builtin::short: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/short.pm - SOAP::WSDL::XSD::Typelib::Builtin::string: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/string.pm - SOAP::WSDL::XSD::Typelib::Builtin::time: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/time.pm - version: 2.00_25 - SOAP::WSDL::XSD::Typelib::Builtin::token: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/token.pm - SOAP::WSDL::XSD::Typelib::Builtin::unsignedByte: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/unsignedByte.pm - SOAP::WSDL::XSD::Typelib::Builtin::unsignedInt: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/unsignedInt.pm - SOAP::WSDL::XSD::Typelib::Builtin::unsignedLong: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/unsignedLong.pm - SOAP::WSDL::XSD::Typelib::Builtin::unsignedShort: - file: lib/SOAP/WSDL/XSD/Typelib/Builtin/unsignedShort.pm - SOAP::WSDL::XSD::Typelib::ComplexType: - file: lib/SOAP/WSDL/XSD/Typelib/ComplexType.pm - version: 2.00.01 - SOAP::WSDL::XSD::Typelib::Element: - file: lib/SOAP/WSDL/XSD/Typelib/Element.pm - version: 2.00.01 - SOAP::WSDL::XSD::Typelib::SimpleType: - file: lib/SOAP/WSDL/XSD/Typelib/SimpleType.pm - version: 2.00.01 - SOAP::WSDL::XSD::Typelib::SimpleType::restriction: - file: lib/SOAP/WSDL/XSD/Typelib/SimpleType.pm - version: 2.00.01 - SOAP::WSDL::XSD::WhiteSpace: - file: lib/SOAP/WSDL/XSD/WhiteSpace.pm - version: 2.00.01 -generated_by: Module::Build version 0.2808 -meta-spec: - url: http://module-build.sourceforge.net/META-spec-v1.2.html - version: 1.2 -no_index: - directory: lib/SOAP/WSDL/Generator/Template/XSD/ +--- +name: SOAP-WSDL +version: 2.00.02 +author: + - 'Martin Kutter ' +abstract: SOAP with WSDL support +license: artistic +resources: + license: http://opensource.org/licenses/artistic-license.php +requires: + Class::Std::Fast: 0.0.5 + Data::Dumper: 0 + Date::Format: 0 + Date::Parse: 0 + File::Basename: 0 + File::Path: 0 + Getopt::Long: 0 + LWP::UserAgent: 0 + List::Util: 0 + Template: 2.18 + Term::ReadKey: 0 + URI: 0 + XML::Parser::Expat: 0 + perl: 5.8.0 +build_requires: + Class::Std::Fast: 0.0.5 + Cwd: 0 + Date::Format: 0 + Date::Parse: 0 + File::Basename: 0 + File::Path: 0 + File::Spec: 0 + Getopt::Long: 0 + LWP::UserAgent: 0 + List::Util: 0 + Module::Build: 0 + Storable: 0 + Template: 2.18 + Test::More: 0 + XML::Parser::Expat: 0 +provides: + SOAP::WSDL: + file: lib/SOAP/WSDL.pm + version: 2.00.02 + SOAP::WSDL::Base: + file: lib/SOAP/WSDL/Base.pm + version: 2.00.02 + SOAP::WSDL::Binding: + file: lib/SOAP/WSDL/Binding.pm + version: 2.00.02 + SOAP::WSDL::Client: + file: lib/SOAP/WSDL/Client.pm + version: 2.00.02 + SOAP::WSDL::Client::Base: + file: lib/SOAP/WSDL/Client/Base.pm + version: 2.00.02 + SOAP::WSDL::Definitions: + file: lib/SOAP/WSDL/Definitions.pm + version: 2.00.02 + SOAP::WSDL::Deserializer::Hash: + file: lib/SOAP/WSDL/Deserializer/Hash.pm + version: 2.00.02 + SOAP::WSDL::Deserializer::SOM: + file: lib/SOAP/WSDL/Deserializer/SOM.pm + version: 2.00.02 + SOAP::WSDL::Deserializer::XSD: + file: lib/SOAP/WSDL/Deserializer/XSD.pm + version: 2.00.02 + SOAP::WSDL::Expat::Base: + file: lib/SOAP/WSDL/Expat/Base.pm + version: 2.00.02 + SOAP::WSDL::Expat::Message2Hash: + file: lib/SOAP/WSDL/Expat/Message2Hash.pm + version: 2.00.02 + SOAP::WSDL::Expat::MessageParser: + file: lib/SOAP/WSDL/Expat/MessageParser.pm + version: 2.00.02 + SOAP::WSDL::Expat::MessageStreamParser: + file: lib/SOAP/WSDL/Expat/MessageStreamParser.pm + version: 2.00.02 + SOAP::WSDL::Expat::WSDLParser: + file: lib/SOAP/WSDL/Expat/WSDLParser.pm + version: 2.00.02 + SOAP::WSDL::Factory::Deserializer: + file: lib/SOAP/WSDL/Factory/Deserializer.pm + version: 2.00.02 + SOAP::WSDL::Factory::Generator: + file: lib/SOAP/WSDL/Factory/Generator.pm + version: 2.00.02 + SOAP::WSDL::Factory::Serializer: + file: lib/SOAP/WSDL/Factory/Serializer.pm + version: 2.00.02 + SOAP::WSDL::Factory::Transport: + file: lib/SOAP/WSDL/Factory/Transport.pm + version: 2.00.02 + SOAP::WSDL::Generator::Iterator::WSDL11: + file: lib/SOAP/WSDL/Generator/Iterator/WSDL11.pm + version: 2.00.02 + SOAP::WSDL::Generator::PrefixResolver: + file: lib/SOAP/WSDL/Generator/PrefixResolver.pm + version: 2.00.02 + SOAP::WSDL::Generator::Template: + file: lib/SOAP/WSDL/Generator/Template.pm + version: 2.00.02 + SOAP::WSDL::Generator::Template::Plugin::XSD: + file: lib/SOAP/WSDL/Generator/Template/Plugin/XSD.pm + version: 2.00.02 + SOAP::WSDL::Generator::Template::XSD: + file: lib/SOAP/WSDL/Generator/Template/XSD.pm + version: 2.00.02 + SOAP::WSDL::Generator::Visitor: + file: lib/SOAP/WSDL/Generator/Visitor.pm + version: 2.00.02 + SOAP::WSDL::Generator::Visitor::Typelib: + file: lib/SOAP/WSDL/Generator/Visitor/Typelib.pm + version: 2.00.02 + SOAP::WSDL::Generator::Visitor::Typemap: + file: lib/SOAP/WSDL/Generator/Visitor/Typemap.pm + version: 2.00.02 + SOAP::WSDL::Message: + file: lib/SOAP/WSDL/Message.pm + version: 2.00.02 + SOAP::WSDL::OpMessage: + file: lib/SOAP/WSDL/OpMessage.pm + version: 2.00.02 + SOAP::WSDL::Operation: + file: lib/SOAP/WSDL/Operation.pm + version: 2.00.02 + SOAP::WSDL::Part: + file: lib/SOAP/WSDL/Part.pm + version: 2.00.02 + SOAP::WSDL::Port: + file: lib/SOAP/WSDL/Port.pm + version: 2.00.02 + SOAP::WSDL::PortType: + file: lib/SOAP/WSDL/PortType.pm + version: 2.00.02 + SOAP::WSDL::SOAP::Address: + file: lib/SOAP/WSDL/SOAP/Address.pm + version: 2.00.02 + SOAP::WSDL::SOAP::Body: + file: lib/SOAP/WSDL/SOAP/Body.pm + version: 2.00.02 + SOAP::WSDL::SOAP::Header: + file: lib/SOAP/WSDL/SOAP/Header.pm + version: 2.00.02 + SOAP::WSDL::SOAP::HeaderFault: + file: lib/SOAP/WSDL/SOAP/HeaderFault.pm + version: 2.00.02 + SOAP::WSDL::SOAP::Operation: + file: lib/SOAP/WSDL/SOAP/Operation.pm + version: 2.00.02 + SOAP::WSDL::SOAP::Typelib::Fault11: + file: lib/SOAP/WSDL/SOAP/Typelib/Fault11.pm + version: 2.00.02 + SOAP::WSDL::Serializer::XSD: + file: lib/SOAP/WSDL/Serializer/XSD.pm + version: 2.00.02 + SOAP::WSDL::Server: + file: lib/SOAP/WSDL/Server.pm + version: 2.00.02 + SOAP::WSDL::Server::CGI: + file: lib/SOAP/WSDL/Server/CGI.pm + version: 2.00.02 + SOAP::WSDL::Server::Mod_Perl2: + file: lib/SOAP/WSDL/Server/Mod_Perl2.pm + version: 2.00.02 + SOAP::WSDL::Service: + file: lib/SOAP/WSDL/Service.pm + version: 2.00.02 + SOAP::WSDL::Transport::HTTP: + file: lib/SOAP/WSDL/Transport/HTTP.pm + version: 2.00.02 + SOAP::WSDL::Transport::Loopback: + file: lib/SOAP/WSDL/Transport/Loopback.pm + version: 2.00.02 + SOAP::WSDL::Transport::Test: + file: lib/SOAP/WSDL/Transport/Test.pm + version: 2.00.02 + SOAP::WSDL::TypeLookup: + file: lib/SOAP/WSDL/TypeLookup.pm + version: 2.00.02 + SOAP::WSDL::Types: + file: lib/SOAP/WSDL/Types.pm + version: 2.00.02 + SOAP::WSDL::XSD::Annotation: + file: lib/SOAP/WSDL/XSD/Annotation.pm + version: 2.00.02 + SOAP::WSDL::XSD::Attribute: + file: lib/SOAP/WSDL/XSD/Attribute.pm + version: 2.00.02 + SOAP::WSDL::XSD::AttributeGroup: + file: lib/SOAP/WSDL/XSD/AttributeGroup.pm + version: 2.00.02 + SOAP::WSDL::XSD::Builtin: + file: lib/SOAP/WSDL/XSD/Builtin.pm + version: 2.00.02 + SOAP::WSDL::XSD::ComplexType: + file: lib/SOAP/WSDL/XSD/ComplexType.pm + version: 2.00.02 + SOAP::WSDL::XSD::Element: + file: lib/SOAP/WSDL/XSD/Element.pm + version: 2.00.02 + SOAP::WSDL::XSD::Enumeration: + file: lib/SOAP/WSDL/XSD/Enumeration.pm + version: 2.00.02 + SOAP::WSDL::XSD::FractionDigits: + file: lib/SOAP/WSDL/XSD/FractionDigits.pm + version: 2.00.02 + SOAP::WSDL::XSD::Group: + file: lib/SOAP/WSDL/XSD/Group.pm + version: 2.00.02 + SOAP::WSDL::XSD::Length: + file: lib/SOAP/WSDL/XSD/Length.pm + version: 2.00.02 + SOAP::WSDL::XSD::MaxExclusive: + file: lib/SOAP/WSDL/XSD/MaxExclusive.pm + version: 2.00.02 + SOAP::WSDL::XSD::MaxInclusive: + file: lib/SOAP/WSDL/XSD/MaxInclusive.pm + version: 2.00.02 + SOAP::WSDL::XSD::MaxLength: + file: lib/SOAP/WSDL/XSD/MaxLength.pm + version: 2.00.02 + SOAP::WSDL::XSD::MinExclusive: + file: lib/SOAP/WSDL/XSD/MinExclusive.pm + version: 2.00.02 + SOAP::WSDL::XSD::MinInclusive: + file: lib/SOAP/WSDL/XSD/MinInclusive.pm + version: 2.00.02 + SOAP::WSDL::XSD::MinLength: + file: lib/SOAP/WSDL/XSD/MinLength.pm + version: 2.00.02 + SOAP::WSDL::XSD::Pattern: + file: lib/SOAP/WSDL/XSD/Pattern.pm + version: 2.00.02 + SOAP::WSDL::XSD::Schema: + file: lib/SOAP/WSDL/XSD/Schema.pm + version: 2.00.02 + SOAP::WSDL::XSD::Schema::Builtin: + file: lib/SOAP/WSDL/XSD/Schema/Builtin.pm + version: 2.00.02 + SOAP::WSDL::XSD::SimpleType: + file: lib/SOAP/WSDL/XSD/SimpleType.pm + version: 2.00.02 + SOAP::WSDL::XSD::TotalDigits: + file: lib/SOAP/WSDL/XSD/TotalDigits.pm + version: 2.00.02 + SOAP::WSDL::XSD::Typelib::Attribute: + file: lib/SOAP/WSDL/XSD/Typelib/Attribute.pm + version: 2.00.02 + SOAP::WSDL::XSD::Typelib::AttributeSet: + file: lib/SOAP/WSDL/XSD/Typelib/AttributeSet.pm + version: 2.00.02 + SOAP::WSDL::XSD::Typelib::Builtin: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin.pm + version: 2.00.02 + SOAP::WSDL::XSD::Typelib::Builtin::ENTITY: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/ENTITY.pm + SOAP::WSDL::XSD::Typelib::Builtin::ID: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/ID.pm + SOAP::WSDL::XSD::Typelib::Builtin::IDREF: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/IDREF.pm + SOAP::WSDL::XSD::Typelib::Builtin::IDREFS: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/IDREFS.pm + SOAP::WSDL::XSD::Typelib::Builtin::NCName: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/NCName.pm + SOAP::WSDL::XSD::Typelib::Builtin::NMTOKEN: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/NMTOKEN.pm + SOAP::WSDL::XSD::Typelib::Builtin::NMTOKENS: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/NMTOKENS.pm + SOAP::WSDL::XSD::Typelib::Builtin::NOTATION: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/NOTATION.pm + SOAP::WSDL::XSD::Typelib::Builtin::Name: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/Name.pm + SOAP::WSDL::XSD::Typelib::Builtin::QName: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/QName.pm + SOAP::WSDL::XSD::Typelib::Builtin::anySimpleType: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/anySimpleType.pm + SOAP::WSDL::XSD::Typelib::Builtin::anyType: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/anyType.pm + version: 2.00.02 + SOAP::WSDL::XSD::Typelib::Builtin::anyURI: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/anyURI.pm + SOAP::WSDL::XSD::Typelib::Builtin::base64Binary: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/base64Binary.pm + SOAP::WSDL::XSD::Typelib::Builtin::boolean: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/boolean.pm + version: 2.00.02 + SOAP::WSDL::XSD::Typelib::Builtin::byte: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/byte.pm + SOAP::WSDL::XSD::Typelib::Builtin::date: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/date.pm + SOAP::WSDL::XSD::Typelib::Builtin::dateTime: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/dateTime.pm + SOAP::WSDL::XSD::Typelib::Builtin::decimal: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/decimal.pm + SOAP::WSDL::XSD::Typelib::Builtin::double: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/double.pm + SOAP::WSDL::XSD::Typelib::Builtin::duration: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/duration.pm + SOAP::WSDL::XSD::Typelib::Builtin::float: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/float.pm + SOAP::WSDL::XSD::Typelib::Builtin::gDay: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/gDay.pm + SOAP::WSDL::XSD::Typelib::Builtin::gMonth: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/gMonth.pm + SOAP::WSDL::XSD::Typelib::Builtin::gMonthDay: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/gMonthDay.pm + SOAP::WSDL::XSD::Typelib::Builtin::gYear: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/gYear.pm + SOAP::WSDL::XSD::Typelib::Builtin::gYearMonth: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/gYearMonth.pm + SOAP::WSDL::XSD::Typelib::Builtin::hexBinary: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/hexBinary.pm + SOAP::WSDL::XSD::Typelib::Builtin::int: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/int.pm + SOAP::WSDL::XSD::Typelib::Builtin::integer: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/integer.pm + SOAP::WSDL::XSD::Typelib::Builtin::language: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/language.pm + SOAP::WSDL::XSD::Typelib::Builtin::list: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/list.pm + SOAP::WSDL::XSD::Typelib::Builtin::long: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/long.pm + SOAP::WSDL::XSD::Typelib::Builtin::negativeInteger: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/negativeInteger.pm + SOAP::WSDL::XSD::Typelib::Builtin::nonNegativeInteger: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/nonNegativeInteger.pm + SOAP::WSDL::XSD::Typelib::Builtin::nonPositiveInteger: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/nonPositiveInteger.pm + SOAP::WSDL::XSD::Typelib::Builtin::normalizedString: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/normalizedString.pm + SOAP::WSDL::XSD::Typelib::Builtin::positiveInteger: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/positiveInteger.pm + SOAP::WSDL::XSD::Typelib::Builtin::short: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/short.pm + SOAP::WSDL::XSD::Typelib::Builtin::string: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/string.pm + SOAP::WSDL::XSD::Typelib::Builtin::time: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/time.pm + version: 2.00.02 + SOAP::WSDL::XSD::Typelib::Builtin::token: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/token.pm + SOAP::WSDL::XSD::Typelib::Builtin::unsignedByte: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/unsignedByte.pm + SOAP::WSDL::XSD::Typelib::Builtin::unsignedInt: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/unsignedInt.pm + SOAP::WSDL::XSD::Typelib::Builtin::unsignedLong: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/unsignedLong.pm + SOAP::WSDL::XSD::Typelib::Builtin::unsignedShort: + file: lib/SOAP/WSDL/XSD/Typelib/Builtin/unsignedShort.pm + SOAP::WSDL::XSD::Typelib::ComplexType: + file: lib/SOAP/WSDL/XSD/Typelib/ComplexType.pm + version: 2.1.0 + SOAP::WSDL::XSD::Typelib::Element: + file: lib/SOAP/WSDL/XSD/Typelib/Element.pm + version: 2.00.02 + SOAP::WSDL::XSD::Typelib::SimpleType: + file: lib/SOAP/WSDL/XSD/Typelib/SimpleType.pm + version: 2.00.02 + SOAP::WSDL::XSD::Typelib::SimpleType::restriction: + file: lib/SOAP/WSDL/XSD/Typelib/SimpleType.pm + version: 2.00.02 + SOAP::WSDL::XSD::WhiteSpace: + file: lib/SOAP/WSDL/XSD/WhiteSpace.pm + version: 2.00.02 +generated_by: Module::Build version 0.2808 +meta-spec: + url: http://module-build.sourceforge.net/META-spec-v1.2.html + version: 1.2 +no_index: + directory: lib/SOAP/WSDL/Generator/Template/XSD/ diff --git a/Makefile.PL b/Makefile.PL index 2d25812..1b91752 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -1,6 +1,6 @@ -# Note: this file was auto-generated by Module::Build::Compat version 0.03 - use Module::Build::Compat 0.02; - - Module::Build::Compat->run_build_pl(args => \@ARGV); - require Module::Build; - Module::Build::Compat->write_makefile(build_class => 'Module::Build'); +# Note: this file was auto-generated by Module::Build::Compat version 0.03 + use Module::Build::Compat 0.02; + + Module::Build::Compat->run_build_pl(args => \@ARGV); + require Module::Build; + Module::Build::Compat->write_makefile(build_class => 'Module::Build'); diff --git a/SOAP-WSDL-2.00_32.tar b/SOAP-WSDL-2.00_32.tar deleted file mode 100644 index 943f12b2b93d96a9e70d54cc4ee0b62c3ad468a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1351680 zcmeEvd0!hzl6L>w`V=+Tv)~zYa@lH|ZH%#-cg(SXr@ME1RzHCX&=@2}hcVOJ``O>; ziO8!|RiY&5p4nY9hoLGfkBG>)GBV=$VC%5_{qdXkx<{Fkrz^HsgJv0h(asjaTBe^skD)*BmNMQe{flZ+0>!%=$>MPFUF2cvE;qk(yJ z-~0S8|Eb>`r|^Fo_s%Y{+K-P$2}JO0_+MRHuYbY+Z$UWI@P88zhW%dU=IVhHA^ula zSHpd8`2b(7t*@<5?Em%EmG!Tp+5^We^!fks{XZVY(N*^}TC7y6_;>M}QurkP+`hiK ziZkAzxg(v{569J0d|b3ydvJDX1{#hA-Lug*B^mX#DH z+1&15-*m6yX7gmw?hSAHgHf}|X?%Bba=3(+oO`n2hf((`>p4YUy&k+d?sBDOF!tGO zvQ4x329p?c+gIJc$Af0`hvPR`u6`G`dfPr5^#^y!=IHIIOh-F!HV=<>-tHV7?YwCn zZXF%(97V69MQL!@9$*v$6z%tYcVwrtcemRc#e?(qSvCqDm$n0pfK_PQg5UgXy$V{`(*Vk~_dLR+Vs z(+yXI;S5-$!(qRDgN_P7%k}&udf#t%BChuAsy!UW!>F79U3A$VMrVV#J&HR~{3#yX zjV`;ri|8~y?+@bTXw>hQo^s&wriaPW&$4&|@(NgViz73j%bPcY{^vW_`l=7GU-pNi=JR@0ra%mqN1%wRW8H!t zPNKZo@3lar-F|N=8jeq+pQHPS^-Efeeu)$lPohD50rba%2p|x&MfFO(bnk8`Z`u!+ z7V*I%DP=MID#X3rX^R|{faKa*pNBKz7X%0nb8&&mUIEd>T>qR1j^4CKZ6)>oxHm$# z^;%6v`nH2N_?!HM1B0R?ytx^G*rEl`qt5!h&iIUEaoZhTn&lJ2prEIo)SJye?;IWP z9_$AI@-39b=&s6Y30^bVI15Vd({D=2eb0HYgY;APNvY)5^t9KEj={%b;CKk)(9bKtZ}v zA7N`o5pLB5UGCixEzRcV>#L<_(X(HcOVWWSlDzLTw_s$y4_BYtgW+M%+*f{7U?KN2 zLzk1=pS|enJt^e&0cbiAL&o6#%7Vz(X3vn+7Qe~SMy;u(M5pD z!99pA<={2ZpEB}%%!a%x56f3=ZriAR(eCz^qvQ6qAbHl^8&2z2#c$p&3@2cPL)Iqr z9LOk-!7fbn5faIiotyaPx5jTFi)N-q1aH#+t?r`l{93Nkio|MaiWQi^}(jJ49JdmW2Y zfXaHUMh#QgJFMD(tIyoC)r)3<+y9of_wN6d7RjS`G5_|b-*4LfU#+jD_J5=P#sBx4 zkl4fbf4~&L7q;m|DIbqI<+pA4A@CATE%D10*p^CZv$6^ODvL`r9>ygS9XqoS%qIF{ zbkiQRuZOd7ov=UUT;yJ#+E-(^h~NvMFHhSn3Saw0Y*AWlPr)i{5&^ zNPl4*EBYnh>tft0OQlw8Xa7yB6}Tjt5f(_djjRraOFU@Phc%=h2dG%)|2ceADiwho zz>3GsD5^uCU0t2QRrWC&#%IH5DXLXg>(O{Pz(@GKR*Qyr^eXA|?ZXexqHm+s=Nr$_ z?nM3U_Owz5&FttPs5a@H-^AYfv_2B^zei{Qho z*F46g8tL`cE3284!gDvN^%v03R`Eb*Wd?snSelX0ckR*pE|r>1vWZf;T=rfl2ZQ-g zo-s|Jay1(-t7{f71b~OYEGSuJ?HkiQ~DU!+K){r>q;5 z7qw|P&!DGT<@rXi;(*AXKX;wilWTSaWe_edQ#co|x;^+$ci%+6GWK(z0Y>oP4c`c0 z5n{h#yIy&|x?ZoW{Yu!+Mo=w#QqOC4QuW3fWh2<%?AU){Ixpk%nXvzxC^TONnF#{- z>i-Se|LVM-*9$;O19Qzi|8K0XB<=r3Z4EAgFX#U=VRF94|5W;ag3@L+0}>x+Spy=3 z9^^Cd+raey2u4B1w2RvYv>z5{(#>g2{L?7>Q`CJy)`a$(QuinIV1h&S{%oZv)Pn8_mJKFiR@j1Cum3KQ&JizLGWt5-Ix4nYgd z=@9jbS5VgEr?R#lz^hi9fLMm|BUX)v*orm5@O;BUZ2ftyvC*j15j8>c&MfR1qE((m zG)J0wtDji=4D^@*g<54jM~`0jM6^3V-B{vSh+nKV<+Tor;;+%9`jtKq+MSxfUPu5!cE}>0G_)Im+PM>&8O&o`6?3v)9gPJM2KLl z%ufqHqhA)KxcJ}|=-06LaulhG}1bp{~&CkQ` ztA!vg^>#%K- zmm0Oa`$qr#`Xzp=zpUE7Uz%WO_xCYQXGU`3u<3uTy{!5_Ouzf>>v)s@hnMm@hyVKJ zyY8pBCx7qB1*4Z$|3q6L;xRrrf88C7E;s8hHfrTs9shk<4WDbv@A}vAR;PoY$)TP7 z@n{goqfPxM;=J^MeDL+lf8RaaMYDHY(HgW z-|0iR8|G%AQH;CcgM99Wmwv`6?uNI8xEtEd!QD8qOzwskS=aCYv7 zk8(HnoSGZDOfP>$e$wl=+>NWGDr77+MPaslud+>Hw}I+i8xY1}Pn z?&)_9?zR$et3u-j?H@L9u!2GZ2kjp;aBU^%=@Ccv_U$=-L}vGjY_5z z_jka>{IB@H|Dh($OPMAA4=??UQ``-23voBJn}fS?Vwv0xFS58B9%t=r!_)Y-5O+hv z*|{4&%H7;^ayN9DUjDlLq}Ok`8&~-N?zXPF+bkgPpX37IF}NESHUoDHntS@4gS)NI z$lb#B4;wgGf!)8;O!4)g{euRst!e$wl=+>NVz0CzL0 z=qw=cpX37IF}NESHUoDHntS@4gS&0a$lb#B4;wgGK@sk@5ww5Mz_pDTxm(zN%E%sn z58-alXXS4AAfLP8rJr$%yWwpi?uK@Aa5qjYle^(X7I(wrtetIm8s8S;ZfH0=cf&`y zn|n^~hAz{~e=a}i^;_=7RX%{bJy+dr77+MPaslud+>HyHfx89GJ^jwX-JZ|L-NN<{ z8#q`&5$^UpX#b#rYtLuoZejZ=BYXTkguA_%mAm1CeC~#qe#R;8hPQ>d8`{mm-8ivK z?uHjx+zpSjcDCVZd|QaSq2cV@4Ikxh?m4*|x=b(sh5V$~Z@C*+`2g;QI}rSt1qA++ zTmU=frn!X&dS;7Wk zB2V7q&^r{t1ADP!GwbHm{r7)b$U1(GIR5$TKyWu8)FChbLv5`wQU9S)tFNwox&Jfw zrJfl+Wc~-6!A+C3g->jmfb^SRqy9sI#Qi3F0dEi?XIFs_Tq1}^$@I^=@=Ntf1ybP| z66oh-rv4^tqs@Sm-?Hhn{g2$Q@#mZN=mDu8WhwXU|BX6|Jx$#ITiN)M|K&F!gD1bM z;y!=%wA*9Nh^wf4Tl)Q**Ujcl`|M-;A|Ae4B8AvmC_5yFW^)fW(C|`=mN3C!9hcLm zXOhY1F?mTNLq22^Nj^dHfjE&m_IT?DH=plNncylOfJd;EyDT48lVLVNO(AP$eBbKQ zm0prCXnfZmUWSdBmS6vtssoxbCV23^dx{tOVDFAO$*v9xRqz5gpXvxoi~} zLpGz6_%qjDvV}3Y!>;1q#ptpbJ^eZQNq>)?^7${(=^X&7H4~Uf35-p5q-=NH-EIoz zZF%!!9N)A~uiCwj!=)Nn55AOI4Q5Y=bp#v~-}pKpC?0|Q7_3NBVlG!5vqi*03$Ynb zBgyMzOMq}zs2D`Vm<-NKx&m~&&%1-+X#28z)nNr5qM9Sy zRwnbd=tECi|55u3>W#4NejiJrYUF3tJ&%^+&nPA`jL@=qWB6jr$G1V>0x*O3_bMxZy7M05q=hSDUc-r z=7;1GGKS^jd?2OQo7cS#r2jvNN07DJE%tNC7kpu0EWk_J4a#vvOVn(h1sR`1Zt*l= z$%e~V_M$oQ5-nPvqkA3CA*!N<+wx@u9_MP z)za&ocf0$B?--pOIn2BiRnj1C^#?NI_bPZ<-w9i8$-QEO#eAJWC}G-rE!Jhmnbwmi zA&=ahYB{#k6G%p*Xf_u8yeL2I{3y+sylw>5`x@SapOFGjcF0cwe7=b&_$EKeZJuh) zq*ktD)J_`?!P}Rk#SlZNtd}u{;AldgP`>vlF<(W0?W3aBVs&vj`qqi9K(KShW;shw zJ-X3UzK6v9S5#?Zs{R(qz&&?MwM%YFL6B&n*H=i&hn!Mp%$O8 zR4Mx^_OZ#wHLdciY+3;Rs)L=oSYrRCAY`ik>jIrGemzfy?K}Bv0VWxWdU8tT&GvZI zr;HS{Ri>KheD~c{bH<5Eb_h*`p|Mg$d;=+&p@gU->g+TSV zuzA3UM{QpV+spgJSHuC-bT`4z!`3}>1YG}N(E`7UaxuWy`^e?^_U2tH4+VZ`ok?q{H3(3{= zl^`c=_Qcx8ms2^&jdh8|z=r z{~iwkQ+o2+zCZ0P`G>-tp-2Rea7;Mt_cEV>4W$|e;UmF2mX-}mi%z~uRUMgZ;L8%0 zcy`I%-{1iz=f%2{oyy_+()MM$hcnEQ)m6_fx@EQwWDc57zV!>VZ{X%0jeCrMag8tH z9!hqfp$OX<{Mg|e2QvG$JZKr7l4=P9e3bYeP9>bo81KbUW0JS~{g2&vSh=}&6PVHr zCn%CLbxQMhoIVndzHSe;W&XJxPqZx5_Xq)qnC@#FZ%RhdsS}xOTx^85iV_9P^!^h~ zi}ikd6Q6a@d2UI#Pwzh2wpjn)$8FRx9Zc`oG%CO&7m5&!I)TqFCgSagxJ%ZjT zohI59=+~+_Q@XTGiu9&+OH+HsTXt1L{`Oy5bm_5!_HV~m2r!^#*7}URh_#lXE%TR> zOSMp|d&hcrg%Xcfh6t*OzwZ6^J7=&~{jc|aMX%{`Jowaw!Oq_gvB%QjV2gMV^c(z| zJ%st9Soid7!@)YVI7v^ywI~GVDc>hxI;EWl;gm+f>atr6t0sSO?(4yzeRptfBU|rj zc4)-#B;zJ@9Pmh~dHsO)DY_1BSWfevM(i}N$@XP@_VIXpy@$A(KAaBO6S{9zyVnRP z!fv{5k21uZE^7Lc_3iGPycqT0q-Pw~+9docZZH6J{q-EqUK3Lh~AMxzPB&hEQP!@z_9&ht$b^^NEI zP9pP!v(EWF^sCeHC_au6Aw2tH?ZQor&756Ge9j)^*nB_$vyXd2vif;eaCq=$Zt(Nl zv&%kot+|Ibl=Bb(aux#!ESRz)@aBcWuuCF-=u9w=@fi-`=L5+@*YWT*d}1B2!nm*{=SxAU;^VA>phcHS6tFwgkJ zFq{_C!1ZS}>85F@ril&iE83I;r_7?gc5mEV^8{C+wwg;}1s}J2ixWnQ-+K&aCy- z*WI2l(aF7?`9;5f6}NLpXL6~$i&SjVh$f$*_Oei@DygDSlbrw`p3AP;Y7>qnN4Sy z$z}X`7TQ$jdYYq6lI8B3qn)?K;3iFvi?!`$`FXRzfQIo!mQyjSF)rm@jB)r-Y!0H? z7NUr&ewMpBYX!YVfU{&w-Uz4!ta^rx8iU14DC@0}d{X=lISY_xGf?DhJ+{duN@ z@AN!o#-;Rlm_+At=hz(t-%q;x2Pa!6y9Wg!a3cprGfwQ^isNv2nW=$h5fN;j%=3|~ zw!8#i48^1V$GD&@8pDrz(Th8;3(F+?1t_%GZ0rZ`3vVs^1y1(#EIXe9?p4bymz%1d z*+xlK>HY5Z&i?UEX%9EEB$p0?lWd$Fssx{0c89psi~Csp^N8<;lOwOZgwe{Ap z{n-+voE#^BYg&OM13N0O88!zue%|XeE{nA^R9wa_^@4pn+~*D8P#I$W-p0A3Com~k z&+9AEGQ@eI4;14$P3yHVyuUrX{+y-_ewr1ekj6P3nrfJLs#{1Xkhk`*-Hvz$a;6tH zyl4-xIpOIl(Dq=rXs;s}bGh?0M3l;qk^>_+7`s<3a3sc5=1tQvNl6Y-tW~SiAGLTB zAa|y|SIE=x4Yw2o3jF7!8il+-576>xyx z$I(=E5DyXmIf*rB$UoIKN?s+maW~1QCp$gti*X!yPA3{9-uSp4icj|!W4*1$5q~l5IoYK6T&=@&8S2;<*0wRv@F`@I1K?FBd|2 zH_@MO6sQe(Z6=qW5C9@7CcaEG2qna{b}ASqTCBGu5e`(aPpV*fEF^V<{hgDEY1SJp zgzifWSh7#%Z(?HZ)F;`aho~I+q+Y_9nCKf{Fn*ecJ;~M%_T-kLVdTDV zwB*zz?|oplP)Ik7M&UP`A8MlMO1kO9NzTNWa*UFEMvsF(0hsbmPb$(4thYb?W;;;% z({FbI+tRO<)7c3QP14_)W08y(!kB5&PoRo@T1$W0Qf(W1900^ZKhWdpzOhP^GoAb* zd6fBzZY_97omxZ3ak#QE9pZ#wB@ zzyAw$n-^%OKJ)tGx3(+-_Cla#Z_LsIsN3tTZ@ytcyslT=eM6OdaW4B6v3^! zwS=9lYwheEp8VK)v-5U$f0ySi$LS{f2d&q;`)}a-&V0AGb9}t@ZYT5I;la_#$&ZKb zCAA=Jc!Hblt?h$9?;PRV(#gS_ga4ry_ov+Hp5+xWlDz*<_RibWv-C2(?ezQqwUzbt zwTb*stM!$YFZrLQL-ldqGT9SCM8{WgvniO@Tt%=@cq;-~fKEvc$m)`4r0HBFVMzy~ zxP>G^IAF6$2dsS}Qh<;I+U?+@-cRJH95GGM!x^X0Hd>20v^^s0>HlGt+8-6QM3V zD#=zp!O)Xvt+HPE9N~BnZqNwsC4;!c0i zCS!i@;!*zw`SU576D=qDdk-3EHb0EIlR%wp_dPQ6e}LC&>jHNmgB~Z^+3RsZ3&l{X z-Qc>}Ji?`oKgD-pBOItPdVQXc(q)C<*UVH zD2aDK+GWrohzzZcOBz!Dg*o|DtRjC`r_)l}H^&Z3izDPI_YI6-)HcJjLH7n(>mEn+ zOD|3cy8NHii63zQbajvZS6knhsQ(1*4<(_Z+T%_mySMRh)Q0Brm1-#2ZTR%Q_xWG` zQ@y^hv;4E(MIz2`t#Ms z>dJcbmx!O&sc!H~|KT5^V?92WOox&h6iP==yD^8p(M|gf5xO1eulAz0wh{e>Bib*K zI4Al%>^4Vmb4G0&t52NJ;0Y-!;dSp*Pd7{RFv@Ii+fEj(jyNMH7RbuBq>0Tt%kKD)ezv>uj9E0tP$ zr0?TJOt{w{MWf4Z?<2yQ@Jo9Xor6l-mk`YnG_uPPTHID1ff1zlzY92fG`hWK|0DnW zWc{aA6o~(_{~rwjQ#x|kcAK>9Lk^?2M+bY+;n9u}4lBNqvYf0F;Z`I zb;sGbKOrHlFjCp zlM*a`cMd%P- zmT+EJ2J#RuUR_~N;sZ=@e8YpZ07?{@2w#ovn6LO6VyW9h2-pYMehaVqi^8H)ez^XHstluECG3r6Mi zI;GMit$zM24ioshI+6E3P>139rua&_C{ff!6g!+LK%QkurSXl&?`kE2+ko3hQrMiu+(a@P-xcYHJOsxYV^Gd% zT!P!D7h@p+tdbZ&c}IQWf?Hn@x*JcmS$A+YzJ}!ol!N63yaI&Hi2{E>PWQBn%K{vY4szL*WZjabS0l(6?)rfZp%)@92ECyc$Vh5(j$}@5X3IihuK>@+Kvid=LXbhK_6F1l?@Q- zljnac>-CK<_TM9-Ah#=oC(Pwx&5(xvN_9t9j5bg{yTVfHDVY6BtvaE)L#G`p-qPr@d4f_3& zZ&fPo^e$j(Dep4!WIO;Dg!o8KTGVaBw81tn;V^;Vp#Z_9a@vyRs03%t9rU<9BCk~k zX)e6$yK5$@?MO=s9J1I`EaMKs8rQy{8Z2G|4Dceu^x?9>nxi4ASx`TKesc@) z2;mc#d2>UoLS$}0>OoP`RDBw9D#N~&_UCbI^l|&TP1_M5?m-E_RH+0FW5~%HLfK;= zGWSBFk{AiYj}cBgDR`-fU{+8&uDg)8P*klfhQ4X>Q;v3JNdUynO&9CasL-fH4Fuxr ztY6j>ULu(eL&)4)BPhpEJfLz6AOac9tE!itHf|p``!JW9cQ42 zJ3DVmTcSuoN9bRD1XR!kbOn}WTP6m&BM>iT@;S~VK`uOY7P}RCEzuvS3GMFnumoam zU*TL9CPd6J!_P{kL&cWMr7yzP5tm>>v^>lkJ_b@vr+=%iPzB!-6gmVdLVbk00E?qt zP323LhlAv2qIFvRN6fs7ejolpHAsMpMkV@iy!CqbJ#r(6GN2uYki+^1<#VXVaNOKg zsKt$tJ6dtecXVIK79(&MLYdZnqj)gDOXJ`L zutB6H033c84neBJVL4Sd7DB;eM4^>Md4oq4pD~}B=#$59tV$?q4mK<3?juxU=+SL= zgVwVf{Zx9EtrPGGfM=x=?fh_pi@Cc7L`KyIi{t)<`e>3vE<@4oeB|2>%SLyXadt1-1^F4kk**10d5b5eFX12jdYJschi*BiO0NxzRx`O1cVI z{SxUcmJx11cQ+^#;SXAinOs_If#K*5_kTls4_i2VM^@~3f#DCs=n(2T3dCcVA2N;v zUKs4*yV9HXbr+D??)R{(bzIORSse%mZ`h1X75frG#OyO&h37mMV>l4t1f@i{xw*On z|0zd20>!?Svp^hWc&J{2y#g*{B6g|zf%!3jh(zB3M0ntetu7l`kA>`N%$rsE8_Z>H zN;41w^b`Y6j2!*cirUco~!n*=q3Z-gA@lbtT#d zryF-VSD+%6|J9(IKkzZ)nqYIHS93Tf^oM3Bq0Ou492^j#Pn{dYuSHaj2+8kc@~Ro& zb^q)m{37M(E#->{pS}eer2pu=i`XIvK9Csc9ODRiV|;9A?B9`STVxFs4u_C~aLQ5v zVlzat-^ysFUu|W8XM0CO@!Zld#l6)oxH}{%(PBolcpmqpJSwIVyd>qL9mE(gjEUlv zZGX`xD0FJJFPYX~5hg?cf|CKe<5L7c?f2C;Mp)bL2XUtl`T)}fcNcj-I;+U!z-qBf zycaVbd~(zmB0dHOJR5;*04>n)_w51EZ>hy-0whJAIPiEBjc!dNa8l4V+}HhcWOxAZ zC`g7lI>e$!iYEaaz&7ksd8LI0i{7+Rch)kGNyHf>p?O3+MkqsbU^ixQ02THY?-J9u z2kMv3PGhLG`dBh<+x-J(dWkuDdCVR=(c6QAR{tDmhBs&^f6>dgOm`&@Ovu&Q1bvs<2jn;tvRpe`($wp9DpGrvkS`6qxVjBG(0Ea<#p!czJJ^zmne2N^*s`_Vy; z^Tf4hh)fu|`2ADAi-RcM9wxg`t!{{O6?pbwE$~R=29d28P39{i6Yf~#3(*CGje>-c z0uE=Ix|=2^%WVhdEj+_4-QsiGxRQ-}2&o5FY#!=<O%8R7 zbfDhxl$QHMOLU(SfzIL;xQkbnDz7ZF4TI+s@CH{TP63HvH$@CD z{_i1(RH@Rf0;)RZ2$+g+0{=!>159+B@v;Xwe6b%x=s63BGgMAu-m*0aik9lo4zu&Q z&70KFxHu@u?6m#&Ad>J2zo2-rge|N%q0LpIBX|Lt(g8bp5}~r?(o-&4DuL3Xz|hOl z@7sfmA=t_@#72MHLLExB=FijCf7Jd`-b7`vCHz|d3)rmuJfXq}FYgcqMbVpSA?^eA zh?p;J=XwC^W)F=@<>?dYCDj94xOw>RmE863U!>PR2yubMvT`il$JkJ?__zzzXRI<$ zM0*0=)*`s-6Hw1Mc8Wq9txc=cRw+5f&5Y5%XyJoR{Mo$mi_tgWxD zrtW{BB>0#3zsEyCZcp&6m8hgN#V8g3Pzk$+p2DV$uPLcLN2XYw;bupvZLVo(->NHy z*E5irS}sX6p;hX&2t;+L=>o4^1kJ#_Hf67AaOvv`yv|56F0Y4G`!%v#$&<>><&BLG zk&gUPx}M56BfVpQF?h^quNE|;nm$3$|68$8!zYJ4_tXa(AZ_mjgwJ^3segyT;QHi! zB3j=(bCLe~w~ZaPe+BXQ`Us)-`U~_c_Tf;L1B#>Qkv^b+(gru3x^m?kJW1JbE)Kzi&-!LoS)!>q=u{-lkU*{2*n|?(02ln>|WuXCy}vu0AL@ zj5eNY95|0$?X`lVg`eb%If;3b3J3x%hWpmU=Hw5TnK?)p!sJeAtrsceU7}s>x z)f~^T7T}&BHP@8T=+SlovPCxtf8y!ta`*Kp8RxS3 zMpmydrKk6Z2I+m_1S7O()b+{l!8LUCf0D%H-t)G+762;JnQfZ`zDZ06qnyCoUt|Qf zE807V6%#`Jp(!1^Hrbt~R0)#w6pkaW(|Dn9_SazYr-ODu?!Ihlc`>2fB>R@6egy~6 z1b{P)@>=UEP4C_`$^nA9vOg0})4K^8=AdTMC>22LXcEHdeVazv{igIf?boL;yr*y9 zFuVVhF)jTUz}pmbW%sGaz0;>_k}qZw!PH(QT@B9MigX{AwMz0CS-U?}y{9vG_?ivb zY|I%URCxcH_Vew-^k68iHGNg7@k}|c3`v=}_1%z#cBdUJu}klj{(`2|KuyiMSZsM_ zz^X45l|c#VA$F&DPcSQ&2Gn-1HIfQ;jf{-5O@7x_Rw_Qg@f;&aNuNSPXhovghVWI4 ziVdMm7;#>E6hiHfa;Cpx*dR~Fgs;|pbKs%Z0^Mx6%E z40a5+DHV)n>)#bUDl~r_?iS_A6Z|Ay{jcbN>}a+%VV3+TM-~+0l}&WQGo6``rQZ}r z*C|}Ewg};D1BG7}A5Ieh&p48Plmp95O)Jf-Sq^c=VNJ2BLPWy*)3bHYFABqrjhVoB z_96IH@nJOi@r2by}Ty@A|*f0emXB;FbD_Lk5$=5vF7@Fd_D5zLt za<=|$Rmwv1*J6`14&X{i&M?I6%aBn_8O&k>vApGsOR>c>iw_{vnq!pNfadah&o+|# ztnhwEpy_Nw;DcE@XK~4y2e1_>3t`132A^#d`&Hq!Fg$q1A@D`lWl%tIfht9KS0I+^Z#)`62>7X~(>a}m<-ijB@T z>cq!|2SqUWw3C%AQ$ju|J^(ID%(^jn!9t7c7Qz>AFUEui+O)1t_eoE;W@k0lef#@h=36$KIBS)gRZ|a^LyqJ><}epFrC96qu9?hd zZo~4TTBY&4_Pm5B|8|*o4~VBR11e1jswNdEpGuDW;Ql=`AXFJSEnk&CA;nAOa)i3D z0sp`=ByQ5&vh3Golbwt#^I-)x07O#BK0>y~bQmygIf?pp`Cm<~;&juwpG=ScuGJc= z>HHsG^8e2b?wLOHwmdHbcE(8jWumAxg`&Bs2=5>+DGzuTd00B+{VBcsjtdn*J}X3KOT~{^kBhEpw zBIqS@jUcNsvzkZf3YRUJ#iKX=9G&(*7b zqE)#RTHeD&*Z8X0+-3&1S185J(U$AWWn?};qQ1N3T2$VxRB-p?6hpC5R7MIKT(-pZ z;pnHz=xO-(f1+7bw%~ZR;BM3}1W$2ctpmFb3-K*+bM}3!$Q<4qtg*Ae> zKbRlU$!nD0;1Nv}$^V&D4ofjMYqY@2nAuJ@pGPdFf|4^NZvJmzTjF-_)4Lw-@Mg4WHgU-Z zDWFSVFQLT6t{E*k4JLh+3*fwC`mc-2(c&G;HxL#E8ZaOlgEa9`{P_k#U}-_WSy+zDZ>E%${d(b9d2@U- z>hplD^fiQvz&UqbH_mmss9}cr}$oZmyO@zM)3RPv34Gz5BBPyd{D}2ikGsk?< z47s9QOJeo5B)O~6y-6QFVFvJA&{2;&{?XFJ6+2EjkPt_fvIn-)xv-Iia!(g zzgJc^*1n3?9(Nkqz5O4r|B{V=K7BkQAcAMZKk7ds|LYh0XOrw>KAnPphJZZ^5zK-A zje6}1{vQ+1d41i7f4yMxFfy1O|LgTN*neO4e;(Ez?|DJ|<9-p2Q05$#_+MRJ4duSo z1NdrveSNb2)5e$jzjMNR*3WE~Cenc>dWA`*H`I8kOsfIwv77#GGa4e}6)i%!<%N== zk}XYJ*hef!F^t1!$4ERj9)?f!VxoC;jO@RN?~=l&5t0-l4)!%;B8Z;Zf;0IGOP{3!7_axaAzPOdrEw&cV@D`;L?%QyQzWM!{$HxUFwDgCiX^aji}Zo~3c1tKS(jx|m|e|` z`?J`kwD=_*@+(ZOdyX=dbb;_G&TS1T*e9CB7tVpFJNtkBd2#z-A8D9RTJLxE-<^E7 z_)GL({}t7M7&b>Xv8CTV)epR%2uadxujnO7aax>uwO&W&wI`AG86EBX+lSpFqyT51 z{4q(`TEGHw_bs{ZKq}gR?jzO`)4zZ5vysHq$l}JS@BDDMvwiYQ^e_LC{QDK$JU^Wx zX>WNOSp(tGj(<8;r;qL2c)B?CY8|x_(Uysawe8@i-cR_Sa~e2M!dZ-Tog=LIZ$E={ z*%={xI%e%J{Tt5gYt(~YIzB=6b+Z~|EQHS;SwGtyeZFiySvHVG+8zb*(o-|Uvu6ot z+kq>oapPwE6_{9D!RsWM8x0Wh@d{*sdHeu6$MXta4tN*^Pa$j$4 zpMY0XHFcuxX!75GU0Rg3Quk_cdfO&C&u;-Yk>=Z*90LAP3z(-Z>+I7;zeFEnizXUY87`iXF^{*6|Saogt_OqNOV+L{y;Y{TTpeG(m_OgDXC$nfZLr5aAg ze4=BiKF550witN0+grBdSCRO;ezsfg_`~7OQM0McgBwrC9%|%d~GGGYo zExRAW*RhcDrr9k^cF8y(Ye6iSge>Jv_xn;dwVom;0C4{F+Z3VxlBAzta-J}l=6GTo zWXuhKP=>*|>&M1Bnf%;+8fS>DDHaE&ac9YJ z-<=~UO0DCAw^8i%efM(yr!F z+hiGWPNKPJ*c9g_^|~Nw?2@^oI#Bbt%h%^hcMiIF=Zhe3{a5RyPHQIT3HQL1K zJ9MMUN90*Xcjs}h%%Ve`c<1HCXw!9Yv~zfHynAwR^kcNU|MuW$Z;K)v^6%+UjNFAQ zFY3`#{P7+M-?t%vpwGTWETDFJ-IjN|IInRz?&J%?q+G9;>l;y{-dtO6)>r;L`3*Ia z4@d7cOmL3cMxt&AFsrBw+WW}(0(n*yC!C+oQ>+v@s~_*A#bMFK|0Rd^8G>fDEPeZX z?EhK=X9D%w#(I5yrM9}h{#C8MzK)V$U(WwM2!FNTvh06@bG6g6ZGSloM%e@$sUMGU zzWWv%ioaTWT;yzqIsO{Yz_LqV^1mk|K?3clxpi`KwA5sT&PzVqjG7Qf%uZ}$)r`rG?|x&OcTe}8@AEQtT_k6Um6_d9b?`1$WWTIil^e;VPfU8tcbPhvctlE+&jK223HsYDC*j+!%vT8TEQ zBL%fpa1$D-gm>9m6sA@j>TWTd@>3T@l2GIv{z_I3CwZFsW6+;b<_Zz$a7R*`9H1mG z;y=$NfING2*h0`gQS6}f{-wFVaeI4PxgD0fl0n=|bjZxZ-81u78Pld3yjsS8>+5oj z0}AF2EGSeYw$+R75c0}W?^4JBDza69CGJ$GhJuS_R$I70D(%0=9fZUCY8G%;a19Ie z-m*#<3Od2DumHtg{7C5VnBJ8{7m`s?D}GqmX&sN#@dYaGAoi95S4v2p4`Qi=tO2-$ z&^5X|5{PjH!L;BxF#z=?%*-s1W~}szNWnkwgI}Y#%+UwbWrX>#|91Ci58l*d)pwdW zs2(>oxCxM_eWMi9Hn7Ol>a4Y`<6_PRUhO*;5rZRI@8((A@+Ouv+-tPQ_%ytp{G9 zK#=q8Wgm6xLh@z}j1ofV;LRgtSSzdFL%pT;9ZVjOOdEdx(}>42=!qaW{;;=m6jh_6 zo$Z}nnCz^I2z#DO#Z@C5FEAoo3Z|;#AKI06pD}Oe;p3`hhZ-^vpIU&{B+ZJy!DAYQ zt7456#43#2umnVNJ*Zyfx3fcsnH-$w7b#Y}&BBaS-&=?Ey04OsqB(`;S&DUngbx9u z09bzn0GN(JG>GNx0ssi&$4P^|XYF@ey^#h0 zM3w791ctfo_Tl7h`8n^e@fYY1_Y#Tg1ryP;7!eZEPjVLAAtzWAirV2USFW}I&~3{G zaRO}_kx~vzJV>QTLIM@RP(zlGGj%jeQW2X~B2b!9h+CTBH7iVmVS^9yY$v&ZAZ04O zs(^tJDUj?un$#ON+*bzue#?52$+BXYw1uZ9wr2w#kWAAiXr^& z>WShBPX2L&iVSvX2qltyK~r>=a2yEFZyo1y!U3VALF+tLg%#yY)+=?EBn&xXChu{A z-^QZ{tFbFVX>BX4wGt*)3&w|8;e;1O_rQcfU>HsJawn*Epfo}qMXVE+BL=)6#HnN^ zz}(<=`W|KFu!H10k)qyR5|^@ejuS6O=cd&Bjh6+--yM8-|3>rgV zA}A~xp!Pwv)X)-P;95iwBlcp-78VD@Ob1|-BzBzKf`f1cD0xJbqi2@Q2CD^sIs>tR zl7gvlID>GOJI1%FT$k*Ec)!dLpR5&-*uv4Nlqd{W%`$rwDq69-e|9!T07&*gl?1L6 z6(>@i(7Xnpvo{Bz)6Id?+z$U zKtBk-0oh{J2xQ?VU_ZiUU}>@D6=7sPwP#OCfKW6jHO#v-xv)1ON?^%RjdEerKd(s2 zob+RhElff#&KT^Jut)WD^-(Ys$gq_O-9o6)k~?jZU~-1Cv5Rb3JOUl_!sK-fw$8oQiJ>(B53Fw92h|E|Q{(=u zJ3ysM9Mr*11R(wlai<5SsGxZ@4)!sOf%>Yh%(8Mbd6CZul~K`VP9E#%jO(;v1y1^C zzH%;cD5r&t$q6)o`f7#>lpMi`e>)KOulc<;@1V6TK>&L_9-v<1C_&+@dM?H{l~mf2 zK&VI=r8Xmg0Bd4eo=r?DfB%wuqOseDbrkNQmMY@kL~mFXL@A!Ki9{nUa3BZCC825P ziMKZxbyYz1?nXY^+Yo ztjSTGxXS7A-1fL!g2PG(Jb(IoWq}6bNaSB$wWOpPj-`s}`S=QJJCSHR`aoE2HA{+7 zU9*vgnx}Pg(n!)UvdWWOMZ@+@f{m>71Spd2WF-S9z9qJeqRwb>(1BnRf>E^-I4>oU zj@{6P&V<{fFl!;bc|Sa{*Yp$=4b;H4ACwR3$TVL z-67r;eZ$|>70sMHPDAK~eZtD22Ln~pQIC-+#MR#wYgN$#eW^5od2JR10N!(h%@XaA!01e#q zUP)}%fM+=?2(}c1Rfft+sP=YyXIEpa3M{20ObuXZN~06%sZLkS!C()NX4PbDvm06y zt_$Bsa*o!77~vWv*sL=N#MLE^ZwZ$XB?gEA!y>cGYK`fN%ShvE%m;#;z#krwB(Qtf z2}2}umH|H*y;Gz_fDJng=0Ej7qr_y)72e4=?-N5qCZ#77E`Fs(awTI>^T4Q#)_x&j z$u#L+lOQ$Gm#pL!H(an15jUbRn0{`DovS7+OU&E!Bu}g^Bu$~rBO$~oX#TFFd=((C;ntj7at40KlNe&W*BbwcaD>Yrj@+p6PzRoLUE>b&egu0||#Dt$7^5F#)tuu`mX z_gwLa3Bw%(+T43T+h<1_tmQ=f+T@49MvK6odxQ4Ei4^M7J`|0vPH!4&_d53!ilN{3He;$1gT33 zMIeY!MLf)1fv%9GJ*NhAudVvUj|5riHL<=n zczZyc2qYCPwTHN*I{@W>~Rd`M~(O zSf3rFTI*t`^hU6NfhJ>z=u2S;z$28T5;lM`26Hqdpx0&&<4Oz3{ZtUI;#GtqcB%8i zQI(v)$pBEUL1tiVMg>sesYUNgXE;IbU&A*8$AoMdaB_+zdBD>j&%tb=-sYbA`QT82 z*bArx5To#!rdxaX1!|Kh+6iq<_Y9p_qLAs{fp!7Jn@PIuL^|f~Gn$Osm>@>un6kGK>_3; zPRT?yG9Lgh_A-thIFgG%$HO1OPh>@BqY|gmYO78Rz=gOpQF%NpqsC>}0y(E|g=;-s zkhWJR4S!W680M-ThJ_38YQSbe4z&GZBa2t$B9W;%Oz8QP(?9w**e9JBUSOxOBuPup z%<|2)`A7@;=m@%%X#A>t3xybtJDoCkUTJhXLw#U?8Q2G)jCoCS$q*m2$JyVFCC~%+ z52pjFp<`A^J;73u<3bT*tP!OFMLj`pFmCD0m@7EL=lLq@p$Gaqgnw+$RTHCQpY)Vu z%;J1^Cf+*0PaQGGvh}^8L$PY<+wn_uDwOI>1H7^NlPV}y+c>^ z_Go57E{C-}(P)zd>z)4qG}8qPo%rmd0^5t9K7US|e3UfS;^U$b^a7^j zJp10o5IRhq#W?}!V}An_2Rs!2Q$`KCHuh_%q5!;N0SDkU4mw@T0zz$~gFj^$v56J& z*btyfvM5LR0kLAHLP8?Arz}gzCgs{v3nF{2h6A-DH)Vhvzc->SxNmM?Oz0vYH1%4A z$Q!PLU{xd8WvYi5Oe*MCVs%_34Ym;CS7NnF_@OKeoB}RPEuk|6pw^Ev1c5+7wd(MJZJ6bKaBi)8%qy=q;S2x5ylD^LJBNSF2% zrv@%2ADT8IeJPD^nZL_4z-eKj2~RS&$qBDTd*U#b9kRv90lT>pdrM^@k4%){)XN-M zx9S3&tjUO+JP1zWc49*HHQWI=MiJn!C+F{UK4q}2F0^K%bK9JUi;pUVoK@&L-HxnJ zqbQ8u66|0ovH^gFb5pxgRb8S7c^)k!%psD>mGyF9-|%I(hkMPILng426jM%qTKAao zF!3Gi=LUHN+m-m#BuT^GApP zbKx|o;CTv&1Cd5&8R9%x!9WiC_ju69@HaQ8h9evo_9?@*OyCWXZ>?$*Ii|L(ZB(-6 ztPfM5Dn0JGzp)I!X@oEbIGI3_y5uGtgMgKsE)l9jW&Rvbmy;Y7yn{ZqP6t3mAc#&2 zsMy*z4O+ ztk528c#QZ?eE^1UG?0fU7f6voAs_}bwwZ_m z5JSdi46a5m#=!JWedBM$MF2VPA(4@5;=d+_1OaxPGS3?@45X-&zaUQBcmR#5pvR_2 z3`-FPwIBK}wAudECtes3n_iX)Lh<_nV_GQ$L90?Igcd!|1*EDIs)C^th{t5d%25*? zTO&0)7Sf4JyYtv5g$VYWjhB>L6-ksgXrGfw3Kpz;L(yw+D9&_=R#MdIA&t?50_1t0 z2zOveLYUJ2q!M6(2pi9y2^OCMWF|AF+jwd$5yleFzrw>qJN=B=WC0x$VMqvck{SvjWk^Fr~{{pDr zuE6pey2xO~sLM&#OYK~#-El4TPD{oP9N?7vnf(Gn3!zj?7o5ABm)j*{UMJ^i8^Y`m zA*We)4G5qm@uTFy)H#nAk}#6)?Zh*oWC?WFU!X9D$F%1Y%kq1zf#jz2+DuG9g%7|f zehKFZpx~o2FQ|7<#s3Zb;NC|WaS}MeGDmcnk>B8+X_(Hr>}2=a5&MBX6!a77w{Ilt zgC9fH{UQ29Muq_jco52F1k8}Zg3@iO)5Lz=Ska?53!~GO+kt60z)_+^;{1aL!KsFQQT}UXaH9i6o)>rm-qA%bA@Iu z)6$a@(ppb!9~DrXHFXo-fa=Dw$4v|>?{kL{f z-GKhHZx!Gi!F#~$QXA0`R-@j2vl@Ur-Kj>v0F;(hU`et?%sIj-l$?*;dY&=-MsuII zd^8mk;;pzwg$#0a1lWQhVe>Pa$UkD{%9@UM_TS**oVzy0Jwg^Lit;rMbU%10<8^Iu zbZRbKgt?_X4Md;P1!9{6-;IPNlzOXoUA;AnE*0EDR<+Y zgAQci_mH(Wte5QF?(qqd+6XGFtwi9vtagFEY5t}y`LaFpMVEF}rA zpVAnijyH%enAyj9VIHy~;d>67Sc35^hD2#pGY)KIX@WvWat#)qBwmBXvOv>8w4m_I z8R-;0pSbXamZ+SP#P&AAV%y|ZfoEU&ijvyq!aNHI+iCtF<)Hc+7?L$9U3jidX+&6 z=E@36Inmlp3Z9wvG+d)pl)sm|CN7E?3!pHk;URojoJ&?SGiHTV+8yT>pQ(9@Wji;h zCoFLu(P@l3JakuSq=NYa@|jvA&2WiB%AssBedFV_F53!|A*j0}A%3$RWO5hDWJ=)q z&16s=Ai|wK3q&%lFRL;n+>`&nMNwtTUz9_Q#j>SJ>*@^+wa`sNCBkU`(g%nizBLyj z32jgGB-#{2Z{S^ZuGNykC%>EvK-_aWxP)0UDlMUiy$LR*VSZ5Ar`$!8DDg)ElyPU3 zU)HUpAWmsPV6~Ufq8H3oxmA{Lz<}j>o}WE@wA8J{6&yATc{;~Z20B9X zUKChvP}Sam+Gi#{pH5emm$-5f<6giZTGGVW@Un|EKq^NkQ(c=3_tRs*vM&1hWayD4 zRCi8Kx-q%BqosxIe*Ysx$-?B#r7-lt&lmguOh2f=GZlm&nfM7f0~7KqjQr8~3C1yT zO12v;+$!hwdPBU+Js;Jqc7d6r^{gA+g!&|}UAtZ@r&{9kV4fn zYPD`U0PXUyi|sXPu#<65<3vsDDDt`dW7e3!51sTUZYLP7uBf!if~?Ubz5#}yK=*Ij zh^R1%pmS&bqj2We1OK<)JqQmSyd^r}>0W~IaNhllEx$mI?E;yuC||}f!%nwKHTVRg zG2GP(5-Qn8;Mj7hq?{#?l?{gDRAKzClxq#746S?~c0{V+COziyrHI6~ z3b^;+2kRmqWP=692P7Bw>#U6fW-Jg<*EpQIxD==v@Y*e8yoq}FDJKpPa6)F9Sb$8r z+gUC_{<)n$x%=b`X$Qkhy_5DFh{AW5>1$+c<4EtGc5(SfQv8@>4BH%@Hr`{vCdM3G z=r?3ScT_?j;gk~CGVv-Qw$iGF5a5Cy3?i8q6fDh)f}zZrqbXJktyu4703L^@Qo)S#c z9@I|Ea?0W61ZPN30on?{MI}TwB}{4Xfu^~6XH8hciq(4&L^da zk76wi!we8|Ygl@P*#-3wxsmli2?q&wC&3@U3yF-acJ`Ygwgp`)v_5lbp%j>4&XdAa zd@GVf3sh0B0gDH}!Vp;P9JaT*Ng5<@rOQnO}g`~zG9 zLy6yIydN$ezelLhm~|_@U)e@zD-3MpxkGjweE3KlK+T-gF7nYCy?(E(7e2D0P4w_R z#kZm6?0p z!{ic@PAwyNM4&gwc8e}bS*M$_h~r0H6a50l4XP~SF))XSoE-kl?K(5 zRTvw&<|b}Ij(B9v2O?Op;TfS{Na+fimx(iCd>}L$(Y9#l%ehLlB;Omm3o%9VCu99i za3*6Is_|f%zmyX}I7?HdM|hk_?;4IEP^7;xNPPRKFvImhkmOcK>S_R5rSIRkhk-hi zd;nXk@8O0m<5)a59WRf`j+C@cJ)=X|9lH#J0!7rtXDsncBmn7IV$xLoH@P|=g^b~I zl*LV~K`c0{p3=h(Ct(j9W1`G@35GjB7ZxxIJtyQWH8Sw^aBq4Bj--^5ha^j0n7t`R zyg1ycKJ~_Qa?7?{jy~)ox%9CJfb`VFlH+3oFo@Rd2PxSraB;6b=S;&AS6Z%b&my zXi5l#56*x1;fF_=bHi|3s{yB?_+|4r9pND$))2dby>MD#0M*r zYRnY01-&-xSS}R^CT+H1we}vLB#nWa%RZ;hQMA`BV#I}M}19|X?1XDuj- zjmb4&t?1OcH8sbOfr}&yfHor0nI>5d;yt08AWwr5uaU~i@s$tDZ7JIOJV8=PPOv== z7>rz!Zmpj-jrt%wE^}dEO-AN=$N=@c=4DVx%|ZAgzi*~)a?H!i8a459WnV-|uYZEIJnBrXbum6&epYEX}-;K#w%L>g;<8%IS` zHW);>QHc_Lh$PD-wY@IHmfv7rw&B!->ScX_Bp^o%`4Yc$L~A%T^p z;WYdMI&x4|ZOyv%916nSkK^A@INf2EGWzR+PkBF&zG2nf*aB{OxDqBA6Q`01oyWn8 zv4@Lu62Xb5#DXk!28!hU2u4IO=P3;(qR((4kM)NvejizR!UCs2f!I_Aoe38X4Y08C z32-O{GcbNYL3%DW8xt~N1YYhKHYA`;Y+h(p>dz7rJwc~p<&cslsA#HyOU_-5ROvN; z0ZHx?;M{W|T@Nfa$CvbphUqZM%e~M?X61+$PZ5XPN=5k9;}S=JRXrk{4jFrU4GwKo z+Kmw&;HFAW`4IhF&tYA2|g~ z{ERvj^9p4IZKo}Huzq8}QX_yRk8D$V{oM;88fGvm1v2j1kXt0?&Jzy?whB87(zR6N7mo zFF#g7&7L+1u1nc#Qo^V#&MkEdGq<-f9VwyMqzsTqi_1$k9wjqQ1duMWX`QBJwct~@8`b6%KYVJtN=7D%W-pYu%^!u&tQreXz-xt) zok2E@aD$5Pi~FJ!z2x@OV!chZn9;AUOlGdOpsX_eRJR?9}q9)%bNm2e?%3a}gl< zltDW9S-yq;5Dcfdp?40Ld$z%R>~x0aHl*V#8?}J1*g5Af*WpA=G?N?{kyD0ki-h&! zl>NX->NJ@N-A7cNw5lnh)O{0ZKUNSwj^|+`v>0<&F8Yh{=#p8&Hbwabga-#2a^|x9 zs&xhYE^ARvhcb4H$!QkuL2^Y8RM{Y)H7mJ!R4aMqR5Sr`%@|lFIIb)OV$xYq-O;kMCD9*AP^1+; z*2A>KX~`oIhj`~sFjSzi$YK(FG`&1EvE-gNUNS{RLLGFLp3mtf!k>g?;@Td<6a2O| zj+)Sa8n}7|1IY`evM%CHIlG0jO)OwHcvhH(Cd+cfjaYy9=v`WaM_LaQ&9}t(k%*74+gGjgSv9WwgLsOc;1S4XD1nCn^_&-u!!bck9 z`*vP3$?n>P-yiT5_z?LnZeQ#EK<=}~5{%pAN^!3dxmalA_{pSmACh|7Y21})9f3of zF%R}t+_}(DPgr4`fxG`$RJfDwS}>R z0i`l72QYoGZwx8AjOhl+!cJK}w|l|Eda2ETQ)s3k*4kK|J_ZUlo667`y>FpMG(1!F ztlqP0SZRi6#rV*OWpVAN4tT*fRh?v> zIJQxt21Mx{N-G9QKc`6MGlo%)tHX3dxjQkFuzF+#LSrmuS#XGQzvxgoc8kV3vQVD# z7X|te`pNgtJra)9M_ND#iijcJL{_sLBHdu}VIWe$0NBO}A2~GzlbX0E`xx=a8>R}* zJ#!CE2*5a;P)mT>`aDg&9Nra^V*r!S-za>t?H)-TG4;8o&)o=k!zjRT{q&UunBy8S zJZPOfMAiBO^73)$!_@eiah};w_OlHq8v^%{=By61tfVNUO}*7DQCjfiX;IEVatz`t z_yg_LW-5dT_oi8Fnrc=H5vwM$+aH=qthB&N8!MIq7YW8EGYgMvRoRs~4kFM1122g5 zE?h#L&SAaQ73zfzc`%X+@t9H1;=qA5Y+Yg&z<3w-_f8J}w6l+cIV{uUuz`;_WV2?~ z;%&-8YsiBAyjKI;A=eahs@=4?(?-kW|9)bAS7bn)`_<3OP!rkla3p4gQ*gk3O45OU!X3B zB;+<)USa_X?zneF+XHFiC$B`qu2}f9-gVgP4uz)eJ!v4#4i=V^gUQ9SQU=~U{vrhz zdKH`|Pikt*=@kg4v}<(<72x+)YXxMjM8ZVPNn9zU!EW&fWJ1R5cN18Y!TCitPblG}tyP}8Kv#m%# zuH|1jg2*rCz-EL<;9Da)@J`QZXmxgAPa;EK&unJE8R{MvC_(zkdFeHlIp*d1GnKG~ z-^$yS0sl@Jos$6ZURhDNid!(jGd5qRlJ^d_d@T%yEcZW0bi zM#*-;fs-lIfDBkyFq#(YiwUHz*((-$!5%<&^37;N-jLBG$;3v}q6FRAsx3fQM!d2) z{4&?x@o9`w+Z`$j7>bK=;pZ|NN+?%$~dNBRIH#uC#5Utk?J zqzaex+Ga!3;+H!YEG8d7aRvF1Am=jEVVT9S4l0coa1^87kg`P~0@QHNV&t^|as;PW z3j`$Fm@=-zJ_8&KF@dz5fqK3yPR>L^Dw8?OfiF`P$_;LGMN=7va!7_G6($$H(Zi|RF6b5NZ^lQH-#q;M zx*omX-QL+h-ifyM-{9=v@W-Rwci)|u^y$nON*HT~I8!{Dr%$E#FFEICwR+3@f9va&%hC1KCXy!z%5d{oyETx<*#N4gA=C&-6R!qq=0+MfHH}=68(tk-^{(kFe4Pig^##;-N(@z?yIA!Jrk75;eog)(IZk>fvX@6 z>Wb(mO{#WUkG4LXe0Olf+9<&UqMeslqs?o1RQV`#iq2!)$U*s&PQ3H-VzlWxINCua zo!yfIB%s{ge|vDWw{^06un%H>dK7mGl&Yt|FGXOPR9zW<>Qxj0 z*mB^Qm~$1+n2Er*sya|sA!2$Tt5@Aqc~&KOt9$Jpl4Id_GpDCm?HSVRm%jQx_2Yn4 zZd7Wu)=DEAOg|jIA?D@-4YEDfR##WQ!asGSNDu$TBZ!Uq##i;)#(I4nA$jZTU!hfF zedDXBHs5fweT8$-_8^MB(w&h1?S1d_zx=0u^9opX`+R?EZznvhXf}11G@HPGR2Jr> zh1QTiCQt!!B~PzpNl2#aE;zprd!6>J25V8TOAO!xI2qrGOUc6K5O>RhsbHl$681dm z-<0*ZQ=Pu~OZ!x_0>&&@J7VTsjRapZ^7WmrMu)A9|@l9|y0gF=OH zEqR4_I9!zRG5q(izcqw633j>VHR{5%P0toFGD7bV6=!`wNBtfi1f>w9P)kMG(aUD1 ze}(A;$-}#LPARWPAC9-)fjTIaSPhw~ESZNbyhjRw!jFy&TB5%)#Nev?5mFL&tUbm+ zNOvmQN@@Zj(Gm1`M#^-1II_l+Mc(4ycyxvpbI2hAgsvC}6t!;wKgwvtLQJ0kt!Rt@ z6R*s|DRy3}@@^BTNS8k9G~ve^VsI0KRK_nbB@k?eVKsgr{>+jCGOH2}m@mu8g~}Se zB8|E%Aj=N?mB?%jZIbAv%>z@XKOlZ@`@Kc@qftQ%i`zpu77?_pSN-U(m{^soxAgzn z`_{HLj%?liS-+x3*n^nijjL7Y)NU5 zpc5=S|7rilE&&o5%8yPUF~yR=JOZbKgPnJxOfC!pXx0g(*IXtfSgv10B~(-%4~MA{ ze<%c<%em>Dnwyb;>&Fwim%3d-`^bg^rIlMnk&lwcle1B<6=fh~FppegapCYHCyp9} zD9t5=)OGEnHb(&(Gq7@ZM4VP=3eb!3IH`Bfl;W_;UTR}lIP_CT_7nb17nI?}Fz7)X zu@5|jl6Q_yL_`?_r{0!BEHf{0SZCc@9aQ36vJR446bnK2rXCCY2~>I6naukgLckP7 zw6D=jIXIQ{W9T?Fl(JyV@(2Smreud6vJz~kZO_)!RTdlR`JiFLce_PctT$n)C+@?E zbv_Rh&MEM%1pO!|%MB33Sdfv}_5kaua$f^E%#YGdZuaZwkpS0Q3|a_g%?&E8DjY)i zQ@MzNtBH{~ZHN*W=9%o`W!yR4d$IR&@8CormOuiqBytpJ6O!4Dq8*jc;w-jG^@rMbE2t`PCVF_gZ$ z>sKcF*)Y=tZTpch#gyQ5ZVnY|1Zob7V?+CU~JAX&p6i6<) z)IXl=5bH5Hm=OrD9P{#|HJrIqV$)Nc?2sN4>ds#>x)*jn3_m;UX!;dPvl=uvUr=ei zo?AtYS_$JM*G{>r9C?S%F$IWN+@U5xp#oVr?9)4UUR~G77Hx-mCX6?k0n8lZIEYi3J%cvBWWc+ii{Goqn~h0(18#87VUWYCjQ0}~1M+GO zUP`6W9hS>d5fRec5+fn#7R@_=;%Wn!HKuu0?rsp+((hGVzu`_mC@D%{CVTR1nl1jG zGK)kEN@%e?9iXgWznwK0b&csH-9tGnqh{!OwYf#4$*ci@8EzI34MAdhiq#Un95$Tvh@u0GxWlFc=>ohe6pY zpj-di9q5&)2PiydG@!)1nS+|i2SjfOQ@u0rk01#HdA>(zR!Qk-fknR;5RbTkISwhx zSytR6+vf2a_7bF<xX*V8Z=HTzGeg87PMD=DZV zk1@AgZfe@u7Dn4Gxnm`NiY z`vBcnT-OVL444;w0=?2NNy2fa%ND{iyx|pbo}tEB4C#_X#%tlw6oVE)>=hv`L59{2 zxJ+AbB^UdY$h*bX4uM_oLJ^~hgxPLYCjr5&S~zDiYU1aMT3n}_5-v|?Y}H=6?!t@$ zffzhP8LTfzd4q7?p8=(V7jiNM*v+JhavP-Tgt}7pCtbi;zM^m?#ex`&(-Y~cc4JHg zZa;ULbe!mM&nP?_IJKCGudyrb#!w;!;T|eBn-gy?-UodPaSFhB5bYfxh~-C!@_l_* zp4%UwV0P$t16UD6)sdV;aF6L0Ju)oJKSY3xa)Qxx59RnC5L3E5+2+ zwB_+2=AZ0}(IDB%XJb_sn#qH|k}q6l@-QO9h-s|=1vY7IZ|P*407#<*nW+hIRv@I8 zQq-ExGr$agnzt_KMEuX==%THKxJFLg^t0vU@!~0`1S}r>8!kM8V5##%IMLDKK(Gel#JQO^E2vM?=i_}B7 z4QARKGBg9T9h04;5L+mf3c=CAzT8B^8UP4T0}+3`LY|Bctq5?41p=80iEGFhXY#;P zkwmg|&f{y4#eO9$12;qgARMdW6bWDun^p!0cGw9Wc)9@7PDl!zMXHVfZs25*2n4Rx zC<(b1ke!#d!Hm0k*}%Kh;D7=O$@mPxn2##OrXY?XMZJ#xlww@7Nc{xJL~knKLs`0z z&9%}g1kXXF=L0kpFuY)$Xu?a(P1tc;=rVbcxr$o=E4r-caEUX5opeYjK?TDu3w7sPcKkm@1q3pcZ|MWJtF#43>}qP@xq)i zD8iD2+_@fkw5Y06y%YdN2at(lGoWBVlnM$$&=l7!!0%CM6Wf9H?!Zh3*9yRbIx{`K z#%nG?kS|Q9Q+OHXaC1ki4l^Q$76ztVqOzLUP3rYfM)4#RtEqv=p=88l2~5nh<>x4` zqSCQw5q7*jQl$fx0_=Xyy8t7s8Rada$c!jw3A;C)BK2$c2f_fFl{#!K;Lo(t zdR8q%spF}K+Z4wp#U0xgrEW*LRvp;)gY_hPJ3yTn!+7D<=vZzHp6hYwOxZWRDIFY; zh!{v~_Lk32Z|?R;?Fxn7XS~q-$|)R>_QsrgFC&IM0A57lJkeiShT_J9{UP6(>{#oJ-DQDD?(yiAaf< za|g#02mY*bM(Yhye7uFQcy00$RS=?BMTDsmx*Dh%)<3wU+=h#73CEXk>%7AR;zI-F zZ5I;`YSR-GPi`TK>;-*@h}coJP`@cs5V;8CN(qSKiU=|3Ty|wm8<1Fs82#g#4qG0w z?|#I`;FWaHDU%aWapFRW?l^y#(g4|tISMZQlq<~6#_9IS$CAui+=`RNHqZM23ieqm>W&CnbZ{X1tJ5MIc=OHKonE9?QTk*r)KjY>eg z!2J$ne-?vHsX@&`B_X017NoGa7RWwpq>OTTm+B40o~RX!nnQ8@Ll{GC58q;~s8~V` z=#uce1Qk;F)AXk36ZT42E~uflqFFIVN5G6(IDhejSg{b@VZwO1f@hzoh)M{c>~7!C|Yyox;g+`-G!PGZ@^m z+|SeR4-cay=r#45ogf1(TT92xnk*Sh-t9CO-lKCDzONi@H=>W%?n(`Jg`F@XTVNvu zRfFUY6%Q$}tRCZELicn7HhueVd)p`F=m-8JF~rCUrmX0P$5RMKE9vEI!8QQ7q66%Z z5ywjKEY@qFeRxP1ibd3xv|<8%f%l*Q!YedvD#5Qu!{B1;0GQ6= z&IblQO7X6`xhl8Xahg>M2C!brK0*BglD-A1!ci?MYZ%##lR*mo73rE1iY$^Q@q)!e z@E!Rsuoo&iTZwcRsOd`+;c8SwETDEq4wY*<7)nCGKNR*gazqOzSv>Ydq?)*{Ko*nG zM{2Jnw+qzcPGHZ`8J;$s>5wyq;3%-JXq{i(Mq+h?zLo#s=p1IX)&kW%HZeK32{9Rr z4FD{c3e^vw{dp4@tra08&0H6+~OE}Wh< zLK|%6m^M*vJpwpRqu99s7J+YJeTV)!Lc*9AD*Mz{c^`_Q8#Ev=(W7=6%#=s|xMf(D zwhJ^Np>0ie2WUJ8g#<7g@ENvE6xqoT zDZY+`5XAf!(=-o7hH!#KSCtPoG})>wiuHh^eDEItssRDHf@S{USiBHk?7!SU5yc(A znfH>nt4V2qlL)X5c(8v)J6hUU>0qXokre)RkFtYbpX zz71k!0bfBNT|YaMROl;pJ4=unqZ|oU8G)md=0QnOr3{1x?X^=6;=Tf2jV~@}!)g4s z2qp^=tmfn&U_LA(TIQ*hB>{#@)?}Xsy~2pO&avv|VM^7FOp4_dipB>Nza{g~#36K3 zMaEo6#@q`y-$M%jTn#cv zzi6TZ_dY-rxrfd(^K=*a_w}Gz`^$1J4;qasuy}JFu?D@0kYpI1OwlU*XZ{boXuhfo zO){GQQ0JKk?b(rUaJ(eN-)y-5&kyxxyIpDBPUHkM-2Z2Jef`-=+W%)2?n0|m|DSw2 zc)wDHb_aX@xSa=4aU%IcD(9_c5{(^xw7_PHTsaaLBnw+`Jv>| z(W{-PbQE7xiu;N(^C~U*cR=Pr3Id@`i!vV+6?RW@zk(Glh#*H^!|ji<9tr6T9_sc6 zIwm^pkYS|{ZRwa|Q5hSAf&g@7yGa9;K7f~lffg?D7!Elhy74}o` zN%6cU9a^`{I1$Z!KD}r7L zw?-xjj2?nHyC%G<9i8xb)C0V8J7LtYHh<5tafPV2KOi zvn?+sHOGW#=`p1W&I{3W`CVNWn3hI#O9|7EJ(??)b1;xuK)plNHTNh$Kmket(=0A} zEFqAQV4HBE7WTPN3;R(iwJ!TaO%e{qAo8$vS%Gp=NL-QM0!Nrleic4&t=j^;lu@Fs zL@+=Z(jsb%06aJ_g8u^Kr~?fb4H`xbrzd_;7N)-Dky2vq!~ zk0(K>mRa0%&tTjOR*S{x%;-66{HA$lA}`m0UUu=Y4i6?d356@jU&a0dBM*iPhEijl z8rE=@rfMP=k2sKh;}QB1h(q zSEAyH;NMbryfoR$%w6M-Ij+cCEVbQ3YmBoGr@xq52jWd}L!~f;TULp9CAy$8qG|-5 zr1ON}My`a+O(Hl$z))bm4Xh@l<5*_r{7Sb{ljcJr2q7=t`>F;wk|e#)WO08sKd1_T zA|D`YjMt4wr;=Vtw=jMsddeHit*cLgy(`-8ZCm6P?g*}7)z87(HsF*$Xu(>rUw|Nw zcDk}oVi6Rm;<*;sX^<68NDB~Dsj6QRT}_-GJ^}m8C3DT$(Mdx@?;^Q@_N-Jue1K7h zG>zMwfe3j{(Wew%1BM57sMPJZXNj|6G13h37vPO$Jt*)kU_3q1CEPB3`S22Je_6@J z96Rb$LQJrd=Z~L7t1IR8r{$HkugV`=h>6s=9vY|2W0`~hdj)a^K}#kJ0WqBaTX_mG zMwb6up2mN;A77WZcFy<@y8obHe*_T_T%<6_p*D<4U`N(^yak#c^lI=*Z_#Y+=v$bs zR3PCe?`Enn!PuP-&FCF&ak=~0jKi{E-*9uf{^r8*fOII3s^YMEWu^)Fr~xW5RFkfA zP`*Vx_JUm89K1c8Rt^lOoP-Rige&HKrKVb5-s-95NSY|woCv>3lo`{U9hCK8@0D?N zK^FEtLh`CVbVs0rcOzoIJ#En}1WK|7xJ9gBxvaIyWohX5-bZ8{Mg48l+zb}iYK7ga z^CPw5RGE`dr@mb4E^Nu)Q&O66$mAbku*D4%H?54-x=~AAlJrou3fTdznNtc2naa$i zjPD~%3!JJFD1us_xjJ=6Q?Ay*^DU=QNY*{QM>>#Ui~dsCwpX(Mh0G9aV^U>OW9e65 zi)02kJ8-z^!2p88`O!X7IYC(-!VY}0K%a5JR9h&zZpsjZsKjyzp+RFY2<34Kr4)>y zF-}XVH1|1}9?=TVw zFbJgHtUX(tdyADOc2A)(=NcMCb*_1ro;A^@T>ZGnYub<~^9cPbX32A0}d_kM?J z)FYZf05qVaZbl_BQJLLqK;PAk4SZ+CjD-qE0011rGjG+bB~xeV<$%iW z@$gzpFA+krc0<>1#HG^#WR8Fjr%*0K8pl$jnzXKWlrV7R=WLW13QWow#r?ob5FF|;O#*7yKr7&cB*Z|s0kM?IrD%JIR^i@AgBs7avbG*qe|-|{ z5rqJ~$mOprSSgXX;GVb874iy4MvQD?I1CHRA*cu8heTjNo(v-rv7-o_A@k)kUkDHb z_7BHz_Vo1luluh~PZ>v6%n@J!^RYq`K&H)k59vZ0ke7}ryx!jhcpOk@#^#f;c~vE^ ze@^B`434HpXm;?qOpXx1I*TCEtF5QeZ(0ANoUXF;eY2VW5RV)IB15+FH%FXs;LXh? zf^fZi5iwwZqL~$y2%SVE_u8Xb6DSG= z4t`2vn8BJxcI>oqrZ|SXsG2*TIxYi(nZa7u=>)N!K+G%%Gz^j(n`VkW$Iw?A+#ZR!Crcm&pOv|q?k=Gw`DMN)g9HVH5dpm+~Y`5S_l z9BSaJ;51;7sN}|=LB&w+25%bbM1Ko`K{353eneyu)K8=+d~K+mU$<1cF${7rJ125e zGYdQLLEI`k8*B@>48yZ6PcT!@~1cSa}Z5Moz?mK;GC0;nlS^Gs7eNni=VYDHW)weuoS9!yP$SJ6$N_k`Ty z_-_Zm8L)V$$?FPqYZCJPGsM@HzOgnLtADR`g}pfOJIS^mY25F>hjW9fY*g?eu# z^l)NAW{ljA5CKxDGfj+Kl1ql3x4^O@ouO2Kvx7=}Q%{o~z_c*cjWsQS&8}cl$4g!5 zn`4zBc6H5AM(c}6?|4ba8@}L(7{-jkTdSZkBKc69p0tc>EYFzkyoiDbStLryYC@kH z&#EVsbe>+0o&`5ia!aLEKPvFBNjF-N+1z7({^m+fp+Tz=&DQ6?Fu?AJuaaV<@O%l+ z1;#zD;KC`LUm;RH{G^Eiy}Bhqct&duNYwDfHPXZL9dMXxhxnxv9^}r3R^d~O3cK>sl%p_M<zR@MY?nO)nqb_ADQsIiHsC z7A{#I0!MH!tF({|t;(|l8wE&DwOY_Cc|=p5D67~*0E9rD?uv3A#-0$t8m-O}lBAai zcwpArnD)I{<0(n-RWS0`?Sv;}82<-Uw{+hT@&13dz8>cNb9n&yil6lTzp}pe-X(APyPS!{C|1&KQS;sBLDyOLn-Wn3ILi^(U0{J z(;gw8?B=g`l7n=0od%UORb}*&&ebV2naQWj;B%!iEiX3o{g!`OhJiiP-fg^oyM@-- z1Y99CXi3mY*o1#?t@LZ6@^N?*?)~5lfu`R+nI`=EK}`feJuBNMvl!Bb z*b|6xuiw}da3t@wA>T%6&Yd+L^rW)(6%K>%gHa@Vk~Be%hn8$%Ghq|%y=x{jib7!~ zlB_9+vrW6}i+bffSOchyT^wh8g<~>=l5ObeVb!35Mw*I15E&ga5qbrU(C~u}`xfck z+JT~)CC_17V_^Z12oHs6lMKHFOSc8HlHX}w|GPxi`aL+9x>+)&WP;)Jv>!LQ0BUuG z&=)x!SaHCpnad<*W9FP;i6``>SYx)Ozs`{5E)6aQ*F&(}fw{dTi`<0WOYH)e6=4v! zz;}rq9yn(fvq7V?q8dj7T=G)TM3@P&fq>bPUy&vqk4_i1?xGh> znA{x@`aVVRuhA@_ewJEx`vl$c71Z!j?QfNOmsPCfrvefyx~Yn@hAPyls=wzP+1lrt zoI8&LCg@)0nWUVS&$pA(+~=C+b$opmw@v`z?Ey2@t$c0XKTB`gOY@nHecNYiO{Fnv z*6IwBh3ZF|-?is4tO)_-=@alsBIMz*{uL0ySt3Y2LV3b%a7I2wzyH1&y?$%w#0tQv zj0jU-{(2`~FQ{+sD+bo5UMK<-z=X9W89Ww4M~g3LZq7~vGn2wK&|yTlz3BM#8!%#3Law(-MrrlmcU|NV8T*q4o2$H z?Do;o_AeexSvTi;ibGNK>s~;d8tK`W1m;Szb*RQG(`}Ts5}-?B z9vTd7Mzga982q`&0LcnL9zbLv?I8?HsuKMeVUIaId}bu6nU)rcLl#vUM{Bbiv(cjX zOGUF0{H1JIl9#p*q|&(wAB80AlVOH=xumn!&R}V29I3%EG+s08&JnH|^bt)N5&zIW zSJebHJD}GUCM3D;dk|B5UfBu&!TJAqX~$Tw3b}-)775I~ge( zLOj;R*`jSRE+IBEV?nIrI=r>{zyYa1!0gi2EH{96AUH4tjHwztIuv7oLYM`}(uEE+ z9H`;T?8cJ(X8-)Tm4UG0n?_N#*sXpDRoMZ3!>beiZeN67{&#CMkNn4cRwfhvV8KSo ze^#Dl;yl|=J`8UFEe0yH+aA%Y4erCUhSP!?$fJ;_VN`o%fzr>gL@T0#=xrZqZ(2b zu5Lli)Cz;cySAGBmI>jK56_YDs%`bdx%zjg-)F9nF%7Qj-u18Q(nh#JhrPOY9CV*v zK_9qUD3D%ZymM3SR~0NL{683%vDuJN-fSrBx~D+TQ4qHEqSk7MQhPqG~QY2`W#2|?gb`g{pc3cT=|(~0XE?NfU9ZbrkYX|^|*YXuKsc+UmO5FaXdUm$)aBz%6(n!kjQpc!Z&z-z#- zQT@9rj=BZi$@So2A(dUUtaiSYp5BBUedNX|2G+7&` ze+$>+#-#=dnDMn_zvJs0q!uXAWlgw`If#29O+);9d>k^ccb@y^JB4^Gm~zhmTN_Pq zhGh{kTeLIyt(zDdO&W98l|yS`Qv=?mz{IjgI&7~%;t#XVT5PAp@BbW$Dc!;*IMd%i z^zU1iCLHu5W{Aw&FOy#)U#WK;q%fyR=zcV$V6?dzEr&2v-h*@N_p5s(!BXea7 zW!~&KK(`TNmG~(L3X*$8*zfE$1m+e)Vn6-^{OGSBKRI_X5PeZZY$y`48y+ObxvG#P zk?XNdYjnjgme0Q;~*9V@;epI8t~2UB402;TXr?T>Z6G7AJt1HFTi9$ zE>`MnX$~u_agLVCOJw9-7kUo34(wP3A&T!I(lEJ&T?H)USIMr4g)N4zI*m0*0#_Ts zzmjgm}oISRQa*xj;5+MJn>jtsxtc1+*;+7LQHxy1uhlpL$nQ zni_X0RYWtD(R>XN$FM%~$bVETI=LAbJO9M51OVw(Wu^$VX;Qa<} z5Fsm^TL7;!8gC#DI0@VuNMy#WE5(bKi()ZBHD;h(gugSQI3gSnI6&OPkC|l;USY=| zax6X~jo%O(kS^!YUdV+vdqyjeN+bOciOOn7SD1N-#!nC-BmMLOu{)rL51Xtu5u!g+ z3^`F``00`ixRHK>NoJm0{t{POFA@3XDqT{ZXC6th-O6p|aqp8p?Onwm5o{l^w$hck zZBL){dt>1nQ&azc2Oulc4ICV5>b>++I!++cRQh3~*?7f}7Kp^TKj8gAe2H}&@Lu9! z40_oZRl^eayp0&AwA1@^o9PL z6-?m#&GshJfd%r)5-h?LOIf5**9=4>zFFfYR8{MUV9vp5A>ny}sOjGSB1p8P{v-h= z^T-ys3u!BulEb2yKy8|sr%B#<#c?!EV(bhcCkaF1yMY(W&e8s>6PVQ&3O{KS8eljG z*C`$g)0iSqiUcsx5FF-Rlk%*U5uO02LbB(Fm~#B-TSC&<2adgBSM0*F444qzbJR~| zWQd8<`J4p!&v@5L(hLNnyFv^&pm^l6kyu(1XNIu?DFwk)I}DHHX`jXD7bXruR2{?$ zvxsd=NPtN>7-DEiD5Nj%a;pmV@crS@OG!V9bM@#beqWBBtgPlr zhL8|zQpKf0SVby?)$;nY^7_|J6$l7fGBzR@*`q>K*pwi4LnxH#t1r0%{tOJr|HqBn zOEQd(PyA!>Bk2F-^`|}YA6A~h|7WWI|B^eeZ4adXgH4~D_9wLsgsRD~dDDVWi(%U{ ziCf6p8U%-hnT^15PsP`p#UdO{XP`P{Vk_R7RbFw=L4V?@kOO_5Cnf~FwNTAMtT~A| z;@qX|t9cy?uOI?+NK_qd5UNV$U9Wm{<(n_Rt+{*1bN=n_pI87if&Ay$`qcj~_a5G- z;5hq#?DZt$T>~TV|Fb7+Pc#01D^FIY_Fwne*4%Yx{;Tb|YlV(|xIg#;&?da+0-ofta>0stf!dPY} znKT0quI*2YdO%9lBG2EX7&MIl+pKoUpU}5Q!}(T%ilUwYKL|+znLTY>W3EfXP!ky%qIY;J zg1iZa>fiUKX7J}PX+L$Q0?7syzg+lp5tg#=Jnh=KF58|Vs3$%=L^@uVfFs#HSZ;W5 zqECey-ONPe0n!W9A^k^DepIvD+$*N z`_S6PfgRsW0vEoiWRplj^D&{tq(00p2Tw|-ScsDZ3kp1{X)pY&i82`5T2M-W11Z~K z<_U`ap$=d&Xo=#D7LlVFFX8GZp|q*Czlsa8euh1P7g~&&EK#vf(gEUumO=ja&j!#3 zu!$#RnF_&6*NuaISIF{IDO&M?oPkwb1q5)$A>zO=X3U}4LK95#G#Kq1dt5uLRBE$r zdw2t6_Zo}A@ak>ko!d9>+;Ultgs+tP0?P=04!OllB0i`AnAt@!5(B`v4OVWr@4B@* zc1R~5m5@v$D?s!D$T_BssKBa&m9q;Sl^8o)-^oHINep;DqD~|-LQ6=2(9!@7O)~&Q zkKp!6UT%t5QNC~iH(QY!LQL1vWWV%ojQ$jM9`0^{O(9G7TjDo%K-n(~5UHKwZu5|k z*M%wz_X-on5z2hUR`1p|A(Vl^(ZF`T z6exjI!UUprUDC?eki*wp$IoeJnxqm2jNsI|INt=Q^9rtfA)5$40XR6DC6^`xu4fQD zUtGYB4Ip+6r6Pb-Gx-H@1GBe6U_eF-NSF1HCuUM4cy z$rZh*%ql1h!8wGi#f;j+s4LAj$WjGC5fT<;F{r_Xp($1;=^ROOn!U%o59K0t6n|$RZT7PNF@ct z?oSpdd(UVoEROiS6cU2P2Bv5BSL!`tfaX(3JbRW)A(5aB2oItssHHlI)rHk3(aLgp zb?u*_lQ1Y-N{{Y8C@l6k@}Eil0Ef$eR#ui*pJe1e%g>fqrt<&XLY#XP9AEyEatut6 zJR>8LMs%^C1~J-XgO$w$+21$((_bj(ryUM;B5VE@I7?dLD-*U{eh`uOGk!Rg`7 z&QC|j_Ivy9{x@X!776C24!=CI%t`c3&B)sRwlITYO3R8J{Q`JkjrD-LIYu-PL9z*- zAW|5YwiXwKD2qF;;CGDR>6hmvG8R7b$zc}3aYgy_d6BSc$7VME)FL16pqEj;} zc7{hJ*UWT#D|#afqSirTa zmT??D46t=GX`qGf+IYdSjkW+uPdM}w_|sifJVm^Mj#zLM#nFVeD7si|ogZ4G2x$+S z60!R}h2s|DRxr6LzFyY8(|M`dP8f7Azi*7@tGnv6UvlG!bg=6j+E5bqGY#CVULWvuP!SU)ss*w+e1wku-Mgan&Q=h3?T*Uw)WfFZd-XlFfbSS|07a>}qRe#yYSLwZ7gF=1oPe~23^YS3>ZL*85(&FD405oz+M;f6$2sX zbZXHsOIx`MnAGW!?; zLs;-%#*!_RX;g_7De-GG3o&GV=N*ccpt8VY!JWXUXQ1lEi=Fp41}>BtR4`10tiB9T zX#lqr)TA=NEt>ck7Q#&KIe|>jpNs^rh`270go!*9Ok5Bz&I#H$5ie|Gu1c9Nq@O-z zC8&B5vVtZHm?>-yIyHzCxix*3^ZUa?C!!B_YoxvQf+YHcj@E_B;(kS&#z(hVV*I&mau|=7V4Gutl7C9 zXqt*X%hCGNC%HtQb{$gg$tsY0{-1?q$UWDhm9_HPN_p)s{~f*ScEE*RSERuoA(#K@ z=tVg)m})mGHwz!y)%s%lePgi=gmNBZt1jckM%-D#vsSZ-zpm7h7wRp6t!cblg5kbA zTcV}^5>0xY+%p)O7kW;ea_=Ee`&X;#L1l>jw*!`K7yRQGYLqcD0SuS_E-%yBb7lG2 z)0L-d%TJy@{jcR!27sH&f4>GSIXkKl>!)qw!d>q*!AqwC5cZ&-tEPbvl)g<8WD;ME zblhM8ut=bc=83%o3WPQjJu@@+Q-N09%im?nvzTGCLtl#8xVBn6=n1KK<&tM2@eGtT)B_HLZxKf?cG?dg-% z9{b<*ssBg*J-koJ@%29e6pTU#JC)XrmKls*Oax%XAg8ai%H^Lr5cdL)z#F7s>4di-N4;30Q^Fj?t*d3m;%BMEsP+M-cPPNbkN4}B}?3#)=bkh4KF zG5p(#Z{T)~Ra%VpV26ZMv$#;WXu>dw8nAix5Afw}H^^ZAcOv=isl<~S!|Bmd1-_T5FLB6Br7I;HTw2zH)d zaS2B6VgLjq`lY}%(4T!uoTkw&M}cc|Ci3J3IP^wU1S?qH$54sLaiD9J`c(0Fk|?0u z!RP@L?C+88*WBF6Pfs~$);yJUC?#VNh@b=>&2vd0aIdvRtE!642A3PsnTCqD*B4io zInCmui)QmpxqNz7X;DQ9TeVAsC4darT4~>2pEc{XbK)))dIhREMM404DFf6U#}K(A<+4*OQGfN_X{e}Tgh+Cq9xNR7 z6Kn!DQkPm3q0+QE;G-$X>hMXs!1u3;zT=Ou4sAzBcSZ>4j8X)rkh_XJo^;w`X*?=>p0I?;E~lBAL%MO}6JgnDXhs zPFV<3N7sX=?Hc+NW~%6E@omqOvZB2MXCiLYAg((IrCVxejs-0$umj|z1&2O@BVo#4 zkRENA>_8eCw-yA4Ib~m)bdeZ|;Lc48qRq@laLlQ*`MHyx2-(_9DkRFI6qyLrp=F3U zgTN`-LqDKYLQM8+NQN=!*1&Veo~wC|UJtxTxg&jSbo}WgI!L0mpyv#R@`Fu>iRFTH zKuYtZ_ZzqzUdo`;xh-g|BeY~xJZPE@^%8zg4I$gqrp5-%fm6S(TmY?l*dN6EE(jErkSu#yLlAE{7or_ z61R9$=9RbUDhc02$}HP0>Xmq{;#C4NZWQ18cVYeuzo@Pl|ANqWmvi_y`2mIV@;~MPSxOJdcKF&JyD2g_rNKuUq*iRlZy&Cjr#bzeAAZDhW3gn0G z$k9kb8W`AH8TkoRXqBCT|82c--_>c?F$6dyyv%fjfNkkDLAC??WXs&i5gZfOT8qi1 z@Pw-CydPQLFW8`D{T`k6Zgy|2a?p=d9y;`-{z#@TDOz^KJMaltk~pmh*&-$g3vik> zi%pwJ!Q8e94p6#n!MFw^#jCwkc+wfaf!|D)Aq7TI$PJyJa-d@MtMaOJ!}hC}6SZFT zjOEy}Z#@%2NH_Q%JT!!Cd zmRhY6zm0?n_mMp4iY+3+2)c;QunyTUK?P>|VIQgQYIR*p?(WoE`=PwPae)CK8D1kW zjRQbED}*H`a@QT~d5hj%;zF59>Y$|{j1vW-D%1Emjia-u-pM04!PHfRdr}#eL01vE z_Na)PhHew&0_}2DFA9&7?2K{smwQ1L_ZerLnpeQVa#T=@Fin#%F{vd1dxCwJ6Dsmr zYS-tbIbPh>BqigiTJ8pQBHn>lB{F7)@@Ec(pTU z(Zf46GPXKu-mga#f#ZY#?PP1?=fq)NH0$720di%f=5z+B5vxlIh@PSAh#a4Nwkx|; zI3ipC+b#3h+p%y$(KR?swYH>zN8RbS5QhOt+@ZQtc5ptDxZY$g6fe$1KVDx$NAP92q!+(=SYF}18ka;VO0PAq#R~!C`3K<$gmH24oH#1VH1MYZ15g>Xj2oW!kgGuN z$gEVNOu&ueIJ5*O%m`C0QdQDYh@b+4Usy4t=0z=rfWRVsB=n-G7zarkh3-Ag-tphk zMdr>A&ka-PYLf_UdR1kzPrjUN_`=pBEo+yx>k4M=zMy`YVajS-?4VTGe~PrAa6H=l z-{|@-db6Ew3u34kn;{Xsu!8CY5jGSQhdv7Fbdt}ECf@2P{psViFGiQtj?1PaK~B^$ zXNa`RbpWoRmt4UuiIo=mZnx5@l*_x_Ysk#{tSOtZyBr3nV2L5hl`Y3wVAqu^Ta5lD z%4c~a;Tp=Ja@q|={%S_(l4_!v3wn@@9XE@qms9oK54<~;fTUnkB9Sq(PgK#V(5lRk z5^Dr%ZNad)%*jx1CVK2ZBv~9qeu`i8DSDFqqcjkrki^E!p*rFaNEhi##fx_Xx6YOv zs*N@z;8ZHR2x&0qrd^!~1?I^beLyTY{*`(`@R2QT1P;rb;7lq6+g8#n+Tg9_G?iqA zpd*ngR`EGFa6uQ41mf%YRkKDS0b_^}Aq7}ZGeyr>@e`*Yr@4CAZs^v4o0FK3Qdxvq zN#sPhb32H?qo@UFMU4O)b0{K~3RLi26H@CyQ}{kv+d*jG=~tc2UkC?s2gsmAPufF@ zc#l5}lolDVtH;e{8?HnF&$l;c6r4z$S+C3T=vLT#7`Pk?VhHk$yG|Wq$U?C*#Ndt* zwtZn6*5e!JbO{@cUX>vy zgj&CSslQ}Quag13b-Ch%baO=#)oF6PI3j*HJ<$emmofyeyr&sUY93Mz|Bw>0L~mXU zU_F|g7rd(k=#V~eNj6_4+=k`=O zGK-vc{Z=#_5S#O}gXl$9$g(8hM(tfk)=phyzPWIn0=$DYBQepAN`P#Qy(Q=f0zk^h zW$i|-drLJaq?X-Y!`qa1LlaT>`!5$V?l}WtKg8gRI}0S#um;Ypxn~XLT|QDX1P1aS zAxy9q9n6&I>uZ&J@6KREOqhqEm=A2ef#lsE6>zwu&W2M2@z2zgQI2w144AO*YRTX}D7yX)r|k=1=3c;+Y8B7*|gk}aW zgBlj}c4bIvh8T8~&Aak{zyH3;-a<$l@V$@4yU>abfg3MUqH;!qjXL2AB@yqNuoy%j zlUv+E3h2bShWnEXlF<#4X=yA7qoyH(@<+vyK*3#7v3L;l|&N245dnV@vI|P461ZlC~(CkZW%?k8x=kMT_ z>TV|Tm!a!;&^=(D65U?@cT}h!sW#dUJLpPGQv~8Audmq=$59z1P(U=gcpEgW;AMn& zAXXU-?-Y!gXx=N`PV*Yxjij`Y@>1;(0LrW|*cd$+N`ZvLW6d8+a#dseTX=sAXCryl zo4;M^s;I~r5kfXgN~^@FfXoK?RpnJregLTpexRlAd-_dY_4doz2?5O@p%nAl2?Foe zV03~6reu2Gxz{fC3QX>kX<=dgD9NDMfNYPvJhn~gBs&Fb|DL?P>V>B_$$} zHjx3B+n-b%G{1O`i@_U9m{&A%OxY0DM+~!u60n%%>tktISaI`d%PK@ z=>oq=Z>)~!&11hAbT4oZlPThf^hBKXGmUv1(f|@M36+x$dV3`rxwyjx5aXh{TEHg~ zHDi^E{X$_U$pixHCS2}th=8F;6CTEm8aY|Wmtg=PCP!-LB6+R^-3dsGmCI~9^cuGw zz0i_{uLY4g3j=VBFsA_Qd2<+8I^d`0oeI&KJP0a0kq6$YW__d;Orby}56N6?5U~-* zTZMo`Z181GAchHi+1-iJJ|Lwu5Dex9c^gG68S{v1T58EDMl@hOb-oQqkC11DVht>A zG9Zl^3g&q+I#fd;*QPWkz%B#!Mm8kc=La+bI6w%5LSgS?h4KbjYhL~s1y0DzTe&1G zGaG&$(A1CmUFCtvX2`+nTV5~gq|%+gy`$YYzDc*G;2T*oMs%fztEbR-UB32R-u3Cz z_Xese^Iq7UQ=6rY?XCUo8JljIe=En`4g9sNC9IuRKv8JH)rc+0L{0!$y0s?Q6z#h# zx=5xK1i7b>%(jH^785NxADIaT$)Hw@O!1J=h?e3k2LBH21ujzt8-SU|$@bBS+^9^1 zxtl)gz(Hn2s2G$&@mbt1kQ8fJe28IS4T2ED?5NX1RN)rvd(gHa1Dp>Yg+gH))^Qyq z)oD3l7b$+VUbN#t-6zD09mcZgk1_h4tq_9{W5Tzm$|Ela5(`nF)eF#W174(Hv_;H? zVmMVU9)j56py}&53eai|axn{@iG_rVR(N3a3aC%pm}6Ni26I(kDhOl{V*&y_vDy^5 zIzucIGh}AQ&=-iWL^4|_wUjwuXvCK`-AfznjW*Lu&a2QyFqo^sHqc=Zi(&+uDVIHo zJE34ER(_byK@%4{e5%xs&D67I5(6Y<`^33mmZGwRMJO;7Q|Db^@vz{TBz*$DE4RQZJS-G(2y{t6Gy}N6EWJ=TlE7S$ zCnT~(_=7<_3c-cO!oZ#qssd8U*(f^N`gxZE2>?|c>!`I5IXDx8W*>21h#@i7?N|G< zfMPxA14N@ANsd`oObm(^Zz~mZ(_-_?3rIfR%TpepD>>*vZuntZzTu|Yn z%>%bD1#`S_DM$sd`GQM4BqE^GJ~0)GteiVQw0E8ervaYfYln*NI}QMz8CL*;+|+`l z2jv9W_Lm6#{BIofIdABb03aS>_>;`=deFfb=dS`tP7E|yCgOK}n74mUm-{{Ck;w*-(tJeE9Hc1T{Pj*8?N=rAGZ@Gu`ly$J zg3ItG4-g)LIu>f%d0SJ^Y2rI`_Josbv;po;MYir8V!nzDk7})kI3jHp5fxWmNc%>m z)R3$w@h=+TV>lR%bN=mm9Xk)?*!dqb8W<7(X?6K&HvZEpuY_s-->(2Uqw&8ds@=8^y9cN!fZPh% zeO|%&EY_m>03197^7@3(Q!f8Ek^$@QM1tXL>xSzV=3#&dk4K5Yq%DkAGx&KR+)Lu& z&8tW*959Y5zEQE0+ANcu)Tbh7NsJCHps`p!RLICJaFU#s$RI0fZosOfV;z28zxnfMY)iZ^BlJ@Fk&IMs)m9{#}@H)Ew>*S;*S?XU!JJv%KX7;SvC$49=I*Nc$WJ2`djQiCA6U5T_N67?zwB$@6^ z^b@Y7R;NoVSvo(sdyj6U(6y*;p3oM_B?cYL>pw5NC8}Ux3b-WT2}mw$3^vFVhC|=r z3p&C|LfwU#EuCpGoJktU9jZ13bQW(xpg>&@Oqwk+o&>mqCQYaeH9X8%%za*Zgam+C zzCZ=mfW#UWqLA!^(BYu)ZH52P(THOFN>tp1Mrn3=R#J9Cm(Z#-V9c|!xVVO#5OyZv zC+OiznhskPC5JjBQ8lIp=9UCEI{9zgJu&272wKs=fmj!WnAen;ZDs6$Ryq7F`xpZ=s538hLMo+S)Qj$EV`EJxZ&>au=Fr1?hqf**M91+DbF7H^C` z^qf}iL((mTE@v5H&H*k7w&8Rdn;%VsvDCox$Td7gkD$Y3RwA{6t;YSXiAnDNI-(GK z#`}MHZKcoszc%In@3*u0YL9XMbK6JV|6lcThy8Gjn2S6R_dW;tR_oud)FkI0>psr$ zA4UH!uPyh+e_omDf4&N^jdA|5?GNhs6CX{_{ym{&lJnn)FNH+gSNuB?7m#uv!v8O? zJz381|4)|Jrt<%L?rgs5W1RoYwm&FbfLKzmnr%po-^T`(Q_PSH046#A`@6^|Jo3~h z-H$x~eeQpV38(tMWC_36w=vGYZ2N;c_4~WiQ+`j#nB@Fl)SJ+win;-X8Hfs zA03Z6|4)$YF`fT$b!B}j{~xqvpY{0|=ihDnmp%MBEy=w#A3b?Z%STu)mzm?X zTu$e(^rdYMWE%!v`TtScgh|eS9lGW&Vn=+g^S`>@L;tVCBxp+if7X-Uzp*jSzuWf7 z&%f3j!&JA^d>1#SJbwSJ`z%i|JvI6l>h%M`#Y+UG0uOu z?UUmG8WzEd1)(ZnB8Jcqvk=|Kux-AFLBAW=@fEDfrr2WCmZ#oNa{e!0!i)SW@9m$1 z{(rJErTTi!6caLhncVt41$)T2x_P4Tf`<& z0+C#F8|MtGftbJu`2pj_NurM33z7856aW3qiY7V#K;N+V{A}lcW&KHy|KIA`)c)tI zAb~N?zi#`m^Z(C3urSble127Ft-?wgSOiAIYGVKE-5-%bVk^R51g`qV!bbgix8a`F zJITW>_wX`!Sac76?KXqQv+i-_rrBl_q(9V`z=aaN6Y+!^_*;n1#5GL43nid5<7KAw z5>hX%w@4yU-buJx7xl7HtBW&a5V6)mUi#3>(v#T^BSpf=OGrufxJnE{L^nCH(r?oz zUQzTlGNm%^8}eFcN+yZH8?7v@xs-;Mh{k32{okm4S9<-&jjiJB+qqA7kAjW3d$jWD z)5pu}cGE^+(;5|O)4TbbhzHsjg!n{kooak4Ta3XYR%FhoEU))=L^xzFsC&B+>2#{O)JDUDm1F}!ce^;J9o8te6hW~Zj zC&&L<(@B5iKoa^!NNl})H%D0+;gkU!2XH1i{~(hYc{n!#I70rjwuWFo>GQujmH&*h ziT5Zw2K{H-J~;yDFZuyN5ISXoWb26rM5;*h-`qvBSDnsHd1>jxhYyP%))t$s%cWKL z6)(XdP-E%MGI0kuQ4*s{bkP|xNbOvh5&Fy}0)TypB+NC6#G(f=dL=S}2Eo*Qjt?QM z;F$+O7BZw*URnevLR6wTZHk_q(sdGLh*9T#US8K#5R8bih(2wC$V6RVl>vJ>n{376 zhASe~mbQwiY8n_}biJ*jHT@~O0(frZkS93PW;FL)B|5qdSR}sUXWTW?S{iQwahw?8 zkXcblAafUNP3GVqIJ>kpi#Q3hTNe3%HR+Pb)ppS!XcpvJOb--;dV{dWJlVZ9 zJm^K`G@jvoy;5|!?LI3q` z`{yPF?=eCbJ z@w+H9B=+9}Q0XbX|n)`X1x`^pB)B*DsWw@n|H6 zgnU}q8W2oSM&!c!1aW#Q8VUxgTIf)qqy^Pfj`op|4N6@G&1Vb}#^gbkzWBTX4%?Ow z9Jt0gT>kUQDx&X*iq}6}K?p=XWIBXI$$$VdP&E958BJ3tlL2O$kl-C3>vW?*|pD+@Ejm$Sp@46#K+2^jE$CU*Zo{HvBTrv zG{z4!*v)w|UzAC>=~8!1fdJzVA^4z+Ey!p=$ZRMBu!Z5otrw&_1~b6uJ;;i{#1Q<; zfu_^dbn6w(?5ydTeV1sqg(XKi7uLZ{qY~e>8P?CmEn14!o-Qw|vLjRdy4L6-hkI1Q zRG6BR)tFp^+|oH|a%ki6Shyya1FQo1g_6?j7G0L2lI!ZRb`>o}PnS)-0yeFJ=uPQz z*Uf6T-t1G@T2^*W_&&ry^s_AyHpsJcvi>Quh;Te#Jnj;?e|GA)e{Qh^n)KlwIShV$ z03ek5I_(>5b3lwu z-AwSrZdY-Ia6zrE0e59ob*{e=nBrKhR!lf-N3eWs>t> zZFaGr`4PaV^WVq+du6KsAG&Ry?d2HfU$^~XBLH%D|6~X7&$cyRrJ+gAe+up9Km#Mr z{~8PcGWY-5I$T1g@}I8&0b`v1)V6DD_NrMWHEr{a_O1(;#8Aq;j^cy`3eNem_V;UCn>;q=rJ zN^BxsvFn)ac*SDlEh9*qRugF_;|OY7C_0&VGx`lFW+@e6^ZQ9At^s%Uimee$t z?C}KC*JPRk39SAww=o@Tp|{m_8~0Hk8PYWkX{#F zN}K#f&gK_sX)Q&jvZyJ&wKK5wjf3YmZNAg7tB?cF`;IHD*snnNew1M?m|kw!AQiGL zP{|JjD&!C#DJ>cF4oto(yH(dc!iv{TB-4Q?n<@0z-#z_d?_lp}`{eNG6v57L6nYt( zY#|y%u=3&a|GT$ya=Np<^W)yY%Gp9)kBK7?)0$5Y9$^lrzZqd-CcH%JvhaqpH#E67YUxEeI z9PJ+BkMPoOD>?}Zn*_wcyY`hc8jmy24z>Kw_`nC_`3e{4zjzmu(0>Q8Rm(y4`IQ+# z{~`WokNju-+0!Zg=NIq`ei?)Q&^M8IFh#BMj%eFtL zqYp!{>9v19IGN=9?;V`%pZt;^0gOEV$PJu6|0~a?`G4-WuX$^aasGAN9~1&O*r8Ao zIAAIQ%)8;4a+92Y4Fs282r%;eudZj#|LRku1fAM{WcKPy{2b%_`)z+vC}1iCxEEMV za{fi{lK=W2<^P9Ve?8}a86g3u=l@!0m-+fSr-_!n6HQznJW0LcqMZ2T0 z!Km~96v_V5{Qr|xkOb5F{~r6Ax9S+@KfCP@3LB_tDW!po(+1n?^EiUZbo8b(AH9Kx z=9>oHuivz@#?NB-NE=DDUo?~F(Bd(Izkd4;ZuqS?jW?aQe~v!gMV~%iw=Zefn>JZR z_q5+N1KVETd+7s(K0O?H#U$sy+HHw%{-|^BU~ts=U+X#ltLqR6PS3wvz%TfBjPvid z{Xw1kDf@pv;F#q6!`SN8I3|E2&wo$;pC{{2ruIMg+t{47$2kAJ+y0<10hEE$_+L49 zJt;QH`B%;>@9m$1|9{ex|8E&4fz$gx*`_b{ZH)7;+y0=={8amQU%;5?{2!idpX?tV zglZO3FL4a}Bul?8CR2>Mgc z`p<=2{{`Ba0d7x;Uwq(|BV>{aMbxH{t z0xfK%#PqbKby9qNoywBMh7ucGCf6Ebc z&_b70O2|;fTwP4$q|pXG1s0#aF>j13ldz^}`AXsD>FM6V?&)cvuzAz0;@>M|Tw93_ zwqNcQ3Ovdq66SFWqXi^2!=Gy0s=XIKel@r{N0PXU}ymZ~H)-G-%tO9LsTLsRcjUbf~y18y6IjN?wt91xEe%#wX zo&0!s#MKH$742=*J6qTCXz`s4G`ffz3yrw5SdI5KE<0Oj;Jn+p2a52MSrAkEwbiA1 z?QDrpmwrCpeX;cS@7C&AvnAT+J$;hj1Z)KUUtU|w>VMW&rvBge*witq zj)DKfZ6A6M{PVTIQ$0{#5SZZnk3;&&FovK1)u-z{{$I<_fD)$qpS+uRk8-)s|F9E3 z{J?{3X?9!DqrdGP9fO?M{Pj+~y4I1gQY^*@gChtR*q-qg(m~`ae_Xr1smJ5if?;Fs zPI?hyj*+Fj=<<~JTz8JbRb;8nJ$x2EK@Q>k71Y>1fB9w?SxEC2x3E&VD}({bb1cq9 zy;(5^CP(Qc+fkmvk_{*Kz%!AQ^K`)6EBV{cWNOLLLB_Z{M-3MaGFMUL(9J#i{autk z&RraCDdUu7jF{Zz>y^f3w{n>uhRO8gZyoj%xeF)RH*+j_7^)*j@kV?JM(}+M`T1DO zlhO$0=*P_<4k#a5wo-lBHp3Ig8jF( z|Mm^8{fpYUhI}j(C@BeEt6Zk44WuMMc?42M*NLbFVi!uHYUk3H3YcPy5`v)XCZtQC zGB3LI=)+aq;P)zJDY4EaYPO=br}qjZ%v^mm{ZpG+=SMFR8r4OCkcW%l*2e8XL1bQW z8%=T%+-un!2xclBO1aLP*Vj!18;!3j?`x!ct8x1rvLTH3EUq^{V2KJZHkJ-S4Zk?t z-rd`c4qs`a`D03RRG_!__wARjUhEwg3KEcjG$SOXBWF-9v*f}Sa>$olM)u9EXc=-w z2rzG2xGJMZEbOy}SnI^s zq`EhYAKTTk1`sGlOWE=pOG*29=lGDY4~&_d#mH%oESC%$MYT}@kzYTQ1~;Bm5)b^r z1?AAz8s##lpSP^8OF=ewvUgaANK*CM>{|MV&YIpLU}k$ z)>~;H(C%fca&r|yWSc${Jk>;8(T7^+Dti4EqSDs8I5`o9GaLqaU#n=#03bBa3MS|U zx+xeoBsSs!+)bp{7?4M5IAv_+x(h)i@LXz?G71h|I#kK`b=2JbRkkTW&?g3ixvKM-+6Jm@0XrnPd)KJguOt*9seNwE-&31 zV=w*BKve6Vc~aj!5XQ*;FfR}N$@9H{MHI3yeAG)_C2zG-hNetjFGRgmUGi2dXXv8r zYj?-@r_y3?*a$^sANn#^;2VF^@KCmE35ssLj1)L+~MeKc{FR4A(cK{1vjNLCl z5~L39m!l!wZ-*$P4{a(-pK8&dfMZ*FUXY2%Jk%zYVd(QpU+?b@c?E85z*|?D{9N>! z$mi{Vk_(YC^O@HRkr?=8p4yPr3boI>)O+8t!)pC*-a_FJ7!&e=Dk+6N2qiHwm<9T4 zRiNIvj?b?ujavJfXbxEAqFKlF&ielD2Q_hXQ@zdXc9fhj z;zF)GqMw}&sG(|--ee1%5l;z<)w&@?=2{gpp>LZG#R`3w!dy;`iXLmNNY#?Sy6L7| z2aWDEhIF2coAWk|V+ujl%C@6rl4L7H;F(HTEkiN$ksuym(yE<^s3hNs+JVSzLFW1o zvC!MD8)l`|s@(boib~(zAq-RDXVQ(8^YgfEv|~l}piuJ8N6oW;#OEN1LHUs?c6(tu z=A@)tWunv58n`g1$0I39A`>@`QKSMC1f+I~c;y}W0V-00Nxj*;(YvwP?L?Jo6_1;Z z3VLrg04;6&XwMg7p}#RGknWA>8ul#5-?s4!Q)$UO**A>B{M+V zMxrX@AbdW^4qUt+dGV{#e(%NJOB`+xAzss-=+&e6*JyV8=xF;FMyj#`-fAj2R+-w7+CAcf^9U?B3m2HzN0ZyscwvMhM(xE1ch89?RwrgIx{4%#+21`Gzp zWg_Wi1`Y{hlMP;HiBbl0hf+G&7G|uN(yxx0Aov%=nphMq^{K$+-8`$Dzw_kaarey5 zg*{pwO`4a>j$|r4Psk~bfyYcZr!gA~h^~H3wuKa&sAXQlLa<_!Z)gP2kOP6oj`hwp zVMl=#j$A9SXV8d=!pq}O9XrI1yQFFC7td=^0<;xTVh;%5Ru37OGam69Tu_25d4jDZ z(F^!X*PO7#ERPnBVz8qPURK?BN!n#2ZXk9`1m#wuB_M4S>BXzAl0%XLr3qqnty8zCdU9muwy@}JQ0>5&YTTjVc^0!gN^_xP78o)t ziO&A9uoZ?tBh>2!pKp&yj1@?dp*taN-3@@|h5O0X49R<3XZTldP8C*Ex}D}VFf3<# z>rg8&0(xqStFpEk{ zuCJBlWvPr|fq(*kC}uc2#bdRL6^vP(fba)4V8zD@t6~ zGe8{=H&QNZoZ%aoeF5Q&4Sw7R1wq*oIW=Q|p;U7FI1Cg|uCB`0*X4G5v7w(3HZNM0 zbJ8wc?sg2^Qf*_g^)sh-QLT|YWxD*QjnoCe74V4&FT4y!T+O1m% zsvv_TL1d(MpZ)~$&`bPL0iSq838@aiT-RlubQ(za53KQK%+#;`<$HAZ=n5{*+{vapXcB6kt*n`Ci}&iV)s z$E%%5T{PCPGx=t58&%F=XdZt6SqtI`y!bhU4>ec}I7SgNB3@QNx|Y+ zf#QQiXhIo{1)yG9IK~=eg{xy!6}|H~E2bjRF?vv11T2zhp+mBoL?BdYl^Yy)kQ$EZ z5jj5Aj6_%>g3Bzs)hkCE^U>CP^v7|gK*F<7;J@K$MiTi_VK8MifSiil^N_rfrY0c$ zg)ntgSD{g9G##zwh$XU;j#K!G1QV4`l!4@7D})69I&8&QCr<^_V?ef3T8M&Sf_lJ} z!Dp;J;wdK>gQE^{!tJ9H;0mybKuh0C}B z>jRSE*In2$G=U3CWTAi*=O7<*O+W|?BL{+{3E4=;q80M3b&+X^I|c|`@>GyMputvL zX+um}4rm9UV+c?1ZwxL319{hg(mmZ&K{!k&jo<+Ay$dlZJUD>C>viE0D6$uvu3s)I zwFc#58L8OwpME$Ncasx+9T1@-Nfk1o?O+MZ^UO z!25AAs6jq}OW8?!rYJH;*Q^*rVGFMq%+(YYWQI)xdw~n90~X?d0vUdli!Ic^-oig6 zyG+i(1wt{&%^F;O5J7xLInB-3R{x1n`f&UI<&|gI z_)qW%U7p5&Nfz)6esgv=Jt#>wU5(*L#hjZp-G@qxg0;53NsxRGhQeKddfjuN`v^8j zv!L5!q;a7^Pe0omY6mF8?dK`5wnk5ZnT?O_@+Cph%#p5dUp65FmVv??X(nQUcKmBM zhD{28%LAu#fzD~ONSz7}c;m7Ndn6QCoH$lTgI=hA>^|ws@58VtGajnt5zCVAK@Cb+pyQ<-B!O|4VL_L!>aa9rrT%00vx^~<`k@w0$Sg7 z;#?`U2if2&hgI!ezg}UGngeg-!T;M1Zhx5UA{d4L;Q^M3|F`_~=`{XNj@`R|k%9O> zz3C6*B3S*4UIZSI3P2K(*Q&6Og}4%5iFokCESm5DNC>}Gbb+6D&`3wV1=ICYL~i!Z ztgliTxg9>qMX^Imokpij3l)bxzMYRsCErl=d(x;3Ywk}_H#BbjI(|DhM~v?)NFk7{ zFuJWm!O?tQgSw9TI9`Q#D)Z>`JQ+Z5tuYXC4_ZZ+W|!bB2cRqgw{{JKAJwYUrbBx0 zbMQDRjnMr2zF5@1l@-t?LY$U<-_t}symtSS@t@H`9{j(Pn8r-R1q{dkD=Q54mX80r zyz+Ey>i_#SAaEf54>o-y@~^aRM)3ps{usiQN~>J{3AR)btnc9-N^3k2gaKb5(I=cg zFp=TXP`-d9Qax^5cCG?!1Y#;gDf(WhBq6grf%f_>sZpaSUu0Ven}Fq=zPDETHBtFE zyb1Sya1%E`esQajnn^ecd+%q`XB4p*@B{>IW-WsE(oCNwL^yLy%|tSga1_aV9Y~)h zI-s%ZyR}Q$NBTCxCW7~aM&Yaq!dAj2((ebgf_>YgNkAKR1xjM4K_h(6Hu}s3MfPb< zGo%UseozyYkHbe1ydT_z@1^fVDj)s(K27Mw?THuNlyEr{x}xXG<@xZpvTbLos$&q) zuU|i9^jP&@if!V6DWLFBn>jvw$K~ax&s-@lC7tA|hs)&NrFJJ-rpg%vCeRi3tLokj zsCr%d7*}0A4lLj<<(-W?1?adNjn(d>!MzH-)wyo{VDkY%KgnBHTIWq!MF-o`lj2y zIyJa5%T{chgyTYu_Eqfy@+!`cPhGjx3!2En-q^9$cc8*C32Wk$*d;>|Fsnhl%yt&- zxyBZ@s5Ss*P%%VlxhKY0DJjbF`=YpSbm4m%bK;QF%E-oCQELq5y7<6tEXS;zge>>e zMvum=!k3#G_gey|CAcKJV~DKgR@~tG)v^H!WmbT83m+a=U+>p0oP7{F4&J)XSRX}PtEusC!b4&)Q>#S-4Ehg_R2FBGAuuS#}h_EOQ5Swp`)?K;i z!%Gsf*;EOt_t|1J>sw)Ka((D&P0ERnGG6LXU1zgf4v!e56yG$8=`Bi*2byq$^?&tD z&~WMu1>eayWQYB=%uBfFuB+l4JtWfaa6#j7ztiGz0hXosrc+E7i%ZEJaYTW579~@* z$0g)U58LIaAs>?vk}wz+4=IhKi4&VzLPb*mkk`&(sZTi3!0ibHjb9Rcal=z@GRyCt z@qS8GVC7&wS|gdRYnv-;+%}K}G+^~ui)Lr(DzHuSI>aqUXb?Q(Z?FVDdOKqqZh>tI zJdr`K3tQHBcp6>T=`+EnbchddqASS1qx!)y>oex?e7e?pyLC1F9I&U>m_2&ivlna) zi%r`L3Z66N6L+`FzO$M;S}wk9-?rx=rM-a%oNJhbs9l{Ubw9&VKh~P5Vr=7t)fl`0Co4Nn>yeQFwS`1W z!Zz)A-PrfzyQF;!`+ciwoTjD@VC+t(;mH%j9OoKi)TnbUE!m~j(H(4tW*{iTeN8dW z@T^p0wb)BqQ};kkWz|+(K6M z9#9kN1yxd3D5%n=*v6=3BI5$p zbXwd}nsUoVHD#GKEt2P9cjK1Hs3!H2wXk8+b%yaagt8%FZmK_> z2LD@tqbp+n$@u>sl07H-KUf4-R&MlvpW^`-iT`cWua5l_on8`Wi#k0>ekSINAY}$Z zwm|Mf!ix-w&{q7z(P*A9r3`4sC`eZriy=fvL=lkCt&S#iHGMavF5SmKT$-HIwVJB@jDVx%&TBRWmYEQ0PS6k#Sn=!OGOo= z&u2{D00|X$oZ!P_Be6F0h{T+%-x?>SkVE1m6wvGJ{z-6$!q;w2&@ zPf!7m@HsAhG{!XeUk(4SjQ%Il|95T=51!^uBdH6menl2`reEASX82WHRlTkL$R_=O;D7?_eF%4;>IS@O= z^N{k;Lt!6zqBh@0OxUt44-Zh9ez`daKLt7cMD4XX$#`bINmOTu#Nl@5}9Fx=gDR`jHWH zGsAYY8u%X{Jp7YWT0nOMlYU_-C59VGDAdA()`2S)TokgfnGux6vAy6&BQBUd#M{A^ zvlP$$mO1zQvezKuW2E-PUr=Bogw^1jEbzhtR-et!v&Z2*x!jE6ZMfWwL_$wKKR2U@ z(a(eU0nK$81PT+kEyI}V=ZQ~%b(P-w_~xDV0eIAg+770&yl)n_1Yn~^k)d`_4A-~a zXPe0H^n?}`KW+SsKD!d@2Hu44g_!B!Z&6aiC~g^IP>Xq`fUsisFnvTNqUn<}OOb;#dwPR~j12%K2Xwh0b9U7${vM;qg0OV1B!%TODNVpN>@eL-st0{@;8DlhfsoTRQE(*Y4gWA5dAl zyAuD)BL3v$KX=#GkpK7Y#|=AOYve7g_pR3Fw&7|_tEq~V~)9pXe>2n5%>s^Hl z{(trEjsNdwIXD0J|NH-oSU|bJ2@ES8Bw{^6It5tu3eSWfGWgxoTBNOmVU0kpz~l!?DL9&n!4WFCQaN9bJR`D`3YhiTu>++MG@E`0^h;T z(eHuyu;}WYX>!<^@FK7Sin)Ya47(8RC9onYK~x~QSZZ+2DEk&Vxot${r7(p2We%IV z+Z2Wtdj*^Q;<~J&M#KwXwJ>`-7HWK0Z&M8=;lthT0pa;JYF(x8n1xb?%;AvIA|Ax_ zfs=EE!QGy@ht6g^_Rf^wONZ<ZMW+(g(tvIxbv< zp+USAeiK1(D*MPy-4O{uX52{s{0mWFQ+3k{2f$8@M;>qcjrO!>GrFrdA~|&NyEvc> z7(M1_%8vXo&t|kY*Kt6R*#X|GjP>{mVlO^rBuq*2GC1KI#Amts*^H+;`GD5sd5}~g z0eL!^l_3^K=gR)#k)a=l<*)!vP?yhkd)_NP!Sh8_sE1aOXajeWz5|NV-b+0D=;Z>* z17b-dl8XS87RMsad);iF5kkyUA+7u|iy}2XQ2SMnujddOM##6J0+H^*#QIlnRt~{A z+|R@?+ab(@-6y+Q|8)!Tf;5J>i(nRT`k;Q?*Olukg=+gjY*TyvvXl_R?SuYrv3Ig6*A=6nm>)Z#jlhk&aJ zQ*;CPXT&eE9ABC{uGxY812w$NS=d&+3Tpj5ok=T4pCb%|D z&~(|1*~sD9l`!ILEtw{=4>NigTy_3?*z49`XLApQPM&+1pDC*lec^1&L!R%^rBB12 zku%`4WXEh6IP6QPB365!&ClXmGKkTF$5YmzPG<$JB5#j1SA#>Ea`b5=)*?=T@ zfWzl5-Ys>#?ZcM4XsH5pTR;(jISOyPXpaI-Igx{Lv(r=y#k`CSJA(1e0*&rEbN^z} z!eC1p2T?iX_@tthvazuekp1iSAsLfV3CnWah!>J`>_+5?2z<4&-u|-UkQFu>#csP! z-M{Vt1*Zl*exp~>Lk3PpVt2C_9En6bXM!Xp>x%0<{#W=YGCG3)NL$(#4BwK#ez^{E zR{8ET|IOiZ-WzPqG@T-AA^2_tK=vysa~W{qdfOS^e>dI20n!;eU)F#TB7E|EV-Er2 z3lWMNqVP_6MD36>b|{9!C8nSXy}~IZXDvc$cK#fr7Y{tmNt+eTm&>-oWQNJy+1)Hy z0Ygz5GZk-B0HCnXc++wFguDO|T+jopsv$+9+~kliHjkRVk@18%5@V`LpOVIbe|Z*v z!+8w!Qztst#camMxhh_f9(^*E4bVPpr5U!>8yX-IsB7l_oy|mO$au4Tq$HD!2dA28 zsfhtKi&C$-NT*B8>of!QLrxsm-2EHQigQMCfQers1KUt*_VS(j_zc0gu(CGb^&P4| z;cYVv~QPy5iME_eEQ|MWTkVPogX_U7Ichu`?{dM8?gUIWQW%1K8* zwhN2vo^*9Dv%P_nChQcNQJ=UILI+ylb;j4CTPKsRfqr7v0mcVL)*~m7D>!bv(7rs7 z#GoWxqnO5`6Q}n+j%UJd@N7{}9Cb%==E-1iR$X3JhP1x~lB3_PpDlHJ$IIkBmt*V5 z(BpU6JoPeJWvNnJ0ah3xZZE7ShYkRPd1mkt<)j?9eLqly>n?~e_;$^+jH?OXteK&X zI4Pk-{F|En`F~H}XD>Iha`ijt=<(bO(+OLVM)weRwqt)UWH0}jeRzj_bwit*jG_c+ zK-V8`h2=a(jD1g?<4p`9_u>7i>V1=ZfL(|iZo+opGE}{z=98ImTlGR?V`Ig}fmeQ9 zid>Jli0l#sJC7ZG-jlhdWP5Z8jXKZ4oLlG?Q%J%mzP5G}9Tvsv&$?&gSE%Gk*euq( z#M}CKcjtibd(mh@+j~kb!i-~HSMr81C26<*2?HIUbRhv0XBZzG_%*)I{+7M$|0OFg z{RM{31 z4`LQVuanpC$0X~K?Qi@K%#kkIh+++XH-1xM>4LI9jy-{}G`StP6%VDin&@60IIq=O z_P_)Fz5k6M*#R;YzN(gzB|l1_4DxB(A5C87YP`p6<$kuA1}${q%M>ghve!+ddQ!3v zQ?(sYw@u;jK#OqgOUNGug9iw>5!alggHjDjc!%|v6RsZx9G2udQ*QCW)7{?|B z3M&I@q==3c%STOjF%I1OA-+J&9nC?8s+K%$C@Z)v7|IrLBKIt5APK(9%HfZyAE+4G zGrIb@+Dr=10CnBx#dQJ()?H9FsNFs=MJk9ogD8vTY7MY zMBOgH`_9I*%`}d_sgZ-F0>J)Ua@xrw$%yWzdNQfkpw~pY0oURF&pW%%_qPzbUoea= zI)~7QhEQ1oZR(a9*I+!TJ0g?uZ$zd`x|k-~qpp)Oje3<>ulu2G-vg9atZ+^G65PN7Q{kb?Jyy*_6kzSDX($A;U;LIEnHbKGn^K}3>j(x#$qvcIe_lVSN;>lTW$r_EPVYXLnZ z9qcvVNGiLk44x}|bWzO>{R7lJFZQ;pnIjTG87`74T*aRqm3&*~DO;8!Ex!hsV8x%s^yFrc-vI=OSH|Uk&;#;J z6&?G)ne|hDQl_2$c>AxF+qYNp_Ft>3Fc-^KrXAp8>ivh?|IPk+`Mlp-h6Zby35H8! zjKK;H!6d6N&^wk{7C~R-C~1rEn%U=S)q2;%rM1RbizT)Bj^@n9=2w?iR%)wv$n}zl zJtM}i(bRK%^fE6Al?J8(qpA4fdZc74laR|TZ0C_u1474&X%E6st!EXL+kcQ*P|W{r z=_}E_(I`KfRWeT|doWTP>?;QkDmiB$z&a$sV7yL3!_3#UM_49JY|lE5>?#z^jEJ*V01@x;M z$SQ>(Y!E#Q9W{|^OHPcoQ;JwLO^g!QZDWqyv-xKi)#{#ofM`WzRV3sNPw;})>}Yt^ zsEL{ZDe5PB-9sQt`p29>Iw=Gh%xIu&MdVDOKw-kuyAWMy7qyTT>h|hu_`9KJik{}M z%*Ayo#1OU+`)j{JxJlJxI)&sY$Q~lz4}!DZUcGbgYoR`q8N2F!=atmGEOjc^c;}I1 zaY5jEA*F=O$IifBGBvXEbdCClS3cA3r8V8!@Wm_slN(QheT4>O7E_vd8)90kIx}BEvdWt ze0P8AV0Z85Y-{J~?%uNv2&e~d@`pglSN)s1cTG)9@bLPletbjPaL*jV# zcJ=ORLL6svpMyXhF+mW|r3b&KY+4^fi2Q5XUW)#E?)aw5&2>Eex4N>1WG_klkJUOD7vOyd5qitXa7mH zN-;W^)@n70NHVcnwF+;}ebHR72kU(dN$DIAoH0s1x0$2~nA?5yUz?8)YL7P_|FBs@ zzH5*q`HIzQzLHQVARxZj-rabz`J}eXX7Z7*I<@CYil9n)PUsP+_F)o{m=BQvp*{^w zwKgSz!^DfU^AWBT^);UtmFfu*>e2kTQ#ewjL>NrB%Y*BilzvR z0|puhKSo8jyY)s*K2yS{3L@8QZsJZI=tR?8s3&T3bv>*cI3g=cYA_zwVnY~D(dT-h zZCliE z`34<$jdSbue2C1tR@?vU*7I7;0=lqUSIZ0&GCC(~i zsY_&9Zu_(-HN2F`kFdOyMdkm;sK%%8OMyO)f%%c6FzX_k23Qi zCEM@SsJ8vH*$(=v0)}Rm`Rv910ks?P7C3Rd`Yu)Cn@aB=;Y#mcX$!I*KrUum0XV8~_nwehYfA*g14UC)nZ0;56Td0}5;UIf?b@gKWi{siv)P zsHKLpoAK=$%`+Kq#XyfKd|_!6;P}RCfNN=IMsapf|3UpD{kWl4idEdMSfaB&;*Ey# zR%~cRrXZo5Rk{FK!u%%q_jdP;89ZIX_+Q^ixSB*ze5A9cHLW5lH9|Y7Jfqh<>>hWZ zkZnLH!_bY9$|~-dzY}?AE8jb`Uyyq&0Bwvlo}d(b*^R$EV(xPS?7#e_cx8&8)3WF( z<@_q+0X)8cEKV0AnDJ4!aZzYi!*Te->h95YID@(*!R$CrR3$>@fa_;BnuUd1rv3T1 z`n_u)Hs5L2>FQlW_irAR=yb-nQ3FP~Pva*S?%mjWih&$r8a;NnC2scoxA<$}&ih$J z8djy`*pUXYm^p5DU)9_F8MW$Uo^ol1ON^~nr!D_dMR6c7%?Q)_=Z-UiGq7@ z6PPKSBPplo98V}8Vzrk^jUs2WpU=-ApVWyoTD`$VTER}(m+wc-XZR}N zfH;ITVhy>Y;*Ff;?)v~O4%B!uoq;jby8vm<4mMnZIlis=m)Blg3lrlg(fm%DG}ycl zU?d2N!<(8X+h&(GdXMuw8TN=8f1%_d(3MrCd&Z^VwUkHnvDnIyR--uDCcw9}*yv8f zPL}7F5q6T6r3$kJJhU@HUCEQ{uz8-D$N^rTBB_*;=`lOywn2c4RWs`4(D1_u*dFls zMrTl{i@05pH^t|dZWowXwT+4Fv9ex)dNRkX)=|dTC~}pFoNO70}~KsbC>5B|YrhI-=t9%2M`$ z3K8K9TaIQYH^MQ%O>BbramOcekKyF17zVCPyb!$Gv}?47B5j}ir58<};;^FJnE+D5 z1JOA@TY`|g#V14v4B(KHX8VlV4jR_LW{h!@WNfH3+Sv)hCqVy^GaS#q(#dT6NXggu z6|$s0N%?H{7z4s3jUaTc2)c>nL3!i(Z`~4U?GB`-;ZPRU4KRRg#=F*bItEwwYv3$RFUh`{pU3l1)mh52Fycu+X-z_39jA4ITk(FUV-PBH&!*(z_T=SzKp}^7|BeLZ3gZ zW$W20Wu0zv{I{45$fLN}I@#ezxdV>yi_D%A>*ZuDw>$b8B5Oy z{0kYcMP3TNu0=bSdw|KKX=vp1jpF7=;I+78{_b8D@V-Mu$_5s`A_^IC4Cuzm zRcbZQ|ZJ_|E4bOM(vU-ndwN}$yMMLo95(HnnIjh()Oo=m%W;o2^u?P2)yGpYe zJiW0|p|@oGq+4~DNy>qph?LKm1P*~T`M^5_&AWvs-QSyByHm(GTX0u#r_GsO$386R zK@>sqION(pz8tq?2L59;oJX3LQ}i^GUWehDz-Re7;by{&-&lSg2oqKgy%Mg#oGFAl zix7B%wT+B9X*GNG-r>nb?!gf$0+umC`pB*z@>7nN6pn`1jCkI(zx>TtR?kkYAxLB0 zy&Rm3j|rmmKD&C(swv2waegjsWu&UeYqBpg(R=E{Q)FFo1>+$v(vU&0{~u!>zDEjM zkY7`L6?l{zDr<#>kp!gBwOrNoW;NS)jL&(8A|rIq+{LuMff3W7MMEYbk?;_ncREeM z!S&SM8dgsA4tRi`wC*JHqmj=6Lf&E&afwjhhjNQawk41T0}pEma47=E^>=zuG#gX_ z0AbS?Q9Me(8H=fmEgWW2KpRO7JkE>_+s)=3DFarS+yd;eT>{VS{D5b#a)&Ru8RzhA$V;qx@c z{grzYY_DMK_rqr}?l;>h#g#PcO6>c2xF*|w(>CHNkw4WUWxV~*%H4Z;`|rxyDn8xV z|6IkO=aOy4*n4x+Cz<&m2AWnGHi!mO;N1Ly*2Mf5s5H;dn;EH4VtB~KH(MVx`2-}{ zKRE0m-pNE&S(P zPwu_s>%piohYI_Gd?SL#KL7}veRLN0-QqK=7Ktj|! zN{7s#ok8?uWg-RuD^7(L2}Tw$x3;j{Y4vZ(v9n$Z^rTzA6(f2No z(T9in&S8SWNCgy_*9qAv@+ zaHA64K(xa$^}r?G@M9Sr3W52Fqx?=?ksn)IT={0P0tfA{tCeryh5~*J$PmufQ1amO zK0=PsQ)P^^^=jqoOY&oVhU9U6)Ys^3UBHlCl4!ri>eKOmHs#eH5IX7deBcEB@7^kM zf~5W*EB9{l|6SuIkLl|2{vUD(Ch>)2;Vzfx!8~@?977k;A_a7@BIVJP_w=!ANqYF7 z36|5If(}{@rALHk^7h9J!^AH6RYD<+H5?Y3TUPUJOb0+hn8CsrOw7-azreCfgoKssAS}N*Bz{F0&mU2hD(c-lm_>Hhw ziGVY^b(B$3V3T*IXO#CsbPC-D;7qO-B4EY_L>_`PUMP79*T}(4xGEuQ^VV%hzEBn( z8HzmJ{iv=a`I_I@+uQhgJ~02BD-z@>`4mlDb0pA&Yq%$7DRXBkZsMv&`x}j~R`hxj zU8{5f7GrbFdUG*chiC1k5RHr3{8F?Et|9w1oe$^by7-7yI6B`gGwwE>+2z5QPB;Z% z%*JxeBI}J|Gu>GC=`3qS)hcJq#m#%!{|ce;hNF#*8#A#8Nq|vv7Xqk2OP{>XIKP=g$4g$NoNP~#z6chkXY*nja-7Om zxCW5}WA_7#cZmR934#5G*Vb0D;y?+PR7l1OOK)p&qp*~S5mZ+bKZ;lc{|aFSt8mXe zEoDE$3-T29Lk$oZYDl5?*o(pk07k*8r~cUJWg``qe{cr*CL-Aw9`0j`{1IN1 zh)K6sa{=O>BD5_c>3viNQ1btm%l~=rc4h4*|L4c->$GjB-T!?^J0*hd6*7QMkpHZ$ z48{LgSzEh%qyL|F4?m_}k^bNAe6<=jeVn`}QO!SyBduRCErh;nYLY8Dh+gv;k1RanlpVz&A!r6jM#*0e zRlTh&kr9Q-fRS)@RZncyy|#>+XvqET(8ps@o{jz)$pWE-^X3Kdcd{ImAlG31(1(Kv zM*8hHgdX7fl?Q+kW*tG{XeSG=ZlSfs4UD3bFt}SWRK(=N2sNLfe*AdBYYglZnKM%z zm*)~tL~ALSGrdA&YO@HN4^MFrHs=TqEzA%soTL0bm+3T24NHoB-(-wv^_QCJ40Z-e zLYbV?PF-eJUb_ob;uO41!BqioV_#*nFo_;qN~r{o)}(A$A$K#YI;Hq(Jcd(hX8;3q z2=@GmObt~FCZc|ap@mD?mz+r0yv)TPAmr2SX40T|#&QiY1&1)6UHsHKeBEs9`x)Ux zL*Ff@)7|NUS)mr=mlzYnuC_(<+pgY4_9XtPP0X#`?!M(glf7!fW1*B| z0%;km_|!qnPznnqFgfhz;Q--E;ar?EGu6B|`=-xZ^)+$hisu_`j^Mpp46m3!I`hOZ z-;3KkWKV8%3T$<@Dt!VR8CJv}7AbQY*Hy6{3Z&l}la6!vGeCt(QTL+5g;Vz# zJS^dK=g!Mdds_!vJKtwN@4nc}c7NK*0y4=Yt(k|!o}EE%Kpj4AVH5@}Oec*EB(vxi znlYPC0>6UO$P*E|F$5yrAl5*aaaic&js5hViZ~SPEz(fedWw4TmrqI z9D(q|DxBLSw_w0ik{nR&9QNR};0cZF-4=xfSmVQbuYnoTu~mlW^h)k=#KnM!j4`(5 z3`$4Q0pZ8<y{FrT;hli`pP;SKFPWQOra z9XHJOS#xmGZ3xozZa~RIWoLLPIZ+19(Heh{MEZKO&K5HU*oTa+eG_(wt_JWauQS)SHHCA58t$qxv{kv?-2W_1HhdT)0H#@`}-7AQH{xnJcGaUaP_CJvS z-Nb+W^hd_M-Z7!*sS&^FR~P?$zqzxyw}A-NLHa}C&XDxS4~2lQ@EmS4%gQGc1Nli! zB?W?8haUaugg_=KN#r^bHp>ZiLVu2SQ<4!3j0{9Ukv-XY;g0w{ewZn#V>s=Ld}kWz zf>8D%o_Lu#36FLJRzFy#Amr;54Pd>!Lgxm(l9Z#<40E57j~KrH3)faemY z6W#cRSYRr-@V(poM++`|AHQ?Cg`a11RzAJhA`eHCTR7zVoBL&0e&Ofq<=IYr5lW_z zUgRe*jqoDhhO&$BZ936Kn4~|G*DblQDK-5CFyR-Zqs`tCA`EyjfS-&CHNE&m?Fn%; zC7sc*kQzAwTF2)qjwqRMMICXp?y1N=h$>Ye2q_RmR*>5<``s$d#E3c4unQC#vY6r) z4Fu7vzm=SSDs0(unT%<033(Ol91%55WMIq!9c5l*-(HA=gpEx^xN9+yAe1)fTP1pB zv4m?ZB*MHWp{mgZxxPqzSsd7?FAWSU8V0&J?L#Ao^n*gE*(RqmGE2s3J937Pg?(`p z#D^c-m(@{}1zA~HdV-)y6DRdWIv7FBAC$4Z`dY5vbdffwZYRAd7hUi;H=TY5F&dkY zJ6>KWl~3IBFOo-L>gvVzsl`#1wMiietoPZ^mT-x_-|o zCx*C@M_sc>U|RXlfm1A8-u-KW{HJpF&RS*2|Lg9J{O6i?y12Ws@*ltHmzDqArhSXI z-J!apL|dRB@2Gi26-;O-w4h3BHk16(8YvZFr~3HvSOS_t?{kU-6?kmw(4DstGM51W zEl#zBhEf)QsuCR3ZmU7Nb}>JKe6zN_b+B1G*xT6If4;kSVCi>6l5sRZQbA<=Q#Q@7 zw_1IA@EjIM6m&4}ZgHI-4w6dZAwJv_YwcTKr^s*zEl%Nx&o;KU4|c8Myab(##bnXk zws#+IY+J>@*I&H?0a@7Ne{DQ^w7KVo{zq}8Xa9`~guaIsiJ)R=`#gZ-MWyev!W+@xTvk z!qkuic`4!(3OS)x8*MA*tH)A8Sr_K$CaVePok^MwX&p<>nwJ|{88P&$zy4(*ds)qv z{(=-XbCnP8OsGbem?@?hM`a!5gU8i6QVRKlW~S&?67k5K*_c0|?In=JjEk%>MK3|n zr+o~CJ{R+^08Kp_Q*=y;%aLY7mHuD?J046lqe8TAX5nFM;d4ux$I(w*tU3q~P&MLbCGMh%!K(Pjf^>lAr74-IIP195Ud(e^`WG{SWb zx`*Ai7e-6G(qa4?->0Q)-oXTqM$(->1<`klT;l6-^f_MS8z;tqQO@7puE4kUg#RZXBlMjPLT;je0Y z8+sU_tMS)Zbv3>|!UUc7+DOpRJsW7$DlxA0<@zcW=wp0`U0PzL4?Oa=Flg=yPm~Btq?!ro$d2(YcXh(~tE| zzSbr5PPxsXRF;CbRUYnljGnD@1Oj~V@3IV<#sGqeFBHmZf{QeC5wA-J=VISsVEWj!`8Y^*;S<#6j=WT^@P#i!2_#W zCGjnrkuJn(A>~060zJ?t>+<+Eny_we_ivT9?-xE#DoOcmOquq>G<5IkRB3T9aK^B` zZ@{goGThG{8Qnaz6>{S(ot-jn*ndPUor7Ae(}4HeVH1gmN~I?)aFuv9gvlkam>`&O zca(@!eVK)&bRH`%UM086o+C!POc5uz=K-vmS>W0UuYvrset1}jBYs~Q^gZ(R$hoxc zPBkEYVUJdJ`A&64g?*ZqbNUG)uqpx^GlxmkU+)~0g=8SBgHnl>Nk-nPADx4uJc8>7 zuFDaF46qCyeuSkyyLx%u(kM6x;Olu=fyL=#COanfGCg%|z;@y~)99X}1QT#{ zaf<0{q~{D5lca(oU>co26aPTD${=d9Y({6|FC2NGrR@9=!DWTCV4hubPLZpal@Xjt zbgl3caF_(M(6hTRU7t*W=i~}A7yz0h_;MJv@(BhAmle+zpr(;<1ni<{2An<6;2VT3 z(Zs#fDD(1)qXQ71U`WC{s=zG>{R6~TM5jZz(`8Qx8>TOGF**%XKrP%iORNwHxNv+T zUn^0o2h^i`OLSc-=$`^6Tw)w5^G@<8%c1ADh_{J+)`CHGDm>c)JHU0?kw?f5{E1D*y68X z+S`9OHwdGCKZ6&<>Yb^)AUu8$CkQlBCx}(X{an3WUA3=J93AnNUFIL%J>sR-@2HXzar#d@VtMR5!tpbJ!J|6=D0-0%}K*U3SItPGwLJ;{* zjsy|A^TrCk&lC$H8Qw8q<~6{b^De1*oBY_dKZE0dh;{KlQ!02@fgC_`mi=ij79aq< zOpFI{xo*Ssip1HVN?kCHxl8t25EJ5ZJ*a#;1}>QTOUkI@lRa8Yoz%Ljq&hh+BZSrQ zKq{|}TTSa;!1E;Z85lve1EiIKx;^_(X-tWD7;Rf1`Hp8dPWYXxS1bTeMx^wOS7wR` z6LIIUfal|V6XKpH%A!lj{3CI6#1kk7F;N_y^kj53n#RaKncBw)rNPk{x0OR!q`Xa9 zHzL-=BgD~b9@QbVx&=4%QL~fhArX?qbC=Tf5~%gu@VfaGA6^9OHwu1A0d+h|bS(1G zE#hjI5K=cHLQCQ2CaC@qad{9KBzzYE99Oe#@N#D-qIMk@$be(?=)}PBg0xGpxl@L* zh}*hhSF^n_Au~po*>Z#{i_bKzgrQ z5JbRk3AYtmIEsd%*6@E2A+;&y>kt3}NkTl-XdNP~gDC6}v?a9Qrz6Ok0r=KY3Bu7# zWFsPB?;Jt{4`&XPHIPrqw0#gEOGaf#GShB&qB%($*>ZP|%I_#WMYO?OgH6=ho8u!o7c(|291{kM_vVlY|5~FrsgRj(KmY2 zpSZDnE(^QmWPFGX2cKLgo6Zg9K9^gXg;(hmdJ*yfgc)z@`jy@~j zeoAQk=k-0+{eOh;Ust{S0O_Rre=jfpuiRT(xpQ;>KgVetegC=XpZM|vLD2mx`H8Ur z%GcvUj|-3lg~)&|OGFp2JUNVeiu>^8)>Ba*a1BDPhR*T+;G*sNiTg;((N9qyaH$wD z9&|F_2%|}Pw3>V$|02vb)%`z!dw9F`>Z)|$<>^0!gukKxKF9U{)1~(RDLLLs<+4w~ z1pI$@b#*PJ|5jJ--KpH*|Icv%M&p0G^d#G4*C)LNqbWUg=B2;OU4#JFB zJNM(}-u~9^&VzrvmkcDUcj1>Mq@$9d>Ntv+aqu)%Gz3eWE^Qv)@o$~g=&GA-ID2*m z)}

y#tl=I7s`qMiXj9v+xeIBA1~^h%bRXAu!Fp@4vfeOFpOor>LryB$Y)24!MdtVyGv7C;jPcc&J`};g_zxAQ>M=95F%j(=Iw)kIvzw z-Re}U|Gfj+!rZ3|CO=IVy0Uy9eqGaa0io@Sy{)K=u;wY7^PX7y4{}nOlaLMrkg<09 z*?UMh2j{&`<{chrm09mEp_mfQCHOmt&D3(UqrN}O^Gw>FJ4=ZAJ&>rv<@u+?7}R;C zr%h|Xa**sFJ^l-dVM@At2&aYqsPg)|vE>lfmghy?hAgShpI26Awz3^0N`){M3Nw*7 zzZ*cB>!rsq+k|@)!)Tw2cPjx^@7LG@zHyIscel5m{_FwvEnPZev?mdQBufrwKSlZo z#akY)3EV0b%!maUB)Ui?K>@#LCcK^!%DKmTTh9-GHA|&uKsGSUujiUTJRc*)5d%48 zGVT6H!3SD{26fbGd_g4zwE*DQ^=vbLfpGAm5P;_E6tL}!$t%NlH;~8#PRfYR21zw# z;S~1MRhTCWrb6)~)dpB?EdW25mx%i_YeW1*IKaD??H1Q*?_Hi#^#QCq7-51f=-^4i zTdVI~IK>BXlUAW(DbBeFgiZgDF^Z%Pp{5WKn&M7!pGWA3d5xsDs0Wq-sOWF;!-0ln z8DH^_SgtC_5h$O^fzT3a7pSlX7l5KE+I-K3E~CEn%XGb4>oNT+Hj28J57YIoZHqfM zJf$7$A4Q#7H4hj2JKtv|o5sNQKTVl&XLW5V+gd>*Lb+#bBJrFmtBWhE+3IR_bp^(? zpVhLKmv7n7-f}cIXI%S7v9A3b6#U1H!JU|>|JemvMay?|5)X|QofZ9>HV zh&q8pgO&_6B$;-3u>E0LOm+W%fL~3sCwTg@vL6C!(*3XCvR78t?p5yHUb%x@kSnVz zl{Lu!ZsPxc`eQcw{zscW2?G?}aBU9a`Cla1{`8>xLyT~V`+t?IFEE;P|JPPm()(Xo ztK8&&{XEBO(*3{6)wjoe8ukAlNdsucd89r3PfWO2xz_=D4WL>!kbp@4wLqO{N zriJ*J*Rd9wg`=mic;KBN=YPbs2*` z4DLt#zSliJ%dT&keq8Cec<|TA0zLXb@Bek{Iif-GXI3IDd2c^_9xgvx@dhW4#uxxT{-_ry zI?ZQit zi2?^Ph0F^Zt|3M!UgY6PcRY`O9i!_Y#S`c=SSpj#d|CjwVTvc=0X6nxgk%ovqHNSg-GO#JKf$zQ#4eIqG%fxZBOn z@!;fI2h}b|jM(a2`-rZ~;t>a+xZ6)!$1OxnzqTWM5IQX$^{5B)Njw|ZJ@C_{-{G0w_fd;q}TP3VH)d94kZi@~ngwC5|-dHQ&xYYr}$OA(cSBWhfakf2FFP=6kh9tCw%)zM~O6 zn`(#(dq4W-0&^^hW8rLei0rHoPpgcC0q_yPtlhpqd@2NSL!@@3&ggYd?Kr5fPig4|ex{c3JF3rCLKgv}XPAM0|%#3{$4VqWIkyXyB40xgx@P7c%by1QO#byyVuF zqzwL?p_h$)o8bdbLgWLVc@iy2?uGY`NI}{H&@Q*cS_fnS9DDjMqo!(T4;qWp@v!`=YDnjoo0-5>h$Y}P|4xowE|SgY%maXu+-aGl{7?Mi*xI!Fb? zj!1jijOLiVL5LW0p|Tn2f}_&^?Z3}nZj`Iv&HpyDfb63m-ktUfD_ND7{~T8d`AmQL z8?u?gc@Fin<@c)}7QXWhWOC8i+26Z}Wj4PI$^M)>XE>AZGo&Ji6;)IURi}WX$yq=fii8-Tn2%0wW%Kt5GPh`- z4A9mpRedS4r2g4f3-ub5~%;%X-(H z^lmXBSTl8{m279@*=Fh>>E9!L z^BCd}PhXTTMO7Uxda(M9d#^y3dkK4!fAJL20gCy8+=!?#ons`z(-EcQattb*-K{Cl zFVP3q)f8{ZdBuD5S8b6-7*-91+NeQ#aF_Cp6g%&f=06Wp+ zF?xgH-1rlc<0ceALC1hpgPEEKjt)VPDd`T0jNmlcYw7`Q^^uDT2|wgjsf$-CuYjbm z(R!MM$UP2>1l#H#)_Y9bfe4QH8(q+hsC9VWuJ`a%VPxdh5kE~X$oYxtZd-0EhU7FC z&8H5j;+%Ec=fue)P8H(hzJ^r?)TlZ$yJPgEl{pJ)mW8mKfLC{w5{yZswdCVi`YVsM z5NdR;b!Q-h<7IeyGNMWi*$K}|Nz&_rFqb8GB?+kNf&%YtH{;3R^81M2#hgy%q!7Zsf9z=FuSc~ zo`-a_q8i$nyG<%N-uLH)Z;FEt4vNds$4@w#NTr1U85d)3ho!KiG(}FSLvSUY1b;H8 z@RcneE{GRs_DuNR?5`63aw*$@Aimc+K7k+%eKVA41Dh(BMGh(sni$^UTyhUZbg-1U zd_=fkW~H!r;vXdg&DY>gcE0Yona6gvUP{FAjd#-Gf(qJgaQ; zetWR44EU19>CBFrokgTzTxv8o?;j7=eFuA+&v*B?NKj^5J5P7_o^7a`d^We&d{fO< zD_>9LFUw5!V0NXxILoel!!$INd)3M})zz_SX!_TlhsLAGWj8IvD3vTUAI~ECO&pQ` zC5#O#@H67!%gX>J@c*~hR&(~>s}(f4vH$+~-JRUS1peP``qgCsL&1N5?OKP3{*$MN z{>?=LB+B^{yK9htaD2X$IhMIdL?Eq`=1SX!4hndFqix8!%TGMImHGAs%>!+%J;cpJ zS)s(Cbi?r1ls9tBM#QT-MqM=qkE0lVHrL1hgKepLl@uFGsCTvq2S!enYks`}rO|lR6FGiSGd!(=l4#Pp3bitQ3pjOfddD`7ik$VC!TDKWy!*D3aN$JM+jV-tE1< zmAz^n)=|@SL%<>ODo6`z_WFm=EkKs~A_m&6{H)(%;kk85R;PHNtckSH&7L1mz(bOV zNuL2E<~L{J=t8id&<_Af<=c}M^n}>lx4mxXcp-ydFomN5($O8UU-_gb&c+KY~?4CX#l%CFv^nM+S(HQ ze&>$PJF3--w4^Tvtu~a4+;D&g(G(FSFymc-Jh}JUdXf4T=C9m<3JtlKn9*Glq|HBG z+4yRnnXeJ3vDsVT6|vKVUWeu(tEPgCLT8HW^vdC0xYI(w=1+ihL#!DVgnNn5kMBdf zZ{4uC;BT6392|%3!iNVk@v_cYG^AQHpa?(vpkiIf{tTUF7}>Cd>avs!e~|GVt5)}v zEY}E=**qkLv1cRZ(KrM62El3M7wq)B+2t?NI|AC1nFRlQtJkbKc;FG&OlZ%8;@fY_ zMHl6!-}hYAAQoq}NU$F2{ThA^faBB4v2qGLd!vjSDO0(p0CDxLg6cWF>JQ;HA-F&t zc4<|-sxzu(-_nXfY*3D>hOcRDQ{P23^-HadN5ak0G1!iM;{3#YgRwcqA`d+DS+_AA zC(WY(_1;rpFp4up{ZPgw3)&{(sC{RNO6+;B`v%%*##?1b(|jXQ!T_rl%kU*3y{W^P zx}H}_l+kaXJ!VW?r&+p@-;a{t-~Q&COUdt9U*z|d%3|f4jKces>fP1P8tgKN(2a%S z3N(rQzdrKZB>wLabW@j?_^15Ic>b?aS-F>w|8%c{lrT5(-%>DslD~@hKkoT3(?|Om z&=#-;A}tWhH1m0#SiTKSAb3O2FA`P0)$5Z#l$Q10nHX;My7kwfm+%+R`4N1|iSH9z zK+7Y)M#>*g+ZU~d7j*M!lAlCm-6*tgYu7u+`G#>bmKQdpR(@PVmKQcmoLjAjc*LZ< zu!rERThKfd7PbXz0JF9oOfDqGiAT?s7xn>msxvN~jg&_%LqZ;i!66Jt!4{9MZCk9}kh_EnZ6+ep2?dIG}!HKJ#m{{!3&zi0Uq3S`48Wlrp zKdE0{pjm%h$*7$Xz2UQVR1l2-MjXqPZ@&3@na4pOj`M03gikh~A!hvk53(jwXL-58 zEEwW8YzSc*f(zDwbm0gl5by>g=VnE79;7)_IL=v#BR}9iRNotqwl`}>y=L>D&Dt5b znCjyf&t7ap5&q+5_8uYzN<4<@bz$u^w&LKV{&sSAT5G5?FEy$Cvhphlf0+b~5D%MY zgRtR4;8BuRRU8ip9EG55mVN)8pb~8F!fnjPkOBZ<>VFudpq=odoJKcTpoE7rfXjgG_SzNaf zK#9vaQ1Ue=bhwql2x3=FM@S*=Z}0xJ1i{)~bJ0gRAY%%n3V7T#gk`E9H%VOfM4iw- zYvMCnBK&@<-`7kAvjXs_=l3$bf=l*LTmkbYt#dduJm0)awQm7aPDq#ujD<3Iib5Qr zNuD{jCDUbs_qm#5BHuRWaU3Z-P<@Eq%CqzSNzG>oD7y(L*lE@o28Vg--=w-)rpET2 z+(6uKiej*VV%KYPwhiP-&@1RF(H_V39aX}vK0aw4z9uIvk_uT5jM2KS1~`Ye$Y6oU z{dn1qkaj>UoR0*U8~|-8$S~TT=>RYxNn^lL{Gh@H*m;Nw-geL14Tz24Hc8PBM`TtG ziicq6*6pgC!P-2lUm%4xSZWA6$eV*Hg(w1^O&1wq%uo9lr>~HwVj!HvQqmd|0N8mP zq(#5oeH+io9nv95XwjLMRYd=rd9gC)Xdk^A!XY&Nwnaq;@?@JA;gC0NZBOh zj{uSa67bMw^|Z^-|99ChaoMl1LH^}eCm|F};_Djs>;~rn%N|Dk-pcGu>XCHy?D*mz zZW=DN@6egKvZj~m%B&%N%wGazK3H6bP_z-OOz#KxBsOSS3KJxb%V6`xO?ZfRQE#+hUIIWCAHFsJkZhKa^|kni9*T^(((7l{KuCYsU2vnF6`mbw^`^IqO&uD(PVq7_pXG zF&sz2foB==2#9t`kOT@NOd571xls|-O?tLM6j*yrhFBnqv&~hT1$(Hg@zmDpu9$Hn{X~bL|+4vBLFnPyf z9}-1EWvwIdd+(umD6EMTdGMP~0i8=rl8>aYvkwaq_~nx3%0YIVzWNYwAzrC|q-|u;ZR>QD-1Q|tN*t2tKCt5s6eiJe(C3*2Jk^{C z&$I6$>O3@J%|I^6L&}EHE9!2g)&h3)9on26lGGdOPA%`U-`D25Gs?boXQG`2Zu|#_ zix~l#yRa-pwc)y+P-rU<2$%=iOE*xJ>1=Li@cJW??i!s-qlh1J~pbyemPBJk09qnsI(+YUy3Sc43* zhPkpER?o@A#$uo6b@nf|bK2pmf|^g5C5ozV*6Y{7Y97@uByUz-44V>%3lO!dHG< zcJsi*O8 zwX10Y#>@Ya>KVx%a`|6YR&VUTKK>^tm0|7(RSaLQ_d5KL=56ZEFWo=$*%#X%}f=oG8T2Vygp{H3YU)QhE}{q4w0>t zUz6&KW!OSJk#g!n5DLmQszTxrU*T2Q7m+EcAy2`gfaRp{MCNRPYTV*KsNg`Sz=rI9 zYy-lJtrs_Uel$sd5tft2%tLMJv4U2>zv{bIWt^5d?v(Qz9E8!3jt|4$lod zqBM^-g99#ML}3f7*3E;LGwk-|OlEA9!GAV8*nP4Kei%n<;C=n2OU``h!Th>GOcsKE zjra0Lv8Il`<^1U~4vwUL?%ZhuVFIuqV{u1zPk-V|bS{yxIp}cL^Y;<=dnw)UrFp*< zZlR8S!16t_m|yKM+bFy(hGn`~8y!1Gdrbl6tTV8Km=rU^y{orjsMn-~7UFH*J(2Cg z1`bT0L5O`xYn#$P-hXhco{Xccj1@|N1B9)3A4R{!sT)2ryr~|MeRx?Vao_B%N2W!F zGIcT8cls~AzzzG<{&9{>#IX5lF!;hkuo{}VzkKNdg&9h*8tKRf2ScVxWBN_JA?h3-=-S(2-4Al4T8XuTLj4sg_$x&D&u75)zH<@?A#Q_ zoq}>OqI1=?+g!m_4oeJ2Ju03f9%YxM;eh@2rnS=KwMBOIp)AEAeZZ97A+;vyx6U8U020Go`1 z3gxXuEPx^ghnEJt;+-uKai~Q)M3gavz6mp+Q_g-9W)k<~6&BDmzfCBoD5_V|oXNmi zutX1Bry|_|YT!rN6YlxkyckX>w>p6d5ddoJe-;wp)XJOGk=^(tgA&1&YZnj+>GCy_j|5cO3Ri!r!I^Wc!Gkkw8LM8 zQX8rZVt%+PrvkDC1&;Q1Up_Fvt!SNgx{_!P)r|cEpZNu}5hNrZh-zY(Pw;X9acM>*QyFfM-30lJpiv!elypox&$$iwct|^4^lPKkWvwgFahj3fshP}+LZ~*?e>!94~g=nu46G02ZZrBjXhA^%W!Z3yn z@s)VObzhwTBi$dpZt8NT$sG}_(rbDbVP-`KxYwQTTX7at_bwbI$YcI!+2SX?|Ig|j z$Pt#{U32v}X#D%XdS?yEUK9C$<=(wJ(Er@zf4@4+r)@ckKd&l-uGV@KCcZbuB<(RM+!(|9y@SYp_Uczg`@iz=HJnMA&9Bp68u2xZT2# z9F^$@ihuaRWM5^$M52l5-$`4UDAQ_LjkXPL}3T1WBUP*#GZfKXi^BW>&ciJq`e(T zf&@v$TouH_XW|w>-G+g>9704bIKw!v08W8kY5V>(kH&A)R9Xkjwusqj6^~#C*dKZ@ z(2@*j0AT=Lw=`TU%_RxL`Y|@=1Ykicn5o{v`@oP29l{=)s&mEmgfold6`vNl1OY|p zlVwR}`=zotbqwHGppjOwxe5tJOwB!l-`8=BdP(QZZitBM8iW=BIp=}bI`jm=jD(cM z4QMxEbcRXcHN>sPmEmneInQJ?QEV+wD8$Nuh@4Ob6|ru;%~fA$m!~-CAP(BC*YrPO z*ae4=*rUUvKx*PNeTz&SaEwHaB}Ov&F9HhiL1r&JTN0gvTcOcN(G#9JdRre8jbK$L z&Gs3$s6;_~4^wkb|(RsWRhw$KpB_dk1+AFn=g6? z?Zuu60o0YMtl_p{2p}?}h!A3{aKx4UOAb1ZvsbbxH5lC&f|j05#}a%4h&y0_TX5LH zbs{S{Xn|hAWfQEy4juWEl9!77m2Pn_08kE%7jX6wFr+OzDdelWZDM>deBB5#xt5G_ z4T$5m@F_%U-2uW;>w-Cv+;c?rtj8umyh>VWpcA=_ZrDaw-U2Ka`Opwm+pkEb`ii%? z+r>GDBuen*t2QPfcPIv4{d{l&nmSx#rF8LZ@!l$>k(FgH8|Q7Eh{$;ZHyT=jq=AOkQ6$SOGT>@Zy-ar`hXuu}kHd(bO~&GZ1SC(!{-M4N4%pXh=*@ z!%P8j&XIf6&^n?QfzUA)2G3`Be!wz7_>Xw^xH+Oyeac%{sU#}L;wtN&@(tY)@`|ha ztz%eD$b#r5=c#U>aYrzd-Z=vKAR%^Mb-Q?&;O)Vv9`Eq3(ySh*Sq)EZAuYjyT&WSP zptkV`pau+l=*a4y6{F&%0UiP^-^Ur$g6(2HFX+;|?v z&#Ze?8m^~!JS=(?3>lC*A&rsboEv-!hfMzKua`uO2O~q|fO+I@BJeo?h3h4$atC-3 zw~+OL-nEJ|0KY>#J7}nkgUvX++uDJRI!qDc;*sel4zRaOA&JmG7yT0MEMHx_|1E5c zoRIKr+r7`QX+79Q7`DcI*<(qfb}Q197~R-X32-E2fE{x#Pu?T$4#ox!!Bg7lb`}-( zjzYlA#&tnuHW(m2y%Jk|(j1KgY(WA@o*leuGI9K)W;`*#iD^=i0z7v~pa3)f;~dd9 zK{DY=xOYsSbHT8>PEXLQ+TY%`n4ZCzi@FdY18(E1W=UyYQpmvPxTiS42vLPdT1-rU z;|jA&q1VXV%cc-thPRT00CB}416CntE+4wcJi)OGa8VUQHAl+eg(pFQ+iB(srwC+q zOI{Hin^*7`1qp)3rPS@46@{~)jfw}6-(oud3lg01S{(Z ziFZopEgaM`d|T^h3y#Uc67e{LjQ%fJMPRu4G0ARuua7vX9&YX;339$x!22aRAS|H% zVnMy)xxIwY+Y{gpqdhQ7Y~i9Un>B=Y(L=nLAr@@EvI}a@b#QLI~1}Q8$=pT zQa85_TZ25b{?3^@s*RiV>b!*@Z#eg)Z!jqwRj^Iy4A&hdKp2)sm50|uoQ`fnm>{tL zK!V0-h8cjXGX$k~2h@XH7G+eKu>yQ6s3JWn(k*Ve&b3Kgp7AZ<>V=K25Pw3CZ(-3` z-&~GM683C?R1#PXdIy7#4bjs`(S=0`)dISq%R^6E>4o62xQavmFo4l{#At{o@0b=R zIAOS9=diCKw2^`M6~tXQB)qbASKXQ7T;1*Vr;>L^2{65l@l_QdOACjY1P58RYk`eo zA{;6yafI};evT&WNcJ(P{&C1(zAgmz*vHjq*>xOr@<4>7allbOa-pqegh4d3gVEv+ zSp~kk-(f}$kwL^91}tXeeU~>y9%sTzxC9~+$_jW&#Imu2=|nPvd3&gFu87wtFrajZ z{^}5RN~A2}TFnjNIt2q{aRD)g-X(CUL;!Nvq$dY(5XeNhJOVTx6WJ7|P%jD1CkFr< z%^hQ3w!pqSxq)9q4?v^Qp@oo7T=Lno@fG@NIjIItxe=?laXPVpCxL_(n4Y9u%I4** zn`cfrF^l$=@P#xJldNisWqG(LR2puZTChFR>s74+8^74w%6EZ4k=@=$_MrsQ)SX!M zuolBWLqHh45N;V)LY4jj_JDERln4=dBfRWDq>3jfBr0$smuE$t@8oGmlmB_nV*>{} z;5lZ6@0Tby;W6zV9)g%;s%*s@*m)5>{8IUK0a&FCDv;`Hm1oGgvh%i7+Hnl0P6iYz zL>KZ9%bOFc{FL31SycJx!2k|;TTnhvl|08re<@pDKknZGVM-yJ!@8`<7tPMOARA6d z@eI=d=_IipM$3`9G!6z*$9ubsv%ibh1fI|{;R1>54oBXRDyaE0&?M0--ysUK4JY4< z-&?$?YJx}?BDO1ZM?|81jPcvhwaniL`3NfnlR=!X~6MMHqD`Z!NVZa_M@_k|U-OMMSh8$K7E`qhrQ%oQcR-9OA@2o1mAM9^>IZ zE}YRxusO##JbKHVOoapEf`i55ZC2ukL3D6^WE{(8gomCq0BfuKfL-=*N#Go7)hWNn z6*?SfLkvv13d9T~oqSgMh+#`AnY0eOPipJ2lzkG?m*%?=^)^9?;DJP6c3ybyl#pAJ z+h$LpZ3_bh%iYr{Xluo5vKZ^m8uic5c!*1MYo@%G*i2%-DEUON{j|ThmBB7bV+x7B zuv}SM;e;p?1T`pVB6{8zhJ`2Y3X&+6_Y~OVRj&^Hg^-01tJDXFC!Uy!j}pdl$P`Nx zB3J~o_%2g0mH`k(L|I;~4u}cF(C|PWI=1k`Zt}qgqY429Bhlc(Ld+)YKc9SZObo+z zPRBFsxg1STD$DUbs-L#nE#zvpdxcI2Ufija?n>XLh`3t6l{2?aYwin)c>w&lE+=MO zub!Cm;<%KggCCe9VnP0pgi;qYAwr00)6P}P4y7#uHp9y!C+SPO4rHIBl2Vi+GH{-B zv+Lex4lk(B^WP~gqy|A0AM&`#Qz|s6Ha~1r|BmNcN+~GD;e^(9aZ%fXl)zb&&jLSF~rn$oKyaRqQEAL=!qA@6P6dqONI+c9atqhfL#NfKu+Lo54hU*)d=-7 zD(F7Nn4FiIQt(L^KIU=n;tX*V_xIt2#7w%FtOU;jbWN-^)Y=Ul4}qIB0FK1kqk9gk ziRa+Zb+duMdH@5&4MZ4>-i4EaSl9pwP^_MWL%5%*uuW@$n3Kns$3l1lv1n-5FL15^ zj}xSk1O8|0iEmh8F zSSd&(-d0V@*M-Ce<+dZy)N>tHr;BU9}*h++-MR3Ikv#!D%g<%cL?2-ygp_rkNK;xbWqJCQ__4>(`%Zl|M?&C=^; z6SPJ29Bf8p%Uz&zVq4x|l6_(& zL0<8f41TP@l@U1bwUYgcLrcbx=nWi8BBgIYsz`}ISD%{`hUVt+^vhK$hLi;EDB?5X zUXrS(CAYkUJOQW7TuIsjzC~0`!uv=HS^~-LEVIbVOkui1Yzb-)kmUubskHeheWgl>aulA#ZM9LPNw3pZzbE`+{`w% z_jgB;C!m+sBZLRRBq^JHP_GDE;{|kPfly50d=L3>A4KRn8EYKuIztNcWDCh40%pED zc$(7o>Y%r7RI#mzQmlYqjSTQdIM)Y>I^9&z(1Fvyt;a!PF9s?9aBstWZ)YD6LHdZt zyU%~#+xq^81JF_3vkOU(T9iK3*dHO;aVcqc!^N@t-%+O2!}EcUod@G5`Mb#f$M5+>Cm^bo@HPw@)oR}12amB5 z%E%KHE@`#;2p5iT0E|+to8O|!alX%s_E7Eq03Qphd-7pu07udm zHuL5lyGVB4%ePHShdTJf`8a%%i}MHRbQ1o5;zf`BE4zVC!2kE|BG^;v|FL!#Pr{A= z$7eWWMfgA3bA17racbgQ0EbYm^Ar*n#q-4F@i!`V^zSk0AwJ?wp&Wni$IZR{t=*jm znmpq6ZN_EdGeDFaXEcZ(4=FQOQST`lUJ$cFAs&^VxT%$;zNw)pMIs0GK(KAx)RnPq z!Kh|;S~#kejT#kRJg|RgnilYn=y+tcM!;s^%@K`z{cZ|J1P6Y zdM)T?bW?N~yx3o)-ycvHiyvDsebn2(OCQyo=O6MIhB6P0a?#0M#BtX= zlb}AyrodC#&W5Baf!G6LcJ(~}5JHzr%;pbM<~NH_HjX5O*v&R%AfkQ}m9wd;s7)7L zv@_Q8+-{QP%tY7u;4uQ=n!6qRNxJP<`6KjYmdB^ysSUb? z>~K^*#MM%406q^?GlMWOYO{6`^TcU+)J4dMDC$YHmgq_%jZNhMX?fH|5F5jE$}ie2 zBc4TEo`@4d7sDN-vk2t{9Z0+^x`Du$Mzy`bA^-Ek>!)&SLJ6OWD#GZ+!|A( zi4DRVhM7Wwda$>SI=9T!E-M-Pu}^-0z)?;2+bneOhdzNh*mSWVGW)x%vQ&XBk57X( z7ef#b29KumXMC;)laH&Wy^1?2n^qi?mFU$#qqJrgTWSnGFRUij;am;lbJ&@la`1iM zK!*+;Og%8<5DY9`g}VuD&BYVIT?bfFw7bVJu!24nA$RQ(;j7lY$o>+2L`QOl5j$X3 zRuk$^xtb?_00X4|yZl~E2H5Q^EVp1iNW23TzTPHUmc~$r?Tpx0LWe(4$i}6~Y#2;x zP)jc#!hEG4k``Hre}!RDcTC?*pEW-`z&wJk0c+`U4q%NLy5Lp7vJknWui@8l3CeSf zzzX(~q*SvffyQa~?9bM?DTJ<@n5$ih9>&^sXa)1wa;tHElhDvb0A+{g+ldYXSdo7tqJYz}-@ zUd`qnE@k-yOzy5(GAu6FqBAR$7cz=^2=B%9R=-}J#_c1?X(ZrcdxfWu-cCndnEac} zhe89|C-Mc{kjF*fA@~$fLQYgZIKX;g$8_^`LfXV-P}6|*zRCQ&3%nx&A4oOg3J%r8 zqadMX_Hv{AU3KQS`GxY*Ul#1w?Bzd^Aa$<7gk{=}6VxS0Y&A|$$Bo{`_;BEN!Fx72 zTC0sk4vXs!Yv3SBO`ejt3!IR+%UhwAoo$Ut&T4XNhRYR@JZg5KtPhW3cqsln=O&^w zLs-&XeECHVs z2pkbAu$loV;m&0YBh|SaNTSpKZ*&sk^&1KbDbpwzjes&A->>-z(3uqptV3%snUf>O zS4^JJW%c#<$jzV!BATdU)D^??goiUmH14_7s~LLvx7q@49Y^04n!dT~+312078_)` z&C>Hogw?iDF&rlBh7b#md=Nwks=@yq$OqRY_F-|oJaQk3zf!z4n%Yxk#!&FV-O!|k|gKTt3LLB z-r0S=zqMZ~J(0MdWKT85PaBjM|8lp)aiTg%wfYq;wWTvqzBJAUk>>Ohl`K)I#Qd(! zQ4Efu8H7iU1iVt+MZE`=1x-k4yxD)<1nUZP{HlqFSf#SXYjBr`=FX&s&BHP|MrZ^- z1ULrC{m%9@S+{~){?8fVb3||A^KVgw@ax~)M*bMSMZf)q;>D?dN`8<6m_)tGujm?6 znyzomp0$62%LPKdQFNX?7G5FWsrGEOr|TQtYTr*HM%?=SEyIQy^QNC%?aTJ7gNM{_6sKmk8n-zNeQ3kv;RMhaTtXAn|g-!_2G)4&4L&qs%8qrDQRs^qO@o&b8 z6cw9S1jkTD#!$a`F}T+d-jR3?FPs~MI7AA%qlN@;pESfS zR!4M@wcwj0csr+JKe4w6{Q_@C#4gg%kmc4AJZ0q&DUxNF3jP@ZxB>D92JP?};QBZ4 ztoKhW;B7RNw-1TW5Lm$GJNPt;1w6YQbk7i=5BbVU&Q+eL%XIP6SfhV3O_8jcenKTM z5~t9U0d?vbGiJl_wL=kca#71bDV(b_y52$TU}lkI9~s^a%c5k z&i`W->4LHUH}T&;{Rt@2|M@!)msZ>KVP#-iB82uBPmsrA9USZG9ym?iT}lSQy?!we zpN^CSG#wZ0S?&)8&Y?qOR1z#I*z=~!Fc&TZuIc#kwzY{e4BTLi;S^f$Ak~&?kpl`y zs!$$j1VyT|msOP`L@zKzjB^A-^g%0I>_Hcq7W!HB`QGlq=Hr9SCk1^V{ETEE4Bg;2 z^>&J_a4F6&)YJ+KI17_yi3%g}Am~pESLDpyc^4fFk#2c$AP5vkXt>q3yLAmJb`%&S zR^ey^=0$Q{sN=9SXZe%OM=!pogs2jAWp zXcO(LG>QHm(c<~`i|@B~Y7B0{7KuWs0Lj9yT9`^xd^y1<0JpeqTMs>+-(LY3j+&lB=z#uz0>6yRulU5mbBZ zzuSt#DdG71F|3tqm*TSFR{ARB8YNG~a2w*;T#E?x7S}hpL@Q#G@GzvULax{dbkQ4` z8$Bus{p{@4p6@+jSRFI4#|3_KqdAdJBNO(sR zQYtEnD9b>`N0>C$G&JgR2m6e0C%UqI-s8ItG-{yb|8tf}{BkdV3M1 zv!zF~M9A~e;^v*l&|Es_ge1}KH&wwn)d*>4G6*p*Oe#dN)*qZ79SIZ=iKR8DJqd2Y z+4~Ps!6S2cNj^SPnQ2StyibIDU_U(51t&&~|0GAOxh7(UEzu6w<0wJ6g#YjVBKCTdhW9 zrQKcVLW$&6i-4Fd_SvM=kC_X|H}aC$5xUD!d6TI0hhZS%^9?Rclpm*6qCJxRH#7&sO4Yj=nU#V~m2KCO&!a7<0{3I&kl|MLA0 z|Mg?#n{V#^Drx}NKRQIz8SBWeh|rScWv`lu%!F9#>Mx71->rA(jz*4vgy^UcF%co` zxaOeA{}b68p2eT@%>JLa=qK(*7yY;60eQj}2l z*eF;6YZ4O;G;3)xI6Jse3Y#f;S`b1HDmmnn8(>7h-rx=6Z!8$Oahn{I(IyuhuHf_# z2ajsP=%l-&S9j-=Vao91XqM+PQ9HZeN>NITh?DcI+1lX9K`pFWL_yv%1t^Fm!yFBu zvFU@uCFVTD4+So7 z17t>uOyo*37lUA8yX865qMeSRTHR74bc!;R3j}*Xv0$^$N7Kky?a+% zSCT$Ff9q460n*4b<{~h5k7AP$j1%6r!3%I_dg6?h46;!hBw7-&8N%tsx0Ea+owKjCYuB!-U6(c~g(?jRH8^YXB*PilelPS1@r%vy2sA;XHPJKxwCDf? zm?(nwJ75Y?Pls;nBZMFOIG2Itdqhb+;}j(DFgAWT8qpN#trBavd7r@MA%0IVI0nKE z$|4MZV5>s6aDl+g8fc58)NmsNP=rCYKZ;p55F?EUC}+HU$}<-SUfyOc=sMfN-N%>ZT7Sc+&48_3~-83b4Y zTN#HNEb1qOV&prX93Bu@Ihll>=UNuuh0_4fh@<0uXlyat2dW{MXT_a6y8jSIgZN=< zDyXf**N!1XzThz==P{5Pw2%{(I#R9=0hN)~&lo`75(~&#$cbqVr`?cDiglG~6-XcT znx9xkLPo~(vQ1jV^i4sCw0uAaVZay}9r-bSf$tJdc8&^g@Qp`>6}e#91V94Rm~iWe zA#8zce!E#%mdg1V@I&?j_SpLqMobrPEN#OMVx6-w8Fp9C^t3HPWBEiQCU=6Eo7$p?TGsQR|V48%T3Q&UYN9T?2^x)=vX+oHhlsMn3i$|SZ+X&R~S*1A#j

$b2Ll`1#m+iHQa4?rCc^<-c&&I!IAkJ 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

49D)H)4}N5c=UF5(mL(G({GVD$xLy;a3RMs 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 MP+&oUk3xa}9~JD6k^lez diff --git a/TEST_COVERAGE b/TEST_COVERAGE index a909342..88897ab 100644 --- a/TEST_COVERAGE +++ b/TEST_COVERAGE @@ -8,7 +8,7 @@ # cd t/ cover -delete -find . -type f -name '*.t' | xargs -n 1 /usr/bin/perl -MDevel::Cover=-silent,1,-summary,0 -I../lib +find . -type f -name '*.t' | xargs -n 1 /usr/bin/perl -MDevel::Cover=-silent,1,-summary,0 -I../lib > /dev/null # Devel::CoverX::Covered covered runs diff --git a/benchmark/MEMORY_FOOTPRINT b/benchmark/MEMORY_FOOTPRINT new file mode 100644 index 0000000..089d960 --- /dev/null +++ b/benchmark/MEMORY_FOOTPRINT @@ -0,0 +1,59 @@ +Memory footprints for example/ scripts comparing SOAP::WSDL, SOAP::Lite and +XML::Compile::SOAP + +Results with perl-5.8.8 on Ubuntu 8.04 (x86): + + PID %CPU %MEM VSZ RSS COMMAND +10183 12.0 1.1 14292 11492 perl -I../lib hello.pl +10554 7.2 0.9 12636 9828 perl hello_lite.pl +10224 17.5 1.6 20780 17012 perl hello_compile.pl +10287 25.0 1.1 14680 11776 perl -I../lib person.pl +10313 24.0 1.6 21068 17312 perl person_compile.pl + +Summary of my perl5 (revision 5 version 8 subversion 8) configuration: + Platform: + osname=linux, osvers=2.6.15.7, archname=i486-linux-gnu-thread-multi + uname='linux palmer 2.6.15.7 #1 smp thu sep 7 19:42:20 utc 2006 i686 gnulinux ' + config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -Dcccdlflags=-fPIC -Darchname=i486-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.8 -Darchlib=/usr/lib/perl/5.8 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.8.8 -Dsitearch=/usr/local/lib/perl/5.8.8 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Duseshrplib -Dlibperl=libperl.so.5.8.8 -Dd_dosuid -des' + hint=recommended, useposix=true, d_sigaction=define + usethreads=define use5005threads=undef useithreads=define usemultiplicity=define + useperlio=define d_sfio=undef uselargefiles=define usesocks=undef + use64bitint=undef use64bitall=undef uselongdouble=undef + usemymalloc=n, bincompat5005=undef + Compiler: + cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', + optimize='-O2', + cppflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include' + ccversion='', gccversion='4.2.3 20071123 (prerelease) (Ubuntu 4.2.2-3ubuntu4)', gccosandvers='' + intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234 + d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12 + ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8 + alignbytes=4, prototype=define + Linker and Libraries: + ld='cc', ldflags =' -L/usr/local/lib' + libpth=/usr/local/lib /lib /usr/lib + libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt + perllibs=-ldl -lm -lpthread -lc -lcrypt + libc=/lib/libc-2.6.1.so, so=so, useshrplib=true, libperl=libperl.so.5.8.8 + gnulibc_version='2.6.1' + Dynamic Linking: + dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E' + cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib' + + +Characteristics of this binary (from libperl): + Compile-time options: MULTIPLICITY PERL_IMPLICIT_CONTEXT + PERL_MALLOC_WRAP THREADS_HAVE_PIDS USE_ITHREADS + USE_LARGE_FILES USE_PERLIO USE_REENTRANT_API + Built under linux + Compiled at Nov 27 2007 10:44:36 + @INC: + /etc/perl + /usr/local/lib/perl/5.8.8 + /usr/local/share/perl/5.8.8 + /usr/lib/perl5 + /usr/share/perl5 + /usr/lib/perl/5.8 + /usr/share/perl/5.8 + /usr/local/lib/site_perl + . diff --git a/benchmark/README b/benchmark/README new file mode 100644 index 0000000..b24fb98 --- /dev/null +++ b/benchmark/README @@ -0,0 +1,77 @@ +The benchmark directory includes a bunch of benchmarks. The most notable +ones are listed below. + +Comparison benchmarks for SOAP::Lite, SOAP::WSDL, SOAP::WSDL_XS, and +XML::Compile::WSDP need all of these installed for the benchmark to +work (building and adding to the lib path suffices). All comparison benchmarks +only account for the client part of the respective modules - the server part +is not benchmarked. + +SOAP::WSDL_XS can be obtained from the project's subversion repository at + +https://soap-wsdl.svn.sourceforge.net/svnroot/SOAP-WSDL/SOAP-WSDL_XS/trunk + +Some benchmarks expect to find the SOAP servers "cgi-bin/person.pl" and +"cgi-bin/hello.pl" from the examples directory at +http://localhost:81/soap-wsdl-test/person.pl and +http://localhost:81/soap-wsdl-test/hello.pl + +If the web services are not set up properly, you're benchmarking error +creation times. + +To set up a SOAP server using apache, add the following to your apache config: + + # usually in main config + Listen 127.0.0.1:81 + + # maybe in a + # container + # + ScriptAlias /soap-wsdl-test/ /PATH_TO/SOAP-WSDL/example/cgi-bin/ + + AllowOverride None + Order allow,deny + Allow from all + + +Using mod_perl is highly recommended to cut down benchmarking time. + +COMPARISON BENCHMARKS +===================== + +01_expat.t +---------- +Benchmarks XML parsing speed between XML::Simple with XML::Parser as backend, +SOAP::Lite, SOAP::WSDL outputting objects, SOAP::WSDL outputting hash refs, +XML::LibXML with a simple DOM walker outputting hash refs, XML::LibXML +outputting the DOM and SOAP::WSDL_XS. + +No web server required. + +This benchmark sheds light on how much performance is - in theory - reachable +by each approach: The XML::LibXML (Hash) benchmark converts the DOM into +a nested hash using a recursive function. This is - basically - how +XML::Compile works. XML::Simple uses XML::Parser's streaming +API. SOAP::WSDL uses XML::Parser::Expat, XML::Parser's low-level backend, +to create objects or - in the (Hash) variant - nested hashes similar to +those created by XML::Simple. +SOAP::WSDL_XS uses a libexpat-based XS parser to create perl objects, and +XML::LibXML (DOM) creates a C level libxml2 DOM accessible from perl. + +person.pl: +---------- +Sends a empty requests and receives a response of ca. 10kB. +Modeled after a common enterprise setup: "Give me a list of person data sets". + +For this benchmark, XML parsing speed is important. XML generation speed is +only weighted in the last two runs, and weights around 1/10 of parsing speed. + +hello.pl: +--------- +Sends a request containing name and given name and politely replies +"Hello ". +An example for very short requests and responses. + +For this example, handling and generating small requests/responses, and +transport speed is important. As the XML transmitted is relatively small, the +transport layer's overhead is important. diff --git a/benchmark/XSD/strftime.pl b/benchmark/XSD/strftime.pl new file mode 100644 index 0000000..ab9b621 --- /dev/null +++ b/benchmark/XSD/strftime.pl @@ -0,0 +1,24 @@ +use Benchmark qw(cmpthese); +use POSIX (); +use Date::Format (); + +my @time_from = localtime; + +print "Comparing POSIX::strftime and Date::Format::strftime '%Y-%m-%dT%H:%M:%S%z'\n\n"; +print 'POSIX: ', POSIX::strftime('%Y-%m-%dT%H:%M:%S%z', @time_from), "\n"; +print 'Date::Format: ', Date::Format::strftime('%Y-%m-%dT%H:%M:%S%z', @time_from), "\n"; + + +cmpthese 100000, { + POSIX => sub { POSIX::strftime('%Y-%m-%dT%H:%M:%S%z', @time_from) }, + 'Date::Format' => sub { Date::Format::strftime('%Y-%m-%dT%H:%M:%S%z', @time_from) }, +}; + +__END__ + +results with perl-5.8.8 on Ubuntu 8.04 on a Thinkpad T42 (1.7GHz Dothan): + + Rate Date::Format POSIX +Date::Format 10684/s -- -93% +POSIX 153846/s 1340% -- + diff --git a/bin/wsdl2perl.pl b/bin/wsdl2perl.pl index 5911659..44f5dac 100644 --- a/bin/wsdl2perl.pl +++ b/bin/wsdl2perl.pl @@ -11,10 +11,12 @@ use Term::ReadKey; my %opt = ( url => '', prefix => undef, + attribute_prefix => 'MyAttributes', type_prefix => 'MyTypes', element_prefix => 'MyElements', typemap_prefix => 'MyTypemaps', interface_prefix => 'MyInterfaces', + server_prefix => 'MyServer', base_path => 'lib/', proxy => undef, generator => 'XSD', @@ -51,10 +53,12 @@ my %opt = ( GetOptions(\%opt, qw( prefix|p=s + attribute_prefix|a=s type_prefix|t=s element_prefix|e=s typemap_prefix|m=s interface_prefix|i=s + server_prefix|sp=s base_path|b=s typemap_include|mi=s help|h @@ -63,7 +67,7 @@ GetOptions(\%opt, user=s password=s generator=s - server + server|s namespaces|n ) ); @@ -107,12 +111,22 @@ if (%typemap) { } }; -$generator->set_type_prefix( $opt{ type_prefix }) if $generator->can('set_type_prefix'); -$generator->set_typemap_prefix( $opt{ typemap_prefix }) if $generator->can('set_typemap_prefix'); -$generator->set_element_prefix($opt{ element_prefix }) if $generator->can('set_element_prefix'); -$generator->set_interface_prefix($opt{ interface_prefix }) if $generator->can('set_interface_prefix'); -$generator->set_OUTPUT_PATH($opt{ base_path }) if $generator->can('set_OUTPUT_PATH'); -$generator->set_definitions($definitions) if $generator->can('set_definitions'); +$generator->set_attribute_prefix( $opt{ attribute_prefix }) + if $generator->can('set_attribute_prefix'); +$generator->set_type_prefix( $opt{ type_prefix }) + if $generator->can('set_type_prefix'); +$generator->set_typemap_prefix( $opt{ typemap_prefix }) + if $generator->can('set_typemap_prefix'); +$generator->set_element_prefix($opt{ element_prefix }) + if $generator->can('set_element_prefix'); +$generator->set_interface_prefix($opt{ interface_prefix }) + if $generator->can('set_interface_prefix'); +$generator->set_server_prefix($opt{ server_prefix }) + if $generator->can('set_server_prefix'); +$generator->set_OUTPUT_PATH($opt{ base_path }) + if $generator->can('set_OUTPUT_PATH'); +$generator->set_definitions($definitions) + if $generator->can('set_definitions'); # $generator->set_wsdl($xml) if $generator->can('set_wsdl'); # start with typelib, as errors will most likely occur here... @@ -137,6 +151,8 @@ wsdl2perl.pl - create perl bindings for SOAP webservices. NAME SHORT DESCRITPION ---------------------------------------------------------------------------- prefix p Prefix for both type and element classes. + attribute_prefix a Prefix for XML attribute classes. + Default: MyAttributes type_prefix t Prefix for type classes. Default: MyTypes element_prefix e Prefix for element classes. @@ -145,6 +161,8 @@ wsdl2perl.pl - create perl bindings for SOAP webservices. Default: MyTypemaps interface_prefix i Prefix for interface classes. Default: MyInterfaces + server_prefix sp Prefix for server classes. + Default: MyServer base_path b Path to create classes in. Default: . typemap_include mi File to include in typemap. Must eval() to a valid diff --git a/example/cgi-bin/helloworld.pl b/example/cgi-bin/helloworld.pl old mode 100755 new mode 100644 diff --git a/example/cgi-bin/person.pl b/example/cgi-bin/person.pl old mode 100755 new mode 100644 diff --git a/lib/SOAP/WSDL.pm b/lib/SOAP/WSDL.pm index 767935d..9bcbe99 100644 --- a/lib/SOAP/WSDL.pm +++ b/lib/SOAP/WSDL.pm @@ -14,7 +14,7 @@ use Class::Std::Fast; use SOAP::WSDL::XSD::Typelib::Builtin::anySimpleType; use LWP::UserAgent; -use version; our $VERSION= qv('2.00.01'); +use version; our $VERSION= qv('2.00.02'); my %no_dispatch_of :ATTR(:name); my %wsdl_of :ATTR(:name); @@ -240,6 +240,10 @@ sub _wsdl_init_methods :PRIVATE { return $method_info_of{ $ident }; } +# on_action is a no-op and just here for compatibility reasons. +# It returns the first parameter to allow method chaining. +sub on_action { return shift }; + sub call { my ($self, $method, @data_from) = @_; my $ident = ${ $self }; @@ -555,6 +559,12 @@ SOAP message to your favorite XML editor and run the source format command. Outputting readable XML requires lots of programming for little use: The resulting XMl is still quite unreadable. +=head2 on_action + +Setting on_action is not required any more, the appropriate value is +automatically taken from the WSDL. on_action is a no-op, and is just here +for compatibility issues. + =head1 Differences to SOAP::Lite =head2 readable @@ -796,9 +806,9 @@ Martin Kutter Emartin.kutter fen-net.deE =head1 REPOSITORY INFORMATION - $Rev: 616 $ + $Rev: 672 $ $LastChangedBy: kutterma $ - $Id: WSDL.pm 616 2008-04-22 21:51:49Z kutterma $ - $HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL.pm $ + $Id: WSDL.pm 672 2008-05-16 09:37:59Z kutterma $ + $HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL.pm $ =cut diff --git a/lib/SOAP/WSDL/Base.pm b/lib/SOAP/WSDL/Base.pm index 53be628..2d6e102 100644 --- a/lib/SOAP/WSDL/Base.pm +++ b/lib/SOAP/WSDL/Base.pm @@ -5,7 +5,7 @@ use Class::Std::Fast::Storable; use List::Util qw(first); use Carp qw(croak carp confess); -use version; our $VERSION = qv('2.00.01'); +use version; our $VERSION = qv('2.00.02'); my %id_of :ATTR(:name :default<()>); my %lang_of :ATTR(:name :default<()>); @@ -24,7 +24,7 @@ sub namespaces { sub START { my ($self, $ident, $arg_ref) = @_; - $xmlns_of{ $ident }->{ '#default' } = $self->get_xmlns()->{ '#default' }; + #$xmlns_of{ $ident }->{ '#default' } = $self->get_xmlns()->{ '#default' }; $xmlns_of{ $ident }->{ 'xml' } = 'http://www.w3.org/XML/1998/namespace'; $namespaces_of{ $ident }->{ '#default' } = $self->get_xmlns()->{ '#default' }; $namespaces_of{ $ident }->{ 'xml' } = 'http://www.w3.org/XML/1998/namespace'; @@ -34,7 +34,7 @@ sub START { sub DEMOLISH { my $self = shift; # delete upward references - delete $parent_of{ ident $self }; + delete $parent_of{ ${ $self } }; return; } @@ -129,20 +129,23 @@ sub expand { my ($self, $qname) = @_; my $ns_of = $self->namespaces(); if (not $qname=~m{:}xm) { + if (defined $ns_of->{ '#default' }) { + return $self->get_targetNamespace(), $qname; + # return $ns_of->{ '#default' }, $qname; + } + if (my $parent = $self->get_parent()) { + return $parent->expand($qname); + } die "un-prefixed element name <$qname> found, but no default namespace set\n" - if not defined $ns_of->{ '#default' }; - return $ns_of->{ '#default' }, $qname; } my ($prefix, $localname) = split /:/x, $qname; - return ($ns_of->{ $prefix }, $localname) if ($ns_of->{ $prefix }); - if (my $parent = $self->get_parent()) { return $parent->expand($qname); } - confess "unbound prefix $prefix found for $prefix:$localname. Bound prefixes are" + croak "unbound prefix $prefix found for $prefix:$localname. Bound prefixes are " . join(', ', keys %{ $ns_of }); } sub _expand; diff --git a/lib/SOAP/WSDL/Binding.pm b/lib/SOAP/WSDL/Binding.pm index 26e510f..f5af5a4 100644 --- a/lib/SOAP/WSDL/Binding.pm +++ b/lib/SOAP/WSDL/Binding.pm @@ -5,7 +5,7 @@ use Class::Std::Fast::Storable; use List::Util qw(first); use base qw(SOAP::WSDL::Base); -use version; our $VERSION = qv('2.00.01'); +use version; our $VERSION = qv('2.00.02'); my %operation_of :ATTR(:name :default<()>); my %type_of :ATTR(:name :default<()>); diff --git a/lib/SOAP/WSDL/Client.pm b/lib/SOAP/WSDL/Client.pm index dd0bf51..c63b672 100644 --- a/lib/SOAP/WSDL/Client.pm +++ b/lib/SOAP/WSDL/Client.pm @@ -11,10 +11,11 @@ use SOAP::WSDL::Factory::Serializer; use SOAP::WSDL::Factory::Transport; use SOAP::WSDL::Expat::MessageParser; -use version; our $VERSION = qv('2.00.01'); +use version; our $VERSION = qv('2.00.02'); my %class_resolver_of :ATTR(:name :default<()>); my %no_dispatch_of :ATTR(:name :default<()>); +my %prefix_of :ATTR(:name :default<()>); my %outputxml_of :ATTR(:name :default<()>); my %transport_of :ATTR(:name :default<()>); my %endpoint_of :ATTR(:name :default<()>); @@ -61,7 +62,7 @@ sub set_proxy { } sub set_soap_version { - my $ident = ident shift; + my $ident = ${ $_[0] }; # remember old value to return it later - Class::Std does so, too my $soap_version = $soap_version_of{ $ident }; @@ -71,14 +72,14 @@ sub set_soap_version { delete $serializer_of{ $ident }; delete $deserializer_of{ $ident }; - $soap_version_of{ $ident } = shift; + $soap_version_of{ $ident } = $_[1]; return $soap_version; } # Mimic SOAP::Lite's behaviour for getter/setter routines SUBFACTORY: { - for (qw(class_resolver no_dispatch outputxml proxy)) { + for (qw(class_resolver no_dispatch outputxml proxy prefix)) { my $setter = "set_$_"; my $getter = "get_$_"; no strict qw(refs); ## no critic ProhibitNoStrict @@ -94,7 +95,7 @@ SUBFACTORY: { sub call { my ($self, $method, @data_from) = @_; - my $ident = ident $self; + my $ident = ${ $self }; # the only valid idiom for calling a method with both a header and a body # is @@ -124,6 +125,7 @@ sub call { method => $operation, body => $data, header => $header, + options => {prefix => $prefix_of{ $ident }}, }); return $envelope if $self->no_dispatch(); @@ -268,6 +270,39 @@ Default: text/xml; charset: utf8 +=head3 set_prefix + + $soap->set_prefix('ns2'); + +If set, alters the serialization of the request XML such that the supplied value is used as a namespace prefix for SOAP method calls. By way of example, the default XML serialization returns something like this: + + + + + + 12345 + + + + +If the sample set_prefix() call above is used prior to calling your SOAP method, the XML serialization returns this instead: + + + + + + 12345 + + + + +This is useful in cases where, for instance, one is communicating with a JAX L webservice, which tends to understand the latter but not the former. Note that this implementation is currently limited to a single additional namespace; if you require multiple custom namespaces, you should probably look into creating your own serializer. + =head2 Features different from SOAP::Lite SOAP::WSDL does not aim to be a complete replacement for SOAP::Lite - the @@ -321,7 +356,7 @@ to true. SOAP::WSDL::Client returns the complete XML response. =head3 Auto-Dispatching -SOAP::WSDL::Client does B support auto-dispatching. +SOAP::WSDL::Client B support auto-dispatching. This is on purpose: You may easily create interface classes by using SOAP::WSDL::Client and implementing something like @@ -360,10 +395,10 @@ Martin Kutter Emartin.kutter fen-net.deE =head1 REPOSITORY INFORMATION - $Rev: 616 $ + $Rev: 672 $ $LastChangedBy: kutterma $ - $Id: Client.pm 616 2008-04-22 21:51:49Z kutterma $ - $HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Client.pm $ + $Id: Client.pm 672 2008-05-16 09:37:59Z kutterma $ + $HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Client.pm $ =cut diff --git a/lib/SOAP/WSDL/Client/Base.pm b/lib/SOAP/WSDL/Client/Base.pm index 440afa4..4edf45c 100644 --- a/lib/SOAP/WSDL/Client/Base.pm +++ b/lib/SOAP/WSDL/Client/Base.pm @@ -4,7 +4,7 @@ use warnings; use base 'SOAP::WSDL::Client'; use Scalar::Util qw(blessed); -use version; our $VERSION = qv('2.00.01'); +use version; our $VERSION = qv('2.00.02'); sub call { my ($self, $method, $body, $header) = @_; @@ -78,9 +78,9 @@ Martin Kutter Emartin.kutter fen-net.deE =head1 REPOSITORY INFORMATION - $Rev: 616 $ + $Rev: 672 $ $LastChangedBy: kutterma $ - $Id: Base.pm 616 2008-04-22 21:51:49Z kutterma $ - $HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Client/Base.pm $ + $Id: Base.pm 672 2008-05-16 09:37:59Z kutterma $ + $HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Client/Base.pm $ =cut diff --git a/lib/SOAP/WSDL/Definitions.pm b/lib/SOAP/WSDL/Definitions.pm index 259bcf4..2ca5acb 100644 --- a/lib/SOAP/WSDL/Definitions.pm +++ b/lib/SOAP/WSDL/Definitions.pm @@ -9,7 +9,7 @@ use List::Util qw(first); use Class::Std::Fast::Storable; use base qw(SOAP::WSDL::Base); -use version; our $VERSION = qv('2.00.01'); +use version; our $VERSION = qv('2.00.02'); my %types_of :ATTR(:name :default<[]>); my %message_of :ATTR(:name :default<[]>); @@ -118,10 +118,10 @@ Martin Kutter Emartin.kutter fen-net.deE =head1 REPOSITORY INFORMATION - $Rev: 616 $ + $Rev: 672 $ $LastChangedBy: kutterma $ - $Id: Definitions.pm 616 2008-04-22 21:51:49Z kutterma $ - $HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Definitions.pm $ + $Id: Definitions.pm 672 2008-05-16 09:37:59Z kutterma $ + $HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Definitions.pm $ =cut diff --git a/lib/SOAP/WSDL/Deserializer/Hash.pm b/lib/SOAP/WSDL/Deserializer/Hash.pm index 9ffa831..0832ea9 100644 --- a/lib/SOAP/WSDL/Deserializer/Hash.pm +++ b/lib/SOAP/WSDL/Deserializer/Hash.pm @@ -8,7 +8,7 @@ use SOAP::WSDL::Expat::Message2Hash; use SOAP::WSDL::Factory::Deserializer; SOAP::WSDL::Factory::Deserializer->register( '1.1', __PACKAGE__ ); -use version; our $VERSION = qv('2.00.01'); +use version; our $VERSION = qv('2.00.02'); sub BUILD { my ($self, $ident, $args_of_ref) = @_; @@ -152,9 +152,9 @@ Martin Kutter Emartin.kutter fen-net.deE =head1 REPOSITORY INFORMATION - $Rev: 616 $ + $Rev: 672 $ $LastChangedBy: kutterma $ - $Id: Hash.pm 616 2008-04-22 21:51:49Z kutterma $ - $HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Deserializer/Hash.pm $ + $Id: Hash.pm 672 2008-05-16 09:37:59Z kutterma $ + $HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Deserializer/Hash.pm $ =cut diff --git a/lib/SOAP/WSDL/Deserializer/SOM.pm b/lib/SOAP/WSDL/Deserializer/SOM.pm index d9b001f..ef8d46a 100644 --- a/lib/SOAP/WSDL/Deserializer/SOM.pm +++ b/lib/SOAP/WSDL/Deserializer/SOM.pm @@ -2,7 +2,7 @@ package SOAP::WSDL::Deserializer::SOM; use strict; use warnings; -use version; our $VERSION = qv('2.00.01'); +use version; our $VERSION = qv('2.00.02'); our @ISA; eval { @@ -114,9 +114,9 @@ Martin Kutter Emartin.kutter fen-net.deE =head1 REPOSITORY INFORMATION - $Rev: 616 $ + $Rev: 672 $ $LastChangedBy: kutterma $ - $Id: SOM.pm 616 2008-04-22 21:51:49Z kutterma $ - $HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Deserializer/SOM.pm $ + $Id: SOM.pm 672 2008-05-16 09:37:59Z kutterma $ + $HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Deserializer/SOM.pm $ =cut diff --git a/lib/SOAP/WSDL/Deserializer/XSD.pm b/lib/SOAP/WSDL/Deserializer/XSD.pm index 4f07b6a..6590a37 100644 --- a/lib/SOAP/WSDL/Deserializer/XSD.pm +++ b/lib/SOAP/WSDL/Deserializer/XSD.pm @@ -5,7 +5,7 @@ use Class::Std::Fast::Storable; use SOAP::WSDL::SOAP::Typelib::Fault11; use SOAP::WSDL::Expat::MessageParser; -use version; our $VERSION = qv('2.00.01'); +use version; our $VERSION = qv('2.00.02'); my %class_resolver_of :ATTR(:name :default<()>); @@ -25,7 +25,7 @@ sub deserialize { $parser_of{ ${ $self } } = SOAP::WSDL::Expat::MessageParser->new() if not $parser_of{ ${ $self } }; - $parser_of{ ${ $self } }->class_resolver( $class_resolver_of{ ident $self } ); + $parser_of{ ${ $self } }->class_resolver( $class_resolver_of{ ${ $self } } ); eval { $parser_of{ ${ $self } }->parse_string( $content ) }; if ($@) { return $self->generate_fault({ @@ -99,9 +99,9 @@ Martin Kutter Emartin.kutter fen-net.deE =head1 REPOSITORY INFORMATION - $Rev: 616 $ + $Rev: 672 $ $LastChangedBy: kutterma $ - $Id: XSD.pm 616 2008-04-22 21:51:49Z kutterma $ - $HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Deserializer/XSD.pm $ + $Id: XSD.pm 672 2008-05-16 09:37:59Z kutterma $ + $HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Deserializer/XSD.pm $ =cut diff --git a/lib/SOAP/WSDL/Expat/Base.pm b/lib/SOAP/WSDL/Expat/Base.pm index c25481e..7265600 100644 --- a/lib/SOAP/WSDL/Expat/Base.pm +++ b/lib/SOAP/WSDL/Expat/Base.pm @@ -6,7 +6,7 @@ use XML::Parser::Expat; # TODO: convert to Class::Std::Fast based class - hash based classes suck. -use version; our $VERSION = qv('2.00.01'); +use version; our $VERSION = qv('2.00.02'); sub new { my ($class, $arg_ref) = @_; @@ -51,7 +51,7 @@ sub parse_uri { my $uri = shift; if ($self->is_parsed($uri)){ - warn "$uri already imported. Ignoring it\n"; + warn "$uri already imported; ignoring it.\n"; return; } $self->set_parsed($uri); diff --git a/lib/SOAP/WSDL/Expat/Message2Hash.pm b/lib/SOAP/WSDL/Expat/Message2Hash.pm index 6d59357..a88f49d 100644 --- a/lib/SOAP/WSDL/Expat/Message2Hash.pm +++ b/lib/SOAP/WSDL/Expat/Message2Hash.pm @@ -4,7 +4,7 @@ use strict; use warnings; use base qw(SOAP::WSDL::Expat::Base); -use version; our $VERSION = qv('2.00.01'); +use version; our $VERSION = qv('2.00.02'); sub _initialize { my ($self, $parser) = @_; diff --git a/lib/SOAP/WSDL/Expat/MessageParser.pm b/lib/SOAP/WSDL/Expat/MessageParser.pm index 52a7dbb..e4c1731 100644 --- a/lib/SOAP/WSDL/Expat/MessageParser.pm +++ b/lib/SOAP/WSDL/Expat/MessageParser.pm @@ -4,7 +4,7 @@ use strict; use warnings; use Carp qw(croak confess); -use version; our $VERSION = qv('2.00.01'); +use version; our $VERSION = qv('2.00.02'); use SOAP::WSDL::XSD::Typelib::Builtin; use SOAP::WSDL::XSD::Typelib::Builtin::anySimpleType; @@ -238,8 +238,14 @@ sub _initialize { # set appropriate attribute in last element # multiple values must be implemented in base class + # TODO check if hash access is faster # $_method = "add_$_localname"; $_method = "add_$_[1]"; + # + # fixup XML names for perl names + # + $_method =~s{\.}{__}xg; + $_method =~s{\-}{_}xg; $list->[-1]->$_method( $current ); $current = pop @$list; # step up in object hierarchy @@ -313,11 +319,11 @@ the same terms as perl itself =head1 Repository information - $Id: $ + $Id: MessageParser.pm 672 2008-05-16 09:37:59Z kutterma $ - $LastChangedDate: 2008-04-22 23:51:49 +0200 (Di, 22 Apr 2008) $ - $LastChangedRevision: 616 $ + $LastChangedDate: 2008-05-16 11:37:59 +0200 (Fr, 16 Mai 2008) $ + $LastChangedRevision: 672 $ $LastChangedBy: kutterma $ - $HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Expat/MessageParser.pm $ + $HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Expat/MessageParser.pm $ diff --git a/lib/SOAP/WSDL/Expat/MessageStreamParser.pm b/lib/SOAP/WSDL/Expat/MessageStreamParser.pm index 914bf86..2c209af 100644 --- a/lib/SOAP/WSDL/Expat/MessageStreamParser.pm +++ b/lib/SOAP/WSDL/Expat/MessageStreamParser.pm @@ -6,7 +6,7 @@ use XML::Parser::Expat; use SOAP::WSDL::Expat::MessageParser; use base qw(SOAP::WSDL::Expat::MessageParser); -use version; our $VERSION = qv('2.00.01'); +use version; our $VERSION = qv('2.00.02'); sub parse_start { my $self = shift; @@ -69,9 +69,9 @@ the same terms as perl itself =head1 REPOSITORY INFORMATION - $Rev: 616 $ + $Rev: 672 $ $LastChangedBy: kutterma $ - $Id: MessageStreamParser.pm 616 2008-04-22 21:51:49Z kutterma $ - $HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Expat/MessageStreamParser.pm $ + $Id: MessageStreamParser.pm 672 2008-05-16 09:37:59Z kutterma $ + $HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Expat/MessageStreamParser.pm $ =cut diff --git a/lib/SOAP/WSDL/Expat/WSDLParser.pm b/lib/SOAP/WSDL/Expat/WSDLParser.pm index f930e0c..18a7e18 100644 --- a/lib/SOAP/WSDL/Expat/WSDLParser.pm +++ b/lib/SOAP/WSDL/Expat/WSDLParser.pm @@ -1,38 +1,44 @@ -package SOAP::WSDL::Expat::WSDLParser; +package SOAP::WSDL::Expat::WSDLParser; use strict; use warnings; use Carp; use SOAP::WSDL::TypeLookup; use base qw(SOAP::WSDL::Expat::Base); -use version; our $VERSION = qv('2.00.01'); +use version; our $VERSION = qv('2.00.02'); sub _import_children { my ($self, $name, $imported, $importer, $import_namespace) = @_; - return if not $imported; my $targetNamespace = $importer->get_targetNamespace(); my $push_method = "push_$name"; my $get_method = "get_$name"; + my $default_namespace = $imported->get_xmlns()->{ '#default' }; + no strict qw(refs); my $value_ref = $imported->$get_method(); if ($value_ref) { - #print $self->get_uri(), "\n"; - #use Data::Dumper; - #print Data::Dumper::Dumper $value_ref; + $value_ref = [ $value_ref ] if (not ref $value_ref eq 'ARRAY'); - # set xmlns - can be different from parent + for (@{ $value_ref }) { + # fixup namespace - new parent may be from different namespace + if (defined ($default_namespace)) { + my $xmlns = $_->get_xmlns(); + # it's a hash ref, so we can just update values + if (! defined $xmlns->{ '#default'}) { + $xmlns->{ '#default' } = $default_namespace; + } + } # fixup targetNamespace, but don't override $_->set_targetNamespace( $import_namespace ) if ( ($import_namespace ne $targetNamespace) && ! $_->get_targetNamespace); # update parent... $_->set_parent( $importer ); + + # push elements into importing WSDL $importer->$push_method($_); } - # push elements into importing WSDL - #$importer->$push_method(@{ $value_ref }) - # if @{ $value_ref }; } } @@ -45,6 +51,10 @@ sub _import_namespace_definitions { # import namespace definitions, too my $importer_ns_of = $importer->get_xmlns(); my %xmlns_of = %{ $imported->get_xmlns() }; + + # it's a hash ref, we can just add to. + # TODO: check whether prefix is already taken. + # TODO: check wheter URI is the better key. while (my ($prefix, $url) = each %xmlns_of) { $importer_ns_of->{ $prefix } = $url; } @@ -56,6 +66,16 @@ sub xml_schema_import { my $parser = $self->clone(); my %attr_of = @_; my $import_namespace = $attr_of{ namespace }; + + if (not $attr_of{schemaLocation}) { + warn "cannot import document for namespace >$import_namespace< without location"; + return; + } + + if (not $self->get_uri) { + die "cannot import document from namespace >$import_namespace< without base uri. Use >parse_uri< or >set_uri< to set one." + } + my $uri = URI->new_abs($attr_of{schemaLocation}, $self->get_uri() ); my $imported = $parser->parse_uri($uri); @@ -78,6 +98,16 @@ sub wsdl_import { my $parser = $self->clone(); my %attr_of = @_; my $import_namespace = $attr_of{ namespace }; + + if (not $attr_of{location}) { + warn "cannot import document for namespace >$import_namespace< without location"; + return; + } + + if (not $self->get_uri) { + die "cannot import document from namespace >$import_namespace< without base uri. Use >parse_uri< or >set_uri< to set one." + } + my $uri = URI->new_abs($attr_of{location}, $self->get_uri() ); my $imported = $parser->parse_uri($uri); @@ -125,7 +155,7 @@ sub _initialize { croak $@ if ($@); my $obj = $action->{ class }->new({ parent => $current, - xmlns => { '#default' => $parser->namespace($localname) } + # xmlns => { '#default' => $parser->namespace($localname) } }) ->init( _fixup_attrs( $parser, %attrs ) ); @@ -221,7 +251,8 @@ sub _initialize { sub _fixup_attrs { my ($parser, %attrs_of) = @_; - my @attrs_from = map { $_ = + my @attrs_from = map { + $_ = { Name => $_, Value => $attrs_of{ $_ }, @@ -232,10 +263,10 @@ sub _fixup_attrs { # add xmlns: attrs. expat eats them. push @attrs_from, map { # ignore xmlns=FOO namespaces - must be XML schema - # Other nodes should be ignored somewhere else - ($_ eq '#default') - ? () - : +# # Other nodes should be ignored somewhere else +# ($_ eq '#default') +# ? () +# : { Name => "xmlns:$_", Value => $parser->expand_ns_prefix( $_ ), @@ -279,11 +310,11 @@ the same terms as perl itself =head1 Repository information - $Id: WSDLParser.pm 616 2008-04-22 21:51:49Z kutterma $ + $Id: WSDLParser.pm 672 2008-05-16 09:37:59Z kutterma $ - $LastChangedDate: 2008-04-22 23:51:49 +0200 (Di, 22 Apr 2008) $ - $LastChangedRevision: 616 $ + $LastChangedDate: 2008-05-16 11:37:59 +0200 (Fr, 16 Mai 2008) $ + $LastChangedRevision: 672 $ $LastChangedBy: kutterma $ - $HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Expat/WSDLParser.pm $ + $HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Expat/WSDLParser.pm $ diff --git a/lib/SOAP/WSDL/Factory/Deserializer.pm b/lib/SOAP/WSDL/Factory/Deserializer.pm index 9e859ba..8605aaf 100644 --- a/lib/SOAP/WSDL/Factory/Deserializer.pm +++ b/lib/SOAP/WSDL/Factory/Deserializer.pm @@ -2,7 +2,7 @@ package SOAP::WSDL::Factory::Deserializer; use strict; use warnings; -use version; our $VERSION = qv('2.00.01'); +use version; our $VERSION = qv('2.00.02'); my %DESERIALIZER = ( '1.1' => 'SOAP::WSDL::Deserializer::XSD', diff --git a/lib/SOAP/WSDL/Factory/Generator.pm b/lib/SOAP/WSDL/Factory/Generator.pm index 2dc79c4..b195e93 100644 --- a/lib/SOAP/WSDL/Factory/Generator.pm +++ b/lib/SOAP/WSDL/Factory/Generator.pm @@ -2,7 +2,7 @@ package SOAP::WSDL::Factory::Generator; use strict; use warnings; -use version; our $VERSION = qv('2.00.01'); +use version; our $VERSION = qv('2.00.02'); my %GENERATOR = ( 'XSD' => 'SOAP::WSDL::Generator::Template::XSD', diff --git a/lib/SOAP/WSDL/Factory/Serializer.pm b/lib/SOAP/WSDL/Factory/Serializer.pm index 5414537..5d0d5ad 100644 --- a/lib/SOAP/WSDL/Factory/Serializer.pm +++ b/lib/SOAP/WSDL/Factory/Serializer.pm @@ -2,7 +2,7 @@ package SOAP::WSDL::Factory::Serializer; use strict; use warnings; -use version; our $VERSION = qv('2.00.01'); +use version; our $VERSION = qv('2.00.02'); my %SERIALIZER = ( '1.1' => 'SOAP::WSDL::Serializer::XSD', @@ -138,9 +138,9 @@ Martin Kutter Emartin.kutter fen-net.deE =head1 REPOSITORY INFORMATION - $Rev: 616 $ + $Rev: 672 $ $LastChangedBy: kutterma $ - $Id: Serializer.pm 616 2008-04-22 21:51:49Z kutterma $ - $HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Factory/Serializer.pm $ + $Id: Serializer.pm 672 2008-05-16 09:37:59Z kutterma $ + $HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Factory/Serializer.pm $ =cut diff --git a/lib/SOAP/WSDL/Factory/Transport.pm b/lib/SOAP/WSDL/Factory/Transport.pm index 3327a93..0e4caa1 100644 --- a/lib/SOAP/WSDL/Factory/Transport.pm +++ b/lib/SOAP/WSDL/Factory/Transport.pm @@ -1,7 +1,7 @@ package SOAP::WSDL::Factory::Transport; use strict; use warnings; -use version; our $VERSION = qv('2.00.01'); +use version; our $VERSION = qv('2.00.02'); my %registered_transport_of = (); @@ -243,9 +243,9 @@ Martin Kutter Emartin.kutter fen-net.deE =head1 REPOSITORY INFORMATION - $Rev: 616 $ + $Rev: 672 $ $LastChangedBy: kutterma $ - $Id: Transport.pm 616 2008-04-22 21:51:49Z kutterma $ - $HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Factory/Transport.pm $ + $Id: Transport.pm 672 2008-05-16 09:37:59Z kutterma $ + $HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Factory/Transport.pm $ =cut diff --git a/lib/SOAP/WSDL/Generator/Iterator/WSDL11.pm b/lib/SOAP/WSDL/Generator/Iterator/WSDL11.pm index e4298c4..439b570 100644 --- a/lib/SOAP/WSDL/Generator/Iterator/WSDL11.pm +++ b/lib/SOAP/WSDL/Generator/Iterator/WSDL11.pm @@ -2,7 +2,7 @@ package SOAP::WSDL::Generator::Iterator::WSDL11; use strict; use warnings; use Class::Std::Fast; -use version; our $VERSION = qv('2.00.01'); +use version; our $VERSION = qv('2.00.02'); my %definitions_of :ATTR(:name :default<[]>); my %nodes_of :ATTR(:name :default<[]>); diff --git a/lib/SOAP/WSDL/Generator/PrefixResolver.pm b/lib/SOAP/WSDL/Generator/PrefixResolver.pm index d954899..741e039 100644 --- a/lib/SOAP/WSDL/Generator/PrefixResolver.pm +++ b/lib/SOAP/WSDL/Generator/PrefixResolver.pm @@ -3,7 +3,7 @@ use strict; use warnings; use Class::Std::Fast::Storable; -use version; our $VERSION = qv('2.00.01'); +use version; our $VERSION = qv('2.00.02'); my %namespace_prefix_map_of :ATTR(:name :default<{}>); my %namespace_map_of :ATTR(:name :default<{}>); diff --git a/lib/SOAP/WSDL/Generator/Template.pm b/lib/SOAP/WSDL/Generator/Template.pm index b257146..b2a7fa3 100644 --- a/lib/SOAP/WSDL/Generator/Template.pm +++ b/lib/SOAP/WSDL/Generator/Template.pm @@ -5,7 +5,7 @@ use Class::Std::Fast::Storable; use Carp; use SOAP::WSDL::Generator::PrefixResolver; -use version; our $VERSION = qv('2.00.01'); +use version; our $VERSION = qv('2.00.02'); my %tt_of :ATTR(:get); my %definitions_of :ATTR(:name :default<()>); diff --git a/lib/SOAP/WSDL/Generator/Template/Plugin/XSD.pm b/lib/SOAP/WSDL/Generator/Template/Plugin/XSD.pm index c893155..0f70cf2 100644 --- a/lib/SOAP/WSDL/Generator/Template/Plugin/XSD.pm +++ b/lib/SOAP/WSDL/Generator/Template/Plugin/XSD.pm @@ -4,19 +4,22 @@ use warnings; use Carp qw(confess); use Class::Std::Fast::Storable constructor => 'none'; -use version; our $VERSION = qv('2.00.01'); +use version; our $VERSION = qv('2.00.02'); my %namespace_prefix_map_of :ATTR(:name :default<{}>); my %namespace_map_of :ATTR(:name :default<{}>); my %prefix_of :ATTR(:name :default<()>); my %prefix_resolver_of :ATTR(:name :default<()>); +my %definitions_of :ATTR(:name :default<()>); + # create a singleton -sub load { # called as MyPlugin->load($context) +sub load { # called as MyPlugin->load($context) my ($class, $context, @arg_from) = @_; my $stash = $context->stash(); my $self = bless \do { my $o = Class::Std::Fast::ID() }, $class; $self->set_prefix_resolver( $stash->{ context }->{ prefix_resolver }); + $self->set_definitions( $stash->{ definitions }); return $self; # returns 'MyPlugin' } @@ -27,6 +30,7 @@ sub new { my $self = bless \do { my $o = Class::Std::Fast::ID() }, $class; $self->set_prefix_resolver( $arg_ref->{ prefix_resolver }); + $self->set_definitions( $arg_ref->{ definitions }); return $self; # returns 'MyPlugin' } @@ -47,7 +51,9 @@ sub _get_prefix { } sub create_xsd_name { - my ($self,$node) = @_; + my ($self, $node) = @_; + confess "no node $node" if not defined($node) + or $node eq ""; my $name = $self->_resolve_prefix($node) #. '::' . $node->get_name(); return $self->perl_name( $name ); @@ -84,7 +90,7 @@ sub create_interface_name { sub _resolve_prefix { my ($self, $node) = @_; - confess "no node" if not $node; + if ($node->isa('SOAP::WSDL::XSD::Builtin')) { return $self->_get_prefix('type', $node) } @@ -109,6 +115,14 @@ sub perl_name { return $name; } +sub perl_var_name { + my $self = shift; + my $name = shift; + $name =~s{\-}{_}xmsg; + $name =~s{\.}{__}xmsg; + return $name; +} + sub create_subpackage_name { my $self = shift; my $arg_ref = shift; @@ -127,6 +141,7 @@ sub create_subpackage_name { } } # create name for top node + die "FOO" if not defined $top_node; my $top_node_name = $self->create_xsd_name($top_node); my $package_name = join('::_', $top_node_name , (@name_from) ? join('::', @name_from) : () ); return $package_name; @@ -136,6 +151,22 @@ sub create_xmlattr_name { return join '::', shift->create_subpackage_name(shift), 'XmlAttr'; } +sub element_name { + my $self = shift; + my $element = shift; + + my $name = $element->get_name(); + if (! $name) { + while (my $ref = $element->get_ref()) { + $element = $self->get_definitions()->first_types() + ->find_element($element->expand( $ref ) ); + $name = $element->get_name(); + last if ($name); + } + } + return $name; +} + 1; =pod diff --git a/lib/SOAP/WSDL/Generator/Template/XSD.pm b/lib/SOAP/WSDL/Generator/Template/XSD.pm index 6ee045f..8919505 100644 --- a/lib/SOAP/WSDL/Generator/Template/XSD.pm +++ b/lib/SOAP/WSDL/Generator/Template/XSD.pm @@ -5,7 +5,7 @@ use Class::Std::Fast::Storable; use File::Basename; use File::Spec; -use version; our $VERSION = qv('2.00.01'); +use version; our $VERSION = qv('2.00.02'); use SOAP::WSDL::Generator::Visitor::Typemap; use SOAP::WSDL::Generator::Visitor::Typelib; diff --git a/lib/SOAP/WSDL/Generator/Template/XSD/Interface.tt b/lib/SOAP/WSDL/Generator/Template/XSD/Interface.tt index f60bea7..33d01dc 100644 --- a/lib/SOAP/WSDL/Generator/Template/XSD/Interface.tt +++ b/lib/SOAP/WSDL/Generator/Template/XSD/Interface.tt @@ -15,6 +15,8 @@ sub START { $_[0]->set_proxy('[% port.first_address.get_location %]') if not $_[2]->{proxy}; $_[0]->set_class_resolver('[% XSD.create_typemap_name(service) %]') if not $_[2]->{class_resolver}; + + $_[0]->set_prefix($_[2]->{use_prefix}) if exists $_[2]->{use_prefix}; } [% binding = definitions.find_binding( port.expand( port.get_binding ) ); @@ -88,4 +90,4 @@ All arguments are forwarded to L. Generated by SOAP::WSDL on [% PERL %]print scalar localtime() [% END %] -=cut \ No newline at end of file +=cut diff --git a/lib/SOAP/WSDL/Generator/Template/XSD/complexType.tt b/lib/SOAP/WSDL/Generator/Template/XSD/complexType.tt index 76b3b42..0b61dea 100644 --- a/lib/SOAP/WSDL/Generator/Template/XSD/complexType.tt +++ b/lib/SOAP/WSDL/Generator/Template/XSD/complexType.tt @@ -40,8 +40,16 @@ methods: =over [% FOREACH element = complexType.get_element -%] -=item * [% element.get_name %] +=item * [% XSD.perl_var_name(XSD.element_name(element)) %] +[% IF (XSD.perl_var_name(XSD.element_name(element)) == element.get_name); %] +[% ELSE %] +Note: The name of this property has been altered, because it didn't match +perl's notion of variable/subroutine names. The altered name is used in +perl code only, XML output uses the original name: + [% element.get_name %] + +[% END %] [% IF element.get_annotation.get_documentation; %] [% element.get_annotation.get_documentation %] [% END -%] diff --git a/lib/SOAP/WSDL/Generator/Template/XSD/complexType/POD/all.tt b/lib/SOAP/WSDL/Generator/Template/XSD/complexType/POD/all.tt index e23cedb..f8499a9 100644 --- a/lib/SOAP/WSDL/Generator/Template/XSD/complexType/POD/all.tt +++ b/lib/SOAP/WSDL/Generator/Template/XSD/complexType/POD/all.tt @@ -1,7 +1,8 @@ +[% USE XSD -%] { [%- IF complexType.get_name %] # [% XSD.create_xsd_name(complexType) %][% END %] [%- indent = indent _ ' '; FOREACH element = complexType.get_element %] -[% indent %][% element.get_name %] => [% INCLUDE element/POD/structure.tt -%] +[% indent %][% XSD.perl_var_name(XSD.element_name(element)) %] => [% INCLUDE element/POD/structure.tt -%] [% END %] [% indent.replace('\s{2}$', ''); %]} \ No newline at end of file diff --git a/lib/SOAP/WSDL/Generator/Template/XSD/complexType/POD/attributeSet.tt b/lib/SOAP/WSDL/Generator/Template/XSD/complexType/POD/attributeSet.tt index c3fc20c..22b3a1d 100644 --- a/lib/SOAP/WSDL/Generator/Template/XSD/complexType/POD/attributeSet.tt +++ b/lib/SOAP/WSDL/Generator/Template/XSD/complexType/POD/attributeSet.tt @@ -34,4 +34,7 @@ This attribute is of type L<[% XSD.create_xsd_name(type) %]|[% XSD.create_xsd_na [% END %] [%- END -%] + +=back + [% END %] diff --git a/lib/SOAP/WSDL/Generator/Template/XSD/complexType/POD/choice.tt b/lib/SOAP/WSDL/Generator/Template/XSD/complexType/POD/choice.tt index 85cf9e5..9156ae4 100644 --- a/lib/SOAP/WSDL/Generator/Template/XSD/complexType/POD/choice.tt +++ b/lib/SOAP/WSDL/Generator/Template/XSD/complexType/POD/choice.tt @@ -1,9 +1,10 @@ +[%USE XSD -%] [% indent %]{ [%- IF complexType.get_name %] # [% XSD.create_xsd_name(complexType) %][% END %] [%- indent = indent _ ' ' %] [% indent %]# One of the following elements. [% indent %]# No occurance checks yet, so be sure to pass just one... [%- FOREACH element = complexType.get_element %] -[% indent %][% element.get_name %] => [% INCLUDE element/POD/structure.tt -%] +[% indent %][% XSD.perl_var_name(XSD.element_name(element)) %] => [% INCLUDE element/POD/structure.tt -%] [% END %] [% indent.replace('\s{2}$', ''); %]} \ No newline at end of file diff --git a/lib/SOAP/WSDL/Generator/Template/XSD/complexType/all.tt b/lib/SOAP/WSDL/Generator/Template/XSD/complexType/all.tt index 9711549..593f6f3 100644 --- a/lib/SOAP/WSDL/Generator/Template/XSD/complexType/all.tt +++ b/lib/SOAP/WSDL/Generator/Template/XSD/complexType/all.tt @@ -7,26 +7,39 @@ Class::Std::initialize(); [% atomic_types = {}; -FOREACH element = complexType.get_element %] -my %[% XSD.perl_name(element.get_name) %]_of :ATTR(:get<[% XSD.perl_name(element.get_name) %]>); +FOREACH element = complexType.get_element; + name = XSD.perl_var_name(XSD.element_name(element)); %] +my %[% XSD.perl_name(name) %]_of :ATTR(:get<[% XSD.perl_name(name) %]>); [%- END %] __PACKAGE__->_factory( - [ qw([% FOREACH element = complexType.get_element %] - [% element.get_name -%] + [ qw([% FOREACH element = complexType.get_element; + + # ugly copied code - macro or plugin method? + name = XSD.perl_var_name(XSD.element_name(element)); -%] + [% name %] [% END %] ) ], { -[% FOREACH element = complexType.get_element -%] - '[% element.get_name %]' => \%[% XSD.perl_name(element.get_name) %]_of, +[% FOREACH element = complexType.get_element; + # ugly copied code - macro or plugin method? + name = XSD.perl_var_name(XSD.element_name(element)); -%] + '[% name %]' => \%[% XSD.perl_name(name) %]_of, [% END -%] }, { [% FOREACH element = complexType.get_element; + IF (ref = element.get_ref); + element = definitions.first_types.find_element(element.expand( element.get_ref )); + END; IF (type = element.get_type); - element_type = definitions.first_types.find_type(complexType.expand( type )); -%] - '[% element.get_name %]' => '[% XSD.create_xsd_name(element_type) %]', -[% ELSE; + element_type = definitions.first_types.find_type(complexType.expand( type )); + IF (! element_type); + type_name = complexType.expand( type ); + THROW NOT_FOUND, "${ type_name.0 } ${ type_name.1 } not found"; + END; -%] + '[% XSD.perl_var_name(XSD.element_name(element)) %]' => '[% XSD.create_xsd_name(element_type) %]', +[% ELSE; IF (element.first_simpleType); atomic_types.${ element.get_name } = element.first_simpleType; ELSIF (element.first_complexType); @@ -34,9 +47,14 @@ __PACKAGE__->_factory( ELSE; THROW NOT_IMPLEMENTED , "Neither simple nor complex atomic type for element ${ element.get_name } - don't know what to do with it"; END; %] - '[% element.get_name %]' => '[% XSD.create_subpackage_name({ value => element }) %]', + '[% XSD.perl_var_name(XSD.element_name(element)) %]' => '[% XSD.create_subpackage_name({ value => element }) %]', [% END; END -%] + }, + { +[% FOREACH element = complexType.get_element; %] + '[% XSD.perl_var_name(XSD.element_name(element)); %]' => '[% element.get_name %]', +[%- END %] } ); diff --git a/lib/SOAP/WSDL/Generator/Template/XSD/complexType/complexContent.tt b/lib/SOAP/WSDL/Generator/Template/XSD/complexType/complexContent.tt index da7b5f2..5bf5baf 100644 --- a/lib/SOAP/WSDL/Generator/Template/XSD/complexType/complexContent.tt +++ b/lib/SOAP/WSDL/Generator/Template/XSD/complexType/complexContent.tt @@ -1,5 +1,7 @@ [% IF (complexType.get_variety == 'restriction'); INCLUDE complexType/restriction.tt(complexType = complexType); +ELSIF (complexType.get_variety == 'extension'); + INCLUDE complexType/extension.tt(complexType = complexType); ELSIF (complexType.get_variety == 'sequence'); INCLUDE complexType/extension.tt(complexType = complexType); ELSIF (complexType.get_variety == 'all'); diff --git a/lib/SOAP/WSDL/Generator/Template/XSD/complexType/extension.tt b/lib/SOAP/WSDL/Generator/Template/XSD/complexType/extension.tt index 125529f..df3039a 100644 --- a/lib/SOAP/WSDL/Generator/Template/XSD/complexType/extension.tt +++ b/lib/SOAP/WSDL/Generator/Template/XSD/complexType/extension.tt @@ -1,28 +1,68 @@ [% +# +# extension +# +# unfortunately, SOAP::WSDL's speed tweaks don't play well with +# Class::Std's inheritance model. +# +# In Class::Std, all properties are stored in the class, and in objects +# using inheritance in the defining class. +# +# As the speed tweaks directly access the class' data without checking +# inheritance, the simplest way is to resolve complexType extension +# relationships +# +# To capture deep inheritance, extensions must be followed until a non- +# extension base is found +# +# TODO attribute handling is missing +# TODO sort out some better way to handle inheritance -base_name=complexType.expand( complexType.get_base ); +element_list = []; + +# copy complexType ref +base_type = complexType; +base_name=base_type.expand( base_type.get_base ); base_type = definitions.first_types.find_type( base_name ); -element_from = complexType.get_element; +# add a use base for first to setup inheritance +%] +use base qw([% XSD.create_xsd_name( base_type ) %]); +[% +# loop forever +WHILE (1); + # make a copy. We don't want to modify the original list here... + FOREACH element = base_type.get_element.reverse; + element_list.unshift(element); + END; + + # get next base type + IF (base_name=base_type.expand( base_type.get_base )); + # set new base_type + base_type = definitions.first_types.find_type( base_name ); + ELSE; + # exit loop if there is none + BREAK; + END; +END; # -# Sanity check: All original elements must be noted first +# and now the new elements... # -element_list = base_type.get_element; +element_from = complexType.get_element; FOREACH element = element_from; IF element_list.${ loop.index }.get_name != element.get_name; element_list.push( element ); -# THROW WSDL "${element.get_name} not found at position ${ loop.index } in extension type ${ complexType.get_name }"; END; END; +# set derived element list complexType.set_element( element_list ); --%] -use base qw([% XSD.create_xsd_name( base_type ) %]); -[% - INCLUDE complexType/variety.tt(complexType = complexType); +# restore original element list +complexType.set_element( element_from ); + %] \ No newline at end of file diff --git a/lib/SOAP/WSDL/Generator/Template/XSD/complexType/variety.tt b/lib/SOAP/WSDL/Generator/Template/XSD/complexType/variety.tt index cb255ce..27685cc 100644 --- a/lib/SOAP/WSDL/Generator/Template/XSD/complexType/variety.tt +++ b/lib/SOAP/WSDL/Generator/Template/XSD/complexType/variety.tt @@ -7,8 +7,8 @@ ELSIF (complexType.get_variety == 'group'); THROW NOT_IMPLEMENTED, "${ element.get_name } - complexType group not implemented yet"; ELSIF (complexType.get_variety == 'choice'); INCLUDE complexType/all.tt(complexType = complexType); -ELSIF (complexType.get_variety); - THROW NOT_IMPLEMENTED, "Unknown variety ${ complexType.get_variety } in ${ complexType.get_name } (${ element.get_name })"; +#ELSIF (complexType.get_variety); +# THROW NOT_IMPLEMENTED, "unknown variety ${ complexType.get_variety } in ${ complexType.get_name } (${ element.get_name })"; ELSE %] # There's no variety - empty complexType diff --git a/lib/SOAP/WSDL/Generator/Visitor.pm b/lib/SOAP/WSDL/Generator/Visitor.pm index c1673dd..e971c43 100644 --- a/lib/SOAP/WSDL/Generator/Visitor.pm +++ b/lib/SOAP/WSDL/Generator/Visitor.pm @@ -3,7 +3,7 @@ use strict; use warnings; use Class::Std::Fast::Storable; -use version; our $VERSION = qv('2.00.01'); +use version; our $VERSION = qv('2.00.02'); my %definitions_of :ATTR(:name :default<()>); my %type_prefix_of :ATTR(:name :default<()>); diff --git a/lib/SOAP/WSDL/Generator/Visitor/Typelib.pm b/lib/SOAP/WSDL/Generator/Visitor/Typelib.pm index a366bfe..5711e90 100644 --- a/lib/SOAP/WSDL/Generator/Visitor/Typelib.pm +++ b/lib/SOAP/WSDL/Generator/Visitor/Typelib.pm @@ -5,7 +5,7 @@ use base qw(SOAP::WSDL::Generator::Visitor SOAP::WSDL::Generator::Template ); -use version; our $VERSION = qv('2.00.01'); +use version; our $VERSION = qv('2.00.02'); 1; diff --git a/lib/SOAP/WSDL/Generator/Visitor/Typemap.pm b/lib/SOAP/WSDL/Generator/Visitor/Typemap.pm index 9448917..3557da7 100644 --- a/lib/SOAP/WSDL/Generator/Visitor/Typemap.pm +++ b/lib/SOAP/WSDL/Generator/Visitor/Typemap.pm @@ -5,7 +5,7 @@ use Class::Std::Fast::Storable; use base qw(SOAP::WSDL::Generator::Visitor); -use version; our $VERSION = qv('2.00.01'); +use version; our $VERSION = qv('2.00.02'); my %path_of :ATTR(:name :default<[]>); my %typemap_of :ATTR(:name :default<()>); @@ -32,11 +32,14 @@ sub add_element_path { # Well almost: Class names are not constructed in a namespace-sensitive # manner, yet - there should be some facility to allow binding a (perl) # prefix to a namespace... - push @{ $path_of{ ident $self } }, $element->get_name(); - # push @{ $path_of{ ident $self } }, - # "{". $element->get_targetNamespace . "}" - # . $element->get_name(); + if (my $ref = $element->get_ref() ) { + $element = $self->get_definitions()->first_types()->find_element( + $element->expand($ref) ); + } + my $name = $element->get_name(); + + push @{ $path_of{ ident $self } }, $name; } sub process_referenced_type { @@ -61,14 +64,6 @@ sub process_referenced_type { return $self; } -sub process_atomic_type { - my ( $self, $type, $callback ) = @_; - return if not $type; - - $callback->( $self, $type ); - return $self; -} - sub visit_XSD_Element { my ( $self, $ident, $element ) = ( $_[0], ident $_[0], $_[1] ); @@ -84,9 +79,11 @@ sub visit_XSD_Element { # They all just return if no argument is given, # and return $self on success. SWITCH: { + my $name = $element->get_name(); + if ($element->get_type) { - $self->process_referenced_type( $element->expand( $element->get_type() ) ) - && last; + $self->process_referenced_type( $element->expand( $element->get_type() ) ); + last SWITCH; } # atomic simpleType typemap rule: @@ -106,11 +103,23 @@ sub visit_XSD_Element { my $typeclass = $self->get_resolver()->create_subpackage_name($element); $self->set_typemap_entry($typeclass); - $self->process_atomic_type( $element->first_complexType() - , sub { $_[1]->_accept($_[0]) } ) - && last SWITCH; + if (my $complexType = $element->first_complexType()) { + $complexType->_accept($self); + last SWITCH; + } - # TODO: add element ref handling + # element ref handling + if (my $ref = $element->get_ref()) { + $element = $self->get_definitions()->first_types()->find_element( + $element->expand($ref) ); + # we added a path too much - we should add the path of this + # element instead. + pop @{ $path_of{$ident} }; + $element->_accept($self); + # and we must not pop it off now - thus, just return + return; + } + die "Neither type nor ref in element >". $element->get_name ."<. Don't know what to do." }; # Safety measure. If someone defines a top-level element with @@ -128,6 +137,7 @@ sub visit_XSD_Element { sub visit_XSD_ComplexType { my ($self, $ident, $type) = ($_[0], ident $_[0], $_[1] ); my $variety = $type->get_variety(); + my $derivation = $type->get_derivation(); my $content_model = $type->get_contentModel; return if not $variety; # empty complexType return if ($content_model eq 'simpleContent'); @@ -138,10 +148,16 @@ sub visit_XSD_ComplexType { for (@{ $type->get_element() || [] }) { $_->_accept( $self ); } - return; } + # Only continue for derived types + # Saves a uninitialized warning. + return if not $derivation; - if (grep { $_ eq $variety } qw(restriction extension) ) { + if ($derivation eq 'restriction' ) { + # TODO check and probably correct - this includes + # all base type's elements in a restriction derivation. + # Probably wrong. + # # resolve base / get atomic type and run on elements if (my $type_name = $type->get_base()) { my $subtype = $self->get_definitions() @@ -150,14 +166,19 @@ sub visit_XSD_ComplexType { for (@{ $subtype->get_element() || [] }) { $_->_accept( $self ); } - # that's all for restriction - return if ($variety eq 'restriction'); } } - - warn "unsupported content model $variety found in " - . "complex type " . $type->get_name() - . " - typemap may be incomplete"; + elsif ($derivation eq 'extension' ) { + # resolve base / get atomic type and run on elements + while (my $type_name = $type->get_base()) { + $type = $self->get_definitions() + ->first_types()->find_type( $type->expand($type_name) ); + # visit child elements + for (@{ $type->get_element() || [] }) { + $_->_accept( $self ); + } + } + } } 1; diff --git a/lib/SOAP/WSDL/Manual/Cookbook.pod b/lib/SOAP/WSDL/Manual/Cookbook.pod new file mode 100644 index 0000000..7329d35 --- /dev/null +++ b/lib/SOAP/WSDL/Manual/Cookbook.pod @@ -0,0 +1,133 @@ +=pod + +=head1 NAME + +SOAP::WSDL::Manual::Cookbook - SOAP::WSDL recipes + +=head2 Accessing HTTPS webservices + +You need Crypt::SSLeay installed to access HTTPS webservices. + +=head2 Accessing protected web services + +Passing a username and password, or a client certificate and key, to the +transport layer is highly dependent on the transport backend. The descriptions +below are for HTTP(S) transport usingLWP::UserAgent + +=head3 Accessing HTTP(S) webservices with basic/digest authentication + +When using SOAP::WSDL::Transport::HTTP (SOAP::Lite not installed), add a +method called "get_basic_credentials" to SOAP::WSDL::Transport::HTTP: + + *SOAP::WSDL::Transport::HTTP::get_basic_credentials = sub { + return ($user, $password); + }; + +When using SOAP::Transport::HTTP (SOAP::Lite is installed), do the same to +this backend: + + *SOAP::Transport::HTTP::Client::get_basic_credentials = sub { + return ($user, $password); + }; + +=head3 Accessing HTTP(S) webservices protected by NTLM authentication + +Besides passing user credentials as when accessing a web service protected +by basic or digest authentication, you also need to enforce connection +keep_alive on the transport backens. + +To do so, pass a I argument to the new() method of the generated +class. This unfortunately means that you have to set the endpoint URL, too: + + my $interface = MyInterfaces::SERVICE_NAME::PORT_NAME->new({ + proxy => [ $url, keep_alive => 1 ] + }); + +You may, of course, decide to just hack the generated class. Be advised that +subclassing might be a more appropriate solution - re-generating overwrites +changes in interface classes. + +=head3 Accessing HTTPS webservices protected by certificate authentication + +You need Crypt::SSLeay installed to access HTTPS webservices. + +See L on how to configure client certificate authentication. + +=head1 XML OUTPUT + +=head2 Outputting namespaces as prefixes + +Q: I need to interface with a SOAP server which doesn't accept the following +format: + + + + + 12345 + + + + +Instead, it requires this: + + + + + 12345 + + + + +How do I do this using SOAP::WSDL? + +A: The following steps are neccessary to achieve this result: + +First, you would need to write a new serializer, which is quite easy, as it +just creates the envelope and calls ->serialize_qualified() on $header and +$body to fill them in. The new serializer has to declare all namespace +prefixes used, the rest is just the same as the original XSD serializer. + +Second, you'd need to overwrite the start_tag method in +L to use +the appropriate prefixes for the body elements. + +In contrast to the original method, it would probably look up the appropriate +prefix from some data set in the serializer class, so this could be the +appropriate place to load SOAP::WSDL::XSD::Typelib::Element and override the +method. + +Something like this should do (without the handling of specialties like empty +or nil elements): + + %PREFIX_OF = { 'http://services.company.com/' => 'ns2' }; + + *SOAP::WSDL::XSD::Typelib::Element::start_tag = sub { + # use prefix instead of xmlns attribute and copy the rest from + # SOAP::WSDL::XSD::Typelib::Element::start_tag + my $prefix = $PREFIX_OF{ $_[0]->get_xmlns() }; + my $name = $_[1]->{ name } || $self->__get_name(); + return "<$prefix:$name>"; + } + +=head1 LICENSE AND COPYRIGHT + +Copyright 2008 Martin Kutter. + +This library is free software. You may distribute/modify it under +the same terms as perl itself + +=head1 AUTHOR + +Martin Kutter Emartin.kutter fen-net.deE + +=head1 REPOSITORY INFORMATION + + $Rev: 583 $ + $LastChangedBy: kutterma $ + $Id: $ + $HeadURL: $ + +=cut \ No newline at end of file diff --git a/lib/SOAP/WSDL/Manual/FAQ.pod b/lib/SOAP/WSDL/Manual/FAQ.pod new file mode 100644 index 0000000..747ac76 --- /dev/null +++ b/lib/SOAP/WSDL/Manual/FAQ.pod @@ -0,0 +1,152 @@ +=pod + +=head1 NAME + +SOAP::WSDL::Manual::FAQ - Frequently Asked Questions (and answers) + +=head1 Development status + +=head2 Can I use SOAP::WSDL in a production environment? + +Yes. SOAP::WSDL is used in production environments. You should - as always - +apply common sense and take appropriate safety measures, especially if +running SOAP::WSDL as a server. + +=head2 Can I throw the WSDL away after generating? + +Please don't. Future versions of SOAP::WSDL may require you to re-generate +interfaces in order to use them. + +=head1 SOAP/WSDL Version and message styles + +=head2 Which SOAP / WSDL versions does SOAP::WSDL support? + +SOAP1.1 and WSDL1.1. SOAP1.2 and WSDL2 are not supported yet. + +=head2 Which SOAP message Styles are supported? + +document/literal. + +The message / encoding styles rpc/encoded and rpc/literal are not supported +(rpc/literal is hardly used). + +rpc/literal is not implemented yet. + +Unfortunately, SOAP::WSDL can't even parse many rpc/encoded WSDL definitions, +and thus cannot inform you about unsupported message styles in some +situations. + +=head1 Aren't rpc variants bad anyway? + +No. They can be as well-defined and useful as the document/literal variant. + +The difference between rpc and document is that rpc SOAP messages have an +additional container named after the remote procedure called. + +rpc/literal is RPC with named parameters, whereas rpc/encoded corresponds to +positional parameters. + +rpc/encoded is prohibited by the WS-I Basic Profile. However, rpc/encoded +is still popular, especially for scripting languages like perl, python or php. + +You should probably use L for rpc/encoded web services. + +All the document/rpc literal/encoded discussion will cede with WSDL2.0: These +variants are dropped in favour of an extensible operation style mechanism. + +=head1 XML Parsing / Generation + +=head2 Does SOAP::WSDL support namespaces? + +Well, sort of. SOAP::WSDL can use WSDL definitions containing namespaces, +and emits SOAP messages with namespace information. + +Its SOAP message parser however, is not namespace sensitive but uses the +pre-shared information from the WSDL for looking up what each XML node means. + +SOAP::WSDL can parse SOAP messages including namespace informations up to the +point where equally named elements from different namespaces may appear at +the same position. + +This is a long-standing feature request and will eventually be resolved. + +=head2 Validation + +=head3 Does SOAP::WSDL perform XML Schema Validation? + +No, SOAP::WSDL does not perform XML Schema Validation. It does, however, +enforce the correct structure on both XML and perl data. Occurrence, ordering, +value-spaces, and identity constraints are not checked. + +=head3 Does SOAP::WSDL perform XML Validation? + +No, SOAP::WSDL does not perform XML Validation (that is, validation against +a DTD). WS-I prohibits the use of DTDs in WSDL definitions. + +=head3 Isn't validation required for XML? + +No. The XML Specification does not require validation from XML processors. +It states how validating and non-validating parsers must react on errors. + +Note: Validation in the context of (only) XML actually means DTD validation. + +=head3 And doesn't XML Schema require validation? + +The XML Schema specification requires conformant XML Schema processors to +be able to validate XML Schema constraints. + +SOAP::WSDL is not a conformant XML Schema processor in this sense, as it does +not validate all XML Schema constraints. + +=head3 And does SOAP require XML Schema Validation? + +No. The SOAP1.1 note does not say anything about validation. The SOAP1.2. +specification explicitly states that XML Schema validation is not required +for the SOAP envelope, and that applications may decide whether they need +XML Schema Validation for the SOAP payload or not. + +The WSDL 1.1. specification does not mandate XML Schema validation. It does +actually not even mandate the use of XML Schema for type definitions. + +=head2 Can SOAP::WSDL parse SOAP message fragments? + +No. SOAP::WSDL can parse neither well-formed nor not-well-formed +SOAP message chunks. + + +=head1 Persistence + +=head2 Can I use Storable to freeze/thaw SOAP::WSDL's objects? + +You can freeze almost all of SOAP::WSDL's objects. The only exceptions are +the objects used in parsing WSDL definitions itself - they cannot be frozen. + +Note that freezing/thawing inside-out objects comes with a performance penalty +and is at around the speed of XML generation/parsing. + +=head1 Performance and memory consumption + +=head2 How fast is SOAP::WSDL? + +As of this writing, SOAP::WSDL is the fastest SOAP Client toolkit for perl +available on CPAN. There are no published server benchmarks yet. + +If you need extra speed you can try SOAP::WSDL_XS available +from SOAP::WSDL's subversion repository at: + +https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL_XS/trunk + +Note however that SOAP::WSDL_XS is not very mature yet and only suitable for +use in trusted environments - you definitely should not use it on a public +internet SOAP server yet. + +Note further that SOAP::WSDL's inside-out objects come with a big performance +penalty when freezing/thawing them with Storable. + +=head2 There's a lot of perl modules generated. Don't they eat up all my +memory? + +SOAP::WSDL usually uses a bit more memory than SOAP::Lite, but less than +XML::Compile. Test if in question. + +=cut diff --git a/lib/SOAP/WSDL/Manual/Glossary.pod b/lib/SOAP/WSDL/Manual/Glossary.pod index 0a88b23..b7cdefb 100644 --- a/lib/SOAP/WSDL/Manual/Glossary.pod +++ b/lib/SOAP/WSDL/Manual/Glossary.pod @@ -93,7 +93,7 @@ Martin Kutter Emartin.kutter fen-net.deE $Rev: 391 $ $LastChangedBy: kutterma $ $Id: Glossary.pod 391 2007-11-17 21:56:13Z kutterma $ - $HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Manual/Glossary.pod $ + $HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Manual/Glossary.pod $ =cut diff --git a/lib/SOAP/WSDL/Manual/Parser.pod b/lib/SOAP/WSDL/Manual/Parser.pod index 82b8915..4bace0d 100644 --- a/lib/SOAP/WSDL/Manual/Parser.pod +++ b/lib/SOAP/WSDL/Manual/Parser.pod @@ -241,7 +241,7 @@ Martin Kutter Emartin.kutter fen-net.deE $Rev: 391 $ $LastChangedBy: kutterma $ $Id: Parser.pod 391 2007-11-17 21:56:13Z kutterma $ - $HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Manual/Parser.pod $ + $HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Manual/Parser.pod $ =cut diff --git a/lib/SOAP/WSDL/Manual/WS_I.pod b/lib/SOAP/WSDL/Manual/WS_I.pod index cdd31f5..afc17cc 100644 --- a/lib/SOAP/WSDL/Manual/WS_I.pod +++ b/lib/SOAP/WSDL/Manual/WS_I.pod @@ -1255,7 +1255,7 @@ Martin Kutter Emartin.kutter fen-net.deE $Rev: 562 $ $LastChangedBy: kutterma $ $Id: WS_I.pod 562 2008-02-22 20:32:17Z kutterma $ - $HeadURL: http://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Manual/WS_I.pod $ + $HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Manual/WS_I.pod $ =cut diff --git a/lib/SOAP/WSDL/Message.pm b/lib/SOAP/WSDL/Message.pm index fcab1b7..802a228 100644 --- a/lib/SOAP/WSDL/Message.pm +++ b/lib/SOAP/WSDL/Message.pm @@ -4,7 +4,7 @@ use warnings; use Class::Std::Fast::Storable; use base qw(SOAP::WSDL::Base); -use version; our $VERSION = qv('2.00.01'); +use version; our $VERSION = qv('2.00.02'); my %part_of :ATTR(:name :default<[]>); diff --git a/lib/SOAP/WSDL/OpMessage.pm b/lib/SOAP/WSDL/OpMessage.pm index 8005d3c..b5a4006 100644 --- a/lib/SOAP/WSDL/OpMessage.pm +++ b/lib/SOAP/WSDL/OpMessage.pm @@ -4,7 +4,7 @@ use warnings; use Class::Std::Fast::Storable; use base qw(SOAP::WSDL::Base); -use version; our $VERSION = qv('2.00.01'); +use version; our $VERSION = qv('2.00.02'); my %body_of :ATTR(:name :default<[]>); my %header_of :ATTR(:name

:default<[]>); diff --git a/lib/SOAP/WSDL/Operation.pm b/lib/SOAP/WSDL/Operation.pm index 047f10e..c45ebce 100644 --- a/lib/SOAP/WSDL/Operation.pm +++ b/lib/SOAP/WSDL/Operation.pm @@ -4,7 +4,7 @@ use warnings; use Class::Std::Fast::Storable; use base qw(SOAP::WSDL::Base); -use version; our $VERSION = qv('2.00.01'); +use version; our $VERSION = qv('2.00.02'); my %operation_of :ATTR(:name :default<()>); my %input_of :ATTR(:name :default<[]>); diff --git a/lib/SOAP/WSDL/Part.pm b/lib/SOAP/WSDL/Part.pm index ce639b5..d65c917 100644 --- a/lib/SOAP/WSDL/Part.pm +++ b/lib/SOAP/WSDL/Part.pm @@ -6,7 +6,7 @@ use Class::Std::Fast::Storable; use base qw(SOAP::WSDL::Base); -use version; our $VERSION = qv('2.00.01'); +use version; our $VERSION = qv('2.00.02'); my %element_of :ATTR(:name :default<()>); my %type_of :ATTR(:name :default<()>); diff --git a/lib/SOAP/WSDL/Port.pm b/lib/SOAP/WSDL/Port.pm index 680f2e1..c8d255f 100644 --- a/lib/SOAP/WSDL/Port.pm +++ b/lib/SOAP/WSDL/Port.pm @@ -4,7 +4,7 @@ use warnings; use Class::Std::Fast::Storable; use base qw(SOAP::WSDL::Base); -use version; our $VERSION = qv('2.00.01'); +use version; our $VERSION = qv('2.00.02'); my %binding_of :ATTR(:name :default<()>); my %address_of :ATTR(:name
:default<()>); diff --git a/lib/SOAP/WSDL/PortType.pm b/lib/SOAP/WSDL/PortType.pm index 130e93b..fd5d41a 100644 --- a/lib/SOAP/WSDL/PortType.pm +++ b/lib/SOAP/WSDL/PortType.pm @@ -4,7 +4,7 @@ use warnings; use Class::Std::Fast::Storable; use base qw(SOAP::WSDL::Base); -use version; our $VERSION = qv('2.00.01'); +use version; our $VERSION = qv('2.00.02'); my %operation_of :ATTR(:name :default<()>); diff --git a/lib/SOAP/WSDL/SOAP/Address.pm b/lib/SOAP/WSDL/SOAP/Address.pm index e739a00..b1ddb7d 100644 --- a/lib/SOAP/WSDL/SOAP/Address.pm +++ b/lib/SOAP/WSDL/SOAP/Address.pm @@ -4,7 +4,7 @@ use warnings; use base qw(SOAP::WSDL::Base); use Class::Std::Fast::Storable; -use version; our $VERSION = qv('2.00.01'); +use version; our $VERSION = qv('2.00.02'); my %location :ATTR(:name :default<()>); 1; \ No newline at end of file diff --git a/lib/SOAP/WSDL/SOAP/Body.pm b/lib/SOAP/WSDL/SOAP/Body.pm index 4ce691a..36ca918 100644 --- a/lib/SOAP/WSDL/SOAP/Body.pm +++ b/lib/SOAP/WSDL/SOAP/Body.pm @@ -4,7 +4,7 @@ use warnings; use base qw(SOAP::WSDL::Base); use Class::Std::Fast::Storable; -use version; our $VERSION = qv('2.00.01'); +use version; our $VERSION = qv('2.00.02'); my %use_of :ATTR(:name :default); my %namespace_of :ATTR(:name :default); diff --git a/lib/SOAP/WSDL/SOAP/Header.pm b/lib/SOAP/WSDL/SOAP/Header.pm index 52f9e06..4e39cae 100644 --- a/lib/SOAP/WSDL/SOAP/Header.pm +++ b/lib/SOAP/WSDL/SOAP/Header.pm @@ -4,7 +4,7 @@ use warnings; use base qw(SOAP::WSDL::Base); use Class::Std::Fast::Storable; -use version; our $VERSION = qv('2.00.01'); +use version; our $VERSION = qv('2.00.02'); my %use_of :ATTR(:name :default); my %namespace_of :ATTR(:name :default); diff --git a/lib/SOAP/WSDL/SOAP/HeaderFault.pm b/lib/SOAP/WSDL/SOAP/HeaderFault.pm index 6a59bf2..dd54dca 100644 --- a/lib/SOAP/WSDL/SOAP/HeaderFault.pm +++ b/lib/SOAP/WSDL/SOAP/HeaderFault.pm @@ -3,6 +3,6 @@ use strict; use warnings; use base qw(SOAP::WSDL::Header); -use version; our $VERSION = qv('2.00.01'); +use version; our $VERSION = qv('2.00.02'); 1; \ No newline at end of file diff --git a/lib/SOAP/WSDL/SOAP/Operation.pm b/lib/SOAP/WSDL/SOAP/Operation.pm index 49b4d96..727cc66 100644 --- a/lib/SOAP/WSDL/SOAP/Operation.pm +++ b/lib/SOAP/WSDL/SOAP/Operation.pm @@ -4,7 +4,7 @@ use warnings; use Class::Std::Fast::Storable; use base qw(SOAP::WSDL::Base); -use version; our $VERSION = qv('2.00.01'); +use version; our $VERSION = qv('2.00.02'); my %style_of :ATTR(:name