Removed "old-style" tests for encoder and mailbox. Added new test for encoder.

This commit is contained in:
Vincent Richard 2004-11-06 17:48:56 +00:00
parent 418c0c1456
commit f9ae360def
35 changed files with 191 additions and 8124 deletions

View File

@ -188,43 +188,6 @@ libvmime_tests = [
'tests/charset/test-suites/gnu.in.utf-8', 'tests/charset/test-suites/gnu.in.utf-8',
'tests/charset/test-suites/gnu.out.iso-8859-1', 'tests/charset/test-suites/gnu.out.iso-8859-1',
# encoding
'tests/encoding/Makefile',
'tests/encoding/main.cpp',
'tests/encoding/run-test.sh',
'tests/encoding/test-suites/encode/1byte',
'tests/encoding/test-suites/encode/1byte.base64',
'tests/encoding/test-suites/encode/2bytes',
'tests/encoding/test-suites/encode/2bytes.base64',
'tests/encoding/test-suites/encode/3bytes',
'tests/encoding/test-suites/encode/3bytes.base64',
'tests/encoding/test-suites/encode/empty',
'tests/encoding/test-suites/encode/empty.base64',
'tests/encoding/test-suites/encode/empty.quoted-printable',
'tests/encoding/test-suites/encode/gpl',
'tests/encoding/test-suites/encode/gpl.base64',
'tests/encoding/test-suites/encode/gpl.quoted-printable',
'tests/encoding/test-suites/encode/gpl.uuencode',
'tests/encoding/test-suites/encode/ls',
'tests/encoding/test-suites/encode/ls.base64',
'tests/encoding/test-suites/encode/ls.quoted-printable',
'tests/encoding/test-suites/encode/ls.uuencode',
'tests/encoding/test-suites/encode/simple',
'tests/encoding/test-suites/encode/simple.base64',
'tests/encoding/test-suites/encode/simple.quoted-printable',
'tests/encoding/test-suites/encode/simple.uuencode',
'tests/encoding/test-suites/decode/ls',
'tests/encoding/test-suites/decode/ls.base64',
# mailbox
'tests/mailbox/Makefile',
'tests/mailbox/main.cpp',
'tests/mailbox/run-test.sh',
'tests/mailbox/test-suites/test1.in',
'tests/mailbox/test-suites/test1.out',
'tests/mailbox/test-suites/test2.in',
'tests/mailbox/test-suites/test2.out',
# main # main
'tests/Makefile', 'tests/Makefile',
'tests/run-tests.sh' 'tests/run-tests.sh'
@ -271,6 +234,7 @@ libvmimetest_common = [
] ]
libvmimetest_sources = [ libvmimetest_sources = [
[ 'tests/parser/encoderTest', [ 'tests/parser/encoderTest.cpp' ] ],
[ 'tests/parser/headerTest', [ 'tests/parser/headerTest.cpp' ] ], [ 'tests/parser/headerTest', [ 'tests/parser/headerTest.cpp' ] ],
[ 'tests/parser/mailboxTest', [ 'tests/parser/mailboxTest.cpp' ] ], [ 'tests/parser/mailboxTest', [ 'tests/parser/mailboxTest.cpp' ] ],
[ 'tests/parser/textTest', [ 'tests/parser/textTest.cpp' ] ] [ 'tests/parser/textTest', [ 'tests/parser/textTest.cpp' ] ]

View File

@ -1,5 +0,0 @@
main: main.cpp ../../libvmime-debug.a
g++ -g -o main main.cpp ../../libvmime-debug.a

View File

@ -1,49 +0,0 @@
//
// VMime library (http://vmime.sourceforge.net)
// Copyright (C) 2002-2004 Vincent Richard <vincent@vincent-richard.net>
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as
// published by the Free Software Foundation; either version 2 of
// the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//
#include <iostream>
#include <ostream>
#include "../../src/vmime"
#include "../../examples/common.inc"
int main(int argc, char* argv[])
{
// VMime initialization
vmime::platformDependant::setHandler<my_handler>();
const vmime::string encoding(argv[1]);
const vmime::string mode(argv[2]);
vmime::encoder* p = vmime::encoderFactory::getInstance()->create(encoding);
p->getProperties()["maxlinelength"] = 76;
vmime::utility::inputStreamAdapter in(std::cin);
vmime::utility::outputStreamAdapter out(std::cout);
if (mode == "e")
p->encode(in, out);
else
p->decode(in, out);
delete (p);
}

View File

@ -1,118 +0,0 @@
#/bin/sh
TEST_DIR="./test-suites"
TEMP_DIR="/tmp"
ENCODINGS="base64 quoted-printable uuencode"
PROGRAM="./main"
for encoding in $ENCODINGS ; do
echo
echo Testing encoding \'$encoding\'
echo =====================================================================
############
# Encode #
############
echo ENCODE
testFiles=`cd $TEST_DIR/encode ; find . -regex '\./[^\.]*' -maxdepth 1 -type f | tr -d ./`
for testFile in $testFiles ; do
if [ -e $TEST_DIR/encode/$testFile.$encoding ]
then
printf %20s "$testFile : "
$PROGRAM $encoding e < $TEST_DIR/encode/$testFile > $TEMP_DIR/vmime_result
diff="diff $TEMP_DIR/vmime_result $TEST_DIR/encode/$testFile.$encoding"
res=`$diff`
if [ "$res" = "" ]
then
echo "[OK]"
else
diffFile=$TEMP_DIR/vmime.encode.$encoding.$testFile.diff
echo "[NO: diff file is $diffFile]"
$diff > $diffFile
fi
fi
done
############
# Decode #
############
echo DECODE [1/2]
for testFile in $testFiles ; do
if [ -e $TEST_DIR/encode/$testFile.$encoding ]
then
printf %20s "$testFile : "
$PROGRAM $encoding d < $TEST_DIR/encode/$testFile.$encoding > $TEMP_DIR/vmime_result
diff="diff $TEMP_DIR/vmime_result $TEST_DIR/encode/$testFile"
res=`$diff`
if [ "$res" = "" ]
then
echo "[OK]"
else
diffFile=$TEMP_DIR/vmime.decode.$encoding.$testFile.diff
echo "[NO: diff file is $diffFile]"
$diff > $diffFile
fi
fi
done
###########################################
# Decode from data not encoded by VMime #
###########################################
echo DECODE [2/2]
testFiles=`cd $TEST_DIR/decode ; find . -regex '\./[^\.]*' -maxdepth 1 -type f | tr -d ./`
for testFile in $testFiles ; do
if [ -e $TEST_DIR/decode/$testFile.$encoding ]
then
printf %20s "$testFile : "
$PROGRAM $encoding d < $TEST_DIR/decode/$testFile.$encoding > $TEMP_DIR/vmime_result
diff="diff $TEMP_DIR/vmime_result $TEST_DIR/decode/$testFile"
res=`$diff`
if [ "$res" = "" ]
then
echo "[OK]"
else
diffFile=$TEMP_DIR/vmime.decode2.$encoding.$testFile.diff
echo "[NO: diff file is $diffFile]"
$diff > $diffFile
fi
fi
done
done
echo

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -1 +0,0 @@
A

View File

@ -1 +0,0 @@
QQo=

View File

@ -1 +0,0 @@
AB

View File

@ -1 +0,0 @@
QUIK

View File

@ -1 +0,0 @@
ABC

View File

@ -1 +0,0 @@
QUJDCg==

View File

@ -1,140 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too.
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.
Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and modification follow.
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.
You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
* a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
* b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
* c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:
* a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
* b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
* c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.
10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.
one line to give the program's name and an idea of what it does.
Copyright (C) yyyy name of author
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
type `show w'. This is free software, and you are welcome
to redistribute it under certain conditions; type `show c'
for details.
The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright
interest in the program `Gnomovision'
(which makes passes at compilers) written
by James Hacker.
signature of Ty Coon, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License.

View File

@ -1,311 +0,0 @@
R05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKClZlcnNpb24gMiwgSnVuZSAxOTkxCgpDb3B5cmln
aHQgKEMpIDE5ODksIDE5OTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAKNTkgVGVt
cGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3LCBVU0EKCkV2ZXJ5
b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcwpv
ZiB0aGlzIGxpY2Vuc2UgZG9jdW1lbnQsIGJ1dCBjaGFuZ2luZyBpdCBpcyBub3QgYWxsb3dlZC4K
ClByZWFtYmxlCgpUaGUgbGljZW5zZXMgZm9yIG1vc3Qgc29mdHdhcmUgYXJlIGRlc2lnbmVkIHRv
IHRha2UgYXdheSB5b3VyIGZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSBpdC4gQnkgY29udHJh
c3QsIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBpbnRlbmRlZCB0byBndWFyYW50
ZWUgeW91ciBmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgZnJlZSBzb2Z0d2FyZS0tdG8gbWFr
ZSBzdXJlIHRoZSBzb2Z0d2FyZSBpcyBmcmVlIGZvciBhbGwgaXRzIHVzZXJzLiBUaGlzIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgYXBwbGllcyB0byBtb3N0IG9mIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24ncyBzb2Z0d2FyZSBhbmQgdG8gYW55IG90aGVyIHByb2dyYW0gd2hvc2UgYXV0aG9y
cyBjb21taXQgdG8gdXNpbmcgaXQuIChTb21lIG90aGVyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biBzb2Z0d2FyZSBpcyBjb3ZlcmVkIGJ5IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGluc3RlYWQuKSBZb3UgY2FuIGFwcGx5IGl0IHRvIHlvdXIgcHJvZ3JhbXMsIHRvby4K
CldoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVl
ZG9tLCBub3QgcHJpY2UuIE91ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlcyBhcmUgZGVzaWduZWQg
dG8gbWFrZSBzdXJlIHRoYXQgeW91IGhhdmUgdGhlIGZyZWVkb20gdG8gZGlzdHJpYnV0ZSBjb3Bp
ZXMgb2YgZnJlZSBzb2Z0d2FyZSAoYW5kIGNoYXJnZSBmb3IgdGhpcyBzZXJ2aWNlIGlmIHlvdSB3
aXNoKSwgdGhhdCB5b3UgcmVjZWl2ZSBzb3VyY2UgY29kZSBvciBjYW4gZ2V0IGl0IGlmIHlvdSB3
YW50IGl0LCB0aGF0IHlvdSBjYW4gY2hhbmdlIHRoZSBzb2Z0d2FyZSBvciB1c2UgcGllY2VzIG9m
IGl0IGluIG5ldyBmcmVlIHByb2dyYW1zOyBhbmQgdGhhdCB5b3Uga25vdyB5b3UgY2FuIGRvIHRo
ZXNlIHRoaW5ncy4KClRvIHByb3RlY3QgeW91ciByaWdodHMsIHdlIG5lZWQgdG8gbWFrZSByZXN0
cmljdGlvbnMgdGhhdCBmb3JiaWQgYW55b25lIHRvIGRlbnkgeW91IHRoZXNlIHJpZ2h0cyBvciB0
byBhc2sgeW91IHRvIHN1cnJlbmRlciB0aGUgcmlnaHRzLiBUaGVzZSByZXN0cmljdGlvbnMgdHJh
bnNsYXRlIHRvIGNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBmb3IgeW91IGlmIHlvdSBkaXN0cmli
dXRlIGNvcGllcyBvZiB0aGUgc29mdHdhcmUsIG9yIGlmIHlvdSBtb2RpZnkgaXQuCgpGb3IgZXhh
bXBsZSwgaWYgeW91IGRpc3RyaWJ1dGUgY29waWVzIG9mIHN1Y2ggYSBwcm9ncmFtLCB3aGV0aGVy
IGdyYXRpcyBvciBmb3IgYSBmZWUsIHlvdSBtdXN0IGdpdmUgdGhlIHJlY2lwaWVudHMgYWxsIHRo
ZSByaWdodHMgdGhhdCB5b3UgaGF2ZS4gWW91IG11c3QgbWFrZSBzdXJlIHRoYXQgdGhleSwgdG9v
LCByZWNlaXZlIG9yIGNhbiBnZXQgdGhlIHNvdXJjZSBjb2RlLiBBbmQgeW91IG11c3Qgc2hvdyB0
aGVtIHRoZXNlIHRlcm1zIHNvIHRoZXkga25vdyB0aGVpciByaWdodHMuCgpXZSBwcm90ZWN0IHlv
dXIgcmlnaHRzIHdpdGggdHdvIHN0ZXBzOiAoMSkgY29weXJpZ2h0IHRoZSBzb2Z0d2FyZSwgYW5k
ICgyKSBvZmZlciB5b3UgdGhpcyBsaWNlbnNlIHdoaWNoIGdpdmVzIHlvdSBsZWdhbCBwZXJtaXNz
aW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGUgc29mdHdhcmUuCgpBbHNv
LCBmb3IgZWFjaCBhdXRob3IncyBwcm90ZWN0aW9uIGFuZCBvdXJzLCB3ZSB3YW50IHRvIG1ha2Ug
Y2VydGFpbiB0aGF0IGV2ZXJ5b25lIHVuZGVyc3RhbmRzIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFu
dHkgZm9yIHRoaXMgZnJlZSBzb2Z0d2FyZS4gSWYgdGhlIHNvZnR3YXJlIGlzIG1vZGlmaWVkIGJ5
IHNvbWVvbmUgZWxzZSBhbmQgcGFzc2VkIG9uLCB3ZSB3YW50IGl0cyByZWNpcGllbnRzIHRvIGtu
b3cgdGhhdCB3aGF0IHRoZXkgaGF2ZSBpcyBub3QgdGhlIG9yaWdpbmFsLCBzbyB0aGF0IGFueSBw
cm9ibGVtcyBpbnRyb2R1Y2VkIGJ5IG90aGVycyB3aWxsIG5vdCByZWZsZWN0IG9uIHRoZSBvcmln
aW5hbCBhdXRob3JzJyByZXB1dGF0aW9ucy4KCkZpbmFsbHksIGFueSBmcmVlIHByb2dyYW0gaXMg
dGhyZWF0ZW5lZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlIHBhdGVudHMuIFdlIHdpc2ggdG8gYXZv
aWQgdGhlIGRhbmdlciB0aGF0IHJlZGlzdHJpYnV0b3JzIG9mIGEgZnJlZSBwcm9ncmFtIHdpbGwg
aW5kaXZpZHVhbGx5IG9idGFpbiBwYXRlbnQgbGljZW5zZXMsIGluIGVmZmVjdCBtYWtpbmcgdGhl
IHByb2dyYW0gcHJvcHJpZXRhcnkuIFRvIHByZXZlbnQgdGhpcywgd2UgaGF2ZSBtYWRlIGl0IGNs
ZWFyIHRoYXQgYW55IHBhdGVudCBtdXN0IGJlIGxpY2Vuc2VkIGZvciBldmVyeW9uZSdzIGZyZWUg
dXNlIG9yIG5vdCBsaWNlbnNlZCBhdCBhbGwuCgpUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0
aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZCBtb2RpZmljYXRpb24gZm9sbG93LgoK
VEVSTVMgQU5EIENPTkRJVElPTlMgRk9SIENPUFlJTkcsIERJU1RSSUJVVElPTiBBTkQgTU9ESUZJ
Q0FUSU9OCgowLiBUaGlzIExpY2Vuc2UgYXBwbGllcyB0byBhbnkgcHJvZ3JhbSBvciBvdGhlciB3
b3JrIHdoaWNoIGNvbnRhaW5zIGEgbm90aWNlIHBsYWNlZCBieSB0aGUgY29weXJpZ2h0IGhvbGRl
ciBzYXlpbmcgaXQgbWF5IGJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UuIFRoZSAiUHJvZ3JhbSIsIGJlbG93LCByZWZlcnMgdG8gYW55
IHN1Y2ggcHJvZ3JhbSBvciB3b3JrLCBhbmQgYSAid29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSIg
bWVhbnMgZWl0aGVyIHRoZSBQcm9ncmFtIG9yIGFueSBkZXJpdmF0aXZlIHdvcmsgdW5kZXIgY29w
eXJpZ2h0IGxhdzogdGhhdCBpcyB0byBzYXksIGEgd29yayBjb250YWluaW5nIHRoZSBQcm9ncmFt
IG9yIGEgcG9ydGlvbiBvZiBpdCwgZWl0aGVyIHZlcmJhdGltIG9yIHdpdGggbW9kaWZpY2F0aW9u
cyBhbmQvb3IgdHJhbnNsYXRlZCBpbnRvIGFub3RoZXIgbGFuZ3VhZ2UuIChIZXJlaW5hZnRlciwg
dHJhbnNsYXRpb24gaXMgaW5jbHVkZWQgd2l0aG91dCBsaW1pdGF0aW9uIGluIHRoZSB0ZXJtICJt
b2RpZmljYXRpb24iLikgRWFjaCBsaWNlbnNlZSBpcyBhZGRyZXNzZWQgYXMgInlvdSIuCgpBY3Rp
dml0aWVzIG90aGVyIHRoYW4gY29weWluZywgZGlzdHJpYnV0aW9uIGFuZCBtb2RpZmljYXRpb24g
YXJlIG5vdCBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZTsgdGhleSBhcmUgb3V0c2lkZSBpdHMgc2Nv
cGUuIFRoZSBhY3Qgb2YgcnVubmluZyB0aGUgUHJvZ3JhbSBpcyBub3QgcmVzdHJpY3RlZCwgYW5k
IHRoZSBvdXRwdXQgZnJvbSB0aGUgUHJvZ3JhbSBpcyBjb3ZlcmVkIG9ubHkgaWYgaXRzIGNvbnRl
bnRzIGNvbnN0aXR1dGUgYSB3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtIChpbmRlcGVuZGVudCBv
ZiBoYXZpbmcgYmVlbiBtYWRlIGJ5IHJ1bm5pbmcgdGhlIFByb2dyYW0pLiBXaGV0aGVyIHRoYXQg
aXMgdHJ1ZSBkZXBlbmRzIG9uIHdoYXQgdGhlIFByb2dyYW0gZG9lcy4KCjEuIFlvdSBtYXkgY29w
eSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMgb2YgdGhlIFByb2dyYW0ncyBzb3VyY2Ug
Y29kZSBhcyB5b3UgcmVjZWl2ZSBpdCwgaW4gYW55IG1lZGl1bSwgcHJvdmlkZWQgdGhhdCB5b3Ug
Y29uc3BpY3VvdXNseSBhbmQgYXBwcm9wcmlhdGVseSBwdWJsaXNoIG9uIGVhY2ggY29weSBhbiBh
cHByb3ByaWF0ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCBkaXNjbGFpbWVyIG9mIHdhcnJhbnR5OyBr
ZWVwIGludGFjdCBhbGwgdGhlIG5vdGljZXMgdGhhdCByZWZlciB0byB0aGlzIExpY2Vuc2UgYW5k
IHRvIHRoZSBhYnNlbmNlIG9mIGFueSB3YXJyYW50eTsgYW5kIGdpdmUgYW55IG90aGVyIHJlY2lw
aWVudHMgb2YgdGhlIFByb2dyYW0gYSBjb3B5IG9mIHRoaXMgTGljZW5zZSBhbG9uZyB3aXRoIHRo
ZSBQcm9ncmFtLgoKWW91IG1heSBjaGFyZ2UgYSBmZWUgZm9yIHRoZSBwaHlzaWNhbCBhY3Qgb2Yg
dHJhbnNmZXJyaW5nIGEgY29weSwgYW5kIHlvdSBtYXkgYXQgeW91ciBvcHRpb24gb2ZmZXIgd2Fy
cmFudHkgcHJvdGVjdGlvbiBpbiBleGNoYW5nZSBmb3IgYSBmZWUuCgoyLiBZb3UgbWF5IG1vZGlm
eSB5b3VyIGNvcHkgb3IgY29waWVzIG9mIHRoZSBQcm9ncmFtIG9yIGFueSBwb3J0aW9uIG9mIGl0
LCB0aHVzIGZvcm1pbmcgYSB3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtLCBhbmQgY29weSBhbmQg
ZGlzdHJpYnV0ZSBzdWNoIG1vZGlmaWNhdGlvbnMgb3Igd29yayB1bmRlciB0aGUgdGVybXMgb2Yg
U2VjdGlvbiAxIGFib3ZlLCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIG1lZXQgYWxsIG9mIHRoZXNl
IGNvbmRpdGlvbnM6CgogICAgKiBhKSBZb3UgbXVzdCBjYXVzZSB0aGUgbW9kaWZpZWQgZmlsZXMg
dG8gY2FycnkgcHJvbWluZW50IG5vdGljZXMgc3RhdGluZyB0aGF0IHlvdSBjaGFuZ2VkIHRoZSBm
aWxlcyBhbmQgdGhlIGRhdGUgb2YgYW55IGNoYW5nZS4KCiAgICAqIGIpIFlvdSBtdXN0IGNhdXNl
IGFueSB3b3JrIHRoYXQgeW91IGRpc3RyaWJ1dGUgb3IgcHVibGlzaCwgdGhhdCBpbiB3aG9sZSBv
ciBpbiBwYXJ0IGNvbnRhaW5zIG9yIGlzIGRlcml2ZWQgZnJvbSB0aGUgUHJvZ3JhbSBvciBhbnkg
cGFydCB0aGVyZW9mLCB0byBiZSBsaWNlbnNlZCBhcyBhIHdob2xlIGF0IG5vIGNoYXJnZSB0byBh
bGwgdGhpcmQgcGFydGllcyB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLgoKICAgICog
YykgSWYgdGhlIG1vZGlmaWVkIHByb2dyYW0gbm9ybWFsbHkgcmVhZHMgY29tbWFuZHMgaW50ZXJh
Y3RpdmVseSB3aGVuIHJ1biwgeW91IG11c3QgY2F1c2UgaXQsIHdoZW4gc3RhcnRlZCBydW5uaW5n
IGZvciBzdWNoIGludGVyYWN0aXZlIHVzZSBpbiB0aGUgbW9zdCBvcmRpbmFyeSB3YXksIHRvIHBy
aW50IG9yIGRpc3BsYXkgYW4gYW5ub3VuY2VtZW50IGluY2x1ZGluZyBhbiBhcHByb3ByaWF0ZSBj
b3B5cmlnaHQgbm90aWNlIGFuZCBhIG5vdGljZSB0aGF0IHRoZXJlIGlzIG5vIHdhcnJhbnR5IChv
ciBlbHNlLCBzYXlpbmcgdGhhdCB5b3UgcHJvdmlkZSBhIHdhcnJhbnR5KSBhbmQgdGhhdCB1c2Vy
cyBtYXkgcmVkaXN0cmlidXRlIHRoZSBwcm9ncmFtIHVuZGVyIHRoZXNlIGNvbmRpdGlvbnMsIGFu
ZCB0ZWxsaW5nIHRoZSB1c2VyIGhvdyB0byB2aWV3IGEgY29weSBvZiB0aGlzIExpY2Vuc2UuIChF
eGNlcHRpb246IGlmIHRoZSBQcm9ncmFtIGl0c2VsZiBpcyBpbnRlcmFjdGl2ZSBidXQgZG9lcyBu
b3Qgbm9ybWFsbHkgcHJpbnQgc3VjaCBhbiBhbm5vdW5jZW1lbnQsIHlvdXIgd29yayBiYXNlZCBv
biB0aGUgUHJvZ3JhbSBpcyBub3QgcmVxdWlyZWQgdG8gcHJpbnQgYW4gYW5ub3VuY2VtZW50Likg
CgpUaGVzZSByZXF1aXJlbWVudHMgYXBwbHkgdG8gdGhlIG1vZGlmaWVkIHdvcmsgYXMgYSB3aG9s
ZS4gSWYgaWRlbnRpZmlhYmxlIHNlY3Rpb25zIG9mIHRoYXQgd29yayBhcmUgbm90IGRlcml2ZWQg
ZnJvbSB0aGUgUHJvZ3JhbSwgYW5kIGNhbiBiZSByZWFzb25hYmx5IGNvbnNpZGVyZWQgaW5kZXBl
bmRlbnQgYW5kIHNlcGFyYXRlIHdvcmtzIGluIHRoZW1zZWx2ZXMsIHRoZW4gdGhpcyBMaWNlbnNl
LCBhbmQgaXRzIHRlcm1zLCBkbyBub3QgYXBwbHkgdG8gdGhvc2Ugc2VjdGlvbnMgd2hlbiB5b3Ug
ZGlzdHJpYnV0ZSB0aGVtIGFzIHNlcGFyYXRlIHdvcmtzLiBCdXQgd2hlbiB5b3UgZGlzdHJpYnV0
ZSB0aGUgc2FtZSBzZWN0aW9ucyBhcyBwYXJ0IG9mIGEgd2hvbGUgd2hpY2ggaXMgYSB3b3JrIGJh
c2VkIG9uIHRoZSBQcm9ncmFtLCB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSB3aG9sZSBtdXN0IGJl
IG9uIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UsIHdob3NlIHBlcm1pc3Npb25zIGZvciBvdGhl
ciBsaWNlbnNlZXMgZXh0ZW5kIHRvIHRoZSBlbnRpcmUgd2hvbGUsIGFuZCB0aHVzIHRvIGVhY2gg
YW5kIGV2ZXJ5IHBhcnQgcmVnYXJkbGVzcyBvZiB3aG8gd3JvdGUgaXQuCgpUaHVzLCBpdCBpcyBu
b3QgdGhlIGludGVudCBvZiB0aGlzIHNlY3Rpb24gdG8gY2xhaW0gcmlnaHRzIG9yIGNvbnRlc3Qg
eW91ciByaWdodHMgdG8gd29yayB3cml0dGVuIGVudGlyZWx5IGJ5IHlvdTsgcmF0aGVyLCB0aGUg
aW50ZW50IGlzIHRvIGV4ZXJjaXNlIHRoZSByaWdodCB0byBjb250cm9sIHRoZSBkaXN0cmlidXRp
b24gb2YgZGVyaXZhdGl2ZSBvciBjb2xsZWN0aXZlIHdvcmtzIGJhc2VkIG9uIHRoZSBQcm9ncmFt
LgoKSW4gYWRkaXRpb24sIG1lcmUgYWdncmVnYXRpb24gb2YgYW5vdGhlciB3b3JrIG5vdCBiYXNl
ZCBvbiB0aGUgUHJvZ3JhbSB3aXRoIHRoZSBQcm9ncmFtIChvciB3aXRoIGEgd29yayBiYXNlZCBv
biB0aGUgUHJvZ3JhbSkgb24gYSB2b2x1bWUgb2YgYSBzdG9yYWdlIG9yIGRpc3RyaWJ1dGlvbiBt
ZWRpdW0gZG9lcyBub3QgYnJpbmcgdGhlIG90aGVyIHdvcmsgdW5kZXIgdGhlIHNjb3BlIG9mIHRo
aXMgTGljZW5zZS4KCjMuIFlvdSBtYXkgY29weSBhbmQgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSAo
b3IgYSB3b3JrIGJhc2VkIG9uIGl0LCB1bmRlciBTZWN0aW9uIDIpIGluIG9iamVjdCBjb2RlIG9y
IGV4ZWN1dGFibGUgZm9ybSB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbnMgMSBhbmQgMiBhYm92
ZSBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIGRvIG9uZSBvZiB0aGUgZm9sbG93aW5nOgoKICAgICog
YSkgQWNjb21wYW55IGl0IHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcgbWFjaGluZS1y
ZWFkYWJsZSBzb3VyY2UgY29kZSwgd2hpY2ggbXVzdCBiZSBkaXN0cmlidXRlZCB1bmRlciB0aGUg
dGVybXMgb2YgU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBvbiBhIG1lZGl1bSBjdXN0b21hcmlseSB1
c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZTsgb3IsCgogICAgKiBiKSBBY2NvbXBhbnkgaXQg
d2l0aCBhIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdCBsZWFzdCB0aHJlZSB5ZWFycywgdG8g
Z2l2ZSBhbnkgdGhpcmQgcGFydHksIGZvciBhIGNoYXJnZSBubyBtb3JlIHRoYW4geW91ciBjb3N0
IG9mIHBoeXNpY2FsbHkgcGVyZm9ybWluZyBzb3VyY2UgZGlzdHJpYnV0aW9uLCBhIGNvbXBsZXRl
IG1hY2hpbmUtcmVhZGFibGUgY29weSBvZiB0aGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZSwg
dG8gYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zIDEgYW5kIDIgYWJv
dmUgb24gYSBtZWRpdW0gY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2U7
IG9yLAoKICAgICogYykgQWNjb21wYW55IGl0IHdpdGggdGhlIGluZm9ybWF0aW9uIHlvdSByZWNl
aXZlZCBhcyB0byB0aGUgb2ZmZXIgdG8gZGlzdHJpYnV0ZSBjb3JyZXNwb25kaW5nIHNvdXJjZSBj
b2RlLiAoVGhpcyBhbHRlcm5hdGl2ZSBpcyBhbGxvd2VkIG9ubHkgZm9yIG5vbmNvbW1lcmNpYWwg
ZGlzdHJpYnV0aW9uIGFuZCBvbmx5IGlmIHlvdSByZWNlaXZlZCB0aGUgcHJvZ3JhbSBpbiBvYmpl
Y3QgY29kZSBvciBleGVjdXRhYmxlIGZvcm0gd2l0aCBzdWNoIGFuIG9mZmVyLCBpbiBhY2NvcmQg
d2l0aCBTdWJzZWN0aW9uIGIgYWJvdmUuKSAKClRoZSBzb3VyY2UgY29kZSBmb3IgYSB3b3JrIG1l
YW5zIHRoZSBwcmVmZXJyZWQgZm9ybSBvZiB0aGUgd29yayBmb3IgbWFraW5nIG1vZGlmaWNhdGlv
bnMgdG8gaXQuIEZvciBhbiBleGVjdXRhYmxlIHdvcmssIGNvbXBsZXRlIHNvdXJjZSBjb2RlIG1l
YW5zIGFsbCB0aGUgc291cmNlIGNvZGUgZm9yIGFsbCBtb2R1bGVzIGl0IGNvbnRhaW5zLCBwbHVz
IGFueSBhc3NvY2lhdGVkIGludGVyZmFjZSBkZWZpbml0aW9uIGZpbGVzLCBwbHVzIHRoZSBzY3Jp
cHRzIHVzZWQgdG8gY29udHJvbCBjb21waWxhdGlvbiBhbmQgaW5zdGFsbGF0aW9uIG9mIHRoZSBl
eGVjdXRhYmxlLiBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgc291cmNlIGNv
ZGUgZGlzdHJpYnV0ZWQgbmVlZCBub3QgaW5jbHVkZSBhbnl0aGluZyB0aGF0IGlzIG5vcm1hbGx5
IGRpc3RyaWJ1dGVkIChpbiBlaXRoZXIgc291cmNlIG9yIGJpbmFyeSBmb3JtKSB3aXRoIHRoZSBt
YWpvciBjb21wb25lbnRzIChjb21waWxlciwga2VybmVsLCBhbmQgc28gb24pIG9mIHRoZSBvcGVy
YXRpbmcgc3lzdGVtIG9uIHdoaWNoIHRoZSBleGVjdXRhYmxlIHJ1bnMsIHVubGVzcyB0aGF0IGNv
bXBvbmVudCBpdHNlbGYgYWNjb21wYW5pZXMgdGhlIGV4ZWN1dGFibGUuCgpJZiBkaXN0cmlidXRp
b24gb2YgZXhlY3V0YWJsZSBvciBvYmplY3QgY29kZSBpcyBtYWRlIGJ5IG9mZmVyaW5nIGFjY2Vz
cyB0byBjb3B5IGZyb20gYSBkZXNpZ25hdGVkIHBsYWNlLCB0aGVuIG9mZmVyaW5nIGVxdWl2YWxl
bnQgYWNjZXNzIHRvIGNvcHkgdGhlIHNvdXJjZSBjb2RlIGZyb20gdGhlIHNhbWUgcGxhY2UgY291
bnRzIGFzIGRpc3RyaWJ1dGlvbiBvZiB0aGUgc291cmNlIGNvZGUsIGV2ZW4gdGhvdWdoIHRoaXJk
IHBhcnRpZXMgYXJlIG5vdCBjb21wZWxsZWQgdG8gY29weSB0aGUgc291cmNlIGFsb25nIHdpdGgg
dGhlIG9iamVjdCBjb2RlLgoKNC4gWW91IG1heSBub3QgY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNl
LCBvciBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGV4Y2VwdCBhcyBleHByZXNzbHkgcHJvdmlkZWQg
dW5kZXIgdGhpcyBMaWNlbnNlLiBBbnkgYXR0ZW1wdCBvdGhlcndpc2UgdG8gY29weSwgbW9kaWZ5
LCBzdWJsaWNlbnNlIG9yIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gaXMgdm9pZCwgYW5kIHdpbGwg
YXV0b21hdGljYWxseSB0ZXJtaW5hdGUgeW91ciByaWdodHMgdW5kZXIgdGhpcyBMaWNlbnNlLiBI
b3dldmVyLCBwYXJ0aWVzIHdobyBoYXZlIHJlY2VpdmVkIGNvcGllcywgb3IgcmlnaHRzLCBmcm9t
IHlvdSB1bmRlciB0aGlzIExpY2Vuc2Ugd2lsbCBub3QgaGF2ZSB0aGVpciBsaWNlbnNlcyB0ZXJt
aW5hdGVkIHNvIGxvbmcgYXMgc3VjaCBwYXJ0aWVzIHJlbWFpbiBpbiBmdWxsIGNvbXBsaWFuY2Uu
Cgo1LiBZb3UgYXJlIG5vdCByZXF1aXJlZCB0byBhY2NlcHQgdGhpcyBMaWNlbnNlLCBzaW5jZSB5
b3UgaGF2ZSBub3Qgc2lnbmVkIGl0LiBIb3dldmVyLCBub3RoaW5nIGVsc2UgZ3JhbnRzIHlvdSBw
ZXJtaXNzaW9uIHRvIG1vZGlmeSBvciBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIG9yIGl0cyBkZXJp
dmF0aXZlIHdvcmtzLiBUaGVzZSBhY3Rpb25zIGFyZSBwcm9oaWJpdGVkIGJ5IGxhdyBpZiB5b3Ug
ZG8gbm90IGFjY2VwdCB0aGlzIExpY2Vuc2UuIFRoZXJlZm9yZSwgYnkgbW9kaWZ5aW5nIG9yIGRp
c3RyaWJ1dGluZyB0aGUgUHJvZ3JhbSAob3IgYW55IHdvcmsgYmFzZWQgb24gdGhlIFByb2dyYW0p
LCB5b3UgaW5kaWNhdGUgeW91ciBhY2NlcHRhbmNlIG9mIHRoaXMgTGljZW5zZSB0byBkbyBzbywg
YW5kIGFsbCBpdHMgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGlu
ZyBvciBtb2RpZnlpbmcgdGhlIFByb2dyYW0gb3Igd29ya3MgYmFzZWQgb24gaXQuCgo2LiBFYWNo
IHRpbWUgeW91IHJlZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSAob3IgYW55IHdvcmsgYmFzZWQgb24g
dGhlIFByb2dyYW0pLCB0aGUgcmVjaXBpZW50IGF1dG9tYXRpY2FsbHkgcmVjZWl2ZXMgYSBsaWNl
bnNlIGZyb20gdGhlIG9yaWdpbmFsIGxpY2Vuc29yIHRvIGNvcHksIGRpc3RyaWJ1dGUgb3IgbW9k
aWZ5IHRoZSBQcm9ncmFtIHN1YmplY3QgdG8gdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuIFlv
dSBtYXkgbm90IGltcG9zZSBhbnkgZnVydGhlciByZXN0cmljdGlvbnMgb24gdGhlIHJlY2lwaWVu
dHMnIGV4ZXJjaXNlIG9mIHRoZSByaWdodHMgZ3JhbnRlZCBoZXJlaW4uIFlvdSBhcmUgbm90IHJl
c3BvbnNpYmxlIGZvciBlbmZvcmNpbmcgY29tcGxpYW5jZSBieSB0aGlyZCBwYXJ0aWVzIHRvIHRo
aXMgTGljZW5zZS4KCjcuIElmLCBhcyBhIGNvbnNlcXVlbmNlIG9mIGEgY291cnQganVkZ21lbnQg
b3IgYWxsZWdhdGlvbiBvZiBwYXRlbnQgaW5mcmluZ2VtZW50IG9yIGZvciBhbnkgb3RoZXIgcmVh
c29uIChub3QgbGltaXRlZCB0byBwYXRlbnQgaXNzdWVzKSwgY29uZGl0aW9ucyBhcmUgaW1wb3Nl
ZCBvbiB5b3UgKHdoZXRoZXIgYnkgY291cnQgb3JkZXIsIGFncmVlbWVudCBvciBvdGhlcndpc2Up
IHRoYXQgY29udHJhZGljdCB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UsIHRoZXkgZG8g
bm90IGV4Y3VzZSB5b3UgZnJvbSB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UuIElmIHlv
dSBjYW5ub3QgZGlzdHJpYnV0ZSBzbyBhcyB0byBzYXRpc2Z5IHNpbXVsdGFuZW91c2x5IHlvdXIg
b2JsaWdhdGlvbnMgdW5kZXIgdGhpcyBMaWNlbnNlIGFuZCBhbnkgb3RoZXIgcGVydGluZW50IG9i
bGlnYXRpb25zLCB0aGVuIGFzIGEgY29uc2VxdWVuY2UgeW91IG1heSBub3QgZGlzdHJpYnV0ZSB0
aGUgUHJvZ3JhbSBhdCBhbGwuIEZvciBleGFtcGxlLCBpZiBhIHBhdGVudCBsaWNlbnNlIHdvdWxk
IG5vdCBwZXJtaXQgcm95YWx0eS1mcmVlIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtIGJ5
IGFsbCB0aG9zZSB3aG8gcmVjZWl2ZSBjb3BpZXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJv
dWdoIHlvdSwgdGhlbiB0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCBpdCBhbmQg
dGhpcyBMaWNlbnNlIHdvdWxkIGJlIHRvIHJlZnJhaW4gZW50aXJlbHkgZnJvbSBkaXN0cmlidXRp
b24gb2YgdGhlIFByb2dyYW0uCgpJZiBhbnkgcG9ydGlvbiBvZiB0aGlzIHNlY3Rpb24gaXMgaGVs
ZCBpbnZhbGlkIG9yIHVuZW5mb3JjZWFibGUgdW5kZXIgYW55IHBhcnRpY3VsYXIgY2lyY3Vtc3Rh
bmNlLCB0aGUgYmFsYW5jZSBvZiB0aGUgc2VjdGlvbiBpcyBpbnRlbmRlZCB0byBhcHBseSBhbmQg
dGhlIHNlY3Rpb24gYXMgYSB3aG9sZSBpcyBpbnRlbmRlZCB0byBhcHBseSBpbiBvdGhlciBjaXJj
dW1zdGFuY2VzLgoKSXQgaXMgbm90IHRoZSBwdXJwb3NlIG9mIHRoaXMgc2VjdGlvbiB0byBpbmR1
Y2UgeW91IHRvIGluZnJpbmdlIGFueSBwYXRlbnRzIG9yIG90aGVyIHByb3BlcnR5IHJpZ2h0IGNs
YWltcyBvciB0byBjb250ZXN0IHZhbGlkaXR5IG9mIGFueSBzdWNoIGNsYWltczsgdGhpcyBzZWN0
aW9uIGhhcyB0aGUgc29sZSBwdXJwb3NlIG9mIHByb3RlY3RpbmcgdGhlIGludGVncml0eSBvZiB0
aGUgZnJlZSBzb2Z0d2FyZSBkaXN0cmlidXRpb24gc3lzdGVtLCB3aGljaCBpcyBpbXBsZW1lbnRl
ZCBieSBwdWJsaWMgbGljZW5zZSBwcmFjdGljZXMuIE1hbnkgcGVvcGxlIGhhdmUgbWFkZSBnZW5l
cm91cyBjb250cmlidXRpb25zIHRvIHRoZSB3aWRlIHJhbmdlIG9mIHNvZnR3YXJlIGRpc3RyaWJ1
dGVkIHRocm91Z2ggdGhhdCBzeXN0ZW0gaW4gcmVsaWFuY2Ugb24gY29uc2lzdGVudCBhcHBsaWNh
dGlvbiBvZiB0aGF0IHN5c3RlbTsgaXQgaXMgdXAgdG8gdGhlIGF1dGhvci9kb25vciB0byBkZWNp
ZGUgaWYgaGUgb3Igc2hlIGlzIHdpbGxpbmcgdG8gZGlzdHJpYnV0ZSBzb2Z0d2FyZSB0aHJvdWdo
IGFueSBvdGhlciBzeXN0ZW0gYW5kIGEgbGljZW5zZWUgY2Fubm90IGltcG9zZSB0aGF0IGNob2lj
ZS4KClRoaXMgc2VjdGlvbiBpcyBpbnRlbmRlZCB0byBtYWtlIHRob3JvdWdobHkgY2xlYXIgd2hh
dCBpcyBiZWxpZXZlZCB0byBiZSBhIGNvbnNlcXVlbmNlIG9mIHRoZSByZXN0IG9mIHRoaXMgTGlj
ZW5zZS4KCjguIElmIHRoZSBkaXN0cmlidXRpb24gYW5kL29yIHVzZSBvZiB0aGUgUHJvZ3JhbSBp
cyByZXN0cmljdGVkIGluIGNlcnRhaW4gY291bnRyaWVzIGVpdGhlciBieSBwYXRlbnRzIG9yIGJ5
IGNvcHlyaWdodGVkIGludGVyZmFjZXMsIHRoZSBvcmlnaW5hbCBjb3B5cmlnaHQgaG9sZGVyIHdo
byBwbGFjZXMgdGhlIFByb2dyYW0gdW5kZXIgdGhpcyBMaWNlbnNlIG1heSBhZGQgYW4gZXhwbGlj
aXQgZ2VvZ3JhcGhpY2FsIGRpc3RyaWJ1dGlvbiBsaW1pdGF0aW9uIGV4Y2x1ZGluZyB0aG9zZSBj
b3VudHJpZXMsIHNvIHRoYXQgZGlzdHJpYnV0aW9uIGlzIHBlcm1pdHRlZCBvbmx5IGluIG9yIGFt
b25nIGNvdW50cmllcyBub3QgdGh1cyBleGNsdWRlZC4gSW4gc3VjaCBjYXNlLCB0aGlzIExpY2Vu
c2UgaW5jb3Jwb3JhdGVzIHRoZSBsaW1pdGF0aW9uIGFzIGlmIHdyaXR0ZW4gaW4gdGhlIGJvZHkg
b2YgdGhpcyBMaWNlbnNlLgoKOS4gVGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBtYXkgcHVi
bGlzaCByZXZpc2VkIGFuZC9vciBuZXcgdmVyc2lvbnMgb2YgdGhlIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuIFN1Y2ggbmV3IHZlcnNpb25zIHdpbGwgYmUgc2ltaWxh
ciBpbiBzcGlyaXQgdG8gdGhlIHByZXNlbnQgdmVyc2lvbiwgYnV0IG1heSBkaWZmZXIgaW4gZGV0
YWlsIHRvIGFkZHJlc3MgbmV3IHByb2JsZW1zIG9yIGNvbmNlcm5zLgoKRWFjaCB2ZXJzaW9uIGlz
IGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuIElmIHRoZSBQcm9ncmFtIHNw
ZWNpZmllcyBhIHZlcnNpb24gbnVtYmVyIG9mIHRoaXMgTGljZW5zZSB3aGljaCBhcHBsaWVzIHRv
IGl0IGFuZCAiYW55IGxhdGVyIHZlcnNpb24iLCB5b3UgaGF2ZSB0aGUgb3B0aW9uIG9mIGZvbGxv
d2luZyB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZWl0aGVyIG9mIHRoYXQgdmVyc2lvbiBvciBv
ZiBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbi4gSWYgdGhlIFByb2dyYW0gZG9lcyBub3Qgc3BlY2lmeSBhIHZlcnNpb24gbnVtYmVyIG9m
IHRoaXMgTGljZW5zZSwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KCjEwLiBJZiB5b3Ugd2lzaCB0byBpbmNv
cnBvcmF0ZSBwYXJ0cyBvZiB0aGUgUHJvZ3JhbSBpbnRvIG90aGVyIGZyZWUgcHJvZ3JhbXMgd2hv
c2UgZGlzdHJpYnV0aW9uIGNvbmRpdGlvbnMgYXJlIGRpZmZlcmVudCwgd3JpdGUgdG8gdGhlIGF1
dGhvciB0byBhc2sgZm9yIHBlcm1pc3Npb24uIEZvciBzb2Z0d2FyZSB3aGljaCBpcyBjb3B5cmln
aHRlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3cml0ZSB0byB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyB3ZSBzb21ldGltZXMgbWFrZSBleGNlcHRpb25zIGZvciB0aGlz
LiBPdXIgZGVjaXNpb24gd2lsbCBiZSBndWlkZWQgYnkgdGhlIHR3byBnb2FscyBvZiBwcmVzZXJ2
aW5nIHRoZSBmcmVlIHN0YXR1cyBvZiBhbGwgZGVyaXZhdGl2ZXMgb2Ygb3VyIGZyZWUgc29mdHdh
cmUgYW5kIG9mIHByb21vdGluZyB0aGUgc2hhcmluZyBhbmQgcmV1c2Ugb2Ygc29mdHdhcmUgZ2Vu
ZXJhbGx5LgoKTk8gV0FSUkFOVFkKCjExLiBCRUNBVVNFIFRIRSBQUk9HUkFNIElTIExJQ0VOU0VE
IEZSRUUgT0YgQ0hBUkdFLCBUSEVSRSBJUyBOTyBXQVJSQU5UWSBGT1IgVEhFIFBST0dSQU0sIFRP
IFRIRSBFWFRFTlQgUEVSTUlUVEVEIEJZIEFQUExJQ0FCTEUgTEFXLiBFWENFUFQgV0hFTiBPVEhF
UldJU0UgU1RBVEVEIElOIFdSSVRJTkcgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORC9PUiBPVEhF
UiBQQVJUSUVTIFBST1ZJREUgVEhFIFBST0dSQU0gIkFTIElTIiBXSVRIT1VUIFdBUlJBTlRZIE9G
IEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTU0VEIE9SIElNUExJRUQsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFRIRSBFTlRJUkUgUklTSyBBUyBU
TyBUSEUgUVVBTElUWSBBTkQgUEVSRk9STUFOQ0UgT0YgVEhFIFBST0dSQU0gSVMgV0lUSCBZT1Uu
IFNIT1VMRCBUSEUgUFJPR1JBTSBQUk9WRSBERUZFQ1RJVkUsIFlPVSBBU1NVTUUgVEhFIENPU1Qg
T0YgQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLgoKMTIuIElO
IE5PIEVWRU5UIFVOTEVTUyBSRVFVSVJFRCBCWSBBUFBMSUNBQkxFIExBVyBPUiBBR1JFRUQgVE8g
SU4gV1JJVElORyBXSUxMIEFOWSBDT1BZUklHSFQgSE9MREVSLCBPUiBBTlkgT1RIRVIgUEFSVFkg
V0hPIE1BWSBNT0RJRlkgQU5EL09SIFJFRElTVFJJQlVURSBUSEUgUFJPR1JBTSBBUyBQRVJNSVRU
RUQgQUJPVkUsIEJFIExJQUJMRSBUTyBZT1UgRk9SIERBTUFHRVMsIElOQ0xVRElORyBBTlkgR0VO
RVJBTCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgQVJJU0lO
RyBPVVQgT0YgVEhFIFVTRSBPUiBJTkFCSUxJVFkgVE8gVVNFIFRIRSBQUk9HUkFNIChJTkNMVURJ
TkcgQlVUIE5PVCBMSU1JVEVEIFRPIExPU1MgT0YgREFUQSBPUiBEQVRBIEJFSU5HIFJFTkRFUkVE
IElOQUNDVVJBVEUgT1IgTE9TU0VTIFNVU1RBSU5FRCBCWSBZT1UgT1IgVEhJUkQgUEFSVElFUyBP
UiBBIEZBSUxVUkUgT0YgVEhFIFBST0dSQU0gVE8gT1BFUkFURSBXSVRIIEFOWSBPVEhFUiBQUk9H
UkFNUyksIEVWRU4gSUYgU1VDSCBIT0xERVIgT1IgT1RIRVIgUEFSVFkgSEFTIEJFRU4gQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLgoKRU5EIE9GIFRFUk1TIEFORCBD
T05ESVRJT05TCgpIb3cgdG8gQXBwbHkgVGhlc2UgVGVybXMgdG8gWW91ciBOZXcgUHJvZ3JhbXMK
CklmIHlvdSBkZXZlbG9wIGEgbmV3IHByb2dyYW0sIGFuZCB5b3Ugd2FudCBpdCB0byBiZSBvZiB0
aGUgZ3JlYXRlc3QgcG9zc2libGUgdXNlIHRvIHRoZSBwdWJsaWMsIHRoZSBiZXN0IHdheSB0byBh
Y2hpZXZlIHRoaXMgaXMgdG8gbWFrZSBpdCBmcmVlIHNvZnR3YXJlIHdoaWNoIGV2ZXJ5b25lIGNh
biByZWRpc3RyaWJ1dGUgYW5kIGNoYW5nZSB1bmRlciB0aGVzZSB0ZXJtcy4KClRvIGRvIHNvLCBh
dHRhY2ggdGhlIGZvbGxvd2luZyBub3RpY2VzIHRvIHRoZSBwcm9ncmFtLiBJdCBpcyBzYWZlc3Qg
dG8gYXR0YWNoIHRoZW0gdG8gdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGZpbGUgdG8gbW9zdCBl
ZmZlY3RpdmVseSBjb252ZXkgdGhlIGV4Y2x1c2lvbiBvZiB3YXJyYW50eTsgYW5kIGVhY2ggZmls
ZSBzaG91bGQgaGF2ZSBhdCBsZWFzdCB0aGUgImNvcHlyaWdodCIgbGluZSBhbmQgYSBwb2ludGVy
IHRvIHdoZXJlIHRoZSBmdWxsIG5vdGljZSBpcyBmb3VuZC4KCglvbmUgbGluZSB0byBnaXZlIHRo
ZSBwcm9ncmFtJ3MgbmFtZSBhbmQgYW4gaWRlYSBvZiB3aGF0IGl0IGRvZXMuCglDb3B5cmlnaHQg
KEMpIHl5eXkgIG5hbWUgb2YgYXV0aG9yCgoJVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgoJbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKCWFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyCglvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KCglUaGlzIHByb2dyYW0g
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKCWJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CglNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlCglHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKCVlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCglhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl
ZSBTb2Z0d2FyZQoJRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMw
LCBCb3N0b24sIE1BICAwMjExMS0xMzA3LCBVU0EuCgpBbHNvIGFkZCBpbmZvcm1hdGlvbiBvbiBo
b3cgdG8gY29udGFjdCB5b3UgYnkgZWxlY3Ryb25pYyBhbmQgcGFwZXIgbWFpbC4KCklmIHRoZSBw
cm9ncmFtIGlzIGludGVyYWN0aXZlLCBtYWtlIGl0IG91dHB1dCBhIHNob3J0IG5vdGljZSBsaWtl
IHRoaXMgd2hlbiBpdCBzdGFydHMgaW4gYW4gaW50ZXJhY3RpdmUgbW9kZToKCglHbm9tb3Zpc2lv
biB2ZXJzaW9uIDY5LCBDb3B5cmlnaHQgKEMpIHllYXIgbmFtZSBvZiBhdXRob3IKCUdub21vdmlz
aW9uIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWTsgZm9yIGRldGFpbHMKCXR5cGUg
YHNob3cgdycuICBUaGlzIGlzIGZyZWUgc29mdHdhcmUsIGFuZCB5b3UgYXJlIHdlbGNvbWUKCXRv
IHJlZGlzdHJpYnV0ZSBpdCB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnM7IHR5cGUgYHNob3cgYycg
Cglmb3IgZGV0YWlscy4KClRoZSBoeXBvdGhldGljYWwgY29tbWFuZHMgYHNob3cgdycgYW5kIGBz
aG93IGMnIHNob3VsZCBzaG93IHRoZSBhcHByb3ByaWF0ZSBwYXJ0cyBvZiB0aGUgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZS4gT2YgY291cnNlLCB0aGUgY29tbWFuZHMgeW91IHVzZSBtYXkgYmUgY2Fs
bGVkIHNvbWV0aGluZyBvdGhlciB0aGFuIGBzaG93IHcnIGFuZCBgc2hvdyBjJzsgdGhleSBjb3Vs
ZCBldmVuIGJlIG1vdXNlLWNsaWNrcyBvciBtZW51IGl0ZW1zLS13aGF0ZXZlciBzdWl0cyB5b3Vy
IHByb2dyYW0uCgpZb3Ugc2hvdWxkIGFsc28gZ2V0IHlvdXIgZW1wbG95ZXIgKGlmIHlvdSB3b3Jr
IGFzIGEgcHJvZ3JhbW1lcikgb3IgeW91ciBzY2hvb2wsIGlmIGFueSwgdG8gc2lnbiBhICJjb3B5
cmlnaHQgZGlzY2xhaW1lciIgZm9yIHRoZSBwcm9ncmFtLCBpZiBuZWNlc3NhcnkuIEhlcmUgaXMg
YSBzYW1wbGU7IGFsdGVyIHRoZSBuYW1lczoKCglZb3lvZHluZSwgSW5jLiwgaGVyZWJ5IGRpc2Ns
YWltcyBhbGwgY29weXJpZ2h0CglpbnRlcmVzdCBpbiB0aGUgcHJvZ3JhbSBgR25vbW92aXNpb24n
Cgkod2hpY2ggbWFrZXMgcGFzc2VzIGF0IGNvbXBpbGVycykgd3JpdHRlbiAKCWJ5IEphbWVzIEhh
Y2tlci4KCglzaWduYXR1cmUgb2YgVHkgQ29vbiwgMSBBcHJpbCAxOTg5CglUeSBDb29uLCBQcmVz
aWRlbnQgb2YgVmljZQoKVGhpcyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGRvZXMgbm90IHBlcm1p
dCBpbmNvcnBvcmF0aW5nIHlvdXIgcHJvZ3JhbSBpbnRvIHByb3ByaWV0YXJ5IHByb2dyYW1zLiBJ
ZiB5b3VyIHByb2dyYW0gaXMgYSBzdWJyb3V0aW5lIGxpYnJhcnksIHlvdSBtYXkgY29uc2lkZXIg
aXQgbW9yZSB1c2VmdWwgdG8gcGVybWl0IGxpbmtpbmcgcHJvcHJpZXRhcnkgYXBwbGljYXRpb25z
IHdpdGggdGhlIGxpYnJhcnkuIElmIHRoaXMgaXMgd2hhdCB5b3Ugd2FudCB0byBkbywgdXNlIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaW5zdGVhZCBvZiB0aGlzIExpY2Vu
c2UuCg==

View File

@ -1,247 +0,0 @@
GNU GENERAL PUBLIC LICENSE=0A=0AVersion 2, June 1991=0A=0ACopyright (C) 1=
989, 1991 Free Software Foundation, Inc. =20=0A59 Temple Place - Suite 33=
0, Boston, MA 02111-1307, USA=0A=0AEveryone is permitted to copy and dis=
tribute verbatim copies=0Aof this license document, but changing it is no=
t allowed.=0A=0APreamble=0A=0AThe licenses for most software are designed=
to take away your freedom to share and change it. By contrast, the GNU G=
eneral Public License is intended to guarantee your freedom to share and =
change free software--to make sure the software is free for all its users=
=2E This General Public License applies to most of the Free Software Foun=
dation's software and to any other program whose authors commit to using =
it. (Some other Free Software Foundation software is covered by the GNU L=
ibrary General Public License instead.) You can apply it to your programs=
, too.=0A=0AWhen we speak of free software, we are referring to freedom, =
not price. Our General Public Licenses are designed to make sure that you=
have the freedom to distribute copies of free software (and charge for t=
his service if you wish), that you receive source code or can get it if y=
ou want it, that you can change the software or use pieces of it in new f=
ree programs; and that you know you can do these things.=0A=0ATo protect =
your rights, we need to make restrictions that forbid anyone to deny you =
these rights or to ask you to surrender the rights. These restrictions tr=
anslate to certain responsibilities for you if you distribute copies of t=
he software, or if you modify it.=0A=0AFor example, if you distribute cop=
ies of such a program, whether gratis or for a fee, you must give the rec=
ipients all the rights that you have. You must make sure that they, too, =
receive or can get the source code. And you must show them these terms so=
they know their rights.=0A=0AWe protect your rights with two steps: (1) =
copyright the software, and (2) offer you this license which gives you le=
gal permission to copy, distribute and/or modify the software.=0A=0AAlso,=
for each author's protection and ours, we want to make certain that ever=
yone understands that there is no warranty for this free software. If the=
software is modified by someone else and passed on, we want its recipien=
ts to know that what they have is not the original, so that any problems =
introduced by others will not reflect on the original authors' reputation=
s.=0A=0AFinally, any free program is threatened constantly by software pa=
tents. We wish to avoid the danger that redistributors of a free program =
will individually obtain patent licenses, in effect making the program pr=
oprietary. To prevent this, we have made it clear that any patent must be=
licensed for everyone's free use or not licensed at all.=0A=0AThe precis=
e terms and conditions for copying, distribution and modification follow.=
=0A=0ATERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION=0A=0A=
0. This License applies to any program or other work which contains a not=
ice placed by the copyright holder saying it may be distributed under the=
terms of this General Public License. The "Program", below, refers to an=
y such program or work, and a "work based on the Program" means either th=
e Program or any derivative work under copyright law: that is to say, a w=
ork containing the Program or a portion of it, either verbatim or with mo=
difications and/or translated into another language. (Hereinafter, transl=
ation is included without limitation in the term "modification".) Each li=
censee is addressed as "you".=0A=0AActivities other than copying, distrib=
ution and modification are not covered by this License; they are outside =
its scope. The act of running the Program is not restricted, and the outp=
ut from the Program is covered only if its contents constitute a work bas=
ed on the Program (independent of having been made by running the Program=
). Whether that is true depends on what the Program does.=0A=0A1. You may=
copy and distribute verbatim copies of the Program's source code as you =
receive it, in any medium, provided that you conspicuously and appropriat=
ely publish on each copy an appropriate copyright notice and disclaimer o=
f warranty; keep intact all the notices that refer to this License and to=
the absence of any warranty; and give any other recipients of the Progra=
m a copy of this License along with the Program.=0A=0AYou may charge a fe=
e for the physical act of transferring a copy, and you may at your option=
offer warranty protection in exchange for a fee.=0A=0A2. You may modify =
your copy or copies of the Program or any portion of it, thus forming a w=
ork based on the Program, and copy and distribute such modifications or w=
ork under the terms of Section 1 above, provided that you also meet all o=
f these conditions:=0A=0A * a) You must cause the modified files to ca=
rry prominent notices stating that you changed the files and the date of =
any change.=0A=0A * b) You must cause any work that you distribute or =
publish, that in whole or in part contains or is derived from the Program=
or any part thereof, to be licensed as a whole at no charge to all third=
parties under the terms of this License.=0A=0A * c) If the modified p=
rogram normally reads commands interactively when run, you must cause it,=
when started running for such interactive use in the most ordinary way, =
to print or display an announcement including an appropriate copyright no=
tice and a notice that there is no warranty (or else, saying that you pro=
vide a warranty) and that users may redistribute the program under these =
conditions, and telling the user how to view a copy of this License. (Exc=
eption: if the Program itself is interactive but does not normally print =
such an announcement, your work based on the Program is not required to p=
rint an announcement.)=20=0A=0AThese requirements apply to the modified w=
ork as a whole. If identifiable sections of that work are not derived fro=
m the Program, and can be reasonably considered independent and separate =
works in themselves, then this License, and its terms, do not apply to th=
ose sections when you distribute them as separate works. But when you dis=
tribute the same sections as part of a whole which is a work based on the=
Program, the distribution of the whole must be on the terms of this Lice=
nse, whose permissions for other licensees extend to the entire whole, an=
d thus to each and every part regardless of who wrote it.=0A=0AThus, it i=
s not the intent of this section to claim rights or contest your rights t=
o work written entirely by you; rather, the intent is to exercise the rig=
ht to control the distribution of derivative or collective works based on=
the Program.=0A=0AIn addition, mere aggregation of another work not base=
d on the Program with the Program (or with a work based on the Program) o=
n a volume of a storage or distribution medium does not bring the other w=
ork under the scope of this License.=0A=0A3. You may copy and distribute =
the Program (or a work based on it, under Section 2) in object code or ex=
ecutable form under the terms of Sections 1 and 2 above provided that you=
also do one of the following:=0A=0A * a) Accompany it with the comple=
te corresponding machine-readable source code, which must be distributed =
under the terms of Sections 1 and 2 above on a medium customarily used fo=
r software interchange; or,=0A=0A * b) Accompany it with a written off=
er, valid for at least three years, to give any third party, for a charge=
no more than your cost of physically performing source distribution, a c=
omplete machine-readable copy of the corresponding source code, to be dis=
tributed under the terms of Sections 1 and 2 above on a medium customaril=
y used for software interchange; or,=0A=0A * c) Accompany it with the =
information you received as to the offer to distribute corresponding sour=
ce code. (This alternative is allowed only for noncommercial distribution=
and only if you received the program in object code or executable form w=
ith such an offer, in accord with Subsection b above.)=20=0A=0AThe source=
code for a work means the preferred form of the work for making modifica=
tions to it. For an executable work, complete source code means all the s=
ource code for all modules it contains, plus any associated interface def=
inition files, plus the scripts used to control compilation and installat=
ion of the executable. However, as a special exception, the source code d=
istributed need not include anything that is normally distributed (in eit=
her source or binary form) with the major components (compiler, kernel, a=
nd so on) of the operating system on which the executable runs, unless th=
at component itself accompanies the executable.=0A=0AIf distribution of e=
xecutable or object code is made by offering access to copy from a design=
ated place, then offering equivalent access to copy the source code from =
the same place counts as distribution of the source code, even though thi=
rd parties are not compelled to copy the source along with the object cod=
e.=0A=0A4. You may not copy, modify, sublicense, or distribute the Progra=
m except as expressly provided under this License. Any attempt otherwise =
to copy, modify, sublicense or distribute the Program is void, and will a=
utomatically terminate your rights under this License. However, parties w=
ho have received copies, or rights, from you under this License will not =
have their licenses terminated so long as such parties remain in full com=
pliance.=0A=0A5. You are not required to accept this License, since you h=
ave not signed it. However, nothing else grants you permission to modify =
or distribute the Program or its derivative works. These actions are proh=
ibited by law if you do not accept this License. Therefore, by modifying =
or distributing the Program (or any work based on the Program), you indic=
ate your acceptance of this License to do so, and all its terms and condi=
tions for copying, distributing or modifying the Program or works based o=
n it.=0A=0A6. Each time you redistribute the Program (or any work based o=
n the Program), the recipient automatically receives a license from the o=
riginal licensor to copy, distribute or modify the Program subject to the=
se terms and conditions. You may not impose any further restrictions on t=
he recipients' exercise of the rights granted herein. You are not respons=
ible for enforcing compliance by third parties to this License.=0A=0A7. I=
f, as a consequence of a court judgment or allegation of patent infringem=
ent or for any other reason (not limited to patent issues), conditions ar=
e imposed on you (whether by court order, agreement or otherwise) that co=
ntradict the conditions of this License, they do not excuse you from the =
conditions of this License. If you cannot distribute so as to satisfy sim=
ultaneously your obligations under this License and any other pertinent o=
bligations, then as a consequence you may not distribute the Program at a=
ll. For example, if a patent license would not permit royalty-free redist=
ribution of the Program by all those who receive copies directly or indir=
ectly through you, then the only way you could satisfy both it and this L=
icense would be to refrain entirely from distribution of the Program.=0A=0A=
If any portion of this section is held invalid or unenforceable under any=
particular circumstance, the balance of the section is intended to apply=
and the section as a whole is intended to apply in other circumstances.=0A=
=0AIt is not the purpose of this section to induce you to infringe any pa=
tents or other property right claims or to contest validity of any such c=
laims; this section has the sole purpose of protecting the integrity of t=
he free software distribution system, which is implemented by public lice=
nse practices. Many people have made generous contributions to the wide r=
ange of software distributed through that system in reliance on consisten=
t application of that system; it is up to the author/donor to decide if h=
e or she is willing to distribute software through any other system and a=
licensee cannot impose that choice.=0A=0AThis section is intended to mak=
e thoroughly clear what is believed to be a consequence of the rest of th=
is License.=0A=0A8. If the distribution and/or use of the Program is rest=
ricted in certain countries either by patents or by copyrighted interface=
s, the original copyright holder who places the Program under this Licens=
e may add an explicit geographical distribution limitation excluding thos=
e countries, so that distribution is permitted only in or among countries=
not thus excluded. In such case, this License incorporates the limitatio=
n as if written in the body of this License.=0A=0A9. The Free Software Fo=
undation may publish revised and/or new versions of the General Public Li=
cense from time to time. Such new versions will be similar in spirit to t=
he present version, but may differ in detail to address new problems or c=
oncerns.=0A=0AEach version is given a distinguishing version number. If t=
he Program specifies a version number of this License which applies to it=
and "any later version", you have the option of following the terms and =
conditions either of that version or of any later version published by th=
e Free Software Foundation. If the Program does not specify a version num=
ber of this License, you may choose any version ever published by the Fre=
e Software Foundation.=0A=0A10. If you wish to incorporate parts of the P=
rogram into other free programs whose distribution conditions are differe=
nt, write to the author to ask for permission. For software which is copy=
righted by the Free Software Foundation, write to the Free Software Found=
ation; we sometimes make exceptions for this. Our decision will be guided=
by the two goals of preserving the free status of all derivatives of our=
free software and of promoting the sharing and reuse of software general=
ly.=0A=0ANO WARRANTY=0A=0A11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHA=
RGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APP=
LICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDER=
S AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF AN=
Y KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE I=
MPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE=
=2E THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS W=
ITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL N=
ECESSARY SERVICING, REPAIR OR CORRECTION.=0A=0A12. IN NO EVENT UNLESS REQ=
UIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER=
, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PE=
RMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECI=
AL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILI=
TY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA =
BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR =
A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUC=
H HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAG=
ES.=0A=0AEND OF TERMS AND CONDITIONS=0A=0AHow to Apply These Terms to You=
r New Programs=0A=0AIf you develop a new program, and you want it to be o=
f the greatest possible use to the public, the best way to achieve this i=
s to make it free software which everyone can redistribute and change und=
er these terms.=0A=0ATo do so, attach the following notices to the progra=
m. It is safest to attach them to the start of each source file to most e=
ffectively convey the exclusion of warranty; and each file should have at=
least the "copyright" line and a pointer to where the full notice is fou=
nd.=0A=0A=09one line to give the program's name and an idea of what it do=
es.=0A=09Copyright (C) yyyy name of author=0A=0A=09This program is free =
software; you can redistribute it and/or=0A=09modify it under the terms o=
f the GNU General Public License=0A=09as published by the Free Software F=
oundation; either version 2=0A=09of the License, or (at your option) any =
later version.=0A=0A=09This program is distributed in the hope that it wi=
ll be useful,=0A=09but WITHOUT ANY WARRANTY; without even the implied war=
ranty of=0A=09MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See t=
he=0A=09GNU General Public License for more details.=0A=0A=09You should h=
ave received a copy of the GNU General Public License=0A=09along with thi=
s program; if not, write to the Free Software=0A=09Foundation, Inc., 59 T=
emple Place - Suite 330, Boston, MA 02111-1307, USA.=0A=0AAlso add infor=
mation on how to contact you by electronic and paper mail.=0A=0AIf the pr=
ogram is interactive, make it output a short notice like this when it sta=
rts in an interactive mode:=0A=0A=09Gnomovision version 69, Copyright (C)=
year name of author=0A=09Gnomovision comes with ABSOLUTELY NO WARRANTY; =
for details=0A=09type `show w'. This is free software, and you are welco=
me=0A=09to redistribute it under certain conditions; type `show c'=20=0A=09=
for details.=0A=0AThe hypothetical commands `show w' and `show c' should =
show the appropriate parts of the General Public License. Of course, the =
commands you use may be called something other than `show w' and `show c'=
; they could even be mouse-clicks or menu items--whatever suits your prog=
ram.=0A=0AYou should also get your employer (if you work as a programmer)=
or your school, if any, to sign a "copyright disclaimer" for the program=
, if necessary. Here is a sample; alter the names:=0A=0A=09Yoyodyne, Inc.=
, hereby disclaims all copyright=0A=09interest in the program `Gnomovisio=
n'=0A=09(which makes passes at compilers) written=20=0A=09by James Hacker=
=2E=0A=0A=09signature of Ty Coon, 1 April 1989=0A=09Ty Coon, President of=
Vice=0A=0AThis General Public License does not permit incorporating your=
program into proprietary programs. If your program is a subroutine libra=
ry, you may consider it more useful to permit linking proprietary applica=
tions with the library. If this is what you want to do, use the GNU Lesse=
r General Public License instead of this License.=0A

View File

@ -1,395 +0,0 @@
begin 644 no_name
M1TY5($=%3D5204P@4%5"3$E#($Q)0T5.4T4*"E9E<G-I;VX@,BP@2G5N92 Q
M.3DQ"@I#;W!Y<FEG:'0@*$,I(#$Y.#DL(#$Y.3$@1G)E92!3;V9T=V%R92!&
M;W5N9&%T:6]N+"!);F,N(" *-3D@5&5M<&QE(%!L86-E("T@4W5I=&4@,S,P
M+"!";W-T;VXL($U!(" P,C$Q,2TQ,S W+"!54T$*"D5V97)Y;VYE(&ES('!E
M<FUI='1E9"!T;R!C;W!Y(&%N9"!D:7-T<FEB=71E('9E<F)A=&EM(&-O<&EE
M<PIO9B!T:&ES(&QI8V5N<V4@9&]C=6UE;G0L(&)U="!C:&%N9VEN9R!I="!I
M<R!N;W0@86QL;W=E9"X*"E!R96%M8FQE"@I4:&4@;&EC96YS97,@9F]R(&UO
M<W0@<V]F='=A<F4@87)E(&1E<VEG;F5D('1O('1A:V4@87=A>2!Y;W5R(&9R
M965D;VT@=&\@<VAA<F4@86YD(&-H86YG92!I="X@0GD@8V]N=')A<W0L('1H
M92!'3E4@1V5N97)A;"!0=6)L:6,@3&EC96YS92!I<R!I;G1E;F1E9"!T;R!G
M=6%R86YT964@>6]U<B!F<F5E9&]M('1O('-H87)E(&%N9"!C:&%N9V4@9G)E
M92!S;V9T=V%R92TM=&\@;6%K92!S=7)E('1H92!S;V9T=V%R92!I<R!F<F5E
M(&9O<B!A;&P@:71S('5S97)S+B!4:&ES($=E;F5R86P@4'5B;&EC($QI8V5N
M<V4@87!P;&EE<R!T;R!M;W-T(&]F('1H92!&<F5E(%-O9G1W87)E($9O=6YD
M871I;VXG<R!S;V9T=V%R92!A;F0@=&\@86YY(&]T:&5R('!R;V=R86T@=VAO
M<V4@875T:&]R<R!C;VUM:70@=&\@=7-I;F<@:70N("A3;VUE(&]T:&5R($9R
M964@4V]F='=A<F4@1F]U;F1A=&EO;B!S;V9T=V%R92!I<R!C;W9E<F5D(&)Y
M('1H92!'3E4@3&EB<F%R>2!'96YE<F%L(%!U8FQI8R!,:6-E;G-E(&EN<W1E
M860N*2!9;W4@8V%N(&%P<&QY(&ET('1O('EO=7(@<')O9W)A;7,L('1O;RX*
M"E=H96X@=V4@<W!E86L@;V8@9G)E92!S;V9T=V%R92P@=V4@87)E(')E9F5R
M<FEN9R!T;R!F<F5E9&]M+"!N;W0@<')I8V4N($]U<B!'96YE<F%L(%!U8FQI
M8R!,:6-E;G-E<R!A<F4@9&5S:6=N960@=&\@;6%K92!S=7)E('1H870@>6]U
M(&AA=F4@=&AE(&9R965D;VT@=&\@9&ES=')I8G5T92!C;W!I97,@;V8@9G)E
M92!S;V9T=V%R92 H86YD(&-H87)G92!F;W(@=&AI<R!S97)V:6-E(&EF('EO
M=2!W:7-H*2P@=&AA="!Y;W4@<F5C96EV92!S;W5R8V4@8V]D92!O<B!C86X@
M9V5T(&ET(&EF('EO=2!W86YT(&ET+"!T:&%T('EO=2!C86X@8VAA;F=E('1H
M92!S;V9T=V%R92!O<B!U<V4@<&EE8V5S(&]F(&ET(&EN(&YE=R!F<F5E('!R
M;V=R86US.R!A;F0@=&AA="!Y;W4@:VYO=R!Y;W4@8V%N(&1O('1H97-E('1H
M:6YG<RX*"E1O('!R;W1E8W0@>6]U<B!R:6=H=',L('=E(&YE960@=&\@;6%K
M92!R97-T<FEC=&EO;G,@=&AA="!F;W)B:60@86YY;VYE('1O(&1E;GD@>6]U
M('1H97-E(')I9VAT<R!O<B!T;R!A<VL@>6]U('1O('-U<G)E;F1E<B!T:&4@
M<FEG:'1S+B!4:&5S92!R97-T<FEC=&EO;G,@=')A;G-L871E('1O(&-E<G1A
M:6X@<F5S<&]N<VEB:6QI=&EE<R!F;W(@>6]U(&EF('EO=2!D:7-T<FEB=71E
M(&-O<&EE<R!O9B!T:&4@<V]F='=A<F4L(&]R(&EF('EO=2!M;V1I9GD@:70N
M"@I&;W(@97AA;7!L92P@:68@>6]U(&1I<W1R:6)U=&4@8V]P:65S(&]F('-U
M8V@@82!P<F]G<F%M+"!W:&5T:&5R(&=R871I<R!O<B!F;W(@82!F964L('EO
M=2!M=7-T(&=I=F4@=&AE(')E8VEP:65N=',@86QL('1H92!R:6=H=',@=&AA
M="!Y;W4@:&%V92X@66]U(&UU<W0@;6%K92!S=7)E('1H870@=&AE>2P@=&]O
M+"!R96-E:79E(&]R(&-A;B!G970@=&AE('-O=7)C92!C;V1E+B!!;F0@>6]U
M(&UU<W0@<VAO=R!T:&5M('1H97-E('1E<FUS('-O('1H97D@:VYO=R!T:&5I
M<B!R:6=H=',N"@I792!P<F]T96-T('EO=7(@<FEG:'1S('=I=&@@='=O('-T
M97!S.B H,2D@8V]P>7)I9VAT('1H92!S;V9T=V%R92P@86YD("@R*2!O9F9E
M<B!Y;W4@=&AI<R!L:6-E;G-E('=H:6-H(&=I=F5S('EO=2!L96=A;"!P97)M
M:7-S:6]N('1O(&-O<'DL(&1I<W1R:6)U=&4@86YD+V]R(&UO9&EF>2!T:&4@
M<V]F='=A<F4N"@I!;'-O+"!F;W(@96%C:"!A=71H;W(G<R!P<F]T96-T:6]N
M(&%N9"!O=7)S+"!W92!W86YT('1O(&UA:V4@8V5R=&%I;B!T:&%T(&5V97)Y
M;VYE('5N9&5R<W1A;F1S('1H870@=&AE<F4@:7,@;F\@=V%R<F%N='D@9F]R
M('1H:7,@9G)E92!S;V9T=V%R92X@268@=&AE('-O9G1W87)E(&ES(&UO9&EF
M:65D(&)Y('-O;65O;F4@96QS92!A;F0@<&%S<V5D(&]N+"!W92!W86YT(&ET
M<R!R96-I<&EE;G1S('1O(&MN;W<@=&AA="!W:&%T('1H97D@:&%V92!I<R!N
M;W0@=&AE(&]R:6=I;F%L+"!S;R!T:&%T(&%N>2!P<F]B;&5M<R!I;G1R;V1U
M8V5D(&)Y(&]T:&5R<R!W:6QL(&YO="!R969L96-T(&]N('1H92!O<FEG:6YA
M;"!A=71H;W)S)R!R97!U=&%T:6]N<RX*"D9I;F%L;'DL(&%N>2!F<F5E('!R
M;V=R86T@:7,@=&AR96%T96YE9"!C;VYS=&%N=&QY(&)Y('-O9G1W87)E('!A
M=&5N=',N(%=E('=I<V@@=&\@879O:60@=&AE(&1A;F=E<B!T:&%T(')E9&ES
M=')I8G5T;W)S(&]F(&$@9G)E92!P<F]G<F%M('=I;&P@:6YD:79I9'5A;&QY
M(&]B=&%I;B!P871E;G0@;&EC96YS97,L(&EN(&5F9F5C="!M86MI;F<@=&AE
M('!R;V=R86T@<')O<')I971A<GDN(%1O('!R979E;G0@=&AI<RP@=V4@:&%V
M92!M861E(&ET(&-L96%R('1H870@86YY('!A=&5N="!M=7-T(&)E(&QI8V5N
M<V5D(&9O<B!E=F5R>6]N92=S(&9R964@=7-E(&]R(&YO="!L:6-E;G-E9"!A
M="!A;&PN"@I4:&4@<')E8VES92!T97)M<R!A;F0@8V]N9&ET:6]N<R!F;W(@
M8V]P>6EN9RP@9&ES=')I8G5T:6]N(&%N9"!M;V1I9FEC871I;VX@9F]L;&]W
M+@H*5$5235,@04Y$($-/3D1)5$E/3E,@1D]2($-/4%E)3D<L($1)4U1224)5
M5$E/3B!!3D0@34]$249)0T%424]."@HP+B!4:&ES($QI8V5N<V4@87!P;&EE
M<R!T;R!A;GD@<')O9W)A;2!O<B!O=&AE<B!W;W)K('=H:6-H(&-O;G1A:6YS
M(&$@;F]T:6-E('!L86-E9"!B>2!T:&4@8V]P>7)I9VAT(&AO;&1E<B!S87EI
M;F<@:70@;6%Y(&)E(&1I<W1R:6)U=&5D('5N9&5R('1H92!T97)M<R!O9B!T
M:&ES($=E;F5R86P@4'5B;&EC($QI8V5N<V4N(%1H92 B4')O9W)A;2(L(&)E
M;&]W+"!R969E<G,@=&\@86YY('-U8V@@<')O9W)A;2!O<B!W;W)K+"!A;F0@
M82 B=V]R:R!B87-E9"!O;B!T:&4@4')O9W)A;2(@;65A;G,@96ET:&5R('1H
M92!0<F]G<F%M(&]R(&%N>2!D97)I=F%T:79E('=O<FL@=6YD97(@8V]P>7)I
M9VAT(&QA=SH@=&AA="!I<R!T;R!S87DL(&$@=V]R:R!C;VYT86EN:6YG('1H
M92!0<F]G<F%M(&]R(&$@<&]R=&EO;B!O9B!I="P@96ET:&5R('9E<F)A=&EM
M(&]R('=I=&@@;6]D:69I8V%T:6]N<R!A;F0O;W(@=')A;G-L871E9"!I;G1O
M(&%N;W1H97(@;&%N9W5A9V4N("A(97)E:6YA9G1E<BP@=')A;G-L871I;VX@
M:7,@:6YC;'5D960@=VET:&]U="!L:6UI=&%T:6]N(&EN('1H92!T97)M(")M
M;V1I9FEC871I;VXB+BD@16%C:"!L:6-E;G-E92!I<R!A9&1R97-S960@87,@
M(GEO=2(N"@I!8W1I=FET:65S(&]T:&5R('1H86X@8V]P>6EN9RP@9&ES=')I
M8G5T:6]N(&%N9"!M;V1I9FEC871I;VX@87)E(&YO="!C;W9E<F5D(&)Y('1H
M:7,@3&EC96YS93L@=&AE>2!A<F4@;W5T<VED92!I=',@<V-O<&4N(%1H92!A
M8W0@;V8@<G5N;FEN9R!T:&4@4')O9W)A;2!I<R!N;W0@<F5S=')I8W1E9"P@
M86YD('1H92!O=71P=70@9G)O;2!T:&4@4')O9W)A;2!I<R!C;W9E<F5D(&]N
M;'D@:68@:71S(&-O;G1E;G1S(&-O;G-T:71U=&4@82!W;W)K(&)A<V5D(&]N
M('1H92!0<F]G<F%M("AI;F1E<&5N9&5N="!O9B!H879I;F<@8F5E;B!M861E
M(&)Y(')U;FYI;F<@=&AE(%!R;V=R86TI+B!7:&5T:&5R('1H870@:7,@=')U
M92!D97!E;F1S(&]N('=H870@=&AE(%!R;V=R86T@9&]E<RX*"C$N(%EO=2!M
M87D@8V]P>2!A;F0@9&ES=')I8G5T92!V97)B871I;2!C;W!I97,@;V8@=&AE
M(%!R;V=R86TG<R!S;W5R8V4@8V]D92!A<R!Y;W4@<F5C96EV92!I="P@:6X@
M86YY(&UE9&EU;2P@<')O=FED960@=&AA="!Y;W4@8V]N<W!I8W5O=7-L>2!A
M;F0@87!P<F]P<FEA=&5L>2!P=6)L:7-H(&]N(&5A8V@@8V]P>2!A;B!A<'!R
M;W!R:6%T92!C;W!Y<FEG:'0@;F]T:6-E(&%N9"!D:7-C;&%I;65R(&]F('=A
M<G)A;G1Y.R!K965P(&EN=&%C="!A;&P@=&AE(&YO=&EC97,@=&AA="!R969E
M<B!T;R!T:&ES($QI8V5N<V4@86YD('1O('1H92!A8G-E;F-E(&]F(&%N>2!W
M87)R86YT>3L@86YD(&=I=F4@86YY(&]T:&5R(')E8VEP:65N=',@;V8@=&AE
M(%!R;V=R86T@82!C;W!Y(&]F('1H:7,@3&EC96YS92!A;&]N9R!W:71H('1H
M92!0<F]G<F%M+@H*66]U(&UA>2!C:&%R9V4@82!F964@9F]R('1H92!P:'ES
M:6-A;"!A8W0@;V8@=')A;G-F97)R:6YG(&$@8V]P>2P@86YD('EO=2!M87D@
M870@>6]U<B!O<'1I;VX@;V9F97(@=V%R<F%N='D@<')O=&5C=&EO;B!I;B!E
M>&-H86YG92!F;W(@82!F964N"@HR+B!9;W4@;6%Y(&UO9&EF>2!Y;W5R(&-O
M<'D@;W(@8V]P:65S(&]F('1H92!0<F]G<F%M(&]R(&%N>2!P;W)T:6]N(&]F
M(&ET+"!T:'5S(&9O<FUI;F<@82!W;W)K(&)A<V5D(&]N('1H92!0<F]G<F%M
M+"!A;F0@8V]P>2!A;F0@9&ES=')I8G5T92!S=6-H(&UO9&EF:6-A=&EO;G,@
M;W(@=V]R:R!U;F1E<B!T:&4@=&5R;7,@;V8@4V5C=&EO;B Q(&%B;W9E+"!P
M<F]V:61E9"!T:&%T('EO=2!A;'-O(&UE970@86QL(&]F('1H97-E(&-O;F1I
M=&EO;G,Z"@H@(" @*B!A*2!9;W4@;75S="!C875S92!T:&4@;6]D:69I960@
M9FEL97,@=&\@8V%R<GD@<')O;6EN96YT(&YO=&EC97,@<W1A=&EN9R!T:&%T
M('EO=2!C:&%N9V5D('1H92!F:6QE<R!A;F0@=&AE(&1A=&4@;V8@86YY(&-H
M86YG92X*"B @(" J(&(I(%EO=2!M=7-T(&-A=7-E(&%N>2!W;W)K('1H870@
M>6]U(&1I<W1R:6)U=&4@;W(@<'5B;&ES:"P@=&AA="!I;B!W:&]L92!O<B!I
M;B!P87)T(&-O;G1A:6YS(&]R(&ES(&1E<FEV960@9G)O;2!T:&4@4')O9W)A
M;2!O<B!A;GD@<&%R="!T:&5R96]F+"!T;R!B92!L:6-E;G-E9"!A<R!A('=H
M;VQE(&%T(&YO(&-H87)G92!T;R!A;&P@=&AI<F0@<&%R=&EE<R!U;F1E<B!T
M:&4@=&5R;7,@;V8@=&AI<R!,:6-E;G-E+@H*(" @("H@8RD@268@=&AE(&UO
M9&EF:65D('!R;V=R86T@;F]R;6%L;'D@<F5A9',@8V]M;6%N9',@:6YT97)A
M8W1I=F5L>2!W:&5N(')U;BP@>6]U(&UU<W0@8V%U<V4@:70L('=H96X@<W1A
M<G1E9"!R=6YN:6YG(&9O<B!S=6-H(&EN=&5R86-T:79E('5S92!I;B!T:&4@
M;6]S="!O<F1I;F%R>2!W87DL('1O('!R:6YT(&]R(&1I<W!L87D@86X@86YN
M;W5N8V5M96YT(&EN8VQU9&EN9R!A;B!A<'!R;W!R:6%T92!C;W!Y<FEG:'0@
M;F]T:6-E(&%N9"!A(&YO=&EC92!T:&%T('1H97)E(&ES(&YO('=A<G)A;G1Y
M("AO<B!E;'-E+"!S87EI;F<@=&AA="!Y;W4@<')O=FED92!A('=A<G)A;G1Y
M*2!A;F0@=&AA="!U<V5R<R!M87D@<F5D:7-T<FEB=71E('1H92!P<F]G<F%M
M('5N9&5R('1H97-E(&-O;F1I=&EO;G,L(&%N9"!T96QL:6YG('1H92!U<V5R
M(&AO=R!T;R!V:65W(&$@8V]P>2!O9B!T:&ES($QI8V5N<V4N("A%>&-E<'1I
M;VXZ(&EF('1H92!0<F]G<F%M(&ET<V5L9B!I<R!I;G1E<F%C=&EV92!B=70@
M9&]E<R!N;W0@;F]R;6%L;'D@<')I;G0@<W5C:"!A;B!A;FYO=6YC96UE;G0L
M('EO=7(@=V]R:R!B87-E9"!O;B!T:&4@4')O9W)A;2!I<R!N;W0@<F5Q=6ER
M960@=&\@<')I;G0@86X@86YN;W5N8V5M96YT+BD@"@I4:&5S92!R97%U:7)E
M;65N=',@87!P;'D@=&\@=&AE(&UO9&EF:65D('=O<FL@87,@82!W:&]L92X@
M268@:61E;G1I9FEA8FQE('-E8W1I;VYS(&]F('1H870@=V]R:R!A<F4@;F]T
M(&1E<FEV960@9G)O;2!T:&4@4')O9W)A;2P@86YD(&-A;B!B92!R96%S;VYA
M8FQY(&-O;G-I9&5R960@:6YD97!E;F1E;G0@86YD('-E<&%R871E('=O<FMS
M(&EN('1H96US96QV97,L('1H96X@=&AI<R!,:6-E;G-E+"!A;F0@:71S('1E
M<FUS+"!D;R!N;W0@87!P;'D@=&\@=&AO<V4@<V5C=&EO;G,@=VAE;B!Y;W4@
M9&ES=')I8G5T92!T:&5M(&%S('-E<&%R871E('=O<FMS+B!"=70@=VAE;B!Y
M;W4@9&ES=')I8G5T92!T:&4@<V%M92!S96-T:6]N<R!A<R!P87)T(&]F(&$@
M=VAO;&4@=VAI8V@@:7,@82!W;W)K(&)A<V5D(&]N('1H92!0<F]G<F%M+"!T
M:&4@9&ES=')I8G5T:6]N(&]F('1H92!W:&]L92!M=7-T(&)E(&]N('1H92!T
M97)M<R!O9B!T:&ES($QI8V5N<V4L('=H;W-E('!E<FUI<W-I;VYS(&9O<B!O
M=&AE<B!L:6-E;G-E97,@97AT96YD('1O('1H92!E;G1I<F4@=VAO;&4L(&%N
M9"!T:'5S('1O(&5A8V@@86YD(&5V97)Y('!A<G0@<F5G87)D;&5S<R!O9B!W
M:&\@=W)O=&4@:70N"@I4:'5S+"!I="!I<R!N;W0@=&AE(&EN=&5N="!O9B!T
M:&ES('-E8W1I;VX@=&\@8VQA:6T@<FEG:'1S(&]R(&-O;G1E<W0@>6]U<B!R
M:6=H=',@=&\@=V]R:R!W<FET=&5N(&5N=&ER96QY(&)Y('EO=3L@<F%T:&5R
M+"!T:&4@:6YT96YT(&ES('1O(&5X97)C:7-E('1H92!R:6=H="!T;R!C;VYT
M<F]L('1H92!D:7-T<FEB=71I;VX@;V8@9&5R:79A=&EV92!O<B!C;VQL96-T
M:79E('=O<FMS(&)A<V5D(&]N('1H92!0<F]G<F%M+@H*26X@861D:71I;VXL
M(&UE<F4@86=G<F5G871I;VX@;V8@86YO=&AE<B!W;W)K(&YO="!B87-E9"!O
M;B!T:&4@4')O9W)A;2!W:71H('1H92!0<F]G<F%M("AO<B!W:71H(&$@=V]R
M:R!B87-E9"!O;B!T:&4@4')O9W)A;2D@;VX@82!V;VQU;64@;V8@82!S=&]R
M86=E(&]R(&1I<W1R:6)U=&EO;B!M961I=6T@9&]E<R!N;W0@8G)I;F<@=&AE
M(&]T:&5R('=O<FL@=6YD97(@=&AE('-C;W!E(&]F('1H:7,@3&EC96YS92X*
M"C,N(%EO=2!M87D@8V]P>2!A;F0@9&ES=')I8G5T92!T:&4@4')O9W)A;2 H
M;W(@82!W;W)K(&)A<V5D(&]N(&ET+"!U;F1E<B!396-T:6]N(#(I(&EN(&]B
M:F5C="!C;V1E(&]R(&5X96-U=&%B;&4@9F]R;2!U;F1E<B!T:&4@=&5R;7,@
M;V8@4V5C=&EO;G,@,2!A;F0@,B!A8F]V92!P<F]V:61E9"!T:&%T('EO=2!A
M;'-O(&1O(&]N92!O9B!T:&4@9F]L;&]W:6YG.@H*(" @("H@82D@06-C;VUP
M86YY(&ET('=I=&@@=&AE(&-O;7!L971E(&-O<G)E<W!O;F1I;F<@;6%C:&EN
M92UR96%D86)L92!S;W5R8V4@8V]D92P@=VAI8V@@;75S="!B92!D:7-T<FEB
M=71E9"!U;F1E<B!T:&4@=&5R;7,@;V8@4V5C=&EO;G,@,2!A;F0@,B!A8F]V
M92!O;B!A(&UE9&EU;2!C=7-T;VUA<FEL>2!U<V5D(&9O<B!S;V9T=V%R92!I
M;G1E<F-H86YG93L@;W(L"@H@(" @*B!B*2!!8V-O;7!A;GD@:70@=VET:"!A
M('=R:71T96X@;V9F97(L('9A;&ED(&9O<B!A="!L96%S="!T:')E92!Y96%R
M<RP@=&\@9VEV92!A;GD@=&AI<F0@<&%R='DL(&9O<B!A(&-H87)G92!N;R!M
M;W)E('1H86X@>6]U<B!C;W-T(&]F('!H>7-I8V%L;'D@<&5R9F]R;6EN9R!S
M;W5R8V4@9&ES=')I8G5T:6]N+"!A(&-O;7!L971E(&UA8VAI;F4M<F5A9&%B
M;&4@8V]P>2!O9B!T:&4@8V]R<F5S<&]N9&EN9R!S;W5R8V4@8V]D92P@=&\@
M8F4@9&ES=')I8G5T960@=6YD97(@=&AE('1E<FUS(&]F(%-E8W1I;VYS(#$@
M86YD(#(@86)O=F4@;VX@82!M961I=6T@8W5S=&]M87)I;'D@=7-E9"!F;W(@
M<V]F='=A<F4@:6YT97)C:&%N9V4[(&]R+ H*(" @("H@8RD@06-C;VUP86YY
M(&ET('=I=&@@=&AE(&EN9F]R;6%T:6]N('EO=2!R96-E:79E9"!A<R!T;R!T
M:&4@;V9F97(@=&\@9&ES=')I8G5T92!C;W)R97-P;VYD:6YG('-O=7)C92!C
M;V1E+B H5&AI<R!A;'1E<FYA=&EV92!I<R!A;&QO=V5D(&]N;'D@9F]R(&YO
M;F-O;6UE<F-I86P@9&ES=')I8G5T:6]N(&%N9"!O;FQY(&EF('EO=2!R96-E
M:79E9"!T:&4@<')O9W)A;2!I;B!O8FIE8W0@8V]D92!O<B!E>&5C=71A8FQE
M(&9O<FT@=VET:"!S=6-H(&%N(&]F9F5R+"!I;B!A8V-O<F0@=VET:"!3=6)S
M96-T:6]N(&(@86)O=F4N*2 *"E1H92!S;W5R8V4@8V]D92!F;W(@82!W;W)K
M(&UE86YS('1H92!P<F5F97)R960@9F]R;2!O9B!T:&4@=V]R:R!F;W(@;6%K
M:6YG(&UO9&EF:6-A=&EO;G,@=&\@:70N($9O<B!A;B!E>&5C=71A8FQE('=O
M<FLL(&-O;7!L971E('-O=7)C92!C;V1E(&UE86YS(&%L;"!T:&4@<V]U<F-E
M(&-O9&4@9F]R(&%L;"!M;V1U;&5S(&ET(&-O;G1A:6YS+"!P;'5S(&%N>2!A
M<W-O8VEA=&5D(&EN=&5R9F%C92!D969I;FET:6]N(&9I;&5S+"!P;'5S('1H
M92!S8W)I<'1S('5S960@=&\@8V]N=')O;"!C;VUP:6QA=&EO;B!A;F0@:6YS
M=&%L;&%T:6]N(&]F('1H92!E>&5C=71A8FQE+B!(;W=E=F5R+"!A<R!A('-P
M96-I86P@97AC97!T:6]N+"!T:&4@<V]U<F-E(&-O9&4@9&ES=')I8G5T960@
M;F5E9"!N;W0@:6YC;'5D92!A;GET:&EN9R!T:&%T(&ES(&YO<FUA;&QY(&1I
M<W1R:6)U=&5D("AI;B!E:71H97(@<V]U<F-E(&]R(&)I;F%R>2!F;W)M*2!W
M:71H('1H92!M86IO<B!C;VUP;VYE;G1S("AC;VUP:6QE<BP@:V5R;F5L+"!A
M;F0@<V\@;VXI(&]F('1H92!O<&5R871I;F<@<WES=&5M(&]N('=H:6-H('1H
M92!E>&5C=71A8FQE(')U;G,L('5N;&5S<R!T:&%T(&-O;7!O;F5N="!I='-E
M;&8@86-C;VUP86YI97,@=&AE(&5X96-U=&%B;&4N"@I)9B!D:7-T<FEB=71I
M;VX@;V8@97AE8W5T86)L92!O<B!O8FIE8W0@8V]D92!I<R!M861E(&)Y(&]F
M9F5R:6YG(&%C8V5S<R!T;R!C;W!Y(&9R;VT@82!D97-I9VYA=&5D('!L86-E
M+"!T:&5N(&]F9F5R:6YG(&5Q=6EV86QE;G0@86-C97-S('1O(&-O<'D@=&AE
M('-O=7)C92!C;V1E(&9R;VT@=&AE('-A;64@<&QA8V4@8V]U;G1S(&%S(&1I
M<W1R:6)U=&EO;B!O9B!T:&4@<V]U<F-E(&-O9&4L(&5V96X@=&AO=6=H('1H
M:7)D('!A<G1I97,@87)E(&YO="!C;VUP96QL960@=&\@8V]P>2!T:&4@<V]U
M<F-E(&%L;VYG('=I=&@@=&AE(&]B:F5C="!C;V1E+@H*-"X@66]U(&UA>2!N
M;W0@8V]P>2P@;6]D:69Y+"!S=6)L:6-E;G-E+"!O<B!D:7-T<FEB=71E('1H
M92!0<F]G<F%M(&5X8V5P="!A<R!E>'!R97-S;'D@<')O=FED960@=6YD97(@
M=&AI<R!,:6-E;G-E+B!!;GD@871T96UP="!O=&AE<G=I<V4@=&\@8V]P>2P@
M;6]D:69Y+"!S=6)L:6-E;G-E(&]R(&1I<W1R:6)U=&4@=&AE(%!R;V=R86T@
M:7,@=F]I9"P@86YD('=I;&P@875T;VUA=&EC86QL>2!T97)M:6YA=&4@>6]U
M<B!R:6=H=',@=6YD97(@=&AI<R!,:6-E;G-E+B!(;W=E=F5R+"!P87)T:65S
M('=H;R!H879E(')E8V5I=F5D(&-O<&EE<RP@;W(@<FEG:'1S+"!F<F]M('EO
M=2!U;F1E<B!T:&ES($QI8V5N<V4@=VEL;"!N;W0@:&%V92!T:&5I<B!L:6-E
M;G-E<R!T97)M:6YA=&5D('-O(&QO;F<@87,@<W5C:"!P87)T:65S(')E;6%I
M;B!I;B!F=6QL(&-O;7!L:6%N8V4N"@HU+B!9;W4@87)E(&YO="!R97%U:7)E
M9"!T;R!A8V-E<'0@=&AI<R!,:6-E;G-E+"!S:6YC92!Y;W4@:&%V92!N;W0@
M<VEG;F5D(&ET+B!(;W=E=F5R+"!N;W1H:6YG(&5L<V4@9W)A;G1S('EO=2!P
M97)M:7-S:6]N('1O(&UO9&EF>2!O<B!D:7-T<FEB=71E('1H92!0<F]G<F%M
M(&]R(&ET<R!D97)I=F%T:79E('=O<FMS+B!4:&5S92!A8W1I;VYS(&%R92!P
M<F]H:6)I=&5D(&)Y(&QA=R!I9B!Y;W4@9&\@;F]T(&%C8V5P="!T:&ES($QI
M8V5N<V4N(%1H97)E9F]R92P@8GD@;6]D:69Y:6YG(&]R(&1I<W1R:6)U=&EN
M9R!T:&4@4')O9W)A;2 H;W(@86YY('=O<FL@8F%S960@;VX@=&AE(%!R;V=R
M86TI+"!Y;W4@:6YD:6-A=&4@>6]U<B!A8V-E<'1A;F-E(&]F('1H:7,@3&EC
M96YS92!T;R!D;R!S;RP@86YD(&%L;"!I=',@=&5R;7,@86YD(&-O;F1I=&EO
M;G,@9F]R(&-O<'EI;F<L(&1I<W1R:6)U=&EN9R!O<B!M;V1I9GEI;F<@=&AE
M(%!R;V=R86T@;W(@=V]R:W,@8F%S960@;VX@:70N"@HV+B!%86-H('1I;64@
M>6]U(')E9&ES=')I8G5T92!T:&4@4')O9W)A;2 H;W(@86YY('=O<FL@8F%S
M960@;VX@=&AE(%!R;V=R86TI+"!T:&4@<F5C:7!I96YT(&%U=&]M871I8V%L
M;'D@<F5C96EV97,@82!L:6-E;G-E(&9R;VT@=&AE(&]R:6=I;F%L(&QI8V5N
M<V]R('1O(&-O<'DL(&1I<W1R:6)U=&4@;W(@;6]D:69Y('1H92!0<F]G<F%M
M('-U8FIE8W0@=&\@=&AE<V4@=&5R;7,@86YD(&-O;F1I=&EO;G,N(%EO=2!M
M87D@;F]T(&EM<&]S92!A;GD@9G5R=&AE<B!R97-T<FEC=&EO;G,@;VX@=&AE
M(')E8VEP:65N=',G(&5X97)C:7-E(&]F('1H92!R:6=H=',@9W)A;G1E9"!H
M97)E:6XN(%EO=2!A<F4@;F]T(')E<W!O;G-I8FQE(&9O<B!E;F9O<F-I;F<@
M8V]M<&QI86YC92!B>2!T:&ER9"!P87)T:65S('1O('1H:7,@3&EC96YS92X*
M"C<N($EF+"!A<R!A(&-O;G-E<75E;F-E(&]F(&$@8V]U<G0@:G5D9VUE;G0@
M;W(@86QL96=A=&EO;B!O9B!P871E;G0@:6YF<FEN9V5M96YT(&]R(&9O<B!A
M;GD@;W1H97(@<F5A<V]N("AN;W0@;&EM:71E9"!T;R!P871E;G0@:7-S=65S
M*2P@8V]N9&ET:6]N<R!A<F4@:6UP;W-E9"!O;B!Y;W4@*'=H971H97(@8GD@
M8V]U<G0@;W)D97(L(&%G<F5E;65N="!O<B!O=&AE<G=I<V4I('1H870@8V]N
M=')A9&EC="!T:&4@8V]N9&ET:6]N<R!O9B!T:&ES($QI8V5N<V4L('1H97D@
M9&\@;F]T(&5X8W5S92!Y;W4@9G)O;2!T:&4@8V]N9&ET:6]N<R!O9B!T:&ES
M($QI8V5N<V4N($EF('EO=2!C86YN;W0@9&ES=')I8G5T92!S;R!A<R!T;R!S
M871I<V9Y('-I;75L=&%N96]U<VQY('EO=7(@;V)L:6=A=&EO;G,@=6YD97(@
M=&AI<R!,:6-E;G-E(&%N9"!A;GD@;W1H97(@<&5R=&EN96YT(&]B;&EG871I
M;VYS+"!T:&5N(&%S(&$@8V]N<V5Q=65N8V4@>6]U(&UA>2!N;W0@9&ES=')I
M8G5T92!T:&4@4')O9W)A;2!A="!A;&PN($9O<B!E>&%M<&QE+"!I9B!A('!A
M=&5N="!L:6-E;G-E('=O=6QD(&YO="!P97)M:70@<F]Y86QT>2UF<F5E(')E
M9&ES=')I8G5T:6]N(&]F('1H92!0<F]G<F%M(&)Y(&%L;"!T:&]S92!W:&\@
M<F5C96EV92!C;W!I97,@9&ER96-T;'D@;W(@:6YD:7)E8W1L>2!T:')O=6=H
M('EO=2P@=&AE;B!T:&4@;VYL>2!W87D@>6]U(&-O=6QD('-A=&ES9GD@8F]T
M:"!I="!A;F0@=&AI<R!,:6-E;G-E('=O=6QD(&)E('1O(')E9G)A:6X@96YT
M:7)E;'D@9G)O;2!D:7-T<FEB=71I;VX@;V8@=&AE(%!R;V=R86TN"@I)9B!A
M;GD@<&]R=&EO;B!O9B!T:&ES('-E8W1I;VX@:7,@:&5L9"!I;G9A;&ED(&]R
M('5N96YF;W)C96%B;&4@=6YD97(@86YY('!A<G1I8W5L87(@8VER8W5M<W1A
M;F-E+"!T:&4@8F%L86YC92!O9B!T:&4@<V5C=&EO;B!I<R!I;G1E;F1E9"!T
M;R!A<'!L>2!A;F0@=&AE('-E8W1I;VX@87,@82!W:&]L92!I<R!I;G1E;F1E
M9"!T;R!A<'!L>2!I;B!O=&AE<B!C:7)C=6US=&%N8V5S+@H*270@:7,@;F]T
M('1H92!P=7)P;W-E(&]F('1H:7,@<V5C=&EO;B!T;R!I;F1U8V4@>6]U('1O
M(&EN9G)I;F=E(&%N>2!P871E;G1S(&]R(&]T:&5R('!R;W!E<G1Y(')I9VAT
M(&-L86EM<R!O<B!T;R!C;VYT97-T('9A;&ED:71Y(&]F(&%N>2!S=6-H(&-L
M86EM<SL@=&AI<R!S96-T:6]N(&AA<R!T:&4@<V]L92!P=7)P;W-E(&]F('!R
M;W1E8W1I;F<@=&AE(&EN=&5G<FET>2!O9B!T:&4@9G)E92!S;V9T=V%R92!D
M:7-T<FEB=71I;VX@<WES=&5M+"!W:&EC:"!I<R!I;7!L96UE;G1E9"!B>2!P
M=6)L:6,@;&EC96YS92!P<F%C=&EC97,N($UA;GD@<&5O<&QE(&AA=F4@;6%D
M92!G96YE<F]U<R!C;VYT<FEB=71I;VYS('1O('1H92!W:61E(')A;F=E(&]F
M('-O9G1W87)E(&1I<W1R:6)U=&5D('1H<F]U9V@@=&AA="!S>7-T96T@:6X@
M<F5L:6%N8V4@;VX@8V]N<VES=&5N="!A<'!L:6-A=&EO;B!O9B!T:&%T('-Y
M<W1E;3L@:70@:7,@=7 @=&\@=&AE(&%U=&AO<B]D;VYO<B!T;R!D96-I9&4@
M:68@:&4@;W(@<VAE(&ES('=I;&QI;F<@=&\@9&ES=')I8G5T92!S;V9T=V%R
M92!T:')O=6=H(&%N>2!O=&AE<B!S>7-T96T@86YD(&$@;&EC96YS964@8V%N
M;F]T(&EM<&]S92!T:&%T(&-H;VEC92X*"E1H:7,@<V5C=&EO;B!I<R!I;G1E
M;F1E9"!T;R!M86ME('1H;W)O=6=H;'D@8VQE87(@=VAA="!I<R!B96QI979E
M9"!T;R!B92!A(&-O;G-E<75E;F-E(&]F('1H92!R97-T(&]F('1H:7,@3&EC
M96YS92X*"C@N($EF('1H92!D:7-T<FEB=71I;VX@86YD+V]R('5S92!O9B!T
M:&4@4')O9W)A;2!I<R!R97-T<FEC=&5D(&EN(&-E<G1A:6X@8V]U;G1R:65S
M(&5I=&AE<B!B>2!P871E;G1S(&]R(&)Y(&-O<'ER:6=H=&5D(&EN=&5R9F%C
M97,L('1H92!O<FEG:6YA;"!C;W!Y<FEG:'0@:&]L9&5R('=H;R!P;&%C97,@
M=&AE(%!R;V=R86T@=6YD97(@=&AI<R!,:6-E;G-E(&UA>2!A9&0@86X@97AP
M;&EC:70@9V5O9W)A<&AI8V%L(&1I<W1R:6)U=&EO;B!L:6UI=&%T:6]N(&5X
M8VQU9&EN9R!T:&]S92!C;W5N=')I97,L('-O('1H870@9&ES=')I8G5T:6]N
M(&ES('!E<FUI='1E9"!O;FQY(&EN(&]R(&%M;VYG(&-O=6YT<FEE<R!N;W0@
M=&AU<R!E>&-L=61E9"X@26X@<W5C:"!C87-E+"!T:&ES($QI8V5N<V4@:6YC
M;W)P;W)A=&5S('1H92!L:6UI=&%T:6]N(&%S(&EF('=R:71T96X@:6X@=&AE
M(&)O9'D@;V8@=&AI<R!,:6-E;G-E+@H*.2X@5&AE($9R964@4V]F='=A<F4@
M1F]U;F1A=&EO;B!M87D@<'5B;&ES:"!R979I<V5D(&%N9"]O<B!N97<@=F5R
M<VEO;G,@;V8@=&AE($=E;F5R86P@4'5B;&EC($QI8V5N<V4@9G)O;2!T:6UE
M('1O('1I;64N(%-U8V@@;F5W('9E<G-I;VYS('=I;&P@8F4@<VEM:6QA<B!I
M;B!S<&ER:70@=&\@=&AE('!R97-E;G0@=F5R<VEO;BP@8G5T(&UA>2!D:69F
M97(@:6X@9&5T86EL('1O(&%D9')E<W,@;F5W('!R;V)L96US(&]R(&-O;F-E
M<FYS+@H*16%C:"!V97)S:6]N(&ES(&=I=F5N(&$@9&ES=&EN9W5I<VAI;F<@
M=F5R<VEO;B!N=6UB97(N($EF('1H92!0<F]G<F%M('-P96-I9FEE<R!A('9E
M<G-I;VX@;G5M8F5R(&]F('1H:7,@3&EC96YS92!W:&EC:"!A<'!L:65S('1O
M(&ET(&%N9" B86YY(&QA=&5R('9E<G-I;VXB+"!Y;W4@:&%V92!T:&4@;W!T
M:6]N(&]F(&9O;&QO=VEN9R!T:&4@=&5R;7,@86YD(&-O;F1I=&EO;G,@96ET
M:&5R(&]F('1H870@=F5R<VEO;B!O<B!O9B!A;GD@;&%T97(@=F5R<VEO;B!P
M=6)L:7-H960@8GD@=&AE($9R964@4V]F='=A<F4@1F]U;F1A=&EO;BX@268@
M=&AE(%!R;V=R86T@9&]E<R!N;W0@<W!E8VEF>2!A('9E<G-I;VX@;G5M8F5R
M(&]F('1H:7,@3&EC96YS92P@>6]U(&UA>2!C:&]O<V4@86YY('9E<G-I;VX@
M979E<B!P=6)L:7-H960@8GD@=&AE($9R964@4V]F='=A<F4@1F]U;F1A=&EO
M;BX*"C$P+B!)9B!Y;W4@=VES:"!T;R!I;F-O<G!O<F%T92!P87)T<R!O9B!T
M:&4@4')O9W)A;2!I;G1O(&]T:&5R(&9R964@<')O9W)A;7,@=VAO<V4@9&ES
M=')I8G5T:6]N(&-O;F1I=&EO;G,@87)E(&1I9F9E<F5N="P@=W)I=&4@=&\@
M=&AE(&%U=&AO<B!T;R!A<VL@9F]R('!E<FUI<W-I;VXN($9O<B!S;V9T=V%R
M92!W:&EC:"!I<R!C;W!Y<FEG:'1E9"!B>2!T:&4@1G)E92!3;V9T=V%R92!&
M;W5N9&%T:6]N+"!W<FET92!T;R!T:&4@1G)E92!3;V9T=V%R92!&;W5N9&%T
M:6]N.R!W92!S;VUE=&EM97,@;6%K92!E>&-E<'1I;VYS(&9O<B!T:&ES+B!/
M=7(@9&5C:7-I;VX@=VEL;"!B92!G=6ED960@8GD@=&AE('1W;R!G;V%L<R!O
M9B!P<F5S97)V:6YG('1H92!F<F5E('-T871U<R!O9B!A;&P@9&5R:79A=&EV
M97,@;V8@;W5R(&9R964@<V]F='=A<F4@86YD(&]F('!R;VUO=&EN9R!T:&4@
M<VAA<FEN9R!A;F0@<F5U<V4@;V8@<V]F='=A<F4@9V5N97)A;&QY+@H*3D\@
M5T%24D%.5%D*"C$Q+B!"14-!55-%(%1(12!04D]'4D%-($E3($Q)0T5.4T5$
M($92144@3T8@0TA!4D=%+"!42$5212!)4R!.3R!705)204Y462!&3U(@5$A%
M(%!23T=204TL(%1/(%1(12!%6%1%3E0@4$5234E45$5$($)9($%04$Q)0T%"
M3$4@3$%7+B!%6$-%4%0@5TA%3B!/5$A%4E=)4T4@4U1!5$5$($E.(%=2251)
M3D<@5$A%($-/4%E224=(5"!(3TQ$15)3($%.1"]/4B!/5$A%4B!005)42453
M(%!23U9)1$4@5$A%(%!23T=204T@(D%3($E3(B!7251(3U54(%=!4E)!3E19
M($]&($%.62!+24Y$+"!%251(15(@15A04D534T5$($]2($E-4$Q)140L($E.
M0TQ51$E.1RP@0E54($Y/5"!,24U)5$5$(%1/+"!42$4@24U03$E%1"!705)2
M04Y42453($]&($U%4D-(04Y404))3$E462!!3D0@1DE43D534R!&3U(@02!0
M05)424-53$%2(%!54E!/4T4N(%1(12!%3E1)4D4@4DE32R!!4R!43R!42$4@
M455!3$E462!!3D0@4$521D]234%.0T4@3T8@5$A%(%!23T=204T@25,@5TE4
M2"!93U4N(%-(3U5,1"!42$4@4%)/1U)!32!04D]612!$149%0U1)5D4L(%E/
M52!!4U-5344@5$A%($-/4U0@3T8@04Q,($Y%0T534T%262!315)624-)3D<L
M(%)%4$%)4B!/4B!#3U)214-424].+@H*,3(N($E.($Y/($5614Y4(%5.3$53
M4R!215%525)%1"!"62!!4%!,24-!0DQ%($Q!5R!/4B!!1U)%140@5$\@24X@
M5U))5$E.1R!724Q,($%.62!#3U!94DE'2%0@2$],1$52+"!/4B!!3ED@3U1(
M15(@4$%25%D@5TA/($U!62!-3T1)1ED@04Y$+T]2(%)%1$E35%))0E5412!4
M2$4@4%)/1U)!32!!4R!015)-2514140@04)/5D4L($)%($Q)04),12!43R!9
M3U4@1D]2($1!34%'15,L($E.0TQ51$E.1R!!3ED@1T5.15)!3"P@4U!%0TE!
M3"P@24Y#241%3E1!3"!/4B!#3TY315%514Y424%,($1!34%'15,@05))4TE.
M1R!/550@3T8@5$A%(%5312!/4B!)3D%"24Q)5%D@5$\@55-%(%1(12!04D]'
M4D%-("A)3D-,541)3D<@0E54($Y/5"!,24U)5$5$(%1/($Q/4U,@3T8@1$%4
M02!/4B!$051!($)%24Y'(%)%3D1%4D5$($E.04-#55)!5$4@3U(@3$]34T53
M(%-54U1!24Y%1"!"62!93U4@3U(@5$A)4D0@4$%25$E%4R!/4B!!($9!24Q5
M4D4@3T8@5$A%(%!23T=204T@5$\@3U!%4D%412!7251(($%.62!/5$A%4B!0
M4D]'4D%-4RDL($5614X@248@4U5#2"!(3TQ$15(@3U(@3U1(15(@4$%25%D@
M2$%3($)%14X@041625-%1"!/1B!42$4@4$]34TE"24Q)5%D@3T8@4U5#2"!$
M04U!1T53+@H*14Y$($]&(%1%4DU3($%.1"!#3TY$251)3TY3"@I(;W<@=&\@
M07!P;'D@5&AE<V4@5&5R;7,@=&\@66]U<B!.97<@4')O9W)A;7,*"DEF('EO
M=2!D979E;&]P(&$@;F5W('!R;V=R86TL(&%N9"!Y;W4@=V%N="!I="!T;R!B
M92!O9B!T:&4@9W)E871E<W0@<&]S<VEB;&4@=7-E('1O('1H92!P=6)L:6,L
M('1H92!B97-T('=A>2!T;R!A8VAI979E('1H:7,@:7,@=&\@;6%K92!I="!F
M<F5E('-O9G1W87)E('=H:6-H(&5V97)Y;VYE(&-A;B!R961I<W1R:6)U=&4@
M86YD(&-H86YG92!U;F1E<B!T:&5S92!T97)M<RX*"E1O(&1O('-O+"!A='1A
M8V@@=&AE(&9O;&QO=VEN9R!N;W1I8V5S('1O('1H92!P<F]G<F%M+B!)="!I
M<R!S869E<W0@=&\@871T86-H('1H96T@=&\@=&AE('-T87)T(&]F(&5A8V@@
M<V]U<F-E(&9I;&4@=&\@;6]S="!E9F9E8W1I=F5L>2!C;VYV97D@=&AE(&5X
M8VQU<VEO;B!O9B!W87)R86YT>3L@86YD(&5A8V@@9FEL92!S:&]U;&0@:&%V
M92!A="!L96%S="!T:&4@(F-O<'ER:6=H="(@;&EN92!A;F0@82!P;VEN=&5R
M('1O('=H97)E('1H92!F=6QL(&YO=&EC92!I<R!F;W5N9"X*"@EO;F4@;&EN
M92!T;R!G:79E('1H92!P<F]G<F%M)W,@;F%M92!A;F0@86X@:61E82!O9B!W
M:&%T(&ET(&1O97,N"@E#;W!Y<FEG:'0@*$,I('EY>7D@(&YA;64@;V8@875T
M:&]R"@H)5&AI<R!P<F]G<F%M(&ES(&9R964@<V]F='=A<F4[('EO=2!C86X@
M<F5D:7-T<FEB=71E(&ET(&%N9"]O<@H);6]D:69Y(&ET('5N9&5R('1H92!T
M97)M<R!O9B!T:&4@1TY5($=E;F5R86P@4'5B;&EC($QI8V5N<V4*"6%S('!U
M8FQI<VAE9"!B>2!T:&4@1G)E92!3;V9T=V%R92!&;W5N9&%T:6]N.R!E:71H
M97(@=F5R<VEO;B R"@EO9B!T:&4@3&EC96YS92P@;W(@*&%T('EO=7(@;W!T
M:6]N*2!A;GD@;&%T97(@=F5R<VEO;BX*"@E4:&ES('!R;V=R86T@:7,@9&ES
M=')I8G5T960@:6X@=&AE(&AO<&4@=&AA="!I="!W:6QL(&)E('5S969U;"P*
M"6)U="!7251(3U54($%.62!705)204Y463L@=VET:&]U="!E=F5N('1H92!I
M;7!L:65D('=A<G)A;G1Y(&]F"@E-15)#2$%.5$%"24Q)5%D@;W(@1DE43D53
M4R!&3U(@02!005)424-53$%2(%!54E!/4T4N("!3964@=&AE"@E'3E4@1V5N
M97)A;"!0=6)L:6,@3&EC96YS92!F;W(@;6]R92!D971A:6QS+@H*"5EO=2!S
M:&]U;&0@:&%V92!R96-E:79E9"!A(&-O<'D@;V8@=&AE($=.52!'96YE<F%L
M(%!U8FQI8R!,:6-E;G-E"@EA;&]N9R!W:71H('1H:7,@<')O9W)A;3L@:68@
M;F]T+"!W<FET92!T;R!T:&4@1G)E92!3;V9T=V%R90H)1F]U;F1A=&EO;BP@
M26YC+BP@-3D@5&5M<&QE(%!L86-E("T@4W5I=&4@,S,P+"!";W-T;VXL($U!
M(" P,C$Q,2TQ,S W+"!54T$N"@I!;'-O(&%D9"!I;F9O<FUA=&EO;B!O;B!H
M;W<@=&\@8V]N=&%C="!Y;W4@8GD@96QE8W1R;VYI8R!A;F0@<&%P97(@;6%I
M;"X*"DEF('1H92!P<F]G<F%M(&ES(&EN=&5R86-T:79E+"!M86ME(&ET(&]U
M='!U="!A('-H;W)T(&YO=&EC92!L:6ME('1H:7,@=VAE;B!I="!S=&%R=',@
M:6X@86X@:6YT97)A8W1I=F4@;6]D93H*"@E';F]M;W9I<VEO;B!V97)S:6]N
M(#8Y+"!#;W!Y<FEG:'0@*$,I('EE87(@;F%M92!O9B!A=71H;W(*"4=N;VUO
M=FES:6]N(&-O;65S('=I=&@@04)33TQ55$5,62!.3R!705)204Y463L@9F]R
M(&1E=&%I;',*"71Y<&4@8'-H;W<@=R<N("!4:&ES(&ES(&9R964@<V]F='=A
M<F4L(&%N9"!Y;W4@87)E('=E;&-O;64*"71O(')E9&ES=')I8G5T92!I="!U
M;F1E<B!C97)T86EN(&-O;F1I=&EO;G,[('1Y<&4@8'-H;W<@8R<@"@EF;W(@
M9&5T86EL<RX*"E1H92!H>7!O=&AE=&EC86P@8V]M;6%N9',@8'-H;W<@=R<@
M86YD(&!S:&]W(&,G('-H;W5L9"!S:&]W('1H92!A<'!R;W!R:6%T92!P87)T
M<R!O9B!T:&4@1V5N97)A;"!0=6)L:6,@3&EC96YS92X@3V8@8V]U<G-E+"!T
M:&4@8V]M;6%N9',@>6]U('5S92!M87D@8F4@8V%L;&5D('-O;65T:&EN9R!O
M=&AE<B!T:&%N(&!S:&]W('<G(&%N9"!@<VAO=R!C)SL@=&AE>2!C;W5L9"!E
M=F5N(&)E(&UO=7-E+6-L:6-K<R!O<B!M96YU(&ET96US+2UW:&%T979E<B!S
M=6ET<R!Y;W5R('!R;V=R86TN"@I9;W4@<VAO=6QD(&%L<V\@9V5T('EO=7(@
M96UP;&]Y97(@*&EF('EO=2!W;W)K(&%S(&$@<')O9W)A;6UE<BD@;W(@>6]U
M<B!S8VAO;VPL(&EF(&%N>2P@=&\@<VEG;B!A(")C;W!Y<FEG:'0@9&ES8VQA
M:6UE<B(@9F]R('1H92!P<F]G<F%M+"!I9B!N96-E<W-A<GDN($AE<F4@:7,@
M82!S86UP;&4[(&%L=&5R('1H92!N86UE<SH*"@E9;WEO9'EN92P@26YC+BP@
M:&5R96)Y(&1I<V-L86EM<R!A;&P@8V]P>7)I9VAT"@EI;G1E<F5S="!I;B!T
M:&4@<')O9W)A;2!@1VYO;6]V:7-I;VXG"@DH=VAI8V@@;6%K97,@<&%S<V5S
M(&%T(&-O;7!I;&5R<RD@=W)I='1E;B *"6)Y($IA;65S($AA8VME<BX*"@ES
M:6=N871U<F4@;V8@5'D@0V]O;BP@,2!!<')I;" Q.3@Y"@E4>2!#;V]N+"!0
M<F5S:61E;G0@;V8@5FEC90H*5&AI<R!'96YE<F%L(%!U8FQI8R!,:6-E;G-E
M(&1O97,@;F]T('!E<FUI="!I;F-O<G!O<F%T:6YG('EO=7(@<')O9W)A;2!I
M;G1O('!R;W!R:65T87)Y('!R;V=R86US+B!)9B!Y;W5R('!R;V=R86T@:7,@
M82!S=6)R;W5T:6YE(&QI8G)A<GDL('EO=2!M87D@8V]N<VED97(@:70@;6]R
M92!U<V5F=6P@=&\@<&5R;6ET(&QI;FMI;F<@<')O<')I971A<GD@87!P;&EC
M871I;VYS('=I=&@@=&AE(&QI8G)A<GDN($EF('1H:7,@:7,@=VAA="!Y;W4@
M=V%N="!T;R!D;RP@=7-E('1H92!'3E4@3&5S<V5R($=E;F5R86P@4'5B;&EC
B($QI8V5N<V4@:6YS=&5A9"!O9B!T:&ES($QI8V5N<V4N"@
end

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +0,0 @@
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789

View File

@ -1,2 +0,0 @@
YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoNCkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaDQow
MTIzNDU2Nzg5

View File

@ -1,2 +0,0 @@
abcdefghijklmnopqrstuvwxyz=0D=0AABCDEFGHIJKLMNOPQRSTUVWXYZ=0D=0A012345678=
9

View File

@ -1,4 +0,0 @@
begin 644 no_name
M86)C9&5F9VAI:FML;6YO<'%R<W1U=G=X>7H-"D%"0T1%1D=(24I+3$U.3U!1
54E-455976%E:#0HP,3(S-#4V-S@Y
end

View File

@ -1,4 +0,0 @@
main: main.cpp ../../libvmime-debug.a
g++ -g -o main main.cpp ../../libvmime-debug.a

View File

@ -1,119 +0,0 @@
//
// VMime library (http://vmime.sourceforge.net)
// Copyright (C) 2002-2004 Vincent Richard <vincent@vincent-richard.net>
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as
// published by the Free Software Foundation; either version 2 of
// the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//
#include <iostream>
#include <ostream>
#include <sstream>
#include <string>
#include <fstream>
#include "../../src/vmime"
#include "../../examples/common.inc"
std::ostream& operator<<(std::ostream& os, const vmime::text& txt)
{
os << "[";
for (int i = 0 ; i < txt.getWordCount() ; ++i)
{
const vmime::word& w = *txt.getWordAt(i);
if (i != 0)
os << ",";
os << "[" << w.getCharset().getName() << "," << w.getBuffer() << "]";
}
os << "]";
return (os);
}
std::ostream& operator<<(std::ostream& os, const vmime::mailbox& mbox)
{
std::cout << "MAILBOX[name=" << mbox.getName() << ",email=" << mbox.getEmail() << "]" << std::endl;
return (os);
}
std::ostream& operator<<(std::ostream& os, const vmime::mailboxGroup& group)
{
std::cout << "GROUP[name=" << group.getName() << "]" << std::endl;
for (int i = 0 ; i < group.getMailboxCount() ; ++i)
{
std::cout << "* " << *group.getMailboxAt(i);
}
return (os);
}
int main(int argc, char* argv[])
{
// VMime initialization
vmime::platformDependant::setHandler<my_handler>();
// Read data from standard input
std::ostringstream data;
std::istream* input = &std::cin;
std::ifstream file;
if (argc >= 2)
{
file.open(argv[1], std::ios::in | std::ios::binary);
input = &file;
}
while (!input->eof())
{
char buffer[4096];
input->read(buffer, sizeof(buffer));
data.write(buffer, input->gcount());
}
// Parse address list and output results
vmime::addressList list;
list.parse(data.str());
for (int i = 0 ; i < list.getAddressCount() ; ++i)
{
const vmime::address& addr = *list.getAddressAt(i);
if (addr.isGroup())
{
const vmime::mailboxGroup& group =
dynamic_cast <const vmime::mailboxGroup&>(addr);
std::cout << group;
}
else
{
const vmime::mailbox& mbox =
dynamic_cast <const vmime::mailbox&>(addr);
std::cout << mbox;
}
}
}

View File

@ -1,37 +0,0 @@
#!/bin/sh
TEST_DIR="./test-suites"
TEMP_DIR="/tmp"
PROGRAM="./main"
testFiles=`cd $TEST_DIR ; ls *.in`
echo
echo Testing address parsing
echo =====================================================================
for testFile in $testFiles ; do
testName=`echo $testFile | sed 's/\([^\.]*\)\.in/\1/'`
printf %20s "$testName : "
$PROGRAM < $TEST_DIR/$testFile > $TEMP_DIR/vmime_result
diff="diff $TEMP_DIR/vmime_result $TEST_DIR/$testName.out"
res=`$diff`
if [ "$res" = "" ]
then
echo "[OK]"
else
diffFile=$TEMP_DIR/vmime.mailbox.$testName.diff
echo "[NO: diff file is $diffFile]"
$diff > $diffFile
fi
done
echo

View File

@ -1 +0,0 @@
My (this is a comment)name <me(another \)comment) @ somewhere(else).com>

View File

@ -1 +0,0 @@
MAILBOX[name=[[us-ascii,My name]],email=me@somewhere.com]

View File

@ -1 +0,0 @@
mailbox1 <mailbox@one>,;,,, ,, ,,;group1:mailbox1@group1, mailbox2@group2,,"mailbox #3" <mailbox3@group2>;, <mailbox@two>,,,,,,,,=?iso-8859-1?q?mailbox_number_3?= <mailbox@three>, =?abc?Q?mailbox?= =?def?Q?_number_4?= <mailbox@four>

View File

@ -1,8 +0,0 @@
MAILBOX[name=[[us-ascii,mailbox1]],email=mailbox@one]
GROUP[name=[[us-ascii,group1]]]
* MAILBOX[name=[],email=mailbox1@group1]
* MAILBOX[name=[],email=mailbox2@group2]
* MAILBOX[name=[[us-ascii,mailbox #3]],email=mailbox3@group2]
MAILBOX[name=[],email=mailbox@two]
MAILBOX[name=[[iso-8859-1,mailbox number 3]],email=mailbox@three]
MAILBOX[name=[[abc,mailbox],[def, number 4]],email=mailbox@four]

View File

@ -0,0 +1,190 @@
//
// VMime library (http://vmime.sourceforge.net)
// Copyright (C) 2002-2004 Vincent Richard <vincent@vincent-richard.net>
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as
// published by the Free Software Foundation; either version 2 of
// the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//
#include "../lib/unit++/unit++.h"
#include <iostream>
#include <ostream>
#include "../../src/vmime"
#include "../../examples/common.inc"
using namespace unitpp;
namespace
{
class encoderTest : public suite
{
// Encoding helper function
static const vmime::string encode(const vmime::string& name, const vmime::string& in)
{
vmime::encoder* enc = vmime::encoderFactory::getInstance()->create(name);
vmime::utility::inputStreamStringAdapter vin(in);
std::ostringstream out;
vmime::utility::outputStreamAdapter vout(out);
enc->encode(vin, vout);
return (out.str());
}
// Decoding helper function
static const vmime::string decode(const vmime::string& name, const vmime::string& in)
{
vmime::encoder* enc = vmime::encoderFactory::getInstance()->create(name);
vmime::utility::inputStreamStringAdapter vin(in);
std::ostringstream out;
vmime::utility::outputStreamAdapter vout(out);
enc->decode(vin, vout);
return (out.str());
}
void testBase64()
{
static const vmime::string testSuites[] =
{
// Test 1
"",
"",
// Test 2
"A",
"QQ==",
// Test 3
"AB",
"QUI=",
// Test 4
"ABC",
"QUJD",
// Test 5
"foo",
"Zm9v",
// Test 6
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
"QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAx"
"MjM0NTY3ODk=",
// Test 7
vmime::string(
"\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
"\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
"\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
"\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
"\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
"\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
"\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
"\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
"\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
"\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
"\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
"\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
"\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
"\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef"
"\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
256),
"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1"
"Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWpr"
"bG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6Ch"
"oqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX"
"2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w=="
};
for (unsigned int i = 0 ; i < sizeof(testSuites) / sizeof(testSuites[0]) / 2 ; ++i)
{
const vmime::string decoded = testSuites[i * 2];
const vmime::string encoded = testSuites[i * 2 + 1];
std::ostringstream oss;
oss << "[Base64] Test " << (i + 1) << ": ";
// Encoding
assert_eq(oss.str() + "encoding", encoded, encode("base64", decoded));
// Decoding
assert_eq(oss.str() + "decoding", decoded, decode("base64", encoded));
// Multiple and successive encoding/decoding
assert_eq(oss.str() + "multiple1", decoded,
decode("base64",
encode("base64", decoded)));
assert_eq(oss.str() + "multiple2", decoded,
decode("base64",
decode("base64",
encode("base64",
encode("base64", decoded)))));
assert_eq(oss.str() + "multiple3", decoded,
decode("base64",
decode("base64",
decode("base64",
encode("base64",
encode("base64",
encode("base64", decoded)))))));
assert_eq(oss.str() + "multiple4", decoded,
decode("base64",
decode("base64",
decode("base64",
decode("base64",
encode("base64",
encode("base64",
encode("base64",
encode("base64", decoded)))))))));
}
}
// TODO: UUEncode, Quoted-Printable
public:
encoderTest() : suite("vmime::encoder")
{
vmime::platformDependant::setHandler<my_handler>();
add("Base64", testcase(this, "Base64", &encoderTest::testBase64));
suite::main().add("vmime::encoder", this);
}
};
encoderTest* theTest = new encoderTest();
}